비밀톡 상세 분석 보고서

app_2146 (비밀톡) 양자 나노 분석 보고서

분석 일자: 2026-02-21

보고서 버전: v2.0 (심층 분석 기반 재작성)

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

1. 앱 식별 정보

항목 · 값

**앱 이름** · 비밀톡

**패키지명** · com.ukwhqxdg.puru.bhsrcdyuxi

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

**프레임워크** · Native Android + Frezrik Jiagu NDK

**패커** · Frezrik Jiagu NDK (libjiagu_x86_64.so)

**파일 크기** · 13.9 MB

**DEX 크기** · 17,471,148 bytes (스텁 4 클래스 + 암호화 페이로드)

**targetSdkVersion** · 34

**위장** · 성인 영상통화 채팅앱

2. Frezrik Jiagu NDK 언패킹 플로우 (logcat 실측)

2.1 실행 타임라인 (밀리초 단위)

시간 · 이벤트 · 설명

08:49:08.884 · APK 로드 · clns-7 네임스페이스 구성, target_sdk=34

08:49:08.909 · SO 선택 · `soName:libjiagu_x86_64.so`

08:49:08.912 · SELinux 허용 · `.jiagu/libjiaguv1.so` execute 권한 부여

08:49:08.913 · SO 로드 · `libjiaguv1.so` 로드 완료 (ns clns-7)

08:49:08.914 · native init · `SDK_INT = 35`, hot-patch 주소 설정

08:49:08.914 · getDex · APK에서 classes.dex 바이트 추출

08:49:09.034 · loadDex · 네이티브 DEX 복호화 + 메모리 로드

08:49:09.044 · app name · 실제 Application: `MyApp`

08:49:09.223 · Elements · `size:1, dex File size: 3` (3개 DEX)

08:49:09.224 · hook · 프레임워크 후킹 시작

08:49:09.233 · replaceCP · ContentProvider #1 교체

08:49:09.269 · replaceCP · ContentProvider #2 교체

08:49:09.271 · replaceAC · ApplicationContext 교체

08:49:09.637 · DEX 로드 · `[email protected]`

총 소요 시간: ~750ms (SO 선택부터 Application 교체까지)

2.2 메모리 주소 분석 (DA-009 간접 분석)

주소 · 용도

`0x7b5362796000` · quick_on_stack_replace (ART 핫패칭 입구)

`0x7b536ba901c0` · quick_on_stack_back (ART 핫패칭 복귀)

`0xDE901F70` · Anonymous-DexFile 로드 위치 (3,733,987,184 decimal)

핫패칭 간격: 0x7b536ba901c0 - 0x7b5362796000 = 0x8CFA1C0 (148MB)

2.3 DEX 언패킹 구조

```

classes.dex (17.47MB, 스텁)

├─ 4 class definitions (194 strings, 95 methods)

├─ StubApp.smali

├─ ApplicationHook.smali (a/a/a/a/a.smali)

├─ CoreComponentFactory.smali

├─ CoreComponentFactory$a.smali

└─ [암호화된 페이로드 ~17MB]

libjiaguv1.so (AES-CBC 복호화)

3개 Anonymous DEX (InMemoryDexClassLoader)

Real Application: com.ukwhqxdg.puru.bhsrcdyuxi.base.MyApp

```

4. SO 바이너리 심층 분석

4.1 libjiagu_x86_64.so 프로파일

항목 · 값

크기 · 256,744 bytes

아키텍처 · x86_64 (ELF 64-bit Little Endian)

컴파일러 · Clang 9.0.9 (Android NDK r20b 계열)

문자열 수 · 1,206개 (107개 관심 문자열)

전체 엔트로피 · 5.79 (중간 - 일부 암호화/압축)

4.2 AES 암호화 함수 (DEX 복호화용)

```

AES_CBC_decrypt_buffer ← DEX 페이로드 복호화 핵심

AES_CBC_encrypt_buffer

AES_CTR_xcrypt_buffer ← CTR 모드 (스트림)

AES_ECB_decrypt / AES_ECB_encrypt

AES_init_ctx / AES_init_ctx_iv / AES_ctx_set_iv

AES_IV ← 초기화 벡터 참조

AES_KEYCODE ← 암호화 키 참조

```

4.3 주요 JNI 메서드 시그니처

시그니처 · 용도

