상단메뉴 바로가기 본문 바로가기 본문 하위메뉴 바로가기 하단 바로가기

콘텐츠룸

[칼럼] 구글 플레이의 방패를 뚫는 합법의 탈: Expo Go 악용 피싱의 구조적 실체

2026.10.14

구글 플레이의 방패를 뚫는 합법의 탈: Expo Go 악용 피싱의 구조적 실체

오랫동안 모바일 보안의 기본 수칙은 명확했습니다. "출처를 알 수 없는 파일(.apk)을 함부로 내려받지 말고, 오직 공식 앱스토어에서 검증된 앱만 설치하라." 사용자들의 보안 인식이 높아지면서 문자 메시지나 메신저로 전송되는 낯선 설치 파일을 경계하는 이들이 크게 늘었습니다.

그러나 사이버 범죄 조직은 보안 통제를 뚫기 위해 시스템 취약점 대신 '신뢰의 구조'를 역이용하기 시작했습니다. 최근 CTI 모니터링망에 빈번히 포착되는 Expo Go 해킹 및 피싱 공격은, 백신 프로그램과 구글 플레이 프로텍트(Google Play Protect)의 정적 검사를 완전히 무력화하는 고도화된 'LOTL(Living off the Land, 정상 도구 악용)' 수법의 전형을 보여줍니다.

공격자는 피해자에게 악성 코드가 담긴 위험한 파일을 보내지 않습니다. 대신 구글 플레이스토어나 애플 앱스토어에서 정상적으로 유통되는 유명 앱 개발 도구, 'Expo Go'를 직접 설치하도록 유도합니다. 정상 소프트웨어의 가면 뒤에서 벌어지는 은밀한 원격 침투 구조를 해부합니다.

홈페이지 칼럼 썸네일_back-view-hacker-desktop-using-computers-with-blue-global-security-hackig-hologram-with-polygonal-dots-connections-malware-safety-phishing-concept-double-exposure

1. 스토어 검증을 무력화하는 동적 번들 주입 원리

공격 조직이 Expo Go를 범죄의 발판으로 선택한 이유는 명확합니다. 이 앱이 리액트 네이티브(React Native) 기반의 크로스 플랫폼 모바일 앱을 테스트하기 위해 만들어진 공식 샌드박스 런타임이기 때문입니다.

