Android + RAT(3)
5. RAT 악성코드
5-1. RAT 알아보기
원격 접속 도구(RAT)는 본래 Remote Access Tool/Remote Administrator Tool의 약어로 사용되었으나, 최근 악성 파일에서는 Remote Access Trojan의 약어로 사용되는 추세이다. ‘Trojan’이라는 단어로 트로이 목마형 공격과의 연관을 유추할 수 있다.
RAT는 감염된 시스템의 백도어 생성을 위해 쓰이는 경우가 많다. 정상 프로그램에 공격자가 만든 악성코드를 삽입하여 재유포하거나, 이메일을 이용한 공격, 파일 공유 사이트에 악성코드 배포 등 다양한 방법으로 유포가 진행 중이다.

기본적으로 원격 접속을 통한 PC 제어는 별 문제될 이유가 없는 행위이다. 정상 Remote 매커니즘에서도
이러한 기능을 사용한다. 그러나 Remote 기능을 이용한 비정상 매커니즘의 경우, 악성코드가 정상 프로그램에 삽입되거나 정상 프로그램으로 위장함으로써 유포 및 실행된다. 그리고 이는 이후 공격자와 직접 통신하는 등 추가적 공격 행위에 이용된다.
6. Gh0st RAT 분석
6-1. Gh0st RAT
Gh0st는 서버/공격자에게 사용자의 cmd.exe에 대한 원격 액세스를 제공하는 RAT이다.
Gh0st는 클라이언트/zombie(PC)에게 알리지 않고 자동으로 명령을 실행할 수 있다. 서버/공격자에게는 클라이언트/zombie의 PC에 파일을 다운로드하고 실행할 수 있게 한다. 이 과정은 백그라운드에서 숨겨진 상태에서 실행된다.
이 악성코드는 Zombie.exe 파일을 실행하는 것만으로 배포된다. 실행 시 IP와 포트를 검색하며, 둘 다 제공되어야만 프로그램이 실행된다.
1 | ex) zombie.exe 127.0.0.1 27015 |
6-2. 봇 기능
원격 명령 실행, 자동 백그라운드 프로세스, 파일 다운로드 및 실행(숨김), 안전 모드 시작, 자동으로 서버 연결, 주고받는 데이터 암호화, 설치된 바이러스 백신 서버에 표시, 다운로드 기능을 통해 악성코드 쉽게 유포, 부팅 시 시작되나 msconfig 또는 CCleaner와 같은 부팅 시 시작되는 프로그램을 확인하는 프로그램에 포착되지 않음, 작업 관리자 비활성화.
6-3. Gh0st RAT 공격 과정과 기능