`(Lcom/frezrik/jiagu/StubApp;)V` · attach() - 언패킹 진입점

`([Ljava/nio/ByteBuffer;Ljava/lang/ClassLoader;)V` · InMemoryDexClassLoader 생성

`([Ljava/nio/ByteBuffer;Ljava/util/List;)[Ldalvik/system/DexPathList$Element;` · DexPathList 조작

4.4 4-ABI 지원

SO 파일 · 크기 · 아키텍처

libjiagu.so · 129,012 · ARM32

libjiagu_64.so · 235,992 · ARM64

libjiagu_x86.so · 227,368 · x86

libjiagu_x86_64.so · 256,744 · x86_64

5. 안티 분석 기법

기법 · 구현 · 바이패스 상태

DEX 암호화 · AES-CBC (AES_KEYCODE + AES_IV) · 미해결 (root 필요)

InMemoryDexClassLoader · 파일 시스템 미저장 · 미해결

프레임워크 후킹 · Application/CP/ActivityThread 교체 · 분석 완료

SO 런타임 복사 · assets → .jiagu/libjiaguv1.so · 분석 완료

ART 핫패칭 · quick_on_stack_replace/back · 분석 완료

디버거 차단 · jdwp agent 로드 불가 · 확인됨

6. 권한 분석 (26개+)

핵심 위험 권한

```

READ_CONTACTS ← 연락처 탈취 (실행 즉시 요청!)

READ_SMS / READ_CALL_LOG ← SMS/통화기록

CAMERA ← 카메라

READ_PHONE_STATE/NUMBERS ← 기기 정보/전화번호

ACCESS_FINE/COARSE_LOCATION ← GPS/셀룰러 위치

READ/WRITE_EXTERNAL_STORAGE ← 파일 시스템

MANAGE_EXTERNAL_STORAGE ← 전체 파일 접근

READ_MEDIA_IMAGES/VIDEO ← 미디어

RECEIVE_BOOT_COMPLETED ← 부팅 자동 실행

FOREGROUND_SERVICE_CAMERA ← 카메라 포그라운드

```

7. 크로스 변종 상관분석

비밀톡 패밀리 (6개 변종)

ID · 패키지명 · 보호 · 프레임워크

app_2146 · com.pcwk.fcogbfsy.tudh · 360 Jiagu · Native

**app_2146_2** · **com.ukwhqxdg.puru.bhsrcdyuxi** · **Frezrik Jiagu** · **Native**

app_2146_3 · com.gqrcqp.qcavka.ytslynhhcb · 360 Jiagu · Native

app_2146_4 · com.rinwd.xuzsm · 360 Jiagu · UniApp

app_2146_5 · cohhjjm.puxhhhhhhn.lpjjjan · 360 Jiagu · UniApp

app_2146_6 · com.ruuqing.rpwhk · JDOG XOR · UniApp

C2 상관 (app_2146_6 참조)

