[악성 앱 분석 보고서] 몸캠피싱 해킹 앱 - Deetalk.apk
목차
01. 개요
1.1 수행 인력
1.2 수행 환경
1.3 수행 대상
02. 진단 상세
2.1 위험도 평가 기준
03. 분석 결과 요약
3.1 악성 행위 개요
3.2 악성 행위 요약
3.3 유의사항
04. 분석 결과 상세
4.1 정적 분석
4.2 동적 분석
05.Mitre Att&ck(Mobile)
06.사용자 대응 가이드
01. 개요
1.1 수행인력
악성 앱 분석을 수행한 인력은 다음과 같다.
1.2 수행 환경
악성코드 분석을 수행한 환경은 다음과 같다.
1.3 수행 대상
악성코드 분석을 수행한 대상은 다음과 같다.
1 | 2F 52 A4 B6 62 F1 C8 50 EB 1E 70 FA 3D CA EC 83 2C A3 96 70 FD 5B 50 53 3E 67 0C D1 AE 2A 47 6B |
02. 진단 상세
위험도 평가 기준
위험도는 평가항목에 해당되는 악성 행위에 대해 위험을 가늠할 수 있도록
5단으로 분류.
5 |
| 상 |
4 |
| |
3 |
| 중 |
2 |
| 하 |
1 |
|
03. 분석 결과 요약
3.1 악성행위 개요
Deetalk 앱은 안드로이드 플랫폼에서 작동하는 악성 피싱 앱이다.
악성 앱 실행 시 단말의 전화번호, 단말기 정보, 연락처 목록 등을 수집하여 공격자의 서버(C&C)로 전송한다.
3.2 악성 행위 요약
Deetalk.apk | android.permission.POST_NOTIFICATIONS | 앱이 알림을 표시하려면 사용자에게 요청 | 2 |
android.permission.READ_EXTERNAL_STORAGE | 외부 저장소(사진, 파일 등) 읽기 | 5 | |
android.permission.READ_MEDIA_IMAGES | 사진 읽기 | 5 | |
android.permission.CAMERA | 카메라 접근 | 5 | |
android.permission.READ_MEDIA_VIDEO | 비디오 읽기 | 5 | |
android.permission.READ_MEDIA_AUDIO | 오디오 읽기 | 3 | |
android.permission.READ_CONTACTS | 연락처 읽기 | 5 | |
android.permission.WRITE_EXTERNAL_STORAGE | 외부 저장소 쓰기 | 5 | |
android.permission.VIBRATE | 진동 기능 사용 | 1 | |
android.permission.ACCESS_WIFI_STATE | Wi-Fi 상태 확인 | 2 | |
android.permission.WAKE_LOCK | 절전 모드 방지 (백그라운드 실행 유지) | 2 | |
android.permission.CHANGE_NETWORK_STATE | 네트워크 상태 변경 | 3 | |
android.permission.CHANGE_WIFI_STATE | Wi-Fi 설정 변경 | 3 | |
android.permission.ACCESS_NETWORK_STATE | 현재 네트워크 상태 확인 | 1 | |
android.permission.INTERNET | 인터넷 접근 | 2 | |
android.permission.FLASHLIGHT | 플래시 제어 | 2 | |
com.deqsyxonua.xqhi.eigonthb.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION | 앱 자체 정의 커스텀 권한 (다른 앱이 Broadcast 수신 제한을 우회하려 할 수 있음) | 4 |
*유의사항
본 분석은 주식회사 아크링크에서 수집한 악성 APK 샘플에서 수행되었고 분석을 위한 참조 자료로만 활용되어야 하며, 악성코드 제작 등의 용도로 악용을 금지한다. 본 자료의 전체 혹은 일부를 주식회사 아크링크의 허락을 받지 않고, 무단 개제, 복사 배포 등의 행위는 엄격히 금지한다. 이를 어길 시 민형사상의 손해배상에 처해질 수 있다.
04. 분석 결과 상세
4.1 정적 분석
4.1-1 권한 분석
앱이 요청하는 권한은 단말에서 수행하는 행위의 범위를 나타낸다.
‘위험 권한’의 요청은 사용자의 개인 정보의 접근이나 단말 시스템의 주요 기능과 연관되어 있어, 악용될 경우 사용자의 보안에 위협이 될 수 있다.
권한의 선언만으로는 앱의 악성 행위 여부를 판단하기 어렵지만, 앱의 전반적인 행위와 결합하여 평가할 수 있는 지표이다.
대상 앱에서 선언하는 권한과 설명은 다음과 같다.
Deetalk.apk | android.permission.POST_NOTIFICATIONS | 앱이 알림을 표시하려면 사용자에게 요청 | N |
android.permission.READ_EXTERNAL_STORAGE | 외부 저장소(사진, 파일 등) 읽기 | Y | |
android.permission.READ_MEDIA_IMAGES | 사진 읽기 | Y | |
android.permission.CAMERA | 카메라 접근 | Y | |
android.permission.READ_MEDIA_VIDEO | 비디오 읽기 | Y | |
android.permission.READ_MEDIA_AUDIO | 오디오 읽기 | Y | |
android.permission.READ_CONTACTS | 연락처 읽기 | Y | |
android.permission.WRITE_EXTERNAL_STORAGE | 외부 저장소 쓰기 | Y | |
android.permission.VIBRATE | 진동 기능 사용 | N | |
android.permission.ACCESS_WIFI_STATE | Wi-Fi 상태 확인 | N | |
android.permission.WAKE_LOCK | 절전 모드 방지 (백그라운드 실행 유지) | N | |
android.permission.CHANGE_NETWORK_STATE | 네트워크 상태 변경 | N | |
android.permission.CHANGE_WIFI_STATE | Wi-Fi 설정 변경 | N | |
android.permission.ACCESS_NETWORK_STATE | 현재 네트워크 상태 확인 | N | |
android.permission.INTERNET | 인터넷 접근 | N | |
android.permission.FLASHLIGHT | 플래시 제어 | N | |
com.deqsyxonua.xqhi.eigonthb.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION | 앱 자체 정의 커스텀 권한 (다른 앱이 Broadcast 수신 제한을 우회하려 할 수 있음) | Y |
4.1-2 액티비티(Activity)
액티비티는 안드로이드 앱의 화면 구성 단위로, 사용자와 상호작용을 위한 인터페이스를 제공한다. 액티비티 분석은 앱의 기능적 구성요소와 사용자 인터페이스 설계를 파악할 수 있다. 예를 들어, 앱 내의 로그인 화면, 메인 메뉴, 설정 화면 등은 각각 별도의 액티비티로 구현했다.
악성 앱의 경우, 액티비티를 통해 사용자를 속이기 위한 화면을 제공하고 숨겨진 기능을 통해 악성 행위를 수행할 수 있다.
대상 앱에 선언된 액티비티는 다음과 같다.
1 | com.deqsyxonua.xqhi.eigonthb.ui.home.MainActivity | 메인 액티비티 |
2 | com.deqsyxonua.xqhi.eigonthb.ui.home.MainActivity2 | - |
3 | com.deqsyxonua.xqhi.eigonthb.ui.home.MaintenanceActivity | - |
4 | com.deqsyxonua.xqhi.eigonthb.web.KefuActivity | - |
5 | com.yzq.zxinglibrary.android.CaptureActivity | - |
4.1-3 서비스(Service)
서비스는 사용자 인터페이스 없이 백그라운드에서 실행되는 컴포넌트로, 긴 작업 수행이나 네트워크 전송을 처리할 때 사용된다.
악성 앱의 경우 서비스는 앱이 사용자의 인지 없이 액티비티를 수행하거나, 지속적으로 데이터를 수집하고 전송하는 데 사용될 수 있다.
대상 앱에 선언된 서비스는 다음과 같다.
4.1-4 리시버(Receiver)
리시버는 다양한 시스템 이벤트(예: 부팅 완료, 네트워크 상태 변경)에 반응하여 앱을 실행할 수 있다.
악성 앱이 특정 조건이나 이벤트에 따라 액티비티를 시작하거나 민감정보를 수신하는 데 활용될 수 있으며, 대상 앱에 선언된 리시버는 다음과 같다.
4.2 동적 분석
4.2-1 사용자 직접 실행
대상 앱의 동적 분석 과정에서 사용자에 의한 직접 실행을 기반으로 하는 앱의 동작을 분석한다. 앱이 사용자의 실행으로 어떻게 구동되고, 사용자와 상호작용에 반응하는지 분석하고, 분석의 시작점은 사용자가 앱을 실행하는 순간으로 설정한다.
대상 앱은 360jiagu라는 중국의 앱 보호 솔루션을 통해 보호된 apk 파일로, 정적 분석 및 일반적인 후킹 시도에 어려움을 유발하는 난독화 및 암호화가 적용되어 있다.
// frezrik.jiagu
package com.frezrik.jiagu;
...생략...
/* loaded from: classes.dex */
public class StubApp extends Application {
public static native void attach(StubApp stubApp);
코드 1 StubApp 내부 후킹 시도 회피 코드
해당 앱은 StubApp 구조로 인해 진짜 Application이 런타임(실행 단계)에 로드되며, Application.attach() 이후 복호화된 코드가 메모리에 탑재된다.
따라서 동적 분석에서 attach 시점을 후킹하는 방식으로 동적 분석을 시도하였다.
# asm
# JNI_OnLoad
10334: e8 77 f5 ff ff call f8b0 <fopen@plt>
10339: 48 89 c5 mov rbp,rax
1033c: 48 8b 3d 25 e7 02 00 mov rdi,QWORD PTR [rip+0x2e725] # 3ea68 <VMDEX@@Base-0x598>
10343: be 90 01 00 00 mov esi,0x190
10348: ba 01 00 00 00 mov edx,0x1
1034d: 48 89 c1 mov rcx,rax
10350: e8 6b f5 ff ff call f8c0 <fwrite@plt>
10355: 48 89 ef mov rdi,rbp
10358: e8 73 f5 ff ff call f8d0 <fclose@plt>
1035d: 4c 8d 3d 1c 00 02 00 lea r15,[rip+0x2001c] # 30380 <__cxa_deleted_virtual@@Base+0x3180>
10364: 48 8d 15 1f 00 02 00 lea rdx,[rip+0x2001f] # 3038a <__cxa_deleted_virtual@@Base+0x318a>
1036b: bf 03 00 00 00 mov edi,0x3
10370: 4c 89 fe mov rsi,r15
10373: 31 c0 xor eax,eax
코드2 JNI_OnLoad의 native_attach 흐름
acess()함수로 특정 파일 존재 여부 확인 후 fopen → fwrite → fclose
순서로 복호화된 데이터를 기록
4.2-2 앱 동작 중요 권한 요청
앱을 실행한 후에는 중요 권한을 요청하고 있으며,
권한 거부 시 직접 설정화면으로 이동하도록 유도하는 팝업을 띄웁니다.
권한 허용 시 단말 로그에도 실제로 권한이 허용되었음을 확인할 수 있는 로그가 남아있다.
4.2-3 앱 실행 시점 classes.dex 내부 함수 분석
classes.dex 내부의 코드가 실행 시점에서 어떻게 .so 파일을 로드하고, 복호화된 악성 코드를 실행하기 위한 전처리 루틴이 어떻게 이루어지는지 분석해보았다.
// classes.dex
public void attachBaseContext(Context paramContext) {
코드 3 .jiagu 디렉토리 생성
// classes.dex
if CPU_ABI contains "64" → libjiagu_64.so
else if ABI == "x86" → libjiagu_x86.so
else if ABI == "x86_64" → libjiagu_x86_64.so
else
코드 4 CPU ABI 기반 .so 파일 결정
// classes.dex
if (new File(path).exists()) {
load(path);
attach(this); // native attach
return;
}
코드 5 이미 파일이 존재하면 바로 코딩하도록 명령
// classes.dex
InputStream in = context.getAssets().open(soName);
FileOutputStream out = new FileOutputStream(destPath);
byte[] buffer = new byte[8192];
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
코드 6 파일이 없으면 asset에서 복사
위 코드에 따르면 해당 앱은 분석자가 놓치기 쉬운 숨김 디렉토리를 사용하였으며, 다양한 단말 환경에 대응하여 우회하여 분석하려는 시도를 방지하였다.
또한 .so 파일이 정적으로 존재하지 않아, 정적 분석 시 어려움을 겪도록 제작되었다.
결론적으로 복사된 .so를 직접 System.load() 호출로 로딩 후 native attach 호출이 이루어지는 것을 알 수 있다.
4.2-4 단말기 기본 정보 수집
공격 서버에서 파일 수집 명령을 수신한 경우 JSON 형태로 전화번호, 코드, 휴대폰 정보, 설치된 앱 목록, 연락처 목록을 수집한다.
그 후 공격자의 서버(http://rmfo0100.wapim.vip/api/Amlei/register)로 전송한다.
그러나 이번 분석에서는 분석을 진행한 휴대폰 내에 아무런 연락처도 없었기에 인도네시아어로 "연락처 데이터가 비어 있거나 유효하지 않습니다"라는 뜻의 ‘Data kontak kosong atau tidak valid’ 오류가 발생한 것을 알 수 있다.
4.2-5 접속 시도 시 메시지 출력
초대 코드 입력 시 저장된 연락처가 없어 오류가 발생하는 것을 볼 수 있다.
05. Mitre Att&ck(Mobile)
보안 기술이 발달함에 따라 공격자도 자신의 공격 기술을 발전시키고 있다.
수집한 피싱앱의 악성 행위 사례를 분석하고 공격 기법과 프로세스를 이해하여 최신 기술을 적용시켜 피해자의 피해를 최소화하기 위해 앱이 어떤 보안 위협 모델에 해당하는지를 Mitre Att&ck 매트릭스를 이용하여 분석한다.
06. 사용자 대응 가이드
분석한 내용을 바탕으로 사용자 대응 가이드를 제시한다.
Mitre Att&ck에서 사용자가 제어할 수 있는 각 단계를 기반으로 사용자가 주의할 내용과 악성앱 실행 시 취할 수 있는 조치를 제시했다.
인터넷을 사용하면서 접하는 링크 중에는 피싱이나 악성 코드를 포함하고 있는 경우가 있다.
이러한 링크는 이메일, 문자 메시지, 소셜 미디어, 심지어 친구나 지인으로부터 받은 것일지라도 의심스러운 경우 클릭을 피해야 한다.
특히, 앱을 다운로드할 때는 항상 공식 앱 스토어를 이용하고, 공식 스토어가 아닌 곳에서 제공하는 앱은 설치하지 않도록 한다.
공식 스토어 외부에서 제공되는 앱은 검증되지 않았을 가능성이 높으며, 악성 코드가 포함될 위험이 있다.
구버전의 안드로이드 운영 체제는 보안 취약점을 포함하고 있을 수 있다. 이러한 취약점은 공격자가 악성 행위를 수행하기 위해 악용할 수 있다.
따라서, 안드로이드 기기를 항상 최신 버전으로 업데이트하는 것이 중요하다.
시스템 업데이트는 보안 패치 및 새로운 보안 기능을 제공하여 기기와 데이터를 보호할 수 있다.
스마트폰에 설치되어 있지만 사용하지 않는 앱들은 보안 위험을 증가시킬 수 있다.
이러한 앱들은 종종 업데이트되지 않아 새로운 보안 취약점에 노출될 수 있다.
주기적으로 기기를 검토하고 더 이상 사용하지 않는 앱을 삭제함으로써, 불필요한 보안 위험을 줄일 수 있다.
앱을 설치하거나 사용할 때 요구되는 권한을 신중하게 검토해야 한다.
많은 앱들이 기능 실행에 필요한 것 이상의 권한을 요청할 수 있으며, 이는 사용자의 개인정보와 보안에 위험을 초래할 수 있다.
예를 들어, 플래시라이트 앱이 연락처 접근 권한을 요구하는 경우, 이는 의심스러운 요구로 간주될 수 있다. 반드시 필요한 권한만 허용하여 사용해야한다.
안드로이드 단말의 설정 메뉴에서 앱 권한을 관리할 수 있으며, 사용자는 각 앱에 부여된 권한을 확인하고 필요하지 않은 권한은 비활성화할 수 있다.
이미 설치된 앱에 대해서도 주기적으로 검토하는 것을 권장한다.
기기가 평소와 다르게 느려지거나 예상치 못한 방식으로 동작하는 경우, 이는 악성 앱의 영향일 수 있다.
이러한 증상이 나타나면 기기를 전문가에게 검사해야 한다.
전문가는 기기의 보안 상태를 확인하고 필요한 경우 악성 코드 제거나 기타 보안 조치를 취할 수 있다.
몸캠피싱 악성 앱 [Deetalk.apk] 분석을 마치며, 낯선 이가 공유하는 앱을 함부로 다운받지 않도록 당부의 말씀을 드립니다.
이상, 사이버 범죄 · 몸캠피싱 대응 전문 기업 아크링크였습니다.
도움이 필요하시면 언제든 연락 바랍니다.