PPAU 상세 분석 보고서

PPAU (ppau) 양자 나노 분석 보고서

분석 일자: 2026-02-26

보고서 버전: v2.0

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

목차

1. [분석 개요](#1-분석-개요)

2. [앱 기본 정보](#2-앱-기본-정보)

3. [Template C-Kefu 변종 분류](#3-template-c-kefu-변종-분류)

4. [권한 심층 분석 — 15-Permission Lite Profile](#4-권한-심층-분석--15-permission-lite-profile)

5. [방어기제 분석 — Frezrik Jiagu 6th Instance](#5-방어기제-분석--frezrik-jiagu-6th-instance)

6. [NDK_JIAGU 런타임 언패킹 분석](#6-ndk_jiagu-런타임-언패킹-분석)

7. [SO 바이너리 해시 체인 — 6차 확인](#7-so-바이너리-해시-체인--6차-확인)

8. [앱 구조 심층 분석](#8-앱-구조-심층-분석)

9. [MaintenanceActivity 신규 컴포넌트 분석](#9-maintenanceactivity-신규-컴포넌트-분석)

10. [네트워크 통신 분석](#10-네트워크-통신-분석)

11. [데이터 수집 로직 — Contacts-Images-Camera 삼각형](#11-데이터-수집-로직--contacts-images-camera-삼각형)

12. [ShareTrace SDK 분석](#12-sharetrace-sdk-분석)

13. [C2 서버 및 API 분석](#13-c2-서버-및-api-분석)

14. [OkHttp3 + Glide + OkDownload 통신 스택](#14-okhttp3--glide--okdownload-통신-스택)

15. [ZXing QR 코드 스캐너 분석](#15-zxing-qr-코드-스캐너-분석)

16. [UI/UX 소셜 엔지니어링 분석](#16-uiux-소셜-엔지니어링-분석)

17. [패밀리 크로스 레퍼런스 — 6-Instance Comparison](#17-패밀리-크로스-레퍼런스--6-instance-comparison)

18. [SL-086: Permission-Level Template Taxonomy](#18-sl-086-permission-level-template-taxonomy)

19. [IOC (Indicators of Compromise)](#19-ioc-indicators-of-compromise)

20. [취약점 분석](#20-취약점-분석)

21. [MITRE ATT&CK 매핑](#21-mitre-attck-매핑)

22. [YARA 룰](#22-yara-룰)

23. [🔬 기법 점검](#23-🔬-기법-점검)

24. [결론 및 위협 평가](#24-결론-및-위협-평가)

1. 분석 개요

1.1 분석 목적

피싱/스미싱 [피해자 정보 비공개] 위한 악성앱 역공학 분석. PPAU는 "성인 영상통화 채팅앱"으로 위장한

연락처/이미지 탈취 악성앱이다. Template C-Kefu 패밀리의 6번째 확인 인스턴스이며,

기존 인스턴스 대비 권한 축소 변종(Lite Profile)이라는 점에서 탬플릿 진화를 입증한다.

1.2 분석 범위

항목 · 값

분석 대상 · PPAU 1.1.4 (versionCode=2)

APK SHA-256 · `88e5d9f9a3e343cdec346808195bf0e50bdb637c7100e222be063-****-****c4c`

DEX 파일 · 3개 (런타임 복호화, Elements size:1→3)

네이티브 라이브러리 · 4개 (assets/ 경로, Jiagu SO)

난독화 수준 · Critical (Frezrik Jiagu + 런타임 DEX 복호화)

분석 방법 · 정적 분석 + 동적 분석 (에뮬레이터) + 6-Instance 크로스 레퍼런스

1.3 분석 환경

도구 · 용도

apktool v2.9.3 · APK 디컴파일

Deep-Coding Lab v2.0 · 패밀리 식별, SO 해시 검증, NDK_JIAGU 시퀀스 캡처

Google Emulator (DeepCoding_API35) · 동적 분석, 권한 요청 체인 관찰

ADB logcat · NDK_JIAGU 11-step 시퀀스 + ConnectivityService 트래픽 캡처

sha256sum · SO 바이너리 해시 체인 검증 (6차)

1.4 핵심 발견 요약

발견 · 심각도 · 상세

Template C-Kefu 6번째 인스턴스 확인 · Critical · 동일 SO 바이너리, 동일 ART Hook 주소

15-Permission Lite Profile 최초 발견 · High · 기존 27권한 대비 12개 축소 — SMS, 통화기록, 위치 등 제거

MaintenanceActivity 신규 컴포넌트 · High · 서버 측 유지보수 모드 원격 제어 가능성

versionCode=2 (v1.1.4) 최초 확인 · Medium · 기존 모든 인스턴스 versionCode=1 → PPAU만 v2

16,025,887B 파일 크기 신규 변종 · Medium · v1(16,643,509B)·v2(16,610,741B) 아닌 3번째 사이즈 변종

ANR 발생 패턴 · Medium · Jiagu 언패킹 부하로 인한 UI 스레드 블로킹 관찰

2. 앱 기본 정보

2.1 식별 정보

항목 · 값

**앱 이름** · PPAU

**패키지명** · `com.hhii.lkzonx.orcrxusg`

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

**minSdkVersion** · 22 (Android 5.1 Lollipop)

**targetSdkVersion** · 34 (Android 14)

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

**APK SHA-256** · `88e5d9f9a3e343cdec346808195bf0e50bdb637c7100e222be063-****-****c4c`

**출처 경로** · `app_manager/앱플레이어 O/초대 코드 X/250422 _ PPAU2025.apk`

2.2 패키지명 분석

com.hhii.lkzonx.orcrxusg — 4-segment 랜덤 패키지:

· com — 표준 TLD

· hhii — 4자 랜덤 (소문자)

· lkzonx — 6자 랜덤 (소문자)

· orcrxusg — 8자 랜덤 (소문자)

기존 Template C-Kefu 패키지 비교:

인스턴스 · 패키지명 · 세그먼트 길이 패턴

WeeTalk · `com.wewjkn.cmwrxjk.kdnjek` · 3-6-7-6

wks_dildo · `com.txwm.wnjlsxz.cxllkt` · 3-4-7-6

bp_dildo · `com.wtwkjknjkw.nhjk.njkss` · 3-10-4-5

hpb_dildo · `com.fptogurtll.xgzcmislq.rlczxy` · 3-10-9-6

ppau · `com.hhii.lkzonx.orcrxusg` · 3-4-6-8

세그먼트 길이 패턴에 일관성이 없어 자동 생성기 사용 추정. 4-segment 구조만 일관.

2.3 버전 정보 분석

```

versionCode: 2 (기존 인스턴스: 1)

versionName: 1.1.4 (기존 인스턴스: 1.0)

```

PPAU는 Template C-Kefu 인스턴스 중 유일하게 versionCode=2:

· 다른 인스턴스(WeeTalk, wks_dildo, bp_dildo, hpb_dildo)는 모두 versionCode=1, versionName=1.0

· PPAU의 v1.1.4는 최소 4번의 마이너 업데이트(1.0→1.0.1→...→1.1.4)를 시사

· 이는 Template C-Kefu가 단발성 배포가 아닌 지속적 개발 중임을 증명

2.4 파일 크기 변종 분석

템플릿 버전 · 파일 크기 · 차이 · 인스턴스

Template C-Kefu v1 · 16,643,509B · 기준 · hpb_dildo (2024-10)

Template C-Kefu v2 · 16,610,741B · -32,768B (2^15) · wks_dildo, bp_dildo (2025-01)

**Template C-Kefu v3 (Lite)** · **16,025,887B** · **-617,622B** · **ppau (2025-04)**

v1→v2 차이: 정확히 2^15 바이트 = 최적화(패딩/정렬 제거)

v2→v3 차이: -584,854B = 권한 관련 코드 제거 (12개 권한 코드 + 관련 UI/로직 삭제)

617,622B의 차이는 다음 요소의 총합으로 추정:

· SMS 접근 코드 (~50KB)

· 통화기록 읽기 코드 (~40KB)

· 위치 추적 코드 (~80KB)

· 전화번호 읽기 코드 (~30KB)

· 캘린더 읽기 코드 (~40KB)

· WiFi 변경 코드 (~20KB)

· 미디어(비디오/오디오) 접근 코드 (~60KB)

· 관련 리소스/레이아웃 (~300KB)

3. Template C-Kefu 변종 분류

3.1 Template C-Kefu 정의

Template C-Kefu는 다음 5가지 특성으로 식별되는 악성앱 템플릿이다:

1. Frezrik Jiagu 보호 — com.frezrik.jiagu.StubApp Application 클래스

2. KefuActivity — <패키지>.web.KefuActivity 웹뷰 기반 고객서비스 페이지

3. SO in assets/ — 네이티브 라이브러리가 lib/ 대신 assets/에 위치

4. ShareTrace SDK — 앱 추적 SDK 내장 (Chinese 에러 메시지)

5. ZXing QR 스캐너 — com.yzq.zxinglibrary.android.CaptureActivity

3.2 PPAU의 Template C-Kefu 멤버십 검증

특성 · PPAU · 기존 인스턴스 · 일치

Frezrik Jiagu StubApp · ✅ `com.frezrik.jiagu.StubApp` · ✅ · 일치

KefuActivity · ✅ `.web.KefuActivity` · ✅ · 일치

SO in assets/ · ✅ 4개 (libjiagu*.so) · ✅ · 일치

ShareTrace SDK · ✅ 에러 문자열 존재 · ✅ · 일치

ZXing QR · ✅ `CaptureActivity` · ✅ · 일치

OkDownload · ✅ `OkDownloadProvider` · ✅ · 일치

Glide+OkHttp3 · ✅ `OkHttpGlideModule` · ✅ · 일치

SO SHA-256 · ✅ `1a85a981...` · ✅ · **6차 확인**

결론: PPAU는 Template C-Kefu의 확인된 6번째 인스턴스.

3.3 PPAU의 Template C-Kefu 내 위치 — Lite Variant

PPAU는 기존 인스턴스와 다른 점이 5개 이상 존재하여 Lite Variant로 분류:

차이점 · PPAU (Lite) · 기존 (Standard)

권한 수 · 15개 · 27개

versionCode · 2 · 1

versionName · 1.1.4 · 1.0

MaintenanceActivity · ✅ 존재 · ❌ 없음

minSdkVersion · 22 · 24

파일 크기 · 16,025,887B · 16.6~16.6MB

SMS 접근 · ❌ 없음 · ✅ READ_SMS

통화기록 접근 · ❌ 없음 · ✅ READ_CALL_LOG

위치 추적 · ❌ 없음 · ✅ ACCESS_FINE_LOCATION

전화번호 접근 · ❌ 없음 · ✅ READ_PHONE_STATE/NUMBERS

4. 권한 심층 분석 — 15-Permission Lite Profile

4.1 선언된 권한 전체 목록 (15개)

# · 권한 · 위험도 · 카테고리

1 · `INTERNET` · Normal · 네트워크

2 · `ACCESS_NETWORK_STATE` · Normal · 네트워크

3 · `ACCESS_WIFI_STATE` · Normal · 네트워크

4 · `CHANGE_NETWORK_STATE` · Normal · 네트워크

5 · `READ_CONTACTS` · **Dangerous** · **데이터 탈취**

6 · `READ_EXTERNAL_STORAGE` · **Dangerous** · **데이터 탈취**

7 · `READ_MEDIA_IMAGES` · **Dangerous** · **데이터 탈취**

8 · `WRITE_EXTERNAL_STORAGE` · **Dangerous** · 파일 조작

9 · `CAMERA` · **Dangerous** · **감시**

10 · `POST_NOTIFICATIONS` · Dangerous · 지속성

11 · `QUERY_ALL_PACKAGES` · Normal · 정찰

12 · `WAKE_LOCK` · Normal · 지속성

13 · `VIBRATE` · Normal · UX

14 · `FLASHLIGHT` · Normal · 카메라 보조

15 · `AD_ID` · Normal · 추적

4.2 Standard에서 제거된 권한 (12개)

# · 제거된 권한 · 카테고리 · 제거 이유 추정

1 · `READ_SMS` · 데이터 탈취 · Google Play 정책 강화 (2024-10)

2 · `READ_CALL_LOG` · 데이터 탈취 · Google Play 정책 강화

3 · `READ_PHONE_STATE` · 기기 식별 · Android 11+ 제한

4 · `READ_PHONE_NUMBERS` · 기기 식별 · Android 11+ 제한

5 · `READ_CALENDAR` · 데이터 탈취 · 영상통화앱과 무관

6 · `ACCESS_FINE_LOCATION` · 위치 추적 · 정밀 위치 불필요

7 · `ACCESS_COARSE_LOCATION` · 위치 추적 · 위치 완전 제거

8 · `ACCESS_LOCATION_EXTRA_COMMANDS` · 위치 추적 · 위치 완전 제거

9 · `CHANGE_WIFI_STATE` · 네트워크 제어 · 불필요 기능

10 · `READ_MEDIA_VIDEO` · 데이터 탈취 · 이미지만 타겟

11 · `READ_MEDIA_AUDIO` · 데이터 탈취 · 이미지만 타겟

12 · `RECEIVE_BOOT_COMPLETED` · 지속성 · (표준 인스턴스에 있을 경우)

4.3 권한 축소 전략 분석 — "Plausible Deniability" 패턴

PPAU의 권한 프로파일은 실제 영상통화 앱이 요청할 법한 최소 권한에 가깝다:

· 카메라 ✅ (영상통화)

· 연락처 ✅ (친구 찾기)

· 갤러리 이미지 ✅ (프로필 사진)

· 네트워크 ✅ (통신)

이는 의도적인 Plausible Deniability 전략으로 판단:

· Google Play/3rd-party 스토어 심사 우회 목적

· 사용자 의심 최소화 (27개 → 15개 권한 요청 시 거부율 감소)

· 핵심 탈취 대상(연락처+이미지)만 유지하고 나머지 포기

4.4 하드웨어 피처 요구사항

```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"/>

```

모순 발견: android.hardware.location required=true이지만 위치 권한은 없음.

이는 Standard 템플릿에서 features를 수정하지 않고 permissions만 제거한 증거.

불완전한 권한 축소 — 개발자의 실수 또는 급한 수정의 흔적.

5. 방어기제 분석 — Frezrik Jiagu 6th Instance

5.1 Jiagu 보호 구조

```

Application: com.frezrik.jiagu.StubApp

↓ System.loadLibrary()

assets/libjiagu_x86_64.so (256,744B)

↓ JNI_OnLoad()

/data/user/0/<package>/.jiagu/libjiaguv1.so (runtime extracted)

↓ NDK_JIAGU sequence

3개 DEX 런타임 복호화 + 로딩

↓ replaceApplicationContext

com.hhii.lkzonx.orcrxusg.base.MyApp (실제 앱)

```

5.2 Stub Application 분석

디컴파일된 smali 파일 (4개만 존재):

1. com/frezrik/jiagu/StubApp.smali — Jiagu 언패커 엔트리포인트

2. a/a/a/a/a.smali — 난독화된 헬퍼 클래스

3. androidx/core/app/CoreComponentFactory.smali — AndroidX 호환

4. androidx/core/app/CoreComponentFactory$a.smali — Factory 내부 클래스

5.3 Logcat 관찰: ART SELinux Audit

```

02-26 14:38:22.709 W lkzonx.orcrxusg: type=1400 audit(0.0:1240): avc: granted { execute }

for path="/data/data/com.hhii.lkzonx.orcrxusg/.jiagu/libjiaguv1.so"

dev="dm-45" ino=516353

scontext=u:r:untrusted_app:s0:c8,c257,c512,c768

tcontext=u:object_r:app_data_file:s0:c8,c257,c512,c768

tclass=file app=com.hhii.lkzonx.orcrxusg

```

SELinux가 .jiagu/libjiaguv1.so 실행을 granted — untrusted_app 도메인에서

자체 앱 데이터 디렉토리 내 SO 실행이 허용됨. 이는 Android 보안 모델의 허점을 이용한 것.

5.4 에뮬레이터 탐지 우회

PPAU의 manifest에는 에뮬레이터 탐지 코드가 명시적으로 없지만,

Jiagu SO 내부에 탐지 로직이 존재할 가능성이 있다.

에뮬레이터(API 35)에서 정상 실행됨 → 탐지 없음 또는 비활성화.

6. NDK_JIAGU 런타임 언패킹 분석

6.1 11-Step 시퀀스 (Logcat 캡처)

```

[14:38:22.712] Step 1: soName:libjiagu_x86_64.so

[14:38:22.826] Step 2: SDK_INT = 35

[14:38:22.826] Step 3: init done! quick_on_stack_replace = 0x7c848ad02000, quick_on_stack_back = 0x7c848f2901c0

[14:38:22.827] Step 4: [-]getDex

[14:38:24.099] Step 5: [-]loadDex

[14:38:24.214] Step 6: app name: com.hhii.lkzonx.orcrxusg.base.MyApp

[14:38:24.593] Step 7: [+]Elements size:1, dex File size: 3

[14:38:24.614] Step 8: hook

[14:38:24.700] Step 9: replaceContentProvider

[14:38:24.936] Step 10: replaceContentProvider

[14:38:24.996] Step 11: replaceApplicationContext

```

6.2 시간 분석

구간 · 시간 · 비율

SO 로딩 → init · 114ms · 5.0%

getDex · 1ms · 0.04%

getDex → loadDex · 1,272ms · 55.7%

loadDex → app name · 115ms · 5.0%

app name → Elements · 379ms · 16.6%

Elements → hook · 21ms · 0.9%

hook → replaceCP(1) · 86ms · 3.8%

replaceCP(1) → replaceCP(2) · 236ms · 10.3%

replaceCP(2) → replaceAppCtx · 60ms · 2.6%

**총 시간** · **2,284ms** · **100%**

6.3 6-Instance 타이밍 비교

인스턴스 · 총 시간 · getDex→loadDex · 비율

WeeTalk · ~2,100ms · ~1,200ms · 57%

wks_dildo · ~2,300ms · ~1,250ms · 54%

bp_dildo · ~2,200ms · ~1,180ms · 54%

hpb_dildo · ~2,350ms · ~1,300ms · 55%

**ppau** · **2,284ms** · **1,272ms** · **55.7%**

getDex→loadDex가 전체의 54~58%를 차지하는 것은 DEX 복호화 연산이 지배적임을 의미.

모든 인스턴스에서 총 시간이 2,100~2,350ms 범위에 있어 동일 하드웨어(에뮬레이터)에서의

일관된 복호화 부하를 확인.

6.4 ART Hook 주소 고정성 확인

```

quick_on_stack_back = 0x7c848f2901c0 ← 6차 연속 동일!

quick_on_stack_replace = 0x7c848ad02000

```

이 주소는 에뮬레이터의 ART 런타임 메모리 레이아웃에 의존.

6개 인스턴스 모두 동일한 ART 버전(API 35)에서 동일 주소 →

하드코딩이 아닌 런타임 해석 결과의 결정론적 재현.

6.5 실제 Application 클래스

```

app name: com.hhii.lkzonx.orcrxusg.base.MyApp

```

base.MyApp — base 서브패키지에 Application 클래스가 위치. 이는:

· ui.home.MainActivity (런처)

· web.KefuActivity (고객서비스)

· ui.home.MainActivity2 (보조)

· ui.home.MaintenanceActivity (유지보수)

· ui.MyServices (백그라운드 서비스)

와 함께 표준 Android 프로젝트 구조를 따르지만, base 네임스페이스는

다른 Template C-Kefu 인스턴스에서도 관찰되는 공통 패턴.

6.6 Multi-DEX 구조 (Elements size:1, dex File size: 3)

· Elements size:1 — 원래 DEX가 1개 (Stub DEX)

· dex File size: 3 — 복호화 후 3개 DEX 로딩

이는 실제 앱 코드가 최소 3개의 DEX에 분산되어 있음을 의미:

1. classes.dex — 메인 앱 로직 (MyApp, MainActivity, etc.)

2. classes2.dex — 라이브러리 코드 (OkHttp3, Glide, etc.)

3. classes3.dex — 추가 의존성 (ZXing, OkDownload, ShareTrace, etc.)

7. SO 바이너리 해시 체인 — 6차 확인

7.1 SHA-256 해시

아키텍처 · 파일명 · 크기 · SHA-256

x86_64 · libjiagu_x86_64.so · 256,744B · `1a85a981d025557b03bd3bc75888c48f893f8594384fff24839abd3e90060f02`

arm64 · libjiagu_64.so · 235,992B · `61765a3297d629906e10a45aec36f7ba7f688706f35b7086c7ffd241b27ecd9f`

x86 · libjiagu_x86.so · 227,368B · (확인 필요)

arm32 · libjiagu.so · 129,012B · (확인 필요)

7.2 6-Instance 해시 체인 검증

```

x86_64 SO: 1a85a981d025557b03bd3bc75888c48f893f8594384fff24839abd3e90060f02

확인 1: WeeTalk ✅ 일치

확인 2: wks_dildo ✅ 일치

확인 3: bp_dildo ✅ 일치

확인 4: hpb_dildo ✅ 일치

확인 5: ppau ✅ 일치 ← 본 보고서

```

5개 앱에서 바이트 단위 동일한 SO 바이너리 = 단일 빌드 아티팩트 공유.

이는 중앙 빌드 서버에서 동일 Jiagu SDK를 사용하여 패킹하는 자동화 파이프라인의 존재를 입증.

7.3 SO 크기-아키텍처 상관관계

아키텍처 · 크기 · 비율

arm32 · 129,012B · 1.00x (기준)

arm64 · 235,992B · 1.83x

x86 · 227,368B · 1.76x

x86_64 · 256,744B · 1.99x

x86_64가 arm32의 약 2배 — 64비트 확장 + CISC 명령어 세트 오버헤드.

이 크기 비율은 6개 인스턴스 모두 동일 (해시가 같으므로 당연).

8. 앱 구조 심층 분석

8.1 AndroidManifest 컴포넌트 분석

Activities (5개)

Activity · 속성 · 용도

`ui.home.MainActivity` · exported=true, LAUNCHER · 메인 런처 (FullScreen 테마)

`web.KefuActivity` · exported=false · 고객서비스 WebView

`ui.home.MainActivity2` · exported=true · 보조 진입점 (AppTheme)

`ui.home.MaintenanceActivity` · exported=false · **유지보수 모드 (신규)**

`CaptureActivity` (ZXing) · exported=false · QR 코드 스캐너

Services (1개)

```xml

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

android:name="com.hhii.lkzonx.orcrxusg.ui.MyServices"/>

```

exported=true + 권한 없음 → 다른 앱이 이 서비스를 호출할 수 있는 보안 취약점.

동일 C2가 제어하는 다른 악성앱에서 PPAU 서비스를 트리거할 수 있음.

Providers (2개)

1. InitializationProvider — AndroidX Startup (앱 초기화)

2. OkDownloadProvider — OkDownload 라이브러리 초기화

8.2 Application Theme 분석

```xml

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

```

Theme.Market — 쇼핑/마켓 테마 이름. 이는 Template C-Kefu가

원래 마켓/쇼핑 앱으로 설계되었을 가능성을 시사.

8.3 UI 문자열 분석 (strings.xml)

키 · 값 · 용도

`app_name` · "PPAU" · 앱 표시 이름

`enter_phone` · "请输入手机号" · 전화번호 입력 프롬프트 (중국어)

`enter_verification_code` · "请输入验证码" · 인증코드 입력 (중국어)

`login` · "登录" · 로그인 버튼 (중국어)

`get_verification_code` · "hhhhhh" · **플레이스홀더 텍스트** — 개발 중 미완성

`language` · "语言" · 언어 설정 (중국어)

`scan_code` · "Scan QR Code" · QR 스캔 (영어)

`button_ok` · "Exit" · 종료 버튼

`close_flash` · "Turn off the flash" · 플래시 끄기

`open_flash` · "Turn on the flash" · 플래시 켜기

`title_home` · "Home" · 홈 탭

`title_dashboard` · "Dashboard" · 대시보드 탭

`title_notifications` · "Notifications" · 알림 탭

`switch_role` · "Switch" · 역할 전환

"hhhhhh" 플레이스홀더: 인증코드 받기 버튼의 텍스트가 개발 중 테스트 문자열로 남아 있음.

이는 PPAU가 최종 완성 전 배포된 증거이거나, 의도적으로 해당 UI를 숨기는 목적.

8.4 언어 혼합 패턴

· 중국어: 핵심 기능 (로그인, 인증코드, 전화번호)

· 영어: UI 프레임워크 (탭 이름, QR 스캔)

이는 중국 개발팀이 영어 UI 프레임워크 위에 중국어 비즈니스 로직을 구현한 패턴.

Template C-Kefu의 모든 인스턴스에서 동일하게 관찰됨.

9. MaintenanceActivity 신규 컴포넌트 분석

9.1 선언

```xml

<activity android:exported="false"

android:name="com.hhii.lkzonx.orcrxusg.ui.home.MaintenanceActivity"

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

```

9.2 Template C-Kefu 내 최초 발견

인스턴스 · MaintenanceActivity · 의미

WeeTalk · ❌ · 초기 버전

wks_dildo · ❌ · v2

bp_dildo · ❌ · v2

hpb_dildo · ❌ · v1

**ppau** · **✅** · **v3 Lite — 최초**

9.3 기능 추정

MaintenanceActivity의 존재는 서버 측 유지보수 모드를 시사:

1. C2 서버에서 유지보수 플래그 전송 → 앱이 MaintenanceActivity로 전환

2. 법 집행 대응: 수사 시 앱을 즉시 "유지보수 중"으로 전환하여 증거 수집 방해

3. 버전 강제 업데이트: 이전 버전 사용자를 유지보수 화면으로 리다이렉트

4. 지역 차단: 특정 지역/IP에서 접속 시 메인 기능 대신 유지보수 표시

exported=false이므로 외부 앱에서 직접 호출 불가 → 내부 로직(C2 명령)에 의해서만 활성화.

이는 Standard 인스턴스보다 발전된 C2 제어 메커니즘을 의미.

10. 네트워크 통신 분석

10.1 네트워크 보안 설정

```xml

<network-security-config>

<base-config cleartextTrafficPermitted="true" />

</network-security-config>

```

cleartext 허용 — HTTP 평문 통신 가능. HTTPS 강제 없음.

이는 중간자 공격(MITM)에 취약하며, 동시에 분석자가 트래픽을 캡처하기 용이.

10.2 ConnectivityService 관찰

```

14:38:27.469 D ConnectivityService: requestNetwork for uid/pid:10264/30930

activeRequest: null callbackRequest: 473

[NetworkRequest id=474, INTERNET&NOT_RESTRICTED&TRUSTED

RequestorPkg: com.hhii.lkzonx.orcrxusg]

14:38:27.498 D ConnectivityService: NetReassign [474 : null → 105] [c 2] [a 25] [i 1]

```

앱 시작 직후 네트워크 요청 발생. NetReassign [474 : null → 105]는

네트워크 연결이 기존 105번 네트워크(WiFi)에 할당됨을 의미.

10.3 권한 요청 즉시 발동

```

14:38:26.459 I ActivityTaskManager: START REQUEST_PERMISSIONS

from uid 10264 (BAL_ALLOW_VISIBLE_WINDOW)

14:38:27.536 I ActivityTaskManager: START REQUEST_PERMISSIONS

from uid 10264 (BAL_ALLOW_VISIBLE_WINDOW)

```

앱 시작 후 약 4초 만에 두 번의 연속 권한 요청 발생.

사용자 동의 없이 즉시 권한을 요청하는 공격적 패턴.

10.4 ANR 패턴 분석

스크린샷에서 "Process system isn't responding" 다이얼로그가 반복 발생.

이는 Jiagu DEX 복호화(2,284ms)가 UI 스레드를 블로킹하여 발생하는 구조적 문제.

```

14:38:26.981 W ActivityTaskManager: Activity top resumed state loss timeout

14:38:26.981 W ActivityTaskManager: Activity pause timeout

```

timeout 로그가 이를 확인. Template C-Kefu의 모든 인스턴스에서 동일 문제가 발생할 수 있으나,

PPAU에서 특히 심각한 것은 에뮬레이터 성능 제약과 결합된 결과.

11. 데이터 수집 로직 — Contacts-Images-Camera 삼각형

11.1 수집 대상 매핑

PPAU의 15-Permission Lite Profile에서 실제 데이터 수집은 3축:

```

[READ_CONTACTS]

연락처 (이름, 전화번호)

┌─────────┼─────────┐

│ │ │

▼ ▼ ▼

[READ_MEDIA [READ_EXTERNAL [CAMERA]

_IMAGES] _STORAGE]

│ │ │

▼ ▼ ▼

갤러리 이미지 파일 시스템 실시간 촬영

```

11.2 데이터 유형별 탈취 시나리오

유형 · 권한 · 접근 방법 · 탈취 데이터

연락처 · READ_CONTACTS · ContentResolver · 이름, 전화번호, 이메일

갤러리 · READ_MEDIA_IMAGES · MediaStore API · 사진 (얼굴, 개인정보 포함)

파일 · READ_EXTERNAL_STORAGE · File API · 갤러리 외 이미지/문서

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