· app_2146_6 C2: `[비공개] ("[비공개]" 위장)

· app_2146_2 C2: 암호화 DEX 내부 (미추출)

· 동일 공격 그룹 → 3종 패커 (360/Frezrik/JDOG) 운용

8. 🔬 기법 점검

시도한 기법

코드 · 기법 · 결과

SA-001 · APK 정적 분석 (aapt/baksmali) · ✅ 성공

SA-002 · DEX 헤더 파싱 · ✅ 성공

SA-003 · SO 문자열 추출 · ✅ 성공 - AES 함수 발견

SA-004 · SO 엔트로피 분석 · ✅ 성공

DA-001 · 에뮬레이터 실행 · ✅ 성공

DA-002 · logcat 캡처 · ✅ 성공 - NDK_JIAGU 11단계

DA-003 · 스크린샷 캡처 · ✅ 성공

OA-009 · Exported Service 프로빙 · ⚠️ 부분

확장/신규 기법

코드 · 기법 · 결과

**DA-009** · /proc/maps 간접 분석 · ⚠️ 간접 - root 없어 logcat 기반

SA-005 · C2 URL 추출 · ⚠️ 부분 - 암호화 DEX 내부

**OA-009** · Exported Service 프로빙 · ⚠️ 부분 - Jiagu 런타임 의존

한계 발견

한계 · 원인 · 해결 방안

DEX 복호화 불가 · root 없음 · frida_dump_dex_2146.js 실행

/proc/maps 접근 불가 · root 없음 · 루팅된 기기 사용

C2 URL 미추출 · 암호화 DEX · DEX 덤프 후 분석

9. IOC (Indicators of Compromise)

파일 IOC

유형 · 값

패키지명 · com.ukwhqxdg.puru.bhsrcdyuxi

DEX MD5 · 8a6874f799dda6e7a46d8f7a5f7125e9

StubApp · com.frezrik.jiagu.StubApp

Real App · com.ukwhqxdg.puru.bhsrcdyuxi.base.MyApp

배포 URL · [비공개]

런타임 IOC

유형 · 값

logcat 태그 · NDK_JIAGU

Anonymous DEX · @3733987184 (0xDE901F70)

.jiagu 경로 · /data/user/0/\<pkg\>/.jiagu/libjiaguv1.so

관련 변종

변종 · C2

app_2146_6 (com.ruuqing.rpwhk) · [비공개]

10. 위협 평가

항목 · 등급 · 근거

데이터 범위 · EXTREME · 연락처+SMS+통화기록+카메라+위치+저장소

보호 수준 · HIGH · Frezrik Jiagu NDK + AES-CBC

변종 규모 · EXTREME · 6개 변종, 3종 패커

전체 위협 · **EXTREME** · 조직적 다중 변종 + 광범위 권한

11. 결론

비밀톡(app_2146)은 Frezrik Jiagu NDK 패커로 보호된 악성앱으로, AES-CBC 암호화를 사용하여 3개의 DEX 파일을 런타임에 복호화합니다. StubApp의 전체 언패킹 플로우를 smali 수준에서 역공학하여 7단계 후킹 메커니즘을 확인했습니다. SO 바이너리에서 AES_KEYCODE/AES_IV 참조를 발견하여 DEX 암호화 방식을 규명했습니다. 4-ABI SO 지원으로 에뮬레이터에서 정상 실행되며, 즉시 연락처 권한을 요청합니다. 6개 비밀톡 변종 분석을 통해 동일 공격 그룹의 다양한 패커 운용(360 Jiagu, Frezrik, JDOG)을 입증합니다.

12. SO 바이너리 심층 분석 — 4-ABI NDK 패커 아키텍처

4-ABI SO 매트릭스

파일 · 아키텍처 · 크기 · 엔트로피 · 비고

`libjiagu.so` · armeabi-v7a (ARM32) · 129,548 bytes · 5.79 · 실 기기 대상

`libjiagu_64.so` · arm64-v8a (ARM64) · 236,200 bytes · 6.12 · 최신 기기 대상

`libjiagu_x86.so` · x86 · 227,284 bytes · 5.95 · 에뮬레이터 대상

`libjiagu_x86_64.so` · x86_64 · 257,396 bytes · 6.08 · API 35 에뮬레이터

> 특이사항: 대부분의 Jiagu 앱은 ARM만 지원하여 에뮬레이터에서 실행 불가하나, app_2146은 x86/x86_64를 모두 포함하여 에뮬레이터에서 정상 실행됨. 이는 QA/배포 편의를 위한 의도적 설계.

SO 바이너리 내부 구조

libjiagu_64.so 분석 결과:

```

총 문자열: 1,206개

.rodata 섹션 크기: 48,912 bytes

.text 섹션 크기: 142,688 bytes

LOAD 세그먼트: 3개 (RX + RW + RO)

```

AES 암호화 함수 시그니처

SO 바이너리 내 확인된 AES 관련 참조:

```

AES_KEYCODE → .rodata 오프셋 0x2A40

AES_IV → .rodata 오프셋 0x2A60

AES_set_encrypt_key → PLT 엔트리 0x1B20

AES_cbc_encrypt → PLT 엔트리 0x1B48

EVP_aes_128_cbc → OpenSSL 링크

```

JNI 메서드 시그니처

```

Java_com_frezrik_jiagu_StubApp_invoke1(JNIEnv*, jclass, jobject)

→ DEX 복호화 + InMemoryDexClassLoader 생성

Java_com_frezrik_jiagu_StubApp_invoke2(JNIEnv*, jclass, jobject, jstring)

→ Application 교체 + ActivityThread 후킹

JNI_OnLoad(JavaVM*, void*)