일반적인 악성 APK는 설치 시점에 악성 코드가 바이너리 내부에 고스란히 담겨 있어, 구글 플레이 프로텍트나 백신 엔진의 시그니처 검사에 쉽게 걸려듭니다. 하지만 Expo Go 기반 공격의 구조는 완전히 다릅니다.

  • 완전한 무결성 검증 통과: 피해자가 스토어에서 내려받는 Expo Go 앱 자체는 100% 정상적이고 안전한 소프트웨어입니다. 따라서 단말기 내 어떤 보안 검사도 이를 악성으로 분류하지 않습니다.

  • 딥링크(exp://)를 통한 외부 스크립트 호출: 가해자는 앱 설치를 마친 피해자에게 특정 QR코드나 딥링크(exp://...)를 전달합니다. "영상 통화 연결용 채널이다", "비공개 프로필을 보려면 이 링크를 앱으로 열어야 한다"는 식의 사회공학적 명분을 내세웁니다.

  • 원격 자바스크립트 번들 런타임 로딩: 링크를 클릭하는 순간, 정상 Expo Go 샌드박스는 가해자가 해외 서버(C&C)에 미리 호스팅해 둔 원격 자바스크립트 번들(index.bundle)을 메모리 위로 실시간 내려받아 실행합니다. 보안 검사를 통과한 클린 앱 안으로, 악의적인 갈취 로직이 실시간 주입되는 구조입니다.

2. 샌드박스 내부에서 가동되는 사생활 갈취 메커니즘

Expo Go 내부에서 구동되는 악성 자바스크립트 번들은 외형상 일반 모바일 앱과 구분하기 어려울 정도로 정교한 사용자 인터페이스(UI)를 렌더링합니다.

화면에는 '1:1 고화질 영상 통화', '인증 뷰어' 등의 가짜 화면이 표시되지만, 백그라운드에서는 사생활 탈취 스크립트가 돌아갑니다. 사용자가 화상 통화를 위해 카메라와 마이크 접근을 허용하는 순간, 화면 너머의 영상 프레임과 음성 데이터는 가해자의 제어 서버로 실시간 스트리밍됩니다.

동시에 가짜 소셜 로그인 창이나 전화번호 인증 오버레이를 띄워 포털 및 메신저 계정 세션을 가로채며, WebRTC 및 웹소켓 통신을 통해 기기 식별 정보와 네트워크 환경 데이터를 일괄 수집합니다.

원격 로딩된 스크립트는 파일 시스템에 영구적인 실행 파일 바이너리를 남기지 않는 경우가 많아, 기존의 파일 기반 파일 검사 백신은 침해 사실 자체를 감지조차 하지 못합니다.

3. 섣부른 앱 삭제가 증거 분석의 문을 닫아버립니다

사기나 협박 정황을 인지한 피해자가 가장 먼저 취하는 행동은 당황한 채 Expo Go 앱을 삭제하거나 단말기를 초기화하는 것입니다.

그러나 공격자의 원격 서버로 이미 송출된 영상 데이터와 개인정보는 내 스마트폰에서 앱을 지운다고 사라지지 않습니다. 오히려 앱을 무작정 삭제해 버리면, Expo Go 내부 로컬 캐시 디렉터리에 임시 저장되어 있던 '악성 자바스크립트 번들 원본 파일', '가해자의 원격 호스팅 도메인', '통신 소켓 엔드포인트' 등 핵심 포렌식 아티팩트가 함께 소멸합니다.

가해자가 어떤 서버에서 스크립트를 송출했는지, 내 기기에서 어떤 네트워크 패킷을 전송받았는지 특정할 유일한 기술적 단서를 피해자 스스로 지워버리는 셈입니다.

black-freelancer-researching-online-data-writing-notes-articles 1

4. 보이지 않는 스크립트 통신을 제어하는 4단계 대응 원리

Expo Go를 악용한 침해 사고에 직면했다면, 감정적인 자가 조치를 멈추고 기술적 흔적을 보존한 상태에서 통신 경로를 분리해야 합니다.

  • 1단계: 단말기 통신 즉시 단절 (Air-Gapping)

    침해 의심 즉시 스마트폰을 비행기 모드로 전환하고 Wi-Fi와 블루투스를 끕니다. Expo Go가 원격 C&C 서버와 유지하고 있는 웹소켓 세션과 백그라운드 데이터 패킷 송출을 즉각 차단할 수 있습니다.

  • 2단계: 앱 삭제 금지 및 인입 경로 보존

    Expo Go 앱과 앱 캐시를 임의로 지우지 마십시오. 공격자가 전달했던 접속 링크(exp://... 또는 단축 URL), QR코드 이미지, 대화 내역 원본을 화면 캡처 및 원본 텍스트 파일로 보존해야 합니다. 향후 리버스 엔지니어링을 통해 가해자의 번들 서버 IP와 데이터 수집 경로를 규명할 핵심 단서가 됩니다.

  • 3단계: 단말기 권한 수동 회수

    스마트폰 기본 [설정] → [애플리케이션] → [Expo Go]로 이동하여 카메라, 마이크, 미디어 접근 권한을 즉시 '허용 안 됨'으로 변경합니다. 앱 자체를 지우지 않으면서도 하드웨어 자원에 대한 잠재적 접근을 소프트웨어적으로 차단하는 조치입니다.

  • 4단계: CTI 포렌식 분석 및 통신 회선 보호

    수사 기관(경찰청 182, KISA 118)에 피해를 신고하고, 전문 보안 기업에 자문을 구해 인입된 원격 번들의 주소와 데이터 유출 범위를 정밀 진단받아야 합니다. 아울러 계정 탈취나 추가적인 금융 피해를 방어하기 위해 한국정보통신진흥협회(KAIT)의 엠세이퍼(Msafer) 서비스에 접속해 본인 명의의 신규 통신 회선 개통을 전면 차단해야 합니다.

기술의 진화에 맞서는 냉정한 포렌식의 힘

공식 스토어의 합법적인 툴을 방패막이 삼아 침투하는 현대의 사이버 위협은 "의심스러운 파일만 안 깔면 된다"는 과거의 상식을 조롱하고 있습니다.

그러나 아무리 합법적 런타임의 껍데기를 쓰고 숨어들더라도, 데이터가 오고 간 네트워크 트래픽과 로컬 메모리에는 반드시 공격자의 궤적이 남습니다.

정체 모를 화면과 협박 앞에서 당황하여 기기를 백지화하지 마십시오. 단말기 내부에 남은 런타임 캐시와 통신 기록을 무결하게 보존하고 기술적인 통로를 차단할 때, 비로소 가해자의 공격 인프라를 무력화하고 소중한 일상을 안전하게 되찾을 수 있습니다.