[악성 앱 분석 보고서] 몸캠피싱 해킹 앱 - Deetalk.apk

아크링크만의 솔루션인 "Deep-Coding"을 활용하여 몸캠피싱 범죄에 이용되는 악성 앱을 분석합니다.
[악성 앱 분석 보고서] 몸캠피싱 해킹 앱 - 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 수행인력

악성 앱 분석을 수행한 인력은 다음과 같다.

소속

성명

직급

연락처

이메일

ARKLINK

박민재

대표이사

1666-5706

channel@arklink.co.kr

김진욱

기술 보안 팀장

1.2 수행 환경

악성코드 분석을 수행한 환경은 다음과 같다.

구분

환경

분석 단말

진단 위치

PC

Ubuntu,

Windows 11

Pixel 4

(Android 11, API Level 30)

Arklink R&D Center

1.3 수행 대상

악성코드 분석을 수행한 대상은 다음과 같다.

No

구분

패키지

플랫폼

1

모바일

Deetalk.apk

com.deqsyxonua.xqhi.eigonthb

Android

No

Sha256 해시

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

  • 가용성에 직접적인 영향

  • 중요 정보(연락처, 사진 등) 노출

  • 단말 제어권한 획득으로 임의 조작 가능


(High)

4

  • 사용자 권한 획득

  • 다른 동작과 연계될 경우 가용성에 직접적인 영향

  • 다른 동작과 연계될 경우 단말기 관리자 권한 획득 등

3

  • 다른 동작과 연계될 경우 시스템 사용자 또는
    앱 사용자 권한 획득 등

  • 다른 동작과 연계될 경우 중요 정보 유출 가능성 있음

  • 가용성에 간접적인 영향 등


(Medium)

2

  • 추가적인 공격에 활용 가능한 단말 및 사용자 정보 유출

  • 다른 동작과 연계될 경우 가용성에 간접적인 영향 등


(Low)

1

  • 공격과 직접적인 연관은 없으나 불필요한 정보 등이
    공격자 서버에 유출

  • 단말기에 관한 일반 정보 유출 등


03. 분석 결과 요약

3.1 악성행위 개요

Deetalk 앱은 안드로이드 플랫폼에서 작동하는 악성 피싱 앱이다.
악성 앱 실행 시 단말의 전화번호, 단말기 정보, 연락처 목록 등을 수집하여 공격자의 서버(C&C)로 전송한다.

앱 악성 행위 개요도
그림 1 앱 악성 행위 개요도

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 권한 분석

앱이 요청하는 권한은 단말에서 수행하는 행위의 범위를 나타낸다.

‘위험 권한’의 요청은 사용자의 개인 정보의 접근이나 단말 시스템의 주요 기능과 연관되어 있어, 악용될 경우 사용자의 보안에 위협이 될 수 있다.

권한의 선언만으로는 앱의 악성 행위 여부를 판단하기 어렵지만, 앱의 전반적인 행위와 결합하여 평가할 수 있는 지표이다.

대상 앱에서 선언하는 권한과 설명은 다음과 같다.

AndroidMainfest.xml 파일 내 권한 선언
그림 2 AndroidMainfest.xml 파일 내 권한 선언

대상

요청 권한

권한 설명

중요 권한 여부

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)

액티비티는 안드로이드 앱의 화면 구성 단위로, 사용자와 상호작용을 위한 인터페이스를 제공한다. 액티비티 분석은 앱의 기능적 구성요소와 사용자 인터페이스 설계를 파악할 수 있다. 예를 들어, 앱 내의 로그인 화면, 메인 메뉴, 설정 화면 등은 각각 별도의 액티비티로 구현했다.

악성 앱의 경우, 액티비티를 통해 사용자를 속이기 위한 화면을 제공하고 숨겨진 기능을 통해 악성 행위를 수행할 수 있다.

대상 앱에 선언된 액티비티는 다음과 같다.

AndroidMainfest.xml 파일 내 액티비티 선언
그림 3 AndroidMainfest.xml 파일 내 액티비티 선언

No

액티비티

비고

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)

서비스는 사용자 인터페이스 없이 백그라운드에서 실행되는 컴포넌트로, 긴 작업 수행이나 네트워크 전송을 처리할 때 사용된다.

악성 앱의 경우 서비스는 앱이 사용자의 인지 없이 액티비티를 수행하거나, 지속적으로 데이터를 수집하고 전송하는 데 사용될 수 있다.

대상 앱에 선언된 서비스는 다음과 같다.

No

서비스

비고

1

com.deqsyxonua.xqhi.eigonthb.ui.MyServices

-

4.1-4 리시버(Receiver)

리시버는 다양한 시스템 이벤트(예: 부팅 완료, 네트워크 상태 변경)에 반응하여 앱을 실행할 수 있다.

악성 앱이 특정 조건이나 이벤트에 따라 액티비티를 시작하거나 민감정보를 수신하는 데 활용될 수 있으며, 대상 앱에 선언된 리시버는 다음과 같다.

No

리시버

비고

1

androidx.profileinstaller.ProfileInstallReceiver

-


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 앱 실행 및 권한 요청

권한 허용 시 단말 로그에도 실제로 권한이 허용되었음을 확인할 수 있는 로그가 남아있다.

단말 로그 내 권한 허용 메시지 확인
그림 5 단말 로그 내 권한 허용 메시지 확인

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 형태로 전화번호, 코드, 휴대폰 정보, 설치된 앱 목록, 연락처 목록을 수집한다.