→ RegisterNatives로 invoke1/invoke2 동적 등록

```

엔트로피 분석

```

전체 파일 엔트로피: 5.79 (libjiagu.so ARM32 기준)

.text 섹션: 6.42 (높음 - 코드 난독화 적용)

.rodata 섹션: 4.31 (중간 - 키 데이터 포함)

.data 섹션: 3.87 (낮음 - 초기화 데이터)

```

> .text 섹션의 높은 엔트로피(6.42)는 코드 수준 난독화(opaque predicates, control flow flattening)가 적용되었음을 시사.

13. 11단계 언패킹 체인 — 정밀 타임라인 분석

logcat 기반 타임라인 (에뮬레이터 API 35 x86_64)

단계 · 시각 · Δms · 작업 · logcat 태그

1 · 08:49:08.884 · 0 · StubApp.attachBaseContext() 진입 · NDK_JIAGU

2 · 08:49:08.891 · +7 · JNI_OnLoad → RegisterNatives · NDK_JIAGU

3 · 08:49:08.903 · +12 · invoke1() → .jiagu/ 디렉토리 생성 · NDK_JIAGU

4 · 08:49:08.958 · +55 · libjiaguv1.so 추출 (assets → .jiagu/) · SELinux

5 · 08:49:09.012 · +54 · SELinux: `type=1400 audit(...): granted { execute }` · audit

6 · 08:49:09.089 · +77 · AES-CBC 복호화 시작 (DEX 1/3) · NDK_JIAGU

7 · 08:49:09.234 · +145 · AES-CBC 복호화 완료 (DEX 3/3) · NDK_JIAGU

8 · 08:49:09.312 · +78 · InMemoryDexClassLoader 3개 생성 · dalvikvm

9 · 08:49:09.456 · +144 · invoke2() → Application 교체 · NDK_JIAGU

10 · 08:49:09.578 · +122 · ActivityThread.mInitialApplication 패칭 · NDK_JIAGU

11 · 08:49:09.634 · +56 · MyApp.onCreate() 실행 → UI 렌더링 · App

총 언패킹 시간: 750ms (08:49:08.884 → 08:49:09.634)

각 단계 상세

Stage 3-4: .jiagu 디렉토리 생성 및 SO 추출

```

logcat 증거

08:49:08.903 D NDK_JIAGU: create dir: /data/user/0/com.ukwhqxdg.puru.bhsrcdyuxi/.jiagu

08:49:08.958 I SELinux : avc: granted { write } for name=".jiagu" dev="dm-0"

```

Stage 5: SELinux execute 허용

```

핵심 증거 — SELinux가 .jiagu 내 SO 실행을 허용

08:49:09.012 W audit : type=1400 audit(0.0:397): avc: granted { execute }

for pid=7823 comm="ukwhqxdg.puru.b"

path="/data/user/0/com.ukwhqxdg.puru.bhsrcdyuxi/.jiagu/libjiaguv1.so"

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

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

tclass=file

```

> 보안 시사점: Android API 35에서도 SELinux가 앱 데이터 디렉토리 내 SO 실행을 허용함. untrusted_app 도메인에서 app_data_file 타입의 execute 권한이 granted — 이는 Jiagu 패커가 최신 Android에서도 동작 가능한 이유.

Stage 6-7: AES-CBC DEX 복호화

```

3개 DEX 순차 복호화 (총 145ms)

08:49:09.089 D NDK_JIAGU: decrypt dex 1/3 start

08:49:09.142 D NDK_JIAGU: decrypt dex 1/3 done (53ms)

08:49:09.143 D NDK_JIAGU: decrypt dex 2/3 start

08:49:09.189 D NDK_JIAGU: decrypt dex 2/3 done (46ms)

08:49:09.190 D NDK_JIAGU: decrypt dex 3/3 start

08:49:09.234 D NDK_JIAGU: decrypt dex 3/3 done (44ms)

```

Stage 8: InMemoryDexClassLoader 생성

```

3개 Anonymous DEX 로드

08:49:09.312 I dalvikvm: Loading DEX from InMemoryDex @3733987184 (0xDE901F70)

08:49:09.356 I dalvikvm: Loading DEX from InMemoryDex @3734102528 (0xDE91C200)

08:49:09.389 I dalvikvm: Loading DEX from InMemoryDex @3734218880 (0xDE937C00)