서버 프로그램은 클라이언트에 설치할 악성코드를 빌드할 수 있으며 클라이언트에 대한 통제 기능을 가지고 있다.
Gh0st RAT의 기능은 아래와 같다.
감염된 봇의 원격 화면 완전 제어, 실시간 및 오프라인 키 입력 로깅 제공, 감염된 호스트의 웹캠, 마이크의 라이브 피드 제공, 감염된 원격 호스트에 원격 바이너리 다운로드, 원격 종료 및 호스트 재부팅 제어, 감염된 컴퓨터의 원격 포인터 및 키보드 입력을 비활성화, 모든 권한을 가지고 감염된 원격 호스트의 쉘에 진입, 모든 활성 프로세스 목록 제공, 모든 기존 후크의 기존 SSDT 모두 삭제.
6-4. Gh0st RAT YARA Rule
먼저 Yara라는 것에 대해 알 필요가 있다. Yara는 악성 파일을 파일 시그니처 기반으로 판별 및 분류하는 툴이다. Linux, Windows OS에서 모두 사용이 가능하며, 소스코드 컴파일, Python 모듈, 파일 실행 방식 등 다양한 방법으로 Yara 설치 및 실행이 가능하다.
아래는 Gh0st RAT의 Yara 룰이다.
1 | rule win_ghost_rat_auto { |
우선 코드에서도 나눠져 있듯 meta, string, conditions 세 파트를 살펴보자. 이는 악성코드 해석이 아닌 RAT 탐지에 사용되는 규칙에 대한 해설이므로, 위의 세 파트만 간결하게 살펴본 뒤 넘어가도록 하겠다.
(1) meta
- malpedia_hash: 참조된 악성코드 파일의 해시 값. (“fc8a0e9f343f6d6ded9e7df1a64dac0cc68d7351”)
- malpedia_version: 참조된 악성코드 정보의 버전 (2023-08-08)
- malpedia_charing: 참조된 악성코드 정보의 공유 수준 (TLP)
(2) strings
이 섹션은 규칙이 탐지하려는 특정 바이트 시퀀스를 정의한다. 각 문자열은 바이너리 코드의 특정 패턴을 나타낸다.
각 $sequence_0, $sequence_1, …, $sequence_31는 고유한 바이너리 패턴을 정의한다. 주석으로 각 시퀀스의 어셈블리 코드를 설명한다.
String 탐지는 value 타이틀에 속해있는 string들을 탐지하는 방법이다. 탐지 문자열 대소문자 구별을 하고 싶다면 뒤에 nocase를 붙여 사용한다.
(3) condition
조건 섹션은 규칙이 적용될 파일을 정의하고, 해당 조건에 대한 결과값이 참인지 거짓인지 판별한다.
7 of them : 문자열 섹션에 정의된 31개의 시퀀스 중 7개 이상이 매칭될 때 규칙이 발동된다.
Filesize < 357376 : 파일 크기가 해당 바이트보다 작을 때 규칙이 발동된다.
위의 규칙들은 Gh0st RAT 악성코드를 탐지하기 위한 asm 코드 패턴을 정의하며, 이를 통해 해당 악성코드가 포함된 파일을 식별할 수 있다.
규칙 설립을 완료했으니 본격적으로 파일을 분석해 보자.
먼저 Gh0st RAT 분석을 위해 샘플 파일을 받아주었다. 다운로드 링크는 다음과 같다 : https://bazaar.abuse.ch/browse.php?search=tag%3AGh0st


아래의 다운로드 버튼을 누르면 다운이 시작된다.
6-5. PEView 분석

화면에 보이는
‘54dc7635c51ecd94cfe8e45cbac2e52191867b9ff0465d778ee5a200bb832c22’는 다운로드 받은 파일의 해시값이다.
PE 파일은 파일의 구조, 내용, 메타데이터 등을 담은 PE 헤더와 실제의 코드, 데이터, 리소스 등을 담은 PE 바디로 구성되어 있으며, 사진의 IMAGE_SECTION HEADER까지가 PE 헤더이고, SECTION .text 부터가 PE 바디이다.
헤더와 바디 모두, .tls 이후로는 값이 /number 형식으로 통일되어 있었다.

.tls까지는 value가 tls라고 명시되어 있지만, 그 이후로는 value가 /number로 표기되어 있는 것을 확인할 수 있다.
a. IMAGE_DOS_HEADER (DOS Header)

PE 파일을 나타내는 시그니처(e_magic)의 값이 5A4D로 나타나있다.
그리고 NT Header가 시작되는 위치의 offset을 나타내는 Offset the New EXE Header(e_lvanew)의 값이 0x3C로 세팅되어 있다.
b. MS-DOS Stub Program (DOS Stub)

이 프로그램은 DOS mode에서는 실행될 수 없다. 해당 문자열 이후 DOS 프로그램이 아닐 경우 실행될 수 있다는 문자열이 추가되어 있는 PE 파일들도 있는데, 해당 파일의 경우 딱 저 문자열만 적혀 있다.
c. IMAGE_NT_HEADERS (NT Header)
(1)signature

Signature 값 50450000. (변경 불가)
(2)IMAGE_FILE_HEADER

헤더의 필드들은 다음과 같다.
- Machine: 컴퓨터 아키텍처 유형을 뜻한다. (0x14C > x86 system)
- Number of Sections: 0xF로 세팅 되어있으며, 섹션의 개수는 15개이다. 아까 위에서 바로 열었을 때 확인한 섹션의 개수와 동일하다.
- Time Date Stamp: 이미지를 만든 날짜와 시간을 나타낸다. (UTC)
- Size of Optional Header: Optional Header의 크기가 0xE0(224바이트)이다.
-> 그렇다면 OPTIONAL HEADER는 아래 그림의 0B 01 02 17 00 1A 00 00 부터 시작된다.

- Characteristics : 파일의 속성을 나타내는 값으로, bit OR 연산을 통해 최종적으로 0x0107 값으로 설정됨.
(3)IMAGE_OPTIONAL_HEADER

- Magic: 32비트인 경우 0x10B를 가지며, IMAGE_OPTIONAL_HEADER32를 뜻한다.
- Address of Entry Point: 메모리 매핑된 후의 코드 시작 주소가 0x1500으로 되어 있다는 뜻이다. 이후 ImageBase에 이 값을 더해 코드 시작 지점을 설정한다.
- Image Base: PE 파일이 로딩되는 시작 주소이며, 일반적으로 exe 파일은 0x400000이다.
- Section / File Alignment: 메모리에서 섹션의 최소 단위는 0x1000이며 파일에서 섹션의 최소 단위는 0x200이다.
- Size of Image / Headers: 메모리 로딩될 때 가상 메모리에서 PE Image가 차지하는 크기는 0x1000이며 파일에서 섹션의 최소 단위는 0x200이다. 여기서의 size of image는 0x1D000이며 size of headers는 0x400이라고 한다.
- Subsystem: 동작 환경을 정의하는 필드로, 0x0003으로 설정되어 있으면 CUI임을 가리킨다.
- Number of Data Directories: 총 0x10(16개)의 디렉토리를 갖는다.

확인 결과 실제로 16개의 디렉터리가 존재한다.
d. IMAGE_SECTION_HEADER

.text 부분의 필드만 해석하겠다.
- Virtual Address(RVA): 0x1000
- Size of Raw Data: 0x1A00
- Pointer to Raw Data: 0x400
- Characteristics: 섹션의 속성, Bit OR 연산의 결과. 0x60500020
참고로 다른 것도 살펴 본 결과, .data에는 read와 write 속성이 다 있었지만 .rdata에는 read 속성밖에 없었다.
(1)SECTION .idata
.idata에는 Import 정보가 들어있다.

KERNEL32.dll, msvcrt.dll, USER32.dll을 import한다.

import name table에는 해당 dll이 어떤 파일 위치에서 무엇을 호출하는지가 적혀 있다.
6-6. IDA 분석
1 | int __cdecl main(int argc, const char **argv, const char **envp) |
IDA로 main 부분의 asm 코드를 C로 변환했다. 코드 해설은 주석에 적혀 있으며, 콘솔 윈도우를 숨기는 이유는 프로그램 작동 사실을 victim(사용자)로부터 숨기기 위함으로 보인다.

PEView에서 본 Import name table의 필드들이 포함된 것을 확인할 수 있다.
6-7. zombie.cpp 분석
해당 코드는 Gh0st RAT과 관련하여 원격 제어와 명령 실행을 목적으로 하는 코드이다.
a. 기본 설정 및 포함 파일
1 |
|
헤더 파일과 필요한 라이브러리 링크. 프로그램에서 사용할 상수를 정의함.
b. 클라이언트 연결 설정
main 함수 부분이다. 원격 서버와 연결하는 역할을 하며, 명령줄 인수로 IP와 포트를 받아 서버에 연결한다.
1 | void main(cli::array<System::String^>^ args) |
c. 파일 경로 및 실행 파일 복사
현재 실행 중인 파일의 경로를 얻고, 이를 시스템 디렉토리나 임시 디렉토리에 복사한다. ‘ShellExecute’를 사용해 새 경로에서 프로그램을 재실행한다.
1 | HMODULE h_mod; |
d. 레지스트리에 추가
레지스트리에 프로그램을 추가하여 부팅 시 자동으로 실행되도록 설정한다. 관리자 권한이 없으면 사용자 레지스트리에 추가한다.
1 | HKEY h_key; |
e. 명령 실행 및 제어
‘t_payloads’ 스레드는 특정 프로세스를 종료하여 task 매니저를 비활성화할 수 있다. ‘t_ping’ 스레드는 서버와의 연결 상태를 주기적으로 확인한다.
1 |
|
f. 명령어 처리
특정 명령어를 처리해서 cmd응답을 toggle하거나, task 매니저 비활성화 기능을 설정한다. 일반 명령어는 cmd.exe를 통해 실행하고 결과를 서버로 전송한다.
1 | void onClientRecData(char *data) |
7. Android RAT
Android RAT은 Android와 RAT의 합성어로, 안드로이드를 대상으로 한 RAT 악성코드를 통칭한다. 이러한 멀웨어가 안드로이드 기기에 침투하는 과정은 주로 다음과 같다;
피해자들은 FaceBook과 같은 대형 플랫폼을 통해 광고에 노출되고, 해당 광고는 피해자가 비공식 앱 스토어에서 APK를 다운로드하도록 유도한다. 해당 앱이 설치되어 활성화되면 Android 기기를 완전히 액세스하고 제어할 수 있게 된다.
8. AhMyth
8-1. 개요
AhMyth는 원격 액세스 트로이목마(RAT)로 작동하는 Android Malware 변종이다. 일반적으로 합법적인 앱으로 가장하여 사용자의 디바이스에 침투한다.
교육 목적으로 Github에 배포되었지만 사이버 범죄자들에 의해 Android 디바이스의 민감한 정보를 훔치기 위하여 악용된 이력이 있다.
8-2. AhMyth 악성코드 실습 과정 정리
- 가상머신 환경 구성 (AndroidRAT 악성 서버로 사용할 환경)
- AhMyth_Win32.exe 파일 다운 (java 7 환경이 필요)
- exe 파일의 API Builder에서 IP, Port 설정 후 APK 제작
제작된 APK 파일은 호스트 PC로 이동한 후 감염시킬 에뮬레이터 환경으로 옮기면 감염시킬 수 있다.
본 칼럼에서는 두 개의 실습을 진행하기 때문에 에뮬레이터로 옮겨 확인하는 것은 두 번째 실습에서만 진행하도록 하겠다. 먼저 AhMyth 악성코드로 APK 파일을 생성해 보자.
8-3. AhMyth 실습 (APK 파일 제작)

가상머신의 인터넷에 접속한 뒤 AhMyth의 깃허브에서 AhMyth_Win32.exe를 다운로드했다.

실행에는 JRE 환경이 필요하다. 또한 APKBuilder를 이용할 때, 자바 환경을 맞춰줘야 build를 할 수 있기 때문에 JAVA 7을 설치했다.

마찬가지로 가상머신 내에서 위에 보이는 Oracle 홈페이지의 runtime용 Windows x86 Offline 파일을 다운로드 받았다. JDK는 필요치 않으므로 생략한다.

이후 시스템 환경 변수 편집을 거쳐 설치를 완료했다.
APKBuilder에 입력할 정보를 위해 ipconfig 명령어로 필요한 정보를 확인했다.

이제 AhMyth 설치 파일을 열어보자.

이렇게 나의 IPv4의 주소를 SourceIP에 써주고 포트는 디폴트값인 42474로 설정한 뒤 Build했다.


이렇게 악성 APk 파일이 완성되었으며, 해당 파일은 에뮬레이터나 녹스 앱플레이어 등에서 사용이 가능하다.
8-4. AndroRAT (from. Karma9874) 실습
AndroRAT는 안드로이드 시스템을 원격으로 제어하고 정보를 검색하도록 설계된 도구이다.
AndroRAT는 클라이언트 측을 위해 Java Android로 개발된 클라이언트/서버 애플리케이션이고, Python 서버를 사용한다. 그러나 본 칼럼에서는 리눅스 환경에서 진행해 볼 예정이다.
리눅스 환경의 루트 터미널에서 karma9874의 androidRAT을 clone한다.



이후 requirements.txt를 install하고 cat으로 내용을 출력한다. pyngrok이라고 적혀 있다.


위와 같이 명령어를 작성해 APK를 빌드한다.


이후 ifconfig로 미리 ip 주소를 확인한 다른 터미널로 이동하여 아파치 서버를 세팅한다.



이로써 hackerloi.apk 빌딩 및 Apache 서버 사전준비를 완료했다. 이제 안드로이드 에뮬레이터에서 해당 apk를 실제로 다운로드 받아보자.




APK를 다운로드 받은 뒤 요청 권한을 전부 허용했다. 이후 아까의 터미널로 돌아오면 아래의 사진처럼 쉘이 바뀌어 있는데, 이제 해당 쉘에서 디바이스 제어가 가능함을 의미한다.

이제 본격적으로 에뮬레이터 기기의 정보를 탈취하고 조종해 보자.

help 명령어를 통해 쓸 수 있는 명령어 리스트를 확인했다. deviceInfo로 디바이스의 정보를 알아보고, camList로 카메라 ID를 받아오는 등 다양한 기능이 있다. 비디오/오디오 조작, sms 메시지 받아오기 등 중요한 개인정보는 전부 접근 가능한 것으로 보인다.

camList로 카메라 ID 반환. takepic은 에뮬레이터라 카메라와 연결하지 못 해 작동하지 않았다.

deviceinfo로 디바이스 정보를 출력한다.

getIP로 해당 디바이스의 IP 주소를 얻어왔다. 당연한 말이지만 이 정보는 공격에 악용할 수 있다.

SMS 역시 받아와 /root/AndroRAT/Dumps에 저장해 놓았다. root 폴더가 보이지 않아 아래와 같이 권한 허용을 해주고 나니 root 폴더 열람이 가능해졌다.

폴더 안으로 이동하자 SMS 발/수신 로그를 담은 txt 파일이 있었다.

inbox/sent 모두 결과는 END123으로 동일했다. 에뮬레이터다 보니 발/수신한 메시지 기록이 없어서 이런 예시 문자열만 뜬 것으로 보인다.

마지막으로 getCallLogs로 디바이스의 연락처를 수집하였으나, 에뮬레이터에 연락처가 저장되어있지 않은 관계로 해당 정보가 존재하지 않는다는 메시지를 돌려받았다.
실습은 이렇게 마무리하겠다.
9. 나가는 말
본 칼럼을 통해 다양한 안드로이드 악성코드에 대해 분석하고, 그 동작 방식과 위협 요소를 살펴보았다. 특히 RAT 악성코드는 단순한 정보 탈취를 넘어 원격 제어가 가능하다는 점에서 심각한 보안 위협을 초래한다는 점 역시 알게 되었다.
이러한 악성코드로부터 디바이스를 보호하기 위해서는 기존의 보안 수칙을 반드시 준수해야 한다. 앞으로도 악성코드는 지속적으로 발전하며 더욱 정교해질 것이다. 이를 예방하고 대응하기 위해서는 끊임없는 보안 의식과 관심이 필요하다. 본 칼럼이 안드로이드 악성코드에 대한 이해를 높이는 데 도움이 되었기를 바라며, 보안의 중요성을 다시 한번 강조하며 마무리하도록 하겠다.
10. 참고문헌
The Evolution of Android Malware and Android Analysis Techniques . (2017). https://www.researchgate.net/publication/312376862_The_Evolution_of_Android_Malware_and_Android_Analysis_Techniques.
McAfee 2023 Consumer Mobile Threat Report . (2023). https://www.mcafee.com/blogs/internet-security/mcafee-2023-consumer-mobile-threat-report/.
Global mobile banking malware grows 32 percent in 2023 . (2024). https://www.kaspersky.com/about/press-releases/global-mobile-banking-malware-grows-32-percent-in-2023.
[Special Report] 기업과 기관 사칭 악성 APK 현황 및 대응 방안 . (2019). https://m.blog.naver.com/skinfosec2000/221653874844.
스파이앱 예방수칙 . (연도미상). https://cyberbureau.police.go.kr/mobile/sub/sub_03_j.jsp.
‘경찰 사칭’ 악성 앱 설치하면, 휴대폰 통째로 해커 손에… 피해자는 ‘독 안에 든 쥐’ . (2023). https://m.boannews.com/html/detail.html?idx=115442.
Behavioural biometrics: A survey and classification . (2008). https://www.researchgate.net/publication/247836093_Behavioural_biometrics_A_survey_and_classification.
McAfee Total Protection for Data Loss Prevention . (2019). https://www.trellix.com/enterprise/en-us/assets/solution-briefs/sb-total-protection-for-dlp.pdf.
Ken Dunham . (n.d.). McAfee Total Protection for Data Loss Prevention (pp. 1~440). n.p.: Syngress.
Mark Higgins. (n.d.). Cyber Attack Activity. Symantec Internet Security Threat Report, 3, pp. 8~26.
GB WhatsApp APK Download Latest Version Updated Oct 2025 . (n.d.). https://gbapps.net/gbwhatsapp-apk-dl/.
애플리케이션 샌드박스 . (n.d.). https://source.android.com/docs/security/app-sandbox?hl=ko.
보안 가이드라인 . (n.d.). https://developer.android.com/privacy-and-security/security-tips?hl=ko.
Android Application Security - Securing Android Apps for Developers . (n.d.). https://snyk.io/articles/application-security/mobile-application-security/android-application-security/.
Understanding and Fighting Against Banking Trojans - The Monitor, Issue 4 . (n.d.). https://www.kroll.com/en/publications/cyber/monitor/fighting-against-banking-trojans.
Bad Behaviour: How to detect banking trojans . (n.d.). https://www.group-ib.com/blog/banking-malware/.
Understanding Banking Trojans: The Malware Behind Financial Loss and Fraud in the Digital Age . (n.d.). https://cyberpedia.reasonlabs.com/EN/banking%20trojans.html.
Android Remote Administration Tool . (n.d.). https://github.com/AhMyth/AhMyth-Android-RAT.
watch how Hackers Remotely Control Any phone?! protect your phone from hackers now! . (n.d.). https://www.youtube.com/watch?v=QxRy9sVUMQU&list=LL.
what are RATs what to do to avoid them . (n.d.). https://itigic.com/ko/what-are-rats-what-to-do-to-avoid-them/.
원격 액세스 트로이목마(RAT)란 무엇인가요? . (n.d.). https://www.checkpoint.com/kr/cyber-hub/threat-prevention/what-is-remote-access-trojan/.
원격제어 기능의 Gh0st RAT(고스트 렛) 주요기능 . (n.d.). https://asec.ahnlab.com/ko/1334/.
Ghost RAT . (n.d.). https://malpedia.caad.fkie.fraunhofer.de/details/win.ghost_rat.
👻 RAT (Remote Access Trojan) - Silent Botnet - Full Remote Command-Line Access - Download & Execute Programs - Spread Virus’ & Malware . (n.d.). https://github.com/AHXR/ghost.
MalwareBazaar Database . (n.d.). https://bazaar.abuse.ch/browse.php?search=tag:Gh0st.
Part 1 - Understanding the Traffic Pattern of Ghost RAT . (n.d.). https://www.youtube.com/watch?v=QqfyU4C57GI.
Aafer, Y., Du, W., & Yin, H. (2013). DroidAPIMiner: Mining API-level features for robust malware detection in Android. Proceedings of the 9th International Conference on Security and Privacy in Communication Systems (SecureComm 2013), 86–103. Springer. https://doi.org/10.1007/978-3-319-04283-1_6
Open-Source Gh0st RAT Still Haunting Inboxes 15 Years After Release . (n.d.). https://cofense.com/blog/open-source-gh0st-rat-still-haunting-inboxes-15-years-after-release/.