수집한 정보 저장 패킷
그림 6 수집한 정보 저장 패킷

그 후 공격자의 서버(http://rmfo0100.wapim.vip/api/Amlei/register)로 전송한다.

그러나 이번 분석에서는 분석을 진행한 휴대폰 내에 아무런 연락처도 없었기에 인도네시아어로 "연락처 데이터가 비어 있거나 유효하지 않습니다"라는 뜻의 ‘Data kontak kosong atau tidak valid’ 오류가 발생한 것을 알 수 있다.

4.2-5 접속 시도 시 메시지 출력

초대 코드 입력 시 저장된 연락처가 없어 오류가 발생하는 것을 볼 수 있다.

접속 시도 시 메시지 출력 화면
그림 7 접속 시도 시 메시지 출력 화면


05. Mitre Att&ck(Mobile)

보안 기술이 발달함에 따라 공격자도 자신의 공격 기술을 발전시키고 있다.

수집한 피싱앱의 악성 행위 사례를 분석하고 공격 기법과 프로세스를 이해하여 최신 기술을 적용시켜 피해자의 피해를 최소화하기 위해 앱이 어떤 보안 위협 모델에 해당하는지를 Mitre Att&ck 매트릭스를 이용하여 분석한다.

대상 피싱앱 해당 항목

Mitre Att&ck 매트릭스
그림 8 Mitre Att&ck 매트릭스


06. 사용자 대응 가이드

분석한 내용을 바탕으로 사용자 대응 가이드를 제시한다.

Mitre Att&ck에서 사용자가 제어할 수 있는 각 단계를 기반으로 사용자가 주의할 내용과 악성앱 실행 시 취할 수 있는 조치를 제시했다.

  1. 의심스러운 링크 클릭 금지

인터넷을 사용하면서 접하는 링크 중에는 피싱이나 악성 코드를 포함하고 있는 경우가 있다.

이러한 링크는 이메일, 문자 메시지, 소셜 미디어, 심지어 친구나 지인으로부터 받은 것일지라도 의심스러운 경우 클릭을 피해야 한다.

특히, 앱을 다운로드할 때는 항상 공식 앱 스토어를 이용하고, 공식 스토어가 아닌 곳에서 제공하는 앱은 설치하지 않도록 한다.

공식 스토어 외부에서 제공되는 앱은 검증되지 않았을 가능성이 높으며, 악성 코드가 포함될 위험이 있다.

  1. 최신 안드로이드 버전 업데이트 유지

구버전의 안드로이드 운영 체제는 보안 취약점을 포함하고 있을 수 있다. 이러한 취약점은 공격자가 악성 행위를 수행하기 위해 악용할 수 있다.

따라서, 안드로이드 기기를 항상 최신 버전으로 업데이트하는 것이 중요하다.

시스템 업데이트는 보안 패치 및 새로운 보안 기능을 제공하여 기기와 데이터를 보호할 수 있다.

  1. 주기적 미사용 앱 삭제

스마트폰에 설치되어 있지만 사용하지 않는 앱들은 보안 위험을 증가시킬 수 있다.

이러한 앱들은 종종 업데이트되지 않아 새로운 보안 취약점에 노출될 수 있다.

주기적으로 기기를 검토하고 더 이상 사용하지 않는 앱을 삭제함으로써, 불필요한 보안 위험을 줄일 수 있다.

  1. 앱 권한 부여 관리

앱을 설치하거나 사용할 때 요구되는 권한을 신중하게 검토해야 한다.

많은 앱들이 기능 실행에 필요한 것 이상의 권한을 요청할 수 있으며, 이는 사용자의 개인정보와 보안에 위험을 초래할 수 있다.

예를 들어, 플래시라이트 앱이 연락처 접근 권한을 요구하는 경우, 이는 의심스러운 요구로 간주될 수 있다. 반드시 필요한 권한만 허용하여 사용해야한다.

안드로이드 단말의 설정 메뉴에서 앱 권한을 관리할 수 있으며, 사용자는 각 앱에 부여된 권한을 확인하고 필요하지 않은 권한은 비활성화할 수 있다.

이미 설치된 앱에 대해서도 주기적으로 검토하는 것을 권장한다.

  1. 단말기의 비정상 동작 감지 시 전문가 상담

기기가 평소와 다르게 느려지거나 예상치 못한 방식으로 동작하는 경우, 이는 악성 앱의 영향일 수 있다.

이러한 증상이 나타나면 기기를 전문가에게 검사해야 한다.

전문가는 기기의 보안 상태를 확인하고 필요한 경우 악성 코드 제거나 기타 보안 조치를 취할 수 있다.

몸캠피싱 악성 앱 [Deetalk.apk] 분석을 마치며, 낯선 이가 공유하는 앱을 함부로 다운받지 않도록 당부의 말씀을 드립니다.

이상, 사이버 범죄 · 몸캠피싱 대응 전문 기업 아크링크였습니다.

도움이 필요하시면 언제든 연락 바랍니다.

Towards Safety, Towards Freedom.

안전한 디지털 환경과 더 나은 내일을 연결합니다.

Share article
Subscribe to our newsletter.

주식회사 아크링크 | 사업자 등록번호: 378-88-03382 | TEL: 1666-5706 | E-Mail : contact@arklink.co.kr