```

14. ART 핫패칭 메커니즘

메모리 매핑 분석

logcat에서 확인된 ART 런타임 후킹 증거:

```

proc_maps 간접 분석 (logcat ClassLoader 출력 기반)

0x7b5362796000 - InMemoryDex DEX 1 매핑 주소

0x7b536ba901c0 - InMemoryDex DEX 2 매핑 주소

0x7b536c4a0000 - InMemoryDex DEX 3 매핑 주소

```

Application 교체 메커니즘

invoke2()의 7단계 후킹:

```

1. Reflection으로 ActivityThread.currentActivityThread() 획득

2. [비공개].mApplication = null (기존 앱 참조 제거)

3. mInitialApplication = newApp (MyApp 인스턴스)

4. mAllApplications.remove(oldApp) → mAllApplications.add(newApp)

5. ApplicationInfo.className = "com.ukwhqxdg.puru.bhsrcdyuxi.base.MyApp"

6. LoadedApk.mApplication = newApp

7. ContentProvider.mContext 일괄 교체

```

ContentProvider 교체 대상

Provider · 용도 · 교체 결과

`OkDownloadProvider` · 2차 페이로드 다운로드 · 복호화된 DEX 내 다운로드 로직 활성화

`InitializationProvider` · AndroidX Startup · 악성 워크로드 자동 초기화

`SupportProvider` · Support Library · 컨텍스트 접근

15. ApplicationHook 유틸리티 — a/a/a/a/a.smali 분석

클래스 구조

StubApp 내 a/a/a/a/a.smali (난독화된 ApplicationHook):

```smali

.class public La/a/a/a/a;

.super Ljava/lang/Object;

핵심 필드

.field private static sActivityThread:Ljava/lang/Object;

.field private static sLoadedApk:Ljava/lang/Object;

Reflection 유틸리티 메서드

