앱 ID: expogo_love3
분석일: 2026-05-26
분석 레벨: static_deep
버전: v1.0
항목 · 값
앱 이름 · 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
항목 · 값
별명 · 강철이 (동일 운영자 3세대)
개발 경로 · `C:\Users\Administrator\Desktop\3\love3`
Expo 계정 · @anonymous (EAS 미사용)
이전 C2 · [비공개] → [비공개] → **[비공개]**
배포 인프라 · [비공개] 서브도메인 재활용
```
[피해자가 shorturl.at/0fWWM 클릭]
↓ 301/302 리다이렉트
[[비공개] 로딩]
↓ 1초 후 자동
[exp://[비공개] 딥링크]
↓ Expo Go 앱 실행
[JS 번들 5.7MB 로드]
↓ 자동
[연락처 권한 요청 팝업]
↓ 사용자 허용
[전체 연락처 + 디바이스 정보 즉시 탈취]
↓ POST /backup
[[비공개] C2로 전송]
↓
[초대 코드 입력 화면]
↓ POST /verify_invite
[핸드폰 번호 입력 + 2차 업로드]
↓ POST /backup
[공격 완료 — 연락처 + 전화번호 + 디바이스 지문]
```
항목 · 값
도메인 · [비공개]
CDN · Cloudflare ([비공개] )
리버스 프록시 · Caddy
백엔드 · Flask 추정 (glooryaq 동일 스택)
Expo 서버 IP · [비공개] (Singapore, WebHorizon AS149020)
메서드 · 경로 · 용도 · 상태
GET · `/` · 관리자 로그인 페이지 · 200
POST · `/` · 로그인 인증 · 401
POST · `/backup` · 연락처 업로드 (초대코드 필수) · 200/에러
POST · `/verify_invite` · 초대 코드 검증 · 200/에러
GET · `/devices` · 관리자 디바이스 목록 · 401
GET · `/invites` · 관리자 초대코드 목록 · 401
· 브랜드: MyContactService
· UI: Bootstrap 5, 반응형
· 인증: form POST (username/password), CSRF 없음, Rate limit 없음
> [비공개]
```json
// POST /backup (초대코드 없이)
{"message": "유효한 초대 코드가 필요합니다.", "status": "error"}
// POST /verify_invite (잘못된 코드)
{"message": "유효하지 않은 초대 코드입니다.", "status": "error"}
```
앱 시작 즉시 Contacts.requestPermissionsAsync() 호출 → 허용 시 전체 연락처 조회 → 자동 업로드.
수집 필드: 이름, 전화번호, 이메일
트리거: useEffect (컴포넌트 마운트 시 자동)
증거: app_bundle.js 줄 127807-127815
```javascript
var phoneId = ${Device.modelName || 'unknown'}-${Device.osBuildId || 'noid'};
```
수집 항목: Device.modelName, Device.osBuildId, Device.deviceName
단계 · 트리거 · 데이터
1차 · 앱 시작 (자동) · 연락처 + 디바이스 ID + 빈 초대코드
2차 · 초대코드 입력 · 동일 + 유효 초대코드
3차 · 전화번호 입력 · 연락처 + 사용자 입력 전화번호
상황 · 대응
권한 거절 · 더미 데이터("권한이 허용되지 않았습니다") 업로드
연락처 0개 · 더미 데이터("연락처가 없습니다") 업로드
연락처 <10개 · device_name을 경고 메시지로 대체
오류 발생 · 무시 (빈 catch 블록)
```
[화면 1] 초대 코드 입력
· TextInput: "초대 코드를 입력해주세요"
· Button: "확인"
↓
[화면 2] 전화번호 입력
· TextInput: "010XXXXXXXX"
· Button: "접속하기" / "업로드 중..."
```
```json
{
"device_name": "Galaxy S24",
"device_phone": "SM-S926B-UP1A.231005.007",
"contacts": [
{
"name": "홍길동",
"phoneNumbers": [{"number": "010-**-**"}],
> [비공개]
}
],
"invite_code": "ABC123"
}
```
· [비공개] (C2)
· [비공개] (배포)
· [비공개] (배포 메인)
· [비공개] (Expo 서버, Singapore, WebHorizon AS149020)
· [비공개] (Cloudflare)
· [비공개] (Cloudflare)
· `[비공개]
· `[비공개]
· exp://[비공개]
· `[비공개]
· @anonymous/love3-521c06ae-d484-413d-8f02-ed63d75ca617
세대 · 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 슬러그 변경, 배포 인프라([비공개]) 유지
🔬 기법 점검:
· 시도한 기법: 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