Sfile("S파일")은 WaveGrid Gen3 Pre-R8 v4-A' 패밀리에 속하는 악성 데이터 탈취 앱이다.
파일명에서 추출한 초대코드 NWH5, 배포 도메인 m.cloudon1.net으로 유통되었다.
C2 서버는 `[비공개], wolf([비공개])→SLS([비공개])→Sfile([비공개])로
이어지는 SL-060 C2 도메인 회전 패턴의 최신 변종이다.
핵심 발견: Sfile은 wolf/SLS와 동일한 com.example.sms 내부 패키지를 사용하면서도,
API 엔드포인트 네이밍이 완전히 변경되었다. 기존 flat path(/sms/, /photo, /contact)에서
webapp/ 네임스페이스 접두사(webapp/saveSms, webapp/image/, webapp/saveAddressBook)로
마이그레이션한 것은 동일 개발팀의 진행 중인 API 리팩토링을 증명한다. 이를 **SL-062 API Endpoint
Namespace Migration** 기법으로 명명한다.
versionCode 21145는 wolf(1), SLS(66)에 비해 극단적으로 높아, SL-061(빌드 번호 비상관) 패턴의
추가 증거이며, versionName 1.1.35는 SLS(1.1.16)보다 19 패치 이상 진행된 것을 의미한다.
위험도: CRITICAL — SMS/연락처/사진 탈취 + 5초 폴링 무한루프 + SEND_SMS 선언
항목 · 값 · 출처
앱 이름 · S파일 (Sfile) · 스크린샷 + auto_analysis
외부 패키지 · [비공개] · AndroidManifest.xml
내부 패키지 · com.example.sms · 전 smali 파일
versionCode · 21145 · auto_analysis.json:21
versionName · 1.1.35 · auto_analysis.json:22
minSdk · 27 (Android 8.1) · auto_analysis.json:23
targetSdk · 32 (Android 12) · auto_analysis.json:24
SHA256 · b2dd2a110c2b2eb4913fa985f1b18af6b44d4f00fe3169a9e27395bac654e8e9 · auto_analysis.json:8
파일 크기 · 11,830,704 bytes (11.3MB) · auto_analysis.json:7
DEX 수 · 2 (classes.dex + classes2.dex) · auto_analysis.json:9
Smali 파일 수 · 7,469개 · apktool 디컴파일
R8 난독화 · 미적용 (Pre-R8) · 전체 클래스명 보존 확인
네이티브 라이브러리 · libscannative.so (arm64-v8a, armeabi-v7a) · auto_analysis.json:11-12
초대코드 · NWH5 · 파일명 추출
배포 도메인 · [비공개] · 파일명 추출
수집일 · 2024-11-10 · 파일명 타임스탬프 1732267875
패밀리 · wavegrid (Gen3 Pre-R8 v4-A') · 구조 분석
Sfile의 외부 패키지 [비공개]은 의미 없는 랜덤 문자열로,
Google Play Store 정책을 회피하기 위한 위장이다. 실제 모든 비즈니스 로직은
com.example.sms 네임스페이스에 존재한다.
이 이중 구조는 wolf(kfeafs.zowjifasdf.opiawiegasd.zdnaoing),
SLS(kfeafs.zowjifasdf.opiawiegasd.zdnaoing과 동일 — 공유 패키지)와 같은 패턴이다.
AndroidManifest.xml의 MessengerUtils 서비스 액션:
```
[비공개].messenger
```
"Sile"은 "Sfile"의 오타 또는 의도적 변형이다. 이전 빌드에서 wolf는 다른 액션명을 사용했을 가능성이 높으며,
앱 이름에 맞게 수동으로 수정하는 과정에서 오타가 발생했다. 이는 수작업 빌드 변형의 증거다.
# · 권한 · 위험도 · 실제 사용 (smali 검증)
1 · INTERNET · 일반 · ✅ OkHttp C2 통신 (HttpUtils.smali)
2 · READ_CONTACTS · 위험 · ✅ ReadContactUtils.getContact()
3 · READ_PHONE_STATE · 위험 · ✅ TelephonyManager.getLine1Number()
4 · READ_PHONE_NUMBERS · 위험 · ✅ 전화번호 수집 (UploadService:131)
5 · READ_EXTERNAL_STORAGE · 위험 · ✅ 앨범/사진 수집 (ReadContactUtils.getAlbum())
6 · READ_MEDIA_IMAGES · 위험 · ✅ Android 13+ 이미지 접근
7 · READ_MEDIA_AUDIO · 위험 · ⚠️ 잠재적 — 현재 코드에서 미사용
8 · READ_MEDIA_VIDEO · 위험 · ⚠️ 잠재적 — 현재 코드에서 미사용
9 · READ_SMS · 위험 · ✅ ReadContactUtils.getMsgs()
10 · SEND_SMS · 위험 · ❌ **SN-040 Reverse: 선언만, 사용 없음**
11 · ACCESS_NETWORK_STATE · 일반 · ✅ 네트워크 상태 확인
android.permission.SEND_SMS는 AndroidManifest.xml에 선언되어 있으나,
com.example.sms 전체 smali를 검색한 결과 SmsManager나 sendTextMessage 호출이 없다.
이는 wolf/SLS에서도 확인된 동일 패턴으로, 두 가지 가설이 있다:
1. 미래 기능 예약: SMS 릴레이 기능이 서버 측에서 활성화될 수 있음
2. 빌드 템플릿 잔재: Gen3 Pre-R8 기본 템플릿에 포함된 권한이 제거되지 않음
1단계 — LoginActivity.requestPermission() (line 127):
```smali
filled-new-array {v0, v1, v2, v3}, [Ljava/lang/String;
```
→ 4개 권한 (requestCode=0x64=100)
2단계 — UploadActivity.requestAllPermission() (line 154):
```smali
filled-new-array {v0, v1, v2, v3, v4}, [Ljava/lang/String;
```
→ 5개 권한 (requestCode=0x64=100)
1단계에서 이미 획득한 4개 권한에 READ_EXTERNAL_STORAGE만 추가하여 2단계에서 재요청한다.
이는 사진 수집을 위한 별도 권한 획득 전략이다.
HttpUtils.smali:7:
```smali
.field public static base_url:Ljava/lang/String; = "[비공개]
```
항목 · 값
프로토콜 · HTTP (비암호화)
도메인 · [비공개]
경로 · [비공개]
포트 · 80 (기본값)
TLS · 없음
Sfile은 love19.store를 사용하며, Gen3 Pre-R8 패밀리의 C2 도메인 회전 궤적에서
가장 최신 변종 중 하나이다:
# · 앱 · C2 도메인 · TLD · 특징
1 · wolf · [비공개] · .website · 초기 도메인
2 · SLS · [비공개] · .website · 정수 접미사 추가
3 · Sfile · [비공개] · .store · **완전 리브랜딩**
love19.store는:
· zcloud → love19로 브랜드 변경
· .website → .store로 TLD 변경
· "love"라는 연애/데이팅 앱 위장 키워드 사용
· SLS 배포 도메인([비공개])과 "love19" 접두사를 공유
`[비공개] 경로는 RuoYi 프레임워크의 기본 프로덕션 API 프리픽스다.
wolf/SLS/Sfile 모두 동일한 서버 인프라를 사용하고 있으며,
이는 단일 공격 그룹이 동일 백엔드를 운영하고 있음을 의미한다.
love19.store와의 통신은 HTTP(비암호화)로, Android 9+ 기본 cleartext 차단 정책에
대응하기 위해 network_security_config.xml이 사용된다:
```xml
android:networkSecurityConfig="@xml/network_security_config"
```
이는 MITM(Man-in-the-Middle) 공격에 취약하며, 중간 네트워크 장비에서
탈취 데이터를 가로챌 수 있다. 역설적으로, 보안 연구 관점에서는 트래픽 분석이 용이하다.
# · 엔드포인트 · 메서드 · 호출 위치 (smali) · 목적
1 · `webapp/login` · GET · LoginActivity:74 · 초대코드 인증
2 · `webapp/saveSms` · POST · UploadActivity$7:52, UploadService$3:52 · SMS 데이터 업로드
3 · `webapp/saveAddressBook` · POST · UploadActivity$6:52 · 연락처 데이터 업로드
4 · `webapp/image/` · POST · UploadActivity$5$1:112 · 사진 파일 업로드
발견: Sfile의 API 엔드포인트 명명 체계가 wolf/SLS와 완전히 다르다.
기능 · wolf/SLS (구형) · Sfile (신형) · 변경 유형
인증 · `webapp/login` · `webapp/login` · 동일
SMS · `/sms/` 계열 · `webapp/saveSms` · 네임스페이스 추가
사진 · `/photo` · `webapp/image/` · 네임스페이스 + 이름 변경
연락처 · `/contact` 계열 · `webapp/saveAddressBook` · 네임스페이스 + 이름 변경
분석:
· 모든 엔드포인트가 webapp/ 접두사를 사용하도록 통일
· 엔드포인트 이름이 camelCase 동사+명사 패턴으로 정규화 (saveSms, saveAddressBook)
· 이는 서버 측 API 리팩토링을 반영하며, 동일 개발팀이 코드베이스를 적극적으로 관리하고 있음을 증명
· wolf/SLS는 webapp/login만 webapp/ 접두사 → Sfile에서 전면 확장
의의: 이 기법은 정적 시그니처 기반 탐지를 우회하는 효과가 있다.
/sms/를 탐지하는 규칙이 webapp/saveSms를 놓치게 된다.
```smali
const-string v1, "webapp/login"
```
특이점: POST가 아닌 GET으로 인증 수행. 초대코드가 URL 파라미터로 전달되는 구조.
이는 서버 로그에 초대코드가 평문으로 기록됨을 의미한다.
1. UploadActivity$7 (사용자 트리거): 사용자가 "동기화" 버튼 클릭 시
2. UploadService$3 (자동 트리거): 5초 폴링 타이머에 의해 자동 호출
전송 페이로드:
```json
{
> [비공개]
"bjPhone": "<전화번호>",
"content": "<SMS JSON 배열>"
}
```
UploadActivity$6에서 호출. 전송 페이로드:
```json
{
> [비공개]
"model": "android",
"bjPhone": "<전화번호>",
"operatorName": "<통신사명>",
"phoneContent": "<연락처 JSON 배열>"
}
```
특이점: operatorName 필드가 추가됨 — wolf/SLS에서는 확인되지 않은 신규 필드.
ReadContactUtils.getOperatorName()으로 통신사(SKT, KT, LGU+ 등)를 수집한다.
UploadActivity$5$1에서 postFile()로 호출. Luban 라이브러리로 압축 후 전송:
```smali
invoke-static {v2}, Ltop/zibin/luban/Luban;->with(Landroid/content/Context;)Ltop/zibin/luban/Luban$Builder;
```
MediaType: image/* → application/octet-stream 혼용 (코드 레벨 불일치)
CH · 데이터 · 수집 메서드 · API · 전송 방식
CH-1 · SMS · ReadContactUtils.getMsgs() · webapp/saveSms · JSON POST
CH-2 · 사진 · ReadContactUtils.getAlbum() · webapp/image/ · MultipartBody
CH-3 · 연락처 · ReadContactUtils.getContact() · webapp/saveAddressBook · JSON POST
CH-4 · 전화번호 · TelephonyManager.getLine1Number() · (CH-1,3에 내장) · bjPhone 필드
항목 · wolf/SLS · Sfile
SMS 엔드포인트 · /sms/ · webapp/saveSms
연락처 엔드포인트 · /contact · webapp/saveAddressBook
사진 엔드포인트 · /photo · webapp/image/
통신사 수집 · 미확인 · ✅ operatorName 필드
이미지 압축 · 직접 업로드 · Luban 라이브러리 압축
인증 · webapp/login GET · webapp/login GET (동일)
UploadActivity는 사용자에게 데이터 동기화를 유도하는 UI를 제공:
· btn_sms — SMS 동기화 (getSmsDataUpload())
· btn_contact — 연락처 동기화 (getContactDataUpload())
· btn_album — 앨범 동기화 (getAlbumDataUpload())
· btn_sync — 전체 동기화
각 버튼에 대응하는 requestCode:
· smsP = 0x65 (101)
· contactP = 0x66 (102)
· albumP = 0x6a (106)
UploadService.smali:188-206:
```smali
const-wide/16 v2, 0x1388 # 5000ms = 5초
const-wide/16 v4, 0x3e8 # 1000ms = 1초 tick
invoke-direct/range {v0 .. v5}, Lcom/example/sms/servise/UploadService$2;-><init>(...)
```
CountDownTimer(5000, 1000) — 5초 카운트다운 후 onFinish()에서:
1. SMS 데이터 수집 (getMsgs())
2. C2 서버 전송 (webapp/saveSms)
3. 타이머 재시작 → 무한 루프
```smali
.method public onStartCommand(Landroid/content/Intent;II)I
const/4 p1, 0x1 # START_STICKY
return p1
```
START_STICKY = 시스템이 서비스를 죽여도 자동 재시작.
5초 폴링과 결합하여, 기기가 켜져 있는 한 지속적으로 SMS를 탈취한다.
1. LoginActivity → 초대코드 인증 성공
2. startMain() → UploadActivity 시작
3. UploadActivity → UploadService 시작
4. UploadService.onCreate() → countDown() 호출
5. 5초마다 getSmsDataUpload() → webapp/saveSms POST → 무한 반복
1. 사용자가 초대코드 입력 (et_code EditText)
2. LoginActivity$1 (OnClickListener) → login() 호출
3. webapp/login GET 요청 (비동기 enqueue)
4. LoginActivity$2 콜백에서 응답 처리
5. 성공 시: SPUtils.put("is_first", true) → UploadActivity로 이동
```smali
const-string v2, "" # 빈 URL!
invoke-virtual {v1, v2}, Lokhttp3/Request$Builder;->url(Ljava/lang/String;)Lokhttp3/Request$Builder;
```
LoginActivity에 uploadImgnew() 메서드가 있으나, URL이 빈 문자열("")로 설정되어 있다.
이는 죽은 코드(dead code)이며, 이전 빌드에서 사용하던 기능의 잔재로 보인다.
실제 이미지 업로드는 UploadActivity$5$1에서 webapp/image/ 엔드포인트를 통해 수행된다.
LoginActivity에 uuid 필드가 있으며, LoginActivity$1$1에서 사용된다.
이는 기기 고유 식별자 생성에 사용될 가능성이 있다.
앱 · versionCode · versionName · R8 · 패밀리
wolf · 1 · 1.0 · No · Gen3 Pre-R8
SLS · 66 · 1.1.16 · No · Gen3 Pre-R8
**Sfile** · **21145** · **1.1.35** · **No** · **Gen3 Pre-R8**
versionCode 21145의 의미:
1. 빌드 번호 인플레이션: 1 → 66 → 21145는 지수적 증가가 아닌 무작위 점프
2. 빌드 시스템 변경 가능성: CI/CD 파이프라인에서 자동 생성되는 빌드 번호일 수 있음
3. 21145의 잠재적 의미: 2024년 11월 45일차? 날짜 기반 빌드 번호 (241145→21145)로는 불가능
4. R8 미적용은 불변: versionCode가 21145까지 올라갔음에도 R8 난독화가 여전히 미적용
SLS(1.1.16) → Sfile(1.1.35)는 19 패치 이상의 차이를 보인다.
이는 두 앱 사이에 최소 19회의 마이너 업데이트가 있었음을 시사하며,
활발한 개발 활동의 증거다.
# · 기제 · 상태 · 증거
1 · 패키지명 위장 · 활성 · 외부=[비공개], 내부=com.example.sms
2 · network_security_config · 활성 · cleartext HTTP 허용
3 · 에뮬레이터 감지 (추정) · 부분 · ANR 발생 — 에뮬레이터 환경에서 지연
4 · R8 미적용 · - · 난독화 없음 (의도적 또는 개발 단계)
5 · 앱 이름 위장 · 활성 · "S파일" — 파일 관리 앱으로 위장
6 · SEND_SMS 예약 · 대기 · SN-040 — 미래 기능 활성화 가능
Sfile은 에뮬레이터(DeepCoding_API35)에서 실행 시 즉시 ANR(Application Not Responding)을 발생시켰다.
가능한 원인:
1. 블랜크유틸(BlankJ UtilCode)의 DeviceUtils: 에뮬레이터 감지 루틴이 메인 스레드를 차단
2. Huawei HMS ScanKit 초기화: HMS 서비스가 에뮬레이터에서 응답 지연
3. 네트워크 요청 메인 스레드 실행: NetworkOnMainThreadException은 아니지만, 동기 호출 지연
스크린샷에서 "Process system isn't responding" 다이얼로그가 확인되었으며,
이는 앱 자체가 아닌 시스템 프로세스의 ANR이다. 이는 앱이 시스템 리소스를 과도하게
사용하고 있을 가능성을 시사한다.
모든 C2 통신이 HTTP(비암호화)로 수행된다:
· `[비공개] — 초대코드 평문 전송
· `[비공개] — SMS 내용 평문 전송
· `[비공개] — 연락처 평문 전송
· `[비공개] — 사진 평문 전송
OkHttpClient가 기본 생성자로 초기화되며(new OkHttpClient()),
SSL 인증서 고정(pinning)이 없다. MITM 프록시 도구(Burp Suite, mitmproxy)로
모든 트래픽을 가로채고 분석할 수 있다.
FastJSON(com.alibaba.fastjson.JSONObject)을 사용하여 데이터를 직렬화한다:
```smali
invoke-static {v1}, Lcom/alibaba/fastjson/JSONObject;->toJSONString(Ljava/lang/Object;)Ljava/lang/String;
```
FastJSON의 알려진 취약점(CVE-2022-25845 등)이 있으며,
서버 측에서도 FastJSON으로 역직렬화한다면 RCE 가능성이 있다.
# · 취약점 · 심각도 · 설명
1 · HTTP 평문 통신 · HIGH · 모든 데이터가 암호화 없이 전송
2 · SSL Pinning 부재 · HIGH · MITM 공격 완전 노출
3 · UploadService exported=true · MEDIUM · 외부 앱이 서비스 시작 가능
4 · FastJSON 사용 · MEDIUM · 알려진 역직렬화 취약점
5 · 빈 URL 죽은 코드 · LOW · LoginActivity.uploadImgnew()에서 빈 URL
```xml
<service android:exported="true" android:name="com.example.sms.servise.UploadService">
```
이 서비스는 exported="true"로 설정되어, 어떤 앱이든 이 서비스를 시작할 수 있다.
악의적인 앱이 의도적으로 UploadService를 시작하여 데이터 탈취를 유발할 수 있다.
라이브러리 · 용도 · 특이점
OkHttp3 · HTTP 통신 · C2 서버 통신 전담
Alibaba FastJSON · JSON 직렬화 · SMS/연락처 데이터 변환
Google Gson · JSON 처리 · postGson()에서 사용 (이중 JSON 라이브러리)
Luban · 이미지 압축 · 사진 업로드 전 압축 처리
PictureSelector (com.luck.picture) · 사진 선택 · 갤러리 접근 UI
BlankJ UtilCode · 유틸리티 · DeviceUtils, EncryptUtils 등
Huawei HMS ScanKit · QR 코드 스캔 · 초대코드 QR 입력 용도 추정
Huawei ML Kit · 머신러닝 · 카메라/이미지 처리
Glide (Bumptech) · 이미지 로딩 · 썸네일 표시
AndroidX · 기반 프레임워크 · AppCompatActivity 등
Sfile은 FastJSON과 Gson을 동시에 사용한다:
· Gson: HttpUtils.postGson()에서 GsonBuilder().disableHtmlEscaping() 사용
· FastJSON: UploadActivity/UploadService에서 JSONObject.toJSONString() 사용
이는 코드베이스가 점진적으로 발전했음을 보여주며,
초기에 Gson을 사용하다가 FastJSON으로 마이그레이션했지만 완전히 전환하지 않은 것이다.
· SHA256: b2dd2a110c2b2eb4913fa985f1b18af6b44d4f00fe3169a9e27395bac654e8e9
· C2: [비공개]
· 배포: [비공개]
· `[비공개]
· `[비공개]
· `[비공개]
· `[비공개]
· [비공개] (외부)
· com.example.sms (내부)
· classes.dex, classes2.dex
· lib/arm64-v8a/libscannative.so
· lib/armeabi-v7a/libscannative.so
· HTTP POST to */webapp/saveSms with JSON body containing "userName", "bjPhone", "content"
· HTTP POST to */webapp/saveAddressBook with JSON body containing "userName", "bjPhone", "phoneContent", "operatorName"
· HTTP GET to */webapp/login
```yara
rule WaveGrid_Gen3_Sfile {
meta:
description = "WaveGrid Gen3 Pre-R8 Sfile variant"
author = "ArkLink Deep-Coding Lab"
date = "2026-02-26"
strings:
$c2 = "[비공개]" ascii
$api1 = "webapp/saveSms" ascii
$api2 = "webapp/saveAddressBook" ascii
$api3 = "webapp/image/" ascii
$pkg = "com.example.sms" ascii
$key1 = "bjPhone" ascii
$key2 = "operatorName" ascii
condition:
$c2 and $pkg and any of ($api*)
}
```
```
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"WaveGrid Gen3 Sfile C2 Communication";
content:"[비공개]"; http_host;
content:"webapp/save"; http_uri;
sid:202-**-**; rev:1;
)
```
위치 · 아티팩트 · 설명
SharedPreferences · is_first=true · 최초 실행 후 인증 완료 표시
SharedPreferences · invite_code=NWH5 · 사용된 초대코드
/data/data/[비공개] · 앱 데이터 · 캐시된 사진, SMS 복사본
Logcat · TAG="TAG" · HttpUtils.postGson() 로그
· 환경: DeepCoding_API35 (API 35, x86_64)
· 설치: 성공 (adb install)
· 실행: LoginActivity 표시 성공
· UI: "S파일" 로고 + "초대코드를 입력해주세요" 입력 필드
· ANR: "Process system isn't responding" — 에뮬레이터 환경에서 시스템 부하
· 스크린샷: screenshot_launch.png 캡처 성공
logcat_launch.txt (108,386줄) 캡처 완료. 주요 분석 대상:
· UploadService 시작 여부
· C2 서버 연결 시도
· 권한 요청 흐름
채널 · 데이터 크기 (예상) · 빈도
SMS · 50-500KB/회 (대화량 의존) · 5초마다 (UploadService)
연락처 · 10-100KB/회 · 사용자 트리거
사진 · 100KB-2MB/장 (Luban 압축) · 사용자 트리거
전화번호 · <1KB · 매 전송마다 포함
5초 폴링 기준:
· 24시간 = 17,280회 전송 시도
· SMS 데이터가 변하지 않아도 매번 전체 재전송
· 예상 일일 소모: 100MB-1GB (SMS 양에 따라)
```
wolf (vCode=1, vName=1.0)
├─ C2: [비공개]
├─ API: /sms/, /photo, /contact (flat)
└─ 배포: [비공개]
│
SLS (vCode=66, vName=1.1.16)
├─ C2: [비공개] (정수 접미사)
├─ API: /sms/, /photo, /contact (flat, 동일)
└─ 배포: [비공개]
│
Sfile (vCode=21145, vName=1.1.35)
├─ C2: [비공개] (완전 리브랜딩)
├─ API: webapp/* (네임스페이스 마이그레이션!)
├─ 배포: [비공개]
└─ 신규: operatorName 수집, Luban 압축
```
1. C2 도메인: 점진적 변경 → 완전 리브랜딩
2. API 구조: flat path → 네임스페이스 표준화 (webapp/)
3. 데이터 수집: 기본 3채널 유지 + operatorName 추가
4. 이미지 처리: 직접 업로드 → Luban 압축 후 업로드 (대역폭 최적화)
5. R8: 끝까지 미적용 (일관된 특징)
항목 · auto_analysis 값 · Smali 검증값 · 판정
C2 서버 · [비공개] (정확) · [비공개] · ✅ 일치
로그인 엔드포인트 · 미명시 · webapp/login (GET) · 추가
SMS 엔드포인트 · 미명시 · webapp/saveSms (POST) · 추가
연락처 엔드포인트 · 미명시 · webapp/saveAddressBook (POST) · 추가
사진 엔드포인트 · 미명시 · webapp/image/ (POST) · 추가
invitation_code · true (정확) · NWH5 (파일명) · ✅
versionCode · 21145 (정확) · 21145 · ✅
특성 · wolf · SLS · Sfile
내부 패키지 · com.example.sms · com.example.sms · com.example.sms
R8 · No · No · No
Smali 파일 수 · 7,469 · 7,469 · 7,469
C2 프레임워크 · RuoYi · RuoYi · RuoYi
인증 · GET webapp/login · GET webapp/login · GET webapp/login
JSON 라이브러리 · FastJSON+Gson · FastJSON+Gson · FastJSON+Gson
UploadService · 5초 폴링 · 5초 폴링 · 5초 폴링
SEND_SMS · 선언, 미사용 · 선언, 미사용 · 선언, 미사용
operatorName · 미확인 · 미확인 · ✅ 신규
1. versionCode 21145 — 패밀리 내 최고 빌드 번호
2. webapp/ 네임스페이스 — API 리팩토링 최신 상태
3. operatorName 수집 — 통신사 정보 추가 수집
4. Luban 압축 — 이미지 업로드 최적화
5. [비공개] 배포 — 클라우드 서비스 위장 도메인
코드 · 기법명 · 결과
SN-040 · SEND_SMS Reverse · ✅ 선언-미사용 패턴 확인
QN-038 · Pre-R8 구조 분석 · ✅ 7,469 smali, 전체 클래스명 보존
WF-059 · Gen3 패밀리 식별 · ✅ com.example.sms + 동일 구조
SL-060 · C2 도메인 회전 · ✅ [비공개] — zcloud→love 리브랜딩
SL-0
본 보고서는 주식회사 아크링크 Deep-Coding 보안연구소가 피싱·몸캠피싱 피해자 구제를 목적으로 작성했습니다. 전체 열람·피해 상담: arklink.co.kr