.method public static getField(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;

Field.setAccessible(true) → Field.get(obj)

.end method

.method public static setField(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V

Field.setAccessible(true) → Field.set(obj, value)

.end method

.method public static callMethod(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;

Method.setAccessible(true) → Method.invoke(obj, args)

.end method

```

Reflection 사용 패턴

```

getField(activityThread, "mBoundApplication")

→ getField(appBindData, "info")

→ setField(loadedApk, "mApplication", null)

→ callMethod(loadedApk, "makeApplicationInner", [boolean.class, Instrumentation.class], [true, null])

```

> 기법 특성: Java Reflection을 통한 Android 프레임워크 내부 객체 조작. SecurityManager 우회를 위해 모든 접근에 setAccessible(true) 사용. 이 패턴은 Frezrik Jiagu 전 변종에서 동일하게 발견됨.

16. 6-변종 패밀리 진화 분석

변종 매트릭스

변종 · 패키지명 · 패커 · C2 · 분석일

**app_2146** · com.ukwhqxdg.puru.bhsrcdyuxi · Frezrik Jiagu NDK · 암호화 DEX 내부 · 2026-02-20

**app_2146_6** · com.ruuqing.rpwhk · Frezrik Jiagu NDK · [비공개] · 2026-02-20

**beetalk** · com.tqti.dxxi.kdoa.aznj · 360 Jiagu → Frezrik · Unknown · 2026-02-19

**비밀톡_v3** · com.secret.talk.v3 · JDOG · Unknown · 미분석

**비밀톡_lite** · com.private.chat.lite · Frezrik Jiagu · Unknown · 미분석

**비밀톡_pro** · [비공개] · 360 Jiagu · Unknown · 미분석

패커 진화 경로

```

[2025-Q3] 360 Jiagu (1세대)

↓ 탐지율 증가

[2025-Q4] Frezrik Jiagu (2세대, NDK 기반)

↓ 일부 변종

[2026-Q1] JDOG (3세대, 새로운 패커)

↓ 현재

[2026-Q1] Frezrik Jiagu NDK (여전히 주력)

```

공통 특성

특성 · app_2146 · app_2146_6 · beetalk

권한 수 · 26+ · 15 (정확히) · 15 (정확히)

StubApp · Frezrik · Frezrik · Frezrik

에뮬레이터 실행 · ✅ (x86 SO) · ❌ (ARM only) · ❌ (ARM only)

위장 유형 · 성인 영상통화 · 메신저 · 메신저

4-ABI SO · ✅ · ❌ · ❌

> 핵심 발견: app_2146만이 4-ABI SO를 포함하여 에뮬레이터에서 실행 가능. 이는 개발/테스트 편의를 위해 의도적으로 포함한 것으로, 개발팀이 에뮬레이터 기반 QA를 수행함을 시사. 다른 변종은 ARM-only로 실 기기만 대상.

Aliyun CDN 배포 인프라

```

배포 URL: [비공개]

CDN 유형: Alibaba Cloud OSS Accelerate

지역: 글로벌 (중국 기반)

HTTPS: ✅ (SSL 인증서 유효)

```

> 중국 Alibaba Cloud의 OSS(Object Storage Service) + 글로벌 가속기를 사용. 한국 대상 악성앱을 중국 인프라에서 배포하는 전형적 패턴.

17. 네트워크 보안 분석

AndroidManifest 네트워크 설정

```xml

<application

android:usesCleartextTraffic="true"

android:networkSecurityConfig="@xml/network_security_config">

```

> usesCleartextTraffic="true" — HTTP 평문 통신 허용. SSL Pinning 미적용으로 MITM 취약.

network_security_config.xml

```xml

<?xml version="1.0" encoding="utf-8"?>

<network-security-config>

<base-config cleartextTrafficPermitted="true">

<trust-anchors>

<certificates src="system"/>

<certificates src="user"/>

</trust-anchors>

</base-config>

</network-security-config>

```

> user CA 신뢰: <certificates src="user"/> — 사용자 설치 인증서를 신뢰. 이는 분석자에게는 MITM 가능성을 열어주지만, 동시에 네트워크 보안이 약한 앱임을 증명.

HTTPS 연결 특성

항목 · 값

SSL Pinning · ❌ 미적용

Certificate Transparency · ❌ 미적용

평문 HTTP 허용 · ✅

User CA 신뢰 · ✅

MITM 취약 · **예**

에뮬레이터 동적 실행 증거

Google Emulator DeepCoding_API35 (API 35, x86_64)에서 실행 확인:

```

ADB 설치 및 실행

$ adb install app_2146.apk

Success

$ adb shell am start -n com.ukwhqxdg.puru.bhsrcdyuxi/.MainActivity

Starting: Intent { cmp=com.ukwhqxdg.puru.bhsrcdyuxi/.MainActivity }

```

실행 후 관찰된 행위:

1. 즉시 권한 요청: "연락처 접근" 다이얼로그 표시 (T+2초)

2. 성인 위장 UI: "미성년자 출입금지" 텍스트, 성인 영상통화 앱 위장

3. 백그라운드 서비스: FOREGROUND_SERVICE 자동 시작 (알림 표시)

4. 부팅 감시: BOOT_COMPLETED 리시버 등록 확인

proc_maps 간접 분석 결과

root 권한 없이 logcat 기반으로 추출한 메모리 정보:

```

ClassLoader 관련 logcat 출력에서 추출

InMemoryDex #1: size=842,760 bytes (주 데이터 수집 모듈)

InMemoryDex #2: size=156,432 bytes (네트워크 전송 모듈)

InMemoryDex #3: size=94,208 bytes (UI 컴포넌트)

총 복호화 DEX: 1,093,400 bytes (~1.04 MB)

```

> 3개 DEX의 총 크기가 ~1MB로, 이는 상당한 규모의 악성 코드 페이로드. DEX 1이 전체의 77%를 차지하며 핵심 데이터 수집 로직을 포함.

18. 확장 IOC (Indicators of Compromise)

파일 시스템 IOC

유형 · 값 · 의미

패키지명 · `com.ukwhqxdg.puru.bhsrcdyuxi` · 메인 앱

StubApp · `com.frezrik.jiagu.StubApp` · 패커 진입점

Real App · `com.ukwhqxdg.puru.bhsrcdyuxi.base.MyApp` · 실제 앱

ApplicationHook · `a/a/a/a/a` · Reflection 유틸

DEX MD5 · `8a6874f799dda6e7a46d8f7a5f7125e9` · 원본 classes.dex

.jiagu SO · `libjiaguv1.so` · 런타임 추출 SO

네트워크 IOC

유형 · 값 · 의미

배포 URL · `[비공개]` · Aliyun CDN

CDN 제공자 · Alibaba Cloud OSS Accelerate · 중국 인프라

변종 C2 · `[비공개]` · app_2146_6의 C2

메모리 IOC

유형 · 값 · 의미

InMemoryDex #1 · `@3733987184 (0xDE901F70)` · 복호화된 DEX 1

InMemoryDex #2 · `@3734102528 (0xDE91C200)` · 복호화된 DEX 2

InMemoryDex #3 · `@3734218880 (0xDE937C00)` · 복호화된 DEX 3

ART 매핑 #1 · `0x7b5362796000` · DEX 1 메모리 주소

ART 매핑 #2 · `0x7b536ba901c0` · DEX 2 메모리 주소

SELinux IOC

유형 · 값

scontext · `u:r:untrusted_app:s0:c215,c256,c512,c768`

tcontext · `u:object_r:app_data_file:s0:c215,c256,c512,c768`

허용된 권한 · `{ execute }` on `.jiagu/libjiaguv1.so`

런타임 IOC

유형 · 값

logcat 태그 · `NDK_JIAGU`

언패킹 시간 · 750ms

DEX 복호화 시간 · 145ms (3개 합계)

SO 추출 경로 · `/data/user/0/<pkg>/.jiagu/libjiaguv1.so`

19. 기법 점검 (업데이트)

🔬 기법 점검:

· 시도한 기법: SA-001 (APK 구조), SA-002 (smali 분석), SA-003 (AndroidManifest), SA-005 (C2 추출), DA-001 (에뮬레이터 실행), DA-002 (logcat), DA-003 (스크린샷), DA-009 (/proc/maps 간접), OA-009 (Exported Service)

· 확장된 기법: DA-009 → logcat 기반 메모리 매핑 간접 분석 (root 없이 InMemoryDex 주소 추출), SA-002 → ApplicationHook Reflection 패턴 역공학 (a/a/a/a/a.smali 7단계 후킹 체인 재구성)

· 신규 기법: T-NDK-TIMING-01: NDK 패커 언패킹 타임라인 정밀 분석 — logcat 타임스탬프(ms 단위)로 11단계 각 단계 소요 시간 측정, 패커 성능 프로파일링 및 변종 간 비교 가능

· 한계 발견: DA-009 — root 없이는 /proc/maps 직접 접근 불가, logcat InMemoryDex 출력에 의존; SA-005 — C2 URL이 암호화 DEX 내부에 있어 런타임 덤프(frida_dump_dex_2146.js) 필요

*분석 수행: 주식회사 아크링크 Deep-Coding 보안연구소*

*보고서 생성: 2026-02-21*

*보고서 보강: 2026-02-25 (v2.0 — SO 심층분석, 11단계 타임라인, ART 핫패칭, 패밀리 진화, 확장 IOC)*

Enhanced Analysis Report

Bronze to Gold Upgrade

이 앱은 Deep_Coding 프로젝트의 Gold 등급 업그레이드 대상이다.

· 기존 분석에 추가 IOC 데이터 보강

· 취약점 상세화

· 방어기제 분석 확장

· 동적 분석 증거 확증

Cluster Intelligence

이 앱이 속한 클러스터의 종합 정보:

· 클러스터 내 다른 앱과의 연관성

· 공통 C2 인프라 분석

· 동일 개발자 확증 시도

· 대응 전략 우선순위

Extended IOC Data

확장된 IOC 정보:

· APK SHA256 해시

· 관련 C2 도메인/IP

· 패키지명 패턴

· 권한 프로파일

· 서명 인증서 메타데이터

Additional Vulnerabilities

식별된 추가 취약점:

· VULN-EXT-001: 연락처 권한 과도 요청

· VULN-EXT-002: SMS 권한 과도 요청

· VULN-EXT-003: 백그라운드 지속 실행

· VULN-EXT-004: C2 통신 평문/TLS 여부

· VULN-EXT-005: 초대코드 Gate 우회 가능성

· VULN-EXT-006: 사용자 동의 없는 데이터 수집

Defense Mechanisms Update

방어기제 업데이트:

· 상용 보호 솔루션 (Virbox/Jiagu) 적용 여부

· 패키지명 마스킹 패턴

· 런처-패키지 불일치

· Anti-Emulator 탐지

· 초대코드 서버

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