분석일: 2026-06-05
분석자: Deep Coding Lab
버전: v1.0
항목 · 값
**랜딩 도메인** · [비공개]
**앱 이름** · love
**Expo slug** · love
**프레임워크** · Expo SDK 54 (React Native), dev=true
**Metro 터널** · ngrok (zducta4-anonymous-8081.exp.direct)
**카테고리** · 연락처 탈취 (몸캠피싱)
**위협 수준** · Critical
**운영자 PC 경로** · `C:\Users\Administrator\Desktop\강철이\love`
도메인 · IP/서비스 · 용도
[비공개] · [비공개] / [비공개] (CF) · 랜딩 페이지
[비공개] · 동일 CF IP · 상위 도메인
[비공개] · [비공개] / [비공개] (CF) · C2 서버 (Caddy)
zducta4-anonymous-8081.exp.direct · [비공개] CNAME · Metro 번들 서버 (ngrok 터널)
```
[1] 피해자에게 shorturl.at/O4PFo 링크 전달
↓ 리다이렉트
[2] [비공개] 랜딩 ("엑스포고 실행")
↓ 1초 후 자동 리다이렉트
[3] exp://zducta4-anonymous-8081.exp.direct → Expo Go 실행
↓
[4] 앱 시작 즉시: 연락처 권한 요청
↓ 권한 허용
[5] ★ 즉시 전체 연락처 C2 전송 (초대코드 입력 전!)
↓ POST [비공개]
[6] "초대 코드" 입력 화면 표시
↓ 코드 입력
[7] POST [비공개] → 코드 검증
↓ 성공 시
[8] 전화번호 입력 → 재전송 (연락처 + 전화번호)
↓
[9] GalleryScreen: 가짜 성인물 썸네일 (6명 여성 이름)
→ 클릭 시 "504 서버 오류" 알림 (가짜)
→ 피해자는 서버 문제라 생각, 데이터는 이미 탈취됨
```
앱 시작 시 useEffect에서 performInitialUpload() 호출:
· 연락처 권한 요청 → 즉시 전수 탈취
· `[비공개] 전송
· 초대코드는 갤러리 접근용일 뿐, 탈취는 이미 완료
메서드 · URL · 용도 · 상태
POST · /backup · 연락처 + 기기정보 수신 · 🟢 활성 (403=초대코드 필요)
POST · /verify_invite · 초대코드 검증 · 🟢 활성 (404=무효 코드)
GET · / · 루트 · 200
```json
{
"device_name": "Galaxy S24 Ultra",
"device_phone": "SM-S928N-AP2A.240905.003",
"contacts": [
{ "name": "홍길동", "phoneNumbers": [{"number": "010-**-**"}], "emails": [] }
],
"invite_code": "코드값"
}
```
· 403: {"message":"유효한 초대 코드가 필요합니다.","status":"error"}
· 404: {"message":"유효하지 않은 초대 코드입니다.","status":"error"}
· Caddy 웹 서버 (via: 1.1 Caddy)
· Cloudflare 프록시
· CF-RAY: HKG (홍콩 엣지)
· 한국어 에러 메시지
· 번들: 5.67 MB
· 소스맵: 10.8 MB
· 복원 파일: 7개 (앱 고유)
파일 · 크기 · 기능
HomeScreen.js · 8,151 B · **메인 페이로드** — 연락처 탈취 + C2 전송 + 초대코드 검증
GalleryScreen.js · 2,477 B · 가짜 성인물 갤러리 (미끼)
App.js · 844 B · 네비게이션 라우팅
index.js · 307 B · 앱 진입점
지문 · 값
**PC 사용자명** · Administrator
**프로젝트 폴더** · `Desktop\강철이\love`
**"강철이"** · 운영자 닉네임 또는 본명
**코드 언어** · 한국어 (console.log, Alert 메시지)
**UI 언어** · 한국어
**HTTP 라이브러리** · axios
가짜 여성 프로필 6명:
1. 박미정
2. 최유진강사
3. 강나윤강사
4. 민경강사
5. 주하윤강사
6. 김지연강사
"강사" 직함 → 필라테스/PT 강사 위장 (몸캠피싱 전형 패턴)
```
❌ 서버 오류
에러코드: 504-GW-TIMEOUT
서버가 응답하지 않습니다.
잠시 후 다시 시도해주십시오.
```
→ 피해자가 "서버 문제"로 인식, 재시도하며 앱 유지
· 2단계 게이트: 초대코드 → 전화번호 → 갤러리
· 하지만 연락처 탈취는 1단계 전에 완료
데이터 · 수집 방법 · 시점
연락처 전체 (이름) · expo-contacts · 앱 시작 즉시
연락처 전체 (전화번호) · expo-contacts · 앱 시작 즉시
연락처 전체 (이메일) · expo-contacts · 앱 시작 즉시
기기 모델 · expo-device · 앱 시작 즉시
OS 빌드 ID · expo-device · 앱 시작 즉시
기기 이름 · expo-device · 앱 시작 즉시
전화번호 (본인) · 사용자 입력 · 2단계
초대코드 · 사용자 입력 · 1단계
항목 · love3 · telegraming_live · **glooryaq_expo**
위장 · 영상통화 · 텔레그램 · **성인물 갤러리**
초대코드 · 없음 · 없음 · **있음**
탈취 시점 · 로그인 후 · 로그인 후 · **앱 시작 즉시**
C2 프레임워크 · - · CodeIgniter · **Caddy**
Metro 호스팅 · 자체 서버 · 자체 서버 · **ngrok 터널**
코드 언어 · 중국어 · 중국어 · **한국어**
운영자 지문 · - · wooteayang · **"강철이"**
갤러리 · 없음 · 없음 · **가짜 여성 썸네일**
· [비공개] (랜딩)
· [비공개] (상위)
· [비공개] (C2)
· zducta4-anonymous-8081.exp.direct (Metro/ngrok)
· [비공개] / [비공개] (glooryaq, CF)
· [비공개] / [비공개] (wahite, CF)
· [비공개]
· [비공개]
· exp://zducta4-anonymous-8081.exp.direct
· [비공개]
· [비공개]
· PC 경로: C:\Users\Administrator\Desktop\강철이\love
· Expo scope: @anonymous/love-f7398fd7-0c4c-4c35-ba04-67919998b76d
🔬 기법 점검:
· 시도한 기법: OA-001 (Expo 매니페스트 추출), OA-003 (소스맵 복원), OA-010 (C2 프로빙), OA-094 (Expo 번들 다운로드)
· 확장된 기법: OA-001 확장 — 매니페스트 _internal.projectRoot에서 운영자 PC 경로 + 닉네임 추출
· 신규 기법: OA-099 "ngrok Tunnel Expo Metro Fingerprinting" — exp.direct CNAME → ngrok.io로 동적 터널 운영 패턴 식별. 자체 서버 대신 ngrok 사용 = 운영자 로컬 PC에서 직접 서빙
· 한계: ngrok 터널은 운영자 PC 종료 시 소멸 — 분석 시점에 살아있어야 함
혁신 점검:
· 새 아이디어/시도: 매니페스트의 _internal.projectRoot 필드에서 운영자 PC 경로 자동 추출 → "강철이" 닉네임 발견
· 결과: 성공 — 중국인 운영 패턴(telegraming)과 달리 한국어 코드+한국인 운영자 확인
· 기법 카탈로그 반영: OA-099 신규 등재
· 다음 앱에서 시도할 아이디어: ngrok 터널 히스토리 추적 (exp.direct 서브도메인 패턴 분석)
본 보고서는 주식회사 아크링크 Deep-Coding 보안연구소가 피싱·몸캠피싱 피해자 구제를 목적으로 작성했습니다. 전체 열람·피해 상담: arklink.co.kr