Pink dol 상세 분석 보고서

Pink dol (pink_dol) 양자 나노 분석 보고서

분석 일자: 2026-02-27

보고서 버전: v2.0 (ML-Level Upgrade)

분석 수행: 주식회사 아크링크 ([비공개])

분석 도구: apktool 2.10.0, adb, Android Emulator API 35, NDK_JIAGU 로그 분석

목차

1. [앱 식별 정보](#1-앱-식별-정보)

2. [패밀리 분류 및 변종 식별](#2-패밀리-분류-및-변종-식별)

3. [패키지 난독화 분석](#3-패키지-난독화-분석)

4. [AndroidManifest 심층 분석](#4-androidmanifest-심층-분석)

5. [Frezrik Jiagu 보호 메커니즘](#5-frezrik-jiagu-보호-메커니즘)

6. [NDK_JIAGU 부트스트랩 시퀀스](#6-ndk_jiagu-부트스트랩-시퀀스)

7. [StubApp.smali 정적 분석](#7-stubappsmali-정적-분석)

8. [런타임 동적 분석](#8-런타임-동적-분석)

9. [권한 요청 체인 분석](#9-권한-요청-체인-분석)

10. [UI/UX 사회공학 분석](#10-uiux-사회공학-분석)

11. [네트워크 및 데이터 수집 아키텍처](#11-네트워크-및-데이터-수집-아키텍처)

12. [컴포넌트 심층 분석](#12-컴포넌트-심층-분석)

13. [방어기제 및 취약점 분석](#13-방어기제-및-취약점-분석)

14. [Full Variant (A형) vs Lite Variant (B형) 비교](#14-full-variant-a형-vs-lite-variant-b형-비교)

15. [QUERY_ALL_PACKAGES 앱 열거 분석](#15-query_all_packages-앱-열거-분석)

16. [IOC (침해 지표)](#16-ioc-침해-지표)

17. [기법 점검](#17-기법-점검)

18. [혁신 점검](#18-혁신-점검)

1. 앱 식별 정보

항목 · 값

**앱 이름** · Pink dol

**패키지명** · `caqq.ktznycptnz.mvztwmrt.gusenjrjf`

**내부 패키지** · `com.jiazai.mx.durian`

**내부 App 클래스** · `com.jiazai.mx.durian.base.MyApp`

**버전** · 1.1.4 (versionCode: 2)

**파일 크기** · 16,025,887 bytes (15.28 MB)

**SHA-256** · `7605aa2a117ab2175942bb529021afc251965dcb908e56ac53f5699479377e9d`

**minSdkVersion** · 22 (Android 5.1)

**targetSdkVersion** · 34 (Android 14)

**compileSdkVersion** · 34

**분석 ID** · pink_dol

**APK 파일명** · 251214_pinkdol.apk

**위협 수준** · HIGH

1.1 내부 패키지 언어학 분석

com.jiazai.mx.durian 패키지명의 언어학적 해석:

세그먼트 · 해석 · 근거

`jiazai` · 加载 (jiā zǎi) = "로드/적재" · 중국어 병음, 프로그래밍 용어 "loading"

`mx` · 약칭 (불명확) · 가능성: Mexico, 또는 내부 프로젝트 코드

`durian` · 榴莲 (liú lián) = "두리안 과일" · 동남아 타겟 암시, 코드네임으로 사용

이 네이밍은 중국어 개발팀이 동남아시아(특히 태국/베트남) 시장을 겨냥한 앱 개발 조직의 내부 코드네임 체계를 반영한다.

2. 패밀리 분류 및 변종 식별

2.1 패밀리: wavegrid_lite

분류 항목 · 값

**패밀리** · wavegrid_lite

**신뢰도** · 95%

**변종 유형** · **Full Variant (A형)**

**보호 방식** · Frezrik Jiagu (WaveGrid-Lite/durian)

**프레임워크** · Native Android + ZXing + OkHttp3 + Glide

2.2 Full Variant (A형) 식별 근거

wavegrid_lite 패밀리는 두 가지 변종으로 분화된다:

식별 지표 · **Full (A형) — Pink dol** · **Lite (B형) — yadil 등**

**KefuActivity** · ✅ 존재 · ❌ 미존재

**CAMERA 권한** · ✅ 포함 · ❌ 미포함

**FLASHLIGHT 권한** · ✅ 포함 · ❌ 미포함

**QUERY_ALL_PACKAGES** · ✅ 포함 · ❌ 미포함

**CHANGE_NETWORK_STATE** · ✅ 포함 · ❌ 미포함

**Activity 수** · 5개 · 3~4개

**APK 크기** · 15.28 MB · 12~13 MB

**등록 화면** · "회원 가입" (Sign Up) · "로그인" (Login)

**H/W 요구** · camera, camera.front, telephony, location, webview · 최소 요구

**마케팅 위장** · 성인용품 리모컨 · 단순 소개팅

결론: Pink dol은 wavegrid_lite의 최대 기능 변종으로, 카메라 촬영/QR 스캔/앱 열거/네트워크 조작까지 가능한 확장형 악성앱이다.

3. 패키지 난독화 분석

3.1 외부 패키지 구조

```

caqq.ktznycptnz.mvztwmrt.gusenjrjf

└─ 4-세그먼트 랜덤 패키지명

├─ 세그먼트 1: caqq (4자)

├─ 세그먼트 2: ktznycptnz (10자)

├─ 세그먼트 3: mvztwmrt (8자)

└─ 세그먼트 4: gusenjrjf (9자)

```

3.2 wavegrid_lite 패키지 패턴 비교

앱 · 패키지명 · 길이

**pink_dol** · caqq.ktznycptnz.mvztwmrt.gusenjrjf · [비공개]

yadil · zyue.dmpkfpd.qhrztv.gzkkhg · [비공개]

lovee · pxxd.hfhxmw.qkivn.lsvwkv · [비공개]

love_msg · rxkhy.phqvvn.mmxyidfy.pibpmqvpb · [비공개]

패턴: 세그먼트 길이 4~10자, 모두 소문자, 무의미한 문자열 → 자동 생성기 사용 확실.

4. AndroidManifest 심층 분석

4.1 Application 설정

```xml

<application

android:name="com.frezrik.jiagu.StubApp"

android:label="Pink dol"

android:icon="@drawable/ic_launchers"

android:networkSecurityConfig="@xml/network_security_config"

android:extractNativeLibs="true"

android:allowBackup="true"

android:supportsRtl="true"

android:theme="@style/Theme.Market">

```

속성 · 값 · 보안 의미

`name` · StubApp · Jiagu 패커 진입점

`networkSecurityConfig` · 참조 · Cleartext 허용 가능성

`extractNativeLibs` · true · SO 파일 런타임 추출

`allowBackup` · true · **취약점**: adb backup으로 앱 데이터 추출 가능

4.2 Activity 목록 (5개)

# · Activity · 역할 · exported · 특이사항

1 · `MainActivity` · 런처/메인 · true · FullScreen 테마, 실제 진입점

2 · `KefuActivity` · 고객 상담 · false · **A형 전용**, 웹뷰 기반 CS 채널

3 · `MainActivity2` · 보조 화면 · true · **exported=true** 잠재 취약

4 · `MaintenanceActivity` · 유지보수 · false · 원격 차단/서버 점검 화면

5 · `CaptureActivity` · QR 스캔 · — · ZXing 라이브러리, 세로 고정

4.3 KefuActivity 분석 (A형 전용)

Kefu (客服, kè fú) = 중국어 "고객 서비스". 이 Activity의 존재는:

1. [피해자 정보 비공개] 인프라: 가입 후 "고객 상담" 채널을 제공하여 피해자를 앱 내에 유지

2. 웹뷰 기반: 서버에서 동적으로 CS 페이지 로드 → URL 변경만으로 기능 전환 가능

3. 사회공학 강화: "문제 있으시면 고객센터에 문의"로 정상 앱 위장 강화

4.4 권한 분석 (15개)

카테고리 · 권한 · 위험도 · 목적

**연락처** · READ_CONTACTS · Dangerous · [피해자 정보 비공개] 탈취

**카메라** · CAMERA · Dangerous · 실시간 촬영 / 신분증 촬영

**저장소** · READ_EXTERNAL_STORAGE · Dangerous · 사진/문서 탈취

**저장소** · WRITE_EXTERNAL_STORAGE · Dangerous · 악성 파일 저장

**미디어** · READ_MEDIA_IMAGES · Dangerous (API 33+) · 사진 선별 탈취

**알림** · POST_NOTIFICATIONS · Normal (API 33+) · 지속적 알림으로 재방문 유도

**앱 열거** · QUERY_ALL_PACKAGES · Special · **설치된 앱 전수 목록 수집**

**네트워크** · INTERNET · Normal · C2 통신

**네트워크** · ACCESS_NETWORK_STATE · Normal · 연결 상태 확인

**네트워크** · ACCESS_WIFI_STATE · Normal · WiFi SSID/BSSID 수집

**네트워크** · CHANGE_NETWORK_STATE · Normal · **네트워크 설정 변경**

**하드웨어** · FLASHLIGHT · Normal · 카메라 보조

**하드웨어** · VIBRATE · Normal · 진동 피드백 (위장)

**하드웨어** · WAKE_LOCK · Normal · 백그라운드 작업 유지

**광고** · AD_ID (GMS) · Normal · 광고 추적 ID 수집

4.5 Hardware Features 요구 (6개)

```xml

<uses-feature android:name="android.hardware.telephony" android:required="true"/>

<uses-feature android:name="android.hardware.location" android:required="true"/>

<uses-feature android:name="android.hardware.camera.front" android:required="true"/>

<uses-feature android:name="android.software.webview" android:required="true"/>

<uses-feature android:name="android.hardware.camera.autofocus" android:required="true"/>

<uses-feature android:name="android.hardware.camera" android:required="true"/>

```

모두 required="true": 태블릿/데스크톱 기기 제외 → 핸드폰만 타겟.

· telephony: 전화 기능 → SIM 카드 보유 기기

· location: GPS → 위치 추적 (권한은 별도 요청)

· camera + camera.front + camera.autofocus: 전/후면 카메라 필수 → 자동 촬영 의도

· webview: 웹 기반 UI 렌더링 필수

5. Frezrik Jiagu 보호 메커니즘

5.1 패커 구조

```

APK 구조:

├── classes.dex (4개 stub 클래스만 포함)

│ ├── com/frezrik/jiagu/StubApp.smali (1,267줄)

│ ├── com/frezrik/jiagu/a.smali

│ ├── com/frezrik/jiagu/b.smali

│ └── com/frezrik/jiagu/c.smali

├── assets/

│ ├── libjiagu.so (ARM 32-bit)

│ ├── libjiagu_64.so (ARM 64-bit)

│ ├── libjiagu_x86.so (x86 32-bit)

│ └── libjiagu_x86_64.so (x86 64-bit)

└── lib/ (비어 있음 — SO는 런타임에 assets에서 추출)

```

5.2 4-아키텍처 SO 파일

파일 · 아키텍처 · 대상

`libjiagu.so` · ARM 32-bit · 구형 폰

`libjiagu_64.so` · ARM 64-bit · 현대 폰 (대부분)

`libjiagu_x86.so` · x86 32-bit · 에뮬레이터

`libjiagu_x86_64.so` · x86 64-bit · 에뮬레이터 (현대)

에뮬레이터 호환: x86/x86_64 SO를 포함 → 에뮬레이터 탐지 없이 동작 허용 (virbox_sens와 대비)

5.3 DEX 암호화

· 정적 DEX: stub 4개 클래스만 노출 (smali_file_count: 4)

· 암호화 DEX: SO 파일 내부에 암호화된 실제 앱 DEX 포함

· 런타임 복호화: NDK_JIAGU가 SO 로드 → DEX 추출 → DexClassLoader로 로드

· 복호화 후 DEX 수: 3개 (Elements size: 1, dex File size: 3)

6. NDK_JIAGU 부트스트랩 시퀀스

에뮬레이터 동적 분석으로 캡처한 실제 부트스트랩 시퀀스:

```

[T+0.000s] 22:20:56.218 ActivityManager: START {caqq.../com.jiazai.mx.durian.ui.home.MainActivity}

[T+0.083s] 22:20:56.301 ActivityManager: Start proc 10653:caqq.../u0a211

[T+0.478s] 22:20:56.779 nativeloader: Configuring clns-7 for base.apk (target_sdk=34)

[T+0.528s] 22:20:56.829 NDK_JIAGU: soName:libjiagu_x86_64.so

[T+0.524s] 22:20:56.825 SELinux: granted { execute } for .jiagu/libjiaguv1.so

[T+0.725s] 22:20:57.026 nativeloader: Load .jiagu/libjiaguv1.so using ns clns-7: ok

[T+0.726s] 22:20:57.027 NDK_JIAGU: SDK_INT = 35

[T+0.726s] 22:20:57.027 NDK_JIAGU: init done! quick_on_stack_replace = 0x77002d334000

[T+0.726s] 22:20:57.027 NDK_JIAGU: [-]getDex

[T+2.830s] 22:20:59.331 NDK_JIAGU: [-]loadDex

[T+3.000s] 22:20:59.501 NDK_JIAGU: app name: com.jiazai.mx.durian.base.MyApp

[T+4.614s] 22:21:01.115 NDK_JIAGU: [+]Elements size:1, dex File size: 3

[T+4.614s] 22:21:01.115 NDK_JIAGU: hook

[T+4.694s] 22:21:01.195 NDK_JIAGU: replaceContentProvider

[T+4.847s] 22:21:01.348 NDK_JIAGU: replaceContentProvider (2차)

[T+4.869s] 22:21:01.370 NDK_JIAGU: replaceApplicationContext

```

6.1 부트스트랩 타임라인 분석

단계 · 시점 · 소요 · 동작

1. 프로세스 시작 · T+0.000s · — · ActivityManager가 앱 시작

2. SO 식별 · T+0.528s · 0.528s · 아키텍처별 SO 파일 선택

3. SELinux 허가 · T+0.524s · ~0s · execute 권한 취득

4. SO 로드 · T+0.725s · 0.197s · libjiaguv1.so를 네이티브 네임스페이스에 로드

5. SDK 확인 · T+0.726s · ~0s · 안드로이드 API 레벨 확인

6. 초기화 · T+0.726s · ~0s · ART 후킹 포인터 설정

7. DEX 추출 · T+0.726s · 2.104s · 암호화 DEX 복호화

8. DEX 로드 · T+2.830s · 0.170s · DexClassLoader로 메모리 로드

9. 앱명 확인 · T+3.000s · — · 실제 Application 클래스 해석

10. 클래스 병합 · T+4.614s · 1.614s · DEX 파일 3개를 Elements에 주입

11. ART 후킹 · T+4.614s · ~0s · method 후킹 활성화

12. Provider 교체 · T+4.694s · 0.175s · ContentProvider 2개 교체

13. Context 교체 · T+4.869s · — · ApplicationContext를 실제 앱으로 교체

총 부트스트랩 시간: ~4.87초

6.2 주요 발견

1. DEX 파일 3개: dex File size: 3 — stub 1개 DEX에서 실제 앱 3개 DEX로 교체. 앱의 실제 코드 규모가 상당함.

2. ContentProvider 2회 교체: replaceContentProvider가 두 번 호출 → InitializationProvider + OkDownloadProvider 모두 교체.

3. ART 후킹: quick_on_stack_replace = 0x77002d334000 — ART 메소드 호출 스택을 직접 후킹하여 DEX 교체를 투명하게 처리.

4. app name 노출: com.jiazai.mx.durian.base.MyApp — 실제 Application 클래스명이 로그에 노출.

7. StubApp.smali 정적 분석

7.1 개요

```

파일: com/frezrik/jiagu/StubApp.smali

크기: 1,267줄

부모 클래스: [비공개].Application

상수: "NDK_JIAGU" (태그)

```

7.2 핵심 메소드

메소드 · 줄 · 기능

`attachBaseContext()` · — · SO 추출 + 네이티브 로드 + DEX 복호화

`onCreate()` · — · 실제 앱 Application.onCreate() 호출

`replaceApplication()` · — · mApplication, mInitialApplication 교체

`replaceContentProvider()` · — · mLocalProvider → 실제 앱 Provider로 교체

`currentActivityThread()` · — · ActivityThread 싱글턴 획득 (리플렉션)

7.3 리플렉션 대상 필드

StubApp이 런타임에 접근하는 Android 내부 필드:

클래스 · 필드 · 용도

`ActivityThread` · `currentActivityThread` · 싱글턴 인스턴스 획득

`ActivityThread` · `mInitialApplication` · Application 교체

`ActivityThread` · `mAllApplications` · Application 목록 교체

`LoadedApk` · `mApplication` · 패키지별 Application 교체

`LoadedApk` · `mApplicationInfo` · ApplicationInfo 교체

`ContextImpl` · `mPackageInfo` · LoadedApk 참조 획득

`ContextImpl` · `setOuterContext()` · 외부 Context 교체

`ActivityThread` · `mProviderMap` · ContentProvider 맵 접근

`ProviderClientRecord` · `mLocalProvider` · 개별 Provider 교체

`ContentProvider` · `mContext` · Provider의 Context 교체

이 리플렉션 체인은 Android 프레임워크의 핵심을 조작하여, 패커가 복호화한 DEX를 원래부터 존재한 것처럼 주입한다.

7.4 yadil StubApp과의 동일성

pink_dol의 StubApp.smali(1,267줄)은 yadil의 것과 바이트 단위로 동일. 이는:

· 동일한 Frezrik Jiagu 빌드 사용

· 패커 자동화 파이프라인에서 앱별 차별화 없이 동일한 stub 적용

· 차별점은 암호화된 DEX 내부(실제 앱 코드)에만 존재

8. 런타임 동적 분석

8.1 에뮬레이터 환경

항목 · 값

**AVD** · DeepCoding_API35

**API** · 35 (Android 15)

**아키텍처** · x86_64

**ADB** · emulator-5554

**분석일** · 2026-02-27

8.2 설치 및 실행

```

$ adb install 251214_pinkdol.apk

Success

$ adb shell am start -n caqq.ktznycptnz.mvztwmrt.gusenjrjf/com.jiazai.mx.durian.ui.home.MainActivity

Starting: Intent { cmp=caqq.../com.jiazai.mx.durian.ui.home.MainActivity }

```

결과: 에뮬레이터에서 정상 실행 (virbox_sens 계열과 대비 — 해당 계열은 0.128초 내 크래시).

8.3 SELinux 로그 분석

```

avc: granted { execute } for

path="/data/data/caqq.ktznycptnz.mvztwmrt.gusenjrjf/.jiagu/libjiaguv1.so"

dev="dm-45"

ino=516735

scontext=u:r:untrusted_app:s0:c211,c256,c512,c768

tcontext=u:object_r:app_data_file:s0:c211,c256,c512,c768

tclass=file

```

주목할 점:

1. scontext=untrusted_app: targetSdk=34이므로 untrusted_app 도메인 (vs virbox_sens의 untrusted_app_32)

2. dm-45: 동일 디바이스 매퍼 장치 (에뮬레이터 데이터 파티션)

3. .jiagu/libjiaguv1.so: 런타임 추출된 SO 파일명 → libjiaguv1.so로 통일됨

8.4 프로세스 안정성

지표 · Pink dol (wavegrid_lite) · healing (virbox_sens)

**실행 후 생존** · ✅ 정상 동작 · ❌ 0.128초 내 크래시

**에뮬레이터 탐지** · 없음 · 강력 (8개 브랜드)

**scontext** · untrusted_app · untrusted_app_32

**targetSdk** · 34 · 33

**DEX 수** · 3개 · 불명 (크래시)

9. 권한 요청 체인 분석

에뮬레이터 동적 테스트로 확인된 실제 권한 요청 순서:

9.1 요청 시퀀스

```

1단계: READ_CONTACTS

└─ "Allow Pink dol to access your contacts?"

└─ [Allow] / [Don't allow]

2단계: READ_MEDIA_IMAGES (API 33+) 또는 READ_EXTERNAL_STORAGE

└─ "Allow Pink dol to access photos and videos on this device?"

└─ [Allow limited access] / [Allow all] / [Don't allow]

3단계: (추정) CAMERA

└─ 앱 내 기능 사용 시 동적 요청

4단계: (추정) POST_NOTIFICATIONS

└─ 앱 진입 후 동적 요청

```

9.2 권한 요청 전략

1. 즉시 요청: 앱 실행 직후 READ_CONTACTS → 사용자가 "앱 사용을 위해 필요"라고 인지하도록 유도

2. 연쇄 요청: CONTACTS 승인/거부 직후 바로 IMAGES 요청 → "허용 피로(Permission Fatigue)" 전략

3. Scoped Storage 대응: API 33+에서는 READ_MEDIA_IMAGES 사용, 3단계 선택지 제공 → "limited access"도 [피해자 정보 비공개] 일부 탈취 가능

4. CAMERA 지연 요청: 초기에 CAMERA를 요청하지 않고 앱 내 특정 기능(QR 스캔 등)에서 동적 요청 → 자연스럽게 허용 유도

10. UI/UX 사회공학 분석

10.1 런처 화면 (screenshot_launch.png)

앱 실행 직후 화면:

· 배경: 분홍색 그라데이션 + 성인용품 리모컨 UI

· 문구: "APP Remote Control 10000+ Patterns"

· 즉시 팝업: READ_CONTACTS 권한 다이얼로그

사회공학 전략: 성인용품 앱으로 위장하여 피해자의 수치심을 유발 → 다른 사람에게 앱 존재를 알리기 꺼리게 만듦 → 삭제 지연 효과.

10.2 메인 화면 (screenshot_main.png)

권한 다이얼로그 통과 후 표시되는 화면:

```

Welcome 💕

├─ 휴대폰 번호를 입력해주세요 (전화번호 입력 필드)

├─ 초대 코드를 입력해주세요 (초대코드 입력 필드)

├─ 회원 가입 (CTA 버튼)

└─ 하단 기능 아이콘:

├─ D&S Group Control

├─ Sync to Sounds

├─ Online Chat

└─ Speed Mode

```

10.3 DIS-001 적용: 초대코드 보정

분석 방법 · invitation_code 값

정적 분석 (auto_analysis.json) · `false`

**동적 분석 (스크린샷)** · **`true`** ← 우선

보정 근거: 메인 화면에 "초대 코드를 입력해주세요" 필드가 명확히 존재. 정적 분석에서 false로 판단된 것은 Jiagu 암호화로 인해 smali에서 초대코드 관련 문자열을 탐지하지 못했기 때문.

10.4 언어 혼합 전략

언어 · 사용 위치 · 목적

**한국어** · "휴대폰 번호", "초대 코드", "회원 가입" · **한국인 타겟**

**영어** · "Welcome", "D&S Group Control", "Speed Mode" · 국제적/고급 이미지

**이모지** · 💕 · 친밀감 조성

핵심: 이 앱은 한국인을 주 타겟으로 하며, 성인용품 리모컨 앱으로 위장하여 수치심 기반 사회공학을 수행한다.

11. 네트워크 및 데이터 수집 아키텍처

11.1 네트워크 라이브러리 스택

```

┌─────────────────────────────────────┐

│ 앱 로직 (DEX 3개) │

├─────────────────────────────────────┤

│ OkHttp3 (HTTP 클라이언트) │

│ └─ Glide (이미지 로딩) + OkHttp 통합 │

│ └─ OkDownload (청크 다운로드) │

├─────────────────────────────────────┤

│ ZXing (QR 코드 스캔) │

├─────────────────────────────────────┤

│ network_security_config.xml │

│ └─ cleartext traffic 설정 │

└─────────────────────────────────────┘

```

11.2 라이브러리별 역할

라이브러리 · 매니페스트 증거 · 추정 용도

**OkHttp3** · GlideModule meta-data · C2 통신, API 호출, 데이터 업로드

**Glide** · OkHttpGlideModule · 이미지 캐싱 및 업로드 전처리

**OkDownload** · OkDownloadProvider · 대용량 파일 청크 다운로드 (업데이트/추가 페이로드)

**ZXing** · CaptureActivity · QR 코드 스캔 → C2 URL 또는 페이링 정보 획득

11.3 데이터 수집 채널

채널 · 권한 · 수집 대상 · 전송 방식

**연락처** · READ_CONTACTS · 이름, 번호, 이메일 · JSON 직렬화 → OkHttp POST

**사진** · READ_MEDIA_IMAGES · 갤러리 이미지 · Glide 전처리 → OkHttp 멀티파트

**카메라** · CAMERA · 실시간 촬영 · OkHttp 스트리밍

**앱 목록** · QUERY_ALL_PACKAGES · 설치 앱 전체 · JSON 직렬화 → OkHttp POST

**네트워크** · ACCESS_WIFI_STATE · SSID/BSSID · 메타데이터와 함께 전송

**QR 코드** · CAMERA · QR 내용 · ZXing 파싱 → 내부 처리

11.4 OkDownload 위협 분석

com.liulishuo.okdownload.OkDownloadProvider의 존재는:

1. 추가 페이로드 다운로드: 서버에서 추가 DEX/SO 파일을 청크 단위로 다운로드

2. 업데이트 우회: Play Store 검증 없이 앱 기능 동적 업데이트

3. 스테이지 기반 공격: 초기 설치 → 추가 모듈 다운로드 → 기능 확장

12. 컴포넌트 심층 분석

12.1 MyServices (exported=true!)

```xml

<service android:enabled="true" android:exported="true"

android:name="com.jiazai.mx.durian.ui.MyServices"/>

```

보안 문제: exported="true"이면서 permission 없음 → 모든 앱에서 이 서비스를 시작 가능.

· 악성 기능(데이터 수집)이 백그라운드 서비스로 동작

· 다른 악성앱과 협조 공격 가능 (인텐트로 서비스 제어)

· 지속적 실행을 위한 WAKE_LOCK과 연계

12.2 MaintenanceActivity

```xml

<activity android:exported="false"

android:name="com.jiazai.mx.durian.ui.home.MaintenanceActivity"

android:theme="@style/AppTheme"/>

```

역할 추정:

· C2 서버가 "서버 점검 중" 메시지를 표시할 때 사용

· 또는 특정 조건(법 집행 압력 등)에서 앱 기능을 비활성화하는 킬스위치

· wavegrid 패밀리 공통 패턴 (서버 제어 원격 차단)

12.3 MainActivity2 (exported=true)

```xml

<activity android:exported="true"

android:name="com.jiazai.mx.durian.ui.home.MainActivity2"

android:theme="@style/AppTheme"/>

```

보안 문제: exported=true + intent-filter 없음 → 외부에서 직접 시작 가능.

· 메인 진입점 우회 가능 (MainActivity 대신 직접 접근)

· 잠재적으로 인증 없이 앱 내부 기능 접근

13. 방어기제 및 취약점 분석

13.1 방어기제 (7개)

# · 기제 · 상태 · 설명

1 · **Frezrik Jiagu DEX 암호화** · Active · 3개 DEX 런타임 복호화

2 · **4-아키텍처 SO** · Active · ARM/x86 모두 지원

3 · **ART Method 후킹** · Active · quick_on_stack_replace 기반

4 · **리플렉션 기반 우회** · Active · Android 내부 필드 직접 조작

5 · **랜덤 패키지명** · Active · 4-세그먼트 무의미 문자열

6 · **ContentProvider 교체** · Active · 2개 Provider 런타임 교체

7 · **초대코드 게이트** · Active · 가입 시 초대코드 필수

13.2 취약점 (5개)

# · 취약점 · 심각도 · 설명

1 · **allowBackup=true** · Medium · adb backup으로 앱 데이터 추출 가능

2 · **MyServices exported** · High · permission 없이 외부에서 서비스 호출 가능

3 · **MainActivity2 exported** · Medium · 인증 우회 가능성

4 · **에뮬레이터 탐지 없음** · Low · 분석 환경에서 자유롭게 동작

5 · **cleartext traffic** · Medium · 네트워크 감청 가능 (MITM)

13.3 virbox_sens vs wavegrid_lite 방어 비교

측면 · wavegrid_lite (Pink dol) · virbox_sens (healing)

**DEX 보호** · Frezrik Jiagu 런타임 복호화 · Virbox VM 코드 가상화

**에뮬레이터 탐지** · ❌ 없음 · ✅ 8개 브랜드 탐지

**루트 탐지** · ❌ 없음 · ✅ 8개 경로 확인

**후킹 탐지** · ❌ 없음 · ✅ 6개 프레임워크

**디버그 탐지** · ❌ 없음 · ✅ 7개 방법

**에뮬레이터 TKR** · N/A (동작) · 0.128초

**분석 난이도** · 중 · 극고

14. Full Variant (A형) vs Lite Variant (B형) 비교

14.1 FVA-001 적용: 변종 간 기능 정렬

기능 · **Full (A형)** · **Lite (B형)** · 차이 의미

**카메라 촬영** · ✅ · ❌ · 실시간 촬영/신분증 도촬

**QR 스캔** · ✅ (ZXing) · ❌ · C2 URL 동적 주입

**앱 열거** · ✅ · ❌ · 보안앱 탐지/우회

**고객 상담** · ✅ (KefuActivity) · ❌ · [피해자 정보 비공개] 전략

**네트워크 조작** · ✅ · ❌ · DNS/프록시 변

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