ExpoGo Love3 상세 분석 보고서

ExpoGo Love3 분석 보고서

앱 ID: expogo_love3

분석일: 2026-05-26

분석 레벨: static_deep

버전: v1.0

1. 앱 기본 정보

항목 · 값

앱 이름 · love3

슬러그 · love3

패키지 · @anonymous/love3-521c06ae-d484-413d-8f02-ed63d75ca617

프레임워크 · Expo SDK 54.0.0 (React Native)

엔진 · Hermes (bytecode)

New Architecture · 활성화

배포 URL · [비공개]

단축 URL · [비공개]

Expo 서버 · exp://[비공개]

C2 서버 · [비공개]

위협 등급 · Critical

2. 운영자 정보

항목 · 값

별명 · 강철이 (동일 운영자 3세대)

개발 경로 · `C:\Users\Administrator\Desktop\3\love3`

Expo 계정 · @anonymous (EAS 미사용)

이전 C2 · [비공개] → [비공개] → **[비공개]**

배포 인프라 · [비공개] 서브도메인 재활용

3. 공격 체인

```

[피해자가 shorturl.at/0fWWM 클릭]

↓ 301/302 리다이렉트

[[비공개] 로딩]

↓ 1초 후 자동

[exp://[비공개] 딥링크]

↓ Expo Go 앱 실행

[JS 번들 5.7MB 로드]

↓ 자동

[연락처 권한 요청 팝업]

↓ 사용자 허용

[전체 연락처 + 디바이스 정보 즉시 탈취]

↓ POST /backup

[[비공개] C2로 전송]

[초대 코드 입력 화면]

↓ POST /verify_invite

[핸드폰 번호 입력 + 2차 업로드]

↓ POST /backup

[공격 완료 — 연락처 + 전화번호 + 디바이스 지문]

```

4. C2 서버 분석

4.1 인프라

항목 · 값

도메인 · [비공개]

CDN · Cloudflare ([비공개] )

리버스 프록시 · Caddy

백엔드 · Flask 추정 (glooryaq 동일 스택)

Expo 서버 IP · [비공개] (Singapore, WebHorizon AS149020)

4.2 엔드포인트

메서드 · 경로 · 용도 · 상태

GET · `/` · 관리자 로그인 페이지 · 200

POST · `/` · 로그인 인증 · 401

POST · `/backup` · 연락처 업로드 (초대코드 필수) · 200/에러

POST · `/verify_invite` · 초대 코드 검증 · 200/에러

GET · `/devices` · 관리자 디바이스 목록 · 401

GET · `/invites` · 관리자 초대코드 목록 · 401

4.3 관리 패널

· 브랜드: MyContactService

· UI: Bootstrap 5, 반응형

· 인증: form POST (username/password), CSRF 없음, Rate limit 없음

> [비공개]

4.4 API 응답

```json

// POST /backup (초대코드 없이)

{"message": "유효한 초대 코드가 필요합니다.", "status": "error"}

// POST /verify_invite (잘못된 코드)

{"message": "유효하지 않은 초대 코드입니다.", "status": "error"}

```

5. 악성 행위 분석

5.1 연락처 탈취 (자동)

앱 시작 즉시 Contacts.requestPermissionsAsync() 호출 → 허용 시 전체 연락처 조회 → 자동 업로드.

수집 필드: 이름, 전화번호, 이메일

트리거: useEffect (컴포넌트 마운트 시 자동)

증거: app_bundle.js 줄 127807-127815

5.2 디바이스 지문 수집

```javascript

var phoneId = ${Device.modelName || 'unknown'}-${Device.osBuildId || 'noid'};

```

수집 항목: Device.modelName, Device.osBuildId, Device.deviceName

5.3 3단계 업로드

단계 · 트리거 · 데이터

1차 · 앱 시작 (자동) · 연락처 + 디바이스 ID + 빈 초대코드

2차 · 초대코드 입력 · 동일 + 유효 초대코드

3차 · 전화번호 입력 · 연락처 + 사용자 입력 전화번호

5.4 적응형 동작

상황 · 대응

권한 거절 · 더미 데이터("권한이 허용되지 않았습니다") 업로드

연락처 0개 · 더미 데이터("연락처가 없습니다") 업로드

연락처 <10개 · device_name을 경고 메시지로 대체

오류 발생 · 무시 (빈 catch 블록)

6. UI 구조

```

[화면 1] 초대 코드 입력

· TextInput: "초대 코드를 입력해주세요"

· Button: "확인"

[화면 2] 전화번호 입력

· TextInput: "010XXXXXXXX"

· Button: "접속하기" / "업로드 중..."

```

7. 페이로드 구조

```json

{

"device_name": "Galaxy S24",

"device_phone": "SM-S926B-UP1A.231005.007",

"contacts": [

{

"name": "홍길동",

"phoneNumbers": [{"number": "010-**-**"}],

> [비공개]

}

],

"invite_code": "ABC123"

}

```

8. IOC (Indicators of Compromise)

도메인

· [비공개] (C2)

· [비공개] (배포)

· [비공개] (배포 메인)

IP

· [비공개] (Expo 서버, Singapore, WebHorizon AS149020)

· [비공개] (Cloudflare)

· [비공개] (Cloudflare)

URL

· `[비공개]

· `[비공개]

· exp://[비공개]

· `[비공개]

패키지

· @anonymous/love3-521c06ae-d484-413d-8f02-ed63d75ca617

9. 패밀리 계보 (LOVE 시리즈)

세대 · C2 · 패키지 · 개발 경로 · 날짜

1세대 · [비공개] ([비공개] KT) · @hhseong/LOVE · 불명 · ~2025-12

2세대 · [비공개] (Cloudflare) · @anonymous/love · Desktop\강철이\love · 2026-05-22

**3세대** · **[비공개]** (Cloudflare) · **@anonymous/love3** · **Desktop\3\love3** · **2026-05-26**

진화 패턴

· 1→2세대: KT 직접 호스팅 → Cloudflare 도입, EAS 계정(@hhseong) → 익명(@anonymous)

· 2→3세대: [비공개] → [비공개] 도메인 교체, love → love3 슬러그 변경, 배포 인프라([비공개]) 유지

10. 기법 점검

🔬 기법 점검:

· 시도한 기법: SA-097 (Expo Default Namespace), NW-070 (C2 엔드포인트 매핑), INTEL-001 (Expo 개발 경로 추출)

· 확장된 기법: NW-070 확장 ([비공개] 서브도메인 → 배포 인프라 재활용 패턴)

· 신규 기법: 없음

· 한계 발견: 초대코드 없이 /backup 전송 불가 (코드 글로벌 로테이션 예상), 관리자 로그인 실패

*분석: Deep_Coding 연구소*

*버전: v1.0 | 2026-05-26*

본 보고서는 주식회사 아크링크 Deep-Coding 보안연구소가 피싱·몸캠피싱 피해자 구제를 목적으로 작성했습니다. 전체 열람·피해 상담: arklink.co.kr