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-혁신-점검)
항목 · 값
**앱 이름** · 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
com.jiazai.mx.durian 패키지명의 언어학적 해석:
세그먼트 · 해석 · 근거
`jiazai` · 加载 (jiā zǎi) = "로드/적재" · 중국어 병음, 프로그래밍 용어 "loading"
`mx` · 약칭 (불명확) · 가능성: Mexico, 또는 내부 프로젝트 코드
`durian` · 榴莲 (liú lián) = "두리안 과일" · 동남아 타겟 암시, 코드네임으로 사용
이 네이밍은 중국어 개발팀이 동남아시아(특히 태국/베트남) 시장을 겨냥한 앱 개발 조직의 내부 코드네임 체계를 반영한다.
분류 항목 · 값
**패밀리** · wavegrid_lite
**신뢰도** · 95%
**변종 유형** · **Full Variant (A형)**
**보호 방식** · Frezrik Jiagu (WaveGrid-Lite/durian)
**프레임워크** · Native Android + ZXing + OkHttp3 + Glide
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 스캔/앱 열거/네트워크 조작까지 가능한 확장형 악성앱이다.
```
caqq.ktznycptnz.mvztwmrt.gusenjrjf
└─ 4-세그먼트 랜덤 패키지명
├─ 세그먼트 1: caqq (4자)
├─ 세그먼트 2: ktznycptnz (10자)
├─ 세그먼트 3: mvztwmrt (8자)
└─ 세그먼트 4: gusenjrjf (9자)
```
앱 · 패키지명 · 길이
**pink_dol** · caqq.ktznycptnz.mvztwmrt.gusenjrjf · [비공개]
yadil · zyue.dmpkfpd.qhrztv.gzkkhg · [비공개]
lovee · pxxd.hfhxmw.qkivn.lsvwkv · [비공개]
love_msg · rxkhy.phqvvn.mmxyidfy.pibpmqvpb · [비공개]
패턴: 세그먼트 길이 4~10자, 모두 소문자, 무의미한 문자열 → 자동 생성기 사용 확실.
```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으로 앱 데이터 추출 가능
# · Activity · 역할 · exported · 특이사항
1 · `MainActivity` · 런처/메인 · true · FullScreen 테마, 실제 진입점
2 · `KefuActivity` · 고객 상담 · false · **A형 전용**, 웹뷰 기반 CS 채널
3 · `MainActivity2` · 보조 화면 · true · **exported=true** 잠재 취약
4 · `MaintenanceActivity` · 유지보수 · false · 원격 차단/서버 점검 화면
5 · `CaptureActivity` · QR 스캔 · — · ZXing 라이브러리, 세로 고정
Kefu (客服, kè fú) = 중국어 "고객 서비스". 이 Activity의 존재는:
1. [피해자 정보 비공개] 인프라: 가입 후 "고객 상담" 채널을 제공하여 피해자를 앱 내에 유지
2. 웹뷰 기반: 서버에서 동적으로 CS 페이지 로드 → URL 변경만으로 기능 전환 가능
3. 사회공학 강화: "문제 있으시면 고객센터에 문의"로 정상 앱 위장 강화
카테고리 · 권한 · 위험도 · 목적
**연락처** · 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 수집
```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 렌더링 필수
```
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에서 추출)
```
파일 · 아키텍처 · 대상
`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와 대비)
· 정적 DEX: stub 4개 클래스만 노출 (smali_file_count: 4)
· 암호화 DEX: SO 파일 내부에 암호화된 실제 앱 DEX 포함
· 런타임 복호화: NDK_JIAGU가 SO 로드 → DEX 추출 → DexClassLoader로 로드
· 복호화 후 DEX 수: 3개 (Elements size: 1, dex File size: 3)
에뮬레이터 동적 분석으로 캡처한 실제 부트스트랩 시퀀스:
```
[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
```
단계 · 시점 · 소요 · 동작
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초
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 클래스명이 로그에 노출.
```
파일: com/frezrik/jiagu/StubApp.smali
크기: 1,267줄
부모 클래스: [비공개].Application
상수: "NDK_JIAGU" (태그)
```
메소드 · 줄 · 기능
`attachBaseContext()` · — · SO 추출 + 네이티브 로드 + DEX 복호화
`onCreate()` · — · 실제 앱 Application.onCreate() 호출
`replaceApplication()` · — · mApplication, mInitialApplication 교체
`replaceContentProvider()` · — · mLocalProvider → 실제 앱 Provider로 교체
`currentActivityThread()` · — · ActivityThread 싱글턴 획득 (리플렉션)
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를 원래부터 존재한 것처럼 주입한다.
pink_dol의 StubApp.smali(1,267줄)은 yadil의 것과 바이트 단위로 동일. 이는:
· 동일한 Frezrik Jiagu 빌드 사용
· 패커 자동화 파이프라인에서 앱별 차별화 없이 동일한 stub 적용
· 차별점은 암호화된 DEX 내부(실제 앱 코드)에만 존재
항목 · 값
**AVD** · DeepCoding_API35
**API** · 35 (Android 15)
**아키텍처** · x86_64
**ADB** · emulator-5554
**분석일** · 2026-02-27
```
$ 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초 내 크래시).
```
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로 통일됨
지표 · Pink dol (wavegrid_lite) · healing (virbox_sens)
**실행 후 생존** · ✅ 정상 동작 · ❌ 0.128초 내 크래시
**에뮬레이터 탐지** · 없음 · 강력 (8개 브랜드)
**scontext** · untrusted_app · untrusted_app_32
**targetSdk** · 34 · 33
**DEX 수** · 3개 · 불명 (크래시)
에뮬레이터 동적 테스트로 확인된 실제 권한 요청 순서:
```
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
└─ 앱 진입 후 동적 요청
```
1. 즉시 요청: 앱 실행 직후 READ_CONTACTS → 사용자가 "앱 사용을 위해 필요"라고 인지하도록 유도
2. 연쇄 요청: CONTACTS 승인/거부 직후 바로 IMAGES 요청 → "허용 피로(Permission Fatigue)" 전략
3. Scoped Storage 대응: API 33+에서는 READ_MEDIA_IMAGES 사용, 3단계 선택지 제공 → "limited access"도 [피해자 정보 비공개] 일부 탈취 가능
4. CAMERA 지연 요청: 초기에 CAMERA를 요청하지 않고 앱 내 특정 기능(QR 스캔 등)에서 동적 요청 → 자연스럽게 허용 유도
앱 실행 직후 화면:
· 배경: 분홍색 그라데이션 + 성인용품 리모컨 UI
· 문구: "APP Remote Control 10000+ Patterns"
· 즉시 팝업: READ_CONTACTS 권한 다이얼로그
사회공학 전략: 성인용품 앱으로 위장하여 피해자의 수치심을 유발 → 다른 사람에게 앱 존재를 알리기 꺼리게 만듦 → 삭제 지연 효과.
권한 다이얼로그 통과 후 표시되는 화면:
```
Welcome 💕
├─ 휴대폰 번호를 입력해주세요 (전화번호 입력 필드)
├─ 초대 코드를 입력해주세요 (초대코드 입력 필드)
├─ 회원 가입 (CTA 버튼)
└─ 하단 기능 아이콘:
├─ D&S Group Control
├─ Sync to Sounds
├─ Online Chat
└─ Speed Mode
```
분석 방법 · invitation_code 값
정적 분석 (auto_analysis.json) · `false`
**동적 분석 (스크린샷)** · **`true`** ← 우선
보정 근거: 메인 화면에 "초대 코드를 입력해주세요" 필드가 명확히 존재. 정적 분석에서 false로 판단된 것은 Jiagu 암호화로 인해 smali에서 초대코드 관련 문자열을 탐지하지 못했기 때문.
언어 · 사용 위치 · 목적
**한국어** · "휴대폰 번호", "초대 코드", "회원 가입" · **한국인 타겟**
**영어** · "Welcome", "D&S Group Control", "Speed Mode" · 국제적/고급 이미지
**이모지** · 💕 · 친밀감 조성
핵심: 이 앱은 한국인을 주 타겟으로 하며, 성인용품 리모컨 앱으로 위장하여 수치심 기반 사회공학을 수행한다.
```
┌─────────────────────────────────────┐
│ 앱 로직 (DEX 3개) │
├─────────────────────────────────────┤
│ OkHttp3 (HTTP 클라이언트) │
│ └─ Glide (이미지 로딩) + OkHttp 통합 │
│ └─ OkDownload (청크 다운로드) │
├─────────────────────────────────────┤
│ ZXing (QR 코드 스캔) │
├─────────────────────────────────────┤
│ network_security_config.xml │
│ └─ cleartext traffic 설정 │
└─────────────────────────────────────┘
```
라이브러리 · 매니페스트 증거 · 추정 용도
**OkHttp3** · GlideModule meta-data · C2 통신, API 호출, 데이터 업로드
**Glide** · OkHttpGlideModule · 이미지 캐싱 및 업로드 전처리
**OkDownload** · OkDownloadProvider · 대용량 파일 청크 다운로드 (업데이트/추가 페이로드)
**ZXing** · CaptureActivity · QR 코드 스캔 → C2 URL 또는 페이링 정보 획득
채널 · 권한 · 수집 대상 · 전송 방식
**연락처** · 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 파싱 → 내부 처리
com.liulishuo.okdownload.OkDownloadProvider의 존재는:
1. 추가 페이로드 다운로드: 서버에서 추가 DEX/SO 파일을 청크 단위로 다운로드
2. 업데이트 우회: Play Store 검증 없이 앱 기능 동적 업데이트
3. 스테이지 기반 공격: 초기 설치 → 추가 모듈 다운로드 → 기능 확장
```xml
<service android:enabled="true" android:exported="true"
android:name="com.jiazai.mx.durian.ui.MyServices"/>
```
보안 문제: exported="true"이면서 permission 없음 → 모든 앱에서 이 서비스를 시작 가능.
· 악성 기능(데이터 수집)이 백그라운드 서비스로 동작
· 다른 악성앱과 협조 공격 가능 (인텐트로 서비스 제어)
· 지속적 실행을 위한 WAKE_LOCK과 연계
```xml
<activity android:exported="false"
android:name="com.jiazai.mx.durian.ui.home.MaintenanceActivity"
android:theme="@style/AppTheme"/>
```
역할 추정:
· C2 서버가 "서버 점검 중" 메시지를 표시할 때 사용
· 또는 특정 조건(법 집행 압력 등)에서 앱 기능을 비활성화하는 킬스위치
· wavegrid 패밀리 공통 패턴 (서버 제어 원격 차단)
```xml
<activity android:exported="true"
android:name="com.jiazai.mx.durian.ui.home.MainActivity2"
android:theme="@style/AppTheme"/>
```
보안 문제: exported=true + intent-filter 없음 → 외부에서 직접 시작 가능.
· 메인 진입점 우회 가능 (MainActivity 대신 직접 접근)
· 잠재적으로 인증 없이 앱 내부 기능 접근
# · 기제 · 상태 · 설명
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 · 가입 시 초대코드 필수
# · 취약점 · 심각도 · 설명
1 · **allowBackup=true** · Medium · adb backup으로 앱 데이터 추출 가능
2 · **MyServices exported** · High · permission 없이 외부에서 서비스 호출 가능
3 · **MainActivity2 exported** · Medium · 인증 우회 가능성
4 · **에뮬레이터 탐지 없음** · Low · 분석 환경에서 자유롭게 동작
5 · **cleartext traffic** · Medium · 네트워크 감청 가능 (MITM)
측면 · wavegrid_lite (Pink dol) · virbox_sens (healing)
**DEX 보호** · Frezrik Jiagu 런타임 복호화 · Virbox VM 코드 가상화
**에뮬레이터 탐지** · ❌ 없음 · ✅ 8개 브랜드 탐지
**루트 탐지** · ❌ 없음 · ✅ 8개 경로 확인
**후킹 탐지** · ❌ 없음 · ✅ 6개 프레임워크
**디버그 탐지** · ❌ 없음 · ✅ 7개 방법
**에뮬레이터 TKR** · N/A (동작) · 0.128초
**분석 난이도** · 중 · 극고
기능 · **Full (A형)** · **Lite (B형)** · 차이 의미
**카메라 촬영** · ✅ · ❌ · 실시간 촬영/신분증 도촬
**QR 스캔** · ✅ (ZXing) · ❌ · C2 URL 동적 주입
**앱 열거** · ✅ · ❌ · 보안앱 탐지/우회
**고객 상담** · ✅ (KefuActivity) · ❌ · [피해자 정보 비공개] 전략
**네트워크 조작** · ✅ · ❌ · DNS/프록시 변
본 보고서는 주식회사 아크링크 Deep-Coding 보안연구소가 피싱·몸캠피싱 피해자 구제를 목적으로 작성했습니다. 전체 열람·피해 상담: arklink.co.kr