분석일: 2025-08-05 (초기) / 2026-02-14 (Gold Standard 확장)
분석자: 주식회사 아크링크
분석 목적: 피싱/스미싱 [피해자 정보 비공개] 위한 악성앱 분석
보고서 버전: v4.0 (Gold Standard - Manifest Duplication Forensics + MALBIO Genome + 정량적 위협 평가)
분석 Phase: 22
> 기존 보고서(v2.0)는 디컴파일 데이터 부재로 인해 "Wavegrid Gen2 네이티브 앱"으로 잘못 분류했습니다.
> v3.0에서 AndroidManifest.xml 전수 분석 결과, 이 앱은 DCloud UniApp 하이브리드 프레임워크 기반임이 확인되었습니다.
항목 · v2.0 (잘못됨) · v3.0 (정정)
**프레임워크** · Native Android (Wavegrid Gen2) · **DCloud UniApp (H5+ Hybrid) + Apache Weex**
**패키지명** · com.cryonix.wavegrid.homeyoga · **a25Five.tooolTransaction.k25** (난독화됨)
**내부 패키지** · com.tushiweih.wavegrid (추정) · **com.umeprobamate.vtwinflower** (난독화됨)
**위험 권한** · 2개 (READ_CONTACTS, READ_PHONE_STATE) · **10개** (연락처+저장소+미디어+전화+계정+설치)
**이미지 탈취** · 없음 (추정) · **있음** (mediapicker 라이브러리 + 미디어 권한)
**LAUNCHER** · LoginActivity · **io.dcloud.PandoraEntry**
**패밀리 분류** · Wavegrid 패밀리 · **UniApp 독립 패밀리** (kdreamapp/jiagu_1757 계열)
**난독화 수준** · 미확인 · **극도** (영어 단어 무작위 조합 패턴)
**C2 서버** · Unknown · **Unknown** (smali 없어 추출 불가, 동일)
항목 · 내용
**파일명** · homeyoga.apk
**앱 이름** · 홈요가 (HomeYoga)
**패키지명** · `a25Five.tooolTransaction.k25`
**내부 패키지** · `com.umeprobamate.vtwinflower` (Application 클래스 소속)
**Application 클래스** · `com.umeprobamate.vtwinflower.WgporkerSscalefactorApplication`
**versionCode** · 83
**versionName** · 0.8.3
**compileSdkVersion** · 23 (Android 6.0)
**platformBuildVersionCode** · 35 (Android 15)
**UniApp ID** · `__UNI__77338A0`
**프레임워크** · DCloud UniApp (H5+ Hybrid) + Apache Weex
**패밀리** · UniApp 독립 패밀리
**위협 수준** · **HIGH**
**우회 상태** · 성공 (초대코드 우회)
구분 · 패키지명 · 용도
**Manifest 패키지** · `a25Five.tooolTransaction.k25` · 앱 식별자 (난독화됨)
**Application 패키지** · `com.umeprobamate.vtwinflower` · 앱 코어 로직 (난독화됨)
**DCloud 패키지** · `io.dcloud.*` · UniApp 프레임워크
**Taobao 패키지** · `com.taobao.weex` · Weex 하이브리드 엔진
**MediaPicker 패키지** · `com.dmcbig.mediapicker` · 이미지/비디오 선택
기존 v2.0 보고서에서 이 앱을 "Wavegrid Gen2"로 분류한 이유는:
1. 디컴파일 데이터 부재: smali 코드 없이 메타데이터만으로 분석
2. 앱 이름 기반 추정: "홈요가" → 가정용 앱 위장 → Wavegrid 패턴과 유사하다고 판단
3. 우회 결과 혼동: L() → l0() 패치 결과와 registerActivityLifecycleCallbacks 수정 기록이 있어 Wavegrid 패턴으로 판단
그러나 AndroidManifest.xml 정밀 분석 결과:
· DCloud PandoraEntry: UniApp 프레임워크의 표준 진입점
· Weex 리시버: com.taobao.weex.WXGlobalEventReceiver
· DCLOUD_STREAMAPP_CHANNEL: UniApp 스트리밍 채널 메타데이터
· 극도 난독화: Wavegrid 앱에서는 볼 수 없는 영어 단어 무작위 조합 패턴
DCloud UniApp은 중국의 DCloud에서 개발한 크로스 플랫폼 프레임워크입니다:
· HBuilderX IDE에서 Vue.js 기반으로 개발
· H5+ 런타임으로 네이티브 기능 접근
· Apache Weex 기반 렌더링 엔진
· PandoraEntry: 앱 실행 시 진입점으로, JavaScript 번들을 로드
· 악성앱에서 선호하는 이유: 빠른 개발, 웹 기술 기반, 네이티브 권한 접근 가능
# · 권한 · 위험도 · 용도 (분석) · 피해 시나리오
1 · `READ_CONTACTS` · **위험** · 연락처 전체 탈취 · 주변인 전원에게 협박 메시지 발송. 몸캠피싱 핵심
2 · `WRITE_CONTACTS` · **위험** · 연락처 변조 · [피해자 정보 비공개] 가짜 정보 삽입, 증거 은닉
3 · `READ_PHONE_STATE` · **위험** · IMEI, 전화번호 수집 · 기기 추적, [피해자 정보 비공개], 전화번호 직접 확보
4 · `READ_EXTERNAL_STORAGE` · **위험** · 사진/파일 탈취 · 사적 사진 탈취 → 유포 협박의 직접적 수단
5 · `WRITE_EXTERNAL_STORAGE` · **위험** · 파일 저장/변조 · 악성 파일 저장, 탈취 임시 파일 관리
6 · `READ_MEDIA_IMAGES` · **위험** · 사진 접근 (API 33+) · Android 13+ 대응 사진 탈취
7 · `READ_MEDIA_VIDEO` · **위험** · 동영상 접근 (API 33+) · Android 13+ 대응 동영상 탈취
8 · `READ_MEDIA_VISUAL_USER_SELECTED` · **위험** · 선택적 미디어 접근 (API 34+) · Android 14+ 대응 미디어 접근
9 · `GET_ACCOUNTS` · **위험** · 계정 정보 수집 · Google 계정 등 로그인 정보 확보
10 · `INSTALL_PACKAGES` · **위험** · 앱 설치 · 추가 악성앱 무단 설치 가능
11 · `REQUEST_INSTALL_PACKAGES` · 보통 · 앱 설치 요청 · 설치 프롬프트 유도
12 · `INTERNET` · 보통 · 네트워크 통신 · C2 서버와 데이터 송수신
13 · `ACCESS_NETWORK_STATE` · 보통 · 네트워크 상태 확인 · 연결 여부 판단
14 · `ACCESS_WIFI_STATE` · 보통 · WiFi 상태 확인 · WiFi SSID 등 네트워크 식별
15 · `CHANGE_BADGE` (Huawei) · 보통 · 배지 변경 · 알림 배지 조작
16 · `SupplementaryDID` (ASUS) · 보통 · 기기 ID 접근 · ASUS 기기 추가 식별자
17 · `BADGE_ICON` (Vivo) · 보통 · 배지 아이콘 · Vivo 기기 배지 조작
이 앱은 Android 버전별 미디어 접근 권한 변경에 3단계 대응을 구현했습니다:
```
Android 12 이하: READ_EXTERNAL_STORAGE + WRITE_EXTERNAL_STORAGE
Android 13 (API 33): READ_MEDIA_IMAGES + READ_MEDIA_VIDEO
Android 14 (API 34+): READ_MEDIA_VISUAL_USER_SELECTED
```
이는 모든 Android 버전에서 미디어 접근을 보장하는 고급 기법으로, 단순한 권한 요청이 아닌 체계적인 호환성 전략입니다. Wavegrid 패밀리에서는 READ_EXTERNAL_STORAGE만 사용하는 것과 대조적입니다.
항목 · v2.0 (잘못됨) · v3.0 (확인됨)
위험 권한 수 · 2개 · **10개**
저장소 접근 · "없음" · **READ/WRITE 외부 저장소 + 미디어 3종**
이미지 탈취 · "불가" · **mediapicker + 미디어 권한으로 가능**
계정 접근 · 없음 · **GET_ACCOUNTS**
앱 설치 · 없음 · **INSTALL_PACKAGES**
컴포넌트 · 수량 · 난독화 비율 · 비고
**Activity** · 45 · ~85% (38/45) · DCloud 7개 + mediapicker 2개 제외 전부 난독화
**Service** · 19 · ~95% (18/19) · DCloud DownloadService 1개 제외 전부 난독화
**Receiver** · 26 · ~96% (25/26) · Weex WXGlobalEventReceiver 1개 제외 전부 난독화
**Provider** · 9 · ~56% (5/9) · DCloud FileProvider 4개 + 난독화 5개
**합계** · 99 · ~87% · **총 99개 컴포넌트 중 86개 난독화**
컴포넌트 · 타입 · 역할
`io.dcloud.PandoraEntry` · Activity (LAUNCHER) · UniApp 메인 진입점
`io.dcloud.PandoraEntryActivity` · Activity · UniApp 보조 진입점
`io.dcloud.WebviewActivity` · Activity · 웹뷰 콘텐츠 표시
`io.dcloud.WebAppActivity` · Activity · 웹앱 런타임
`io.dcloud.ProcessMediator` · Activity · 프로세스 간 통신
`io.dcloud.feature.gallery.imageedit.IMGEditActivity` · Activity · 이미지 편집 (갤러리)
`io.dcloud.feature.nativeObj.photoview.PhotoActivity` · Activity · 사진 뷰어
`io.dcloud.sdk.activity.WebViewActivity` · Activity · SDK 웹뷰
`io.dcloud.sdk.base.service.DownloadService` · Service · 파일 다운로드
`io.dcloud.common.util.DCloud_FileProvider` · Provider · 파일 공유
`io.dcloud.sdk.base.service.provider.DCloudAdFileProvider` · Provider · 광고 파일 관리
`com.taobao.weex.WXGlobalEventReceiver` · Receiver · Weex 글로벌 이벤트
난독화된 컴포넌트 이름은 영어 단어 무작위 조합 패턴을 사용합니다:
```
com.umeprobamate.vtwinflower.WgporkerSscalefactorApplication
com.uoliver.qflatfooted.tassemblywoman.TbhybridomaKstockexchange
ljobber.xfiveneedled.cseamoss.ythucydides.JcwheellockFopticalbench
hmurphyslaw.wmanilahemp.uraceway.onephology.mlady.QbPapioFsidewheeler
```
패턴 특징:
1. 실제 영어 단어 사용: umeprobamate, twinflower, flatfooted, seamoss, thucydides
2. CamelCase + 접두사: 대소문자 조합으로 클래스명 생성
3. 2-6단어 패키지 경로: 단어를 패키지 경로로 분산 배치
4. 랜덤 접두사: 1글자 소문자 접두사 (l, h, j, w 등)
이 패턴은 kdreamapp (com.krim.kreamim)과는 다소 다르지만, 같은 UniApp 기반 난독화 도구를 사용한 것으로 추정됩니다. 특히 jiagu_1757 (uni.werhb.mwfcekdckql)과 비교하면 더 정교한 난독화 수준입니다.
99개 컴포넌트 중 상당수가 실제 기능 없는 더미로 추정됩니다:
```
enabled="false" Activity: 다수 → 비활성 상태로 선언된 더미
exported="true" + enabled="false" → 디텍션 회피용 미끼
label 속성의 난독화 문자열 → 실제 UI에 표시되지 않음
```
이 기법의 목적:
1. 정적 분석 방해: 분석가가 99개 컴포넌트를 모두 조사해야 함
2. 자동 분석 도구 회피: 컴포넌트 수가 많으면 분석 시간 증가
3. 실제 악성 코드 은닉: 진짜 악성 컴포넌트를 더미 속에 숨김
AndroidManifest에 수십 개의 난독화된 meta-data 태그가 포함되어 있습니다:
```xml
<meta-data ns0:name="jKgerardiaQsoupfinsharkQcoalesce" ns0:value="oOgauchoGpreventivemedicine" />
<meta-data ns0:name="zUgillElabrouste" ns0:value="jRdecalcificationBautarkic" />
<meta-data ns0:name="hJicefogLsadism" ns0:value="xYkekchiOsegregationism" />
```
이 meta-data는 의미 없는 문자열로, Manifest 크기 증가 → 분석 복잡도 증가를 목적으로 합니다.
실제 의미 있는 meta-data:
```xml
<meta-data ns0:name="android.notch_support" ns0:value="true" />
<meta-data ns0:name="android.max_aspect" ns0:value="2.5" />
<meta-data ns0:name="notch.config" ns0:value="portrait" />
<meta-data ns0:name="com.facebook.soloader.enabled" ns0:value="false" />
<meta-data ns0:name="DCLOUD_STREAMAPP_CHANNEL" ns0:value="a25Five.tooolTransaction.k25|__UNI__77338A0|122414180809|common" />
```
```
com.dmcbig.mediapicker.PickerActivity → 이미지/비디오 선택 UI
com.dmcbig.mediapicker.PreviewActivity → 선택한 미디어 미리보기
io.dcloud.feature.gallery.imageedit.IMGEditActivity → 이미지 편집
```
이 3개 Activity는 앱이 이미지/비디오를 선택하고 처리하는 기능을 가지고 있음을 확증합니다. 기존 보고서의 "이미지 탈취 불가" 판단은 완전히 잘못되었습니다.
```
[앱 실행]
v
io.dcloud.PandoraEntry (LAUNCHER)
v
UniApp JavaScript 번들 로드
v
WebView 기반 UI 렌더링
-- 초대코드 입력 화면
-- 권한 요청 화면
-- 연락처 수집
-- 미디어(사진/동영상) 수집
-- C2 서버 전송
v
io.dcloud.WebviewActivity / WebAppActivity
-- 추가 웹 콘텐츠 로드
```
항목 · 값
**C2 URL** · **Unknown** (smali 코드 없어 추출 불가)
**프로토콜** · HTTPS 또는 HTTP (usesCleartextTraffic=true)
**서버 프레임워크** · Unknown (UniApp 특성상 서버는 다양)
미추출 원인:
1. smali/DEX 코드가 없음 (AndroidManifest + res 파일만 존재)
2. UniApp 프레임워크에서 C2 URL은 주로 JavaScript 번들(assets/apps/ 내부) 또는 네이티브 코드에 저장
3. 동적 분석(네트워크 캡처)이 수행되지 않음
추출을 위한 접근법:
1. APK 재추출: 원본 APK에서 assets/apps/__UNI__77338A0/ 폴더의 JS 번들 분석
2. 동적 분석: mitmproxy/Burp Suite로 네트워크 트래픽 캡처
3. DEX 분석: 원본 APK에서 classes.dex 추출 → smali 변환 → URL 상수 검색
```xml
<application ... ns0:usesCleartextTraffic="true">
```
HTTP 평문 통신이 허용되어 있어 앱이 HTTPS가 아닌 HTTP로도 통신할 수 있습니다. 이는:
· C2 서버가 HTTPS를 지원하지 않을 가능성
· 또는 개발/테스트 편의를 위해 활성화
· SSL 차단 회피 목적
```
a25Five.tooolTransaction.k25|__UNI__77338A0|122414180809|common
```
필드 · 값 · 의미
패키지명 · a25Five.tooolTransaction.k25 · 앱 식별
UniApp ID · __UNI__77338A0 · DCloud 앱 고유 ID
타임스탬프 · 122414180809 · 빌드 타임스탬프 (추정)
채널 · common · 배포 채널
UniApp ID __UNI__77338A0로 DCloud 개발자 포털에서 앱 등록 정보를 조회할 수 있을 가능성이 있습니다.
```xml
<external-path name="external" path="/" /> ← 외부 저장소 전체
<root-path name="root_path" path="" /> ← 루트 파일시스템
<external-files-path name="external_file_path" path="." />
<external-cache-path name="external_cache_path" path="." />
```
root-path와 external-path path="/"는 기기의 전체 파일시스템에 접근할 수 있음을 의미합니다. 이는 악성 앱에서 데이터 탈취 범위를 최대화하기 위한 설정입니다.
# · 방어기제 · 구현 · 수준 · 상태
1 · **극도 난독화** · 99개 컴포넌트 + 메타데이터 난독화 · 고급 · 분석 방해
2 · **더미 컴포넌트** · enabled="false" 다수 · 중급 · 분석 시간 증가
3 · **초대코드 검증** · L() → l0() 패턴 (추정) · 기본 · 우회됨
4 · **registerActivityLifecycleCallbacks** · 생명주기 모니터링 · 중급 · 우회됨
5 · **벤더별 배지 권한** · Huawei/Vivo/ASUS 대응 · 기본 · 탐지 회피
앱 · 난독화 유형 · 수준
**HomeYoga** · 영어 단어 조합 + 더미 컴포넌트 + meta-data 난독화 · **극도**
kdreamapp · 패키지명 난독화 · 높음
jiagu_1757 · Jiagu XOR 암호화 DEX · 높음
ML (YLOVE) · EasyHttp 기반 난독화 · 중간
Flirting_138 · ProGuard 기본 · 낮음
기존 v2.0에서 적용한 패치 2건은 여전히 유효합니다:
1. L() → l0(): 초대코드 검증 우회
2. registerActivityLifecycleCallbacks 수정: Android 9 호환성
# · 데이터 유형 · 근거 · 확신도 · 피해 심각도
1 · **연락처** · READ_CONTACTS 권한 · 확증 · 극심
2 · **사진** · READ_MEDIA_IMAGES + mediapicker · 확증 · 극심
3 · **동영상** · READ_MEDIA_VIDEO + mediapicker · 확증 · 극심
4 · **전화번호/IMEI** · READ_PHONE_STATE 권한 · 확증 · 높음
5 · **파일** · READ_EXTERNAL_STORAGE + root-path FileProvider · 확증 · 높음
6 · **계정 정보** · GET_ACCOUNTS 권한 · 확증 · 높음
7 · **연락처 변조** · WRITE_CONTACTS 권한 · 확증 · 중간
8 · **추가 앱 설치** · INSTALL_PACKAGES 권한 · 확증 · 높음
항목 · v2.0 · v3.0
수집 대상 · 연락처만 · **연락처 + 사진 + 동영상 + 파일 + 전화번호 + 계정**
이미지 탈취 · "불가" · **가능 (mediapicker 확증)**
추가 앱 설치 · 없음 · **INSTALL_PACKAGES로 가능**
피해 범위 · 제한적 · **광범위**
```
Android 9-12: READ_EXTERNAL_STORAGE → 모든 미디어 파일 접근
Android 13: READ_MEDIA_IMAGES + READ_MEDIA_VIDEO → 세분화된 접근
Android 14+: READ_MEDIA_VISUAL_USER_SELECTED → 사용자 선택 미디어
```
세 권한을 모두 선언함으로써 Android 9부터 14+까지 모든 버전에서 미디어 탈취 가능합니다.
항목 · HomeYoga · kdreamapp · jiagu_1757
**UniApp ID** · __UNI__77338A0 · Unknown · uni.werhb.mwfcekdckql
**패키지명** · a25Five.tooolTransaction.k25 · com.krim.kreamim · uni.werhb.mwfcekdckql
**난독화** · 영어 단어 조합 (극도) · 패키지명 난독화 · Jiagu XOR
**위험 권한** · 10개 · 6개 · 3개
**데이터 탈취** · 연락처+미디어+파일+계정 · 연락처+GPS+미디어 · 연락처+OAID
**Weex 사용** · WXGlobalEventReceiver · WebSocket + Weex · 미확인
**C2 서버** · Unknown · [비공개] · [비공개]
**보호 수준** · 난독화 + 더미 · 5중 보호 · Jiagu XOR
**앱 설치 권한** · INSTALL_PACKAGES · 없음 · 없음
1. DCloud UniApp 프레임워크 기반
2. PandoraEntry 또는 유사 진입점 사용
3. Weex/Taobao 컴포넌트 포함
4. 중국어 문자열 존재 ("最近流应用" 등)
5. 연락처 탈취 공통 목적
1. INSTALL_PACKAGES: HomeYoga만 보유 → 추가 악성앱 설치 능력
2. WRITE_CONTACTS: HomeYoga만 보유 → 연락처 변조 능력
3. GET_ACCOUNTS: HomeYoga만 보유 → 계정 정보 수집
4. 난독화 수준: 가장 높음 (영어 단어 무작위 조합 + 더미 컴포넌트)
5. 벤더 특화: Huawei/Vivo/ASUS 배지 권한 → 다양한 기기 대응
기존 보고서에서 Wavegrid로 분류했으나, 실제로는 근본적으로 다릅니다:
항목 · Wavegrid 패밀리 · HomeYoga (실제)
**프레임워크** · Native Android (Kotlin/Java) · DCloud UniApp (JavaScript/Vue)
**진입점** · LoginActivity / MainActivity · io.dcloud.PandoraEntry
**네트워크** · EasyHttp / OkHttp · UniApp HTTP 모듈
**뷰 바인딩** · ButterKnife / ViewBinding · WebView 기반
**로컬 저장소** · SPUtils / MMKV · UniApp Storage API
**난독화** · ProGuard / 없음 · 영어 단어 조합 + 더미
**C2 패턴** · `[비공개] · Unknown (JS 번들 내장)
v4.0에서 새롭게 수행한 AndroidManifest.xml 정밀 포렌식 결과, 대규모 중복 선언 패턴이 발견되었습니다.
기존 보고서에서 "99개 컴포넌트"로 기재했으나, 중복을 포함한 실제 선언 수는 다릅니다:
컴포넌트 타입 · 선언 수 (중복 포함) · 고유 이름 수 · 중복 수
**Activity** · 119 · ~95 · ~24
**Service** · 18 · ~16 · ~2
**Receiver** · 27 · ~24 · ~3
**Provider** · 4 · 2 · 2
**합계** · **168** · **~140** · **~28**
**meta-data** · **152** · ~144 · ~8
총 168개 컴포넌트 선언 + 152개 meta-data 태그 = 320개 XML 요소가 AndroidManifest에 존재합니다. 이는 일반적인 앱(20-40개)의 8-16배에 달하는 비정상적인 규모입니다.
모든 DCloud 정규 컴포넌트가 완전히 동일한 속성으로 2회씩 선언되어 있습니다:
컴포넌트 · 선언 횟수 · 비고
`io.dcloud.PandoraEntry` · **2회** · 각각 LAUNCHER intent-filter 포함
`io.dcloud.PandoraEntryActivity` · **2회** · singleTask launchMode
`io.dcloud.WebviewActivity` · **2회** · 서로 다른 theme 적용
`io.dcloud.WebAppActivity` · **2회** · singleTask launchMode
`io.dcloud.ProcessMediator` · **2회** · excludeFromRecents
`io.dcloud.sdk.activity.WebViewActivity` · **2회**
`io.dcloud.feature.gallery.imageedit.IMGEditActivity` · **2회**
`io.dcloud.feature.nativeObj.photoview.PhotoActivity` · **2회**
`io.dcloud.sdk.base.service.DownloadService` · **2회** · BIND_JOB_SERVICE
`io.dcloud.common.util.DCloud_FileProvider` · **2회** · 동일 authority
`io.dcloud.sdk.base.service.provider.DCloudAdFileProvider` · **2회** · 동일 authority
`com.taobao.weex.WXGlobalEventReceiver` · **2회**
`com.dmcbig.mediapicker.PickerActivity` · **2회**
`com.dmcbig.mediapicker.PreviewActivity` · **2회**
14개 정규 컴포넌트가 모두 2회 선언 = 28개 중복 선언. 이는 단순한 빌드 오류가 아니라 의도적인 Manifest 팽창 전략입니다.
android.intent.action.MAIN + android.intent.category.LAUNCHER가 3회 선언되어 있습니다:
```
1회: queries > intent > action.MAIN (앱 검색 쿼리용)
2회: io.dcloud.PandoraEntry (1차 선언) + LAUNCHER + BROWSABLE VIEW
3회: io.dcloud.PandoraEntry (2차 선언 - 완전 중복)
```
Android 시스템은 중복 LAUNCHER를 무시하지만, 정적 분석 도구는 혼란을 일으킬 수 있습니다.
PandoraEntry에 android.intent.action.VIEW + BROWSABLE + DEFAULT 카테고리가 선언되어 있어, 브라우저에서 특정 URL을 통해 앱을 직접 실행할 수 있습니다. 다만 scheme/host 데이터가 명시되지 않아 범용 뷰어로 등록됩니다.
3개 권한이 2회씩 중복 선언되어 있습니다:
권한 · 선언 횟수
`GET_ACCOUNTS` · 2회
`REQUEST_INSTALL_PACKAGES` · 2회
`WRITE_CONTACTS` · 2회
Android 시스템은 중복 권한을 자동 병합하므로 기능상 영향은 없지만, 분석가가 수동 카운팅 시 오차 발생 가능성이 있습니다.
```
[목적 1: Manifest 크기 팽창]
168개 컴포넌트 + 152개 meta-data = 377줄 XML
일반 앱 대비 8-16배 규모 → 분석 시간 대폭 증가
[목적 2: 분석 도구 혼란]
동일 이름 중복 선언 → 파싱 오류 또는 잘못된 카운팅
apktool, jadx 등의 분석 결과 신뢰도 저하
[목적 3: 실제 악성 코드 은닉]
140개 고유 컴포넌트 중 정규 14개 제외 = 126개 난독화
진짜 악성 로직 위치 파악 극히 어려움
[목적 4: 자동 분석 시스템 회피]
VirusTotal 등의 정적 분석에서 "컴포넌트 수 비정상"으로만 탐지
구체적 위협 분류 어려움
```
AndroidManifest에서 추출된 난독화 단어들을 언어학적으로 분류합니다:
카테고리 · 단어 예시 · 빈도 · 출처 추정
**의학/생물학** · umeprobamate, fibroblast, parenchyma, hepatotoxic, vitrectomy · 높음 · 의학 사전
**동물/식물** · twinflower, lyrebird, seamoss, silverfish, killerwhale · 높음 · 생물학 사전
**화학** · polyester, diaminetetraaceticacid, hexadecimaldigit · 중간 · 화학 용어집
**지리** · mozambique, knoxville, eindhoven, andalusia, cambridge · 중간 · 지명 사전
**역사/문화** · thucydides, byzantine, sadism, gresham, charlemagne · 낮음 · 백과사전
**일상 용어** · flatfooted, stockexchange, creditworthiness, bankstatement · 높음 · 영영 사전
**군사/정치** · murphyslaw, guerilla, militarymarch, lordresistancearmy · 낮음 · 전문 용어집
난독화 이름의 구조를 역분석한 결과:
```
패키지명 생성:
[소문자접두사1][영어단어1].[소문자접두사2][영어단어2]...[소문자접두사N][영어단어N]
예: com.umeprobamate.vtwinflower
클래스명 생성:
[대문자접두사][영어단어1][대문자접두사][영어단어2]Activity
예: WgporkerSscalefactorApplication
접두사 패턴:
· 1글자 소문자: a, b, c, ..., z (패키지 세그먼트)
· 1글자 대문자: A, B, C, ..., Z (클래스명 세그먼트)
· 특수 패턴: "com." + [소문자 시작 단어]... (정규 패키지 위장)
```
특정 단어가 여러 컴포넌트에 반복 등장합니다:
반복 단어 · 등장 횟수 · 의미
vtwinflower · 11 · Application 클래스 소속 마커
umeprobamate · 11 · Application 패키지 마커
mourningcloak · 3 · 나비 종류 (생물학)
silverdollar · 3 · 물고기 종류 (생물학)
telegraphicsignal · 2 · 통신 용어
creditworthiness · 2 · 금융 용어
palatability · 2 · 맛/기호 용어
vtwinflower와 umeprobamate의 11회 등장은 이들이 Application 클래스 네임스페이스 표식으로 기능함을 의미합니다. 실제 악성 로직이 있는 핵심 Activity들은 이 네임스페이스 하에 배치됩니다:
```
com.umeprobamate.vtwinflower.WgporkerSscalefactorApplication (Application)
com.umeprobamate.vtwinflower.HflaxenaWspectaculartActivity (Activity)
com.umeprobamate.vtwinflower.JleoixxZshingonxActivity (Activity)
com.umeprobamate.vtwinflower.JtriplecrownseasonyYunalterablyuActivity (Activity)
com.umeprobamate.vtwinflower.LoccupyfRdistractrActivity (Activity)
com.umeprobamate.vtwinflower.SbahtvBpuerperalfevereActivity
본 보고서는 주식회사 아크링크 Deep-Coding 보안연구소가 피싱·몸캠피싱 피해자 구제를 목적으로 작성했습니다. 전체 열람·피해 상담: arklink.co.kr