리눅스 대상 공격에 사용되는 Nood RAT 악성코드 분석 (Gh0st RAT 변종)
AhnLab SEcurity intelligence Center(ASEC)에서는 최근 리눅스 버전의 Gh0st RAT 변종 악성코드인 Nood RAT이 공격에서 사용되고 있는 것을 확인하였다. 비록 윈도우 버전의 Gh0st RAT과 비교하면 적은 수량이긴 하지만 리눅스 버전의 Gh0st RAT 또한 지속적으로 수집되고 있다. Nood RAT은 과거 코드의 유사성을 기반으로 Gh0st RAT 변종으로 분류되었다. [1] 해당 악성코드는 최근 제작에 사용되는 빌더가 확인되었으며 제작자가 Nood라는 이름을 사용하였기 때문에 여기에서는 Nood RAT으로 분류한다.
Nood RAT은 2018년 경부터 다양한 취약점 공격 과정에서 사용되어 왔다. 비록 최근에는 구체적인 공격 사례는 확인되지 않지만 VirusTotal 기준 지속적으로 수집되고 있다. 여기에서는 최근 수년간 확인된 악성코드들을 정리하고 빌더와 함께 분석한다.
1. 개요
Gh0st RAT은 중국의 C. Rufus Security Team에서 개발한 원격 제어 악성코드이다. [2] 소스 코드가 공개되어 있기 때문에 악성코드 개발자들이 이를 참고하여 다양한 변종들을 개발하고 있으며 최근까지도 지속적으로 공격에 사용되고 있다. 비록 소스 코드가 공개되어 있지만 중국어를 사용하는 공격자들이 주로 사용하는 것이 특징이다.
ASEC에서는 과거 Gh0st RAT의 변종인 Gh0stCringe RAT 악성코드가 데이터베이스 서버(MS-SQL, MySQL 서버)를 대상으로 이 유포된 사례를 공개한 바 있으며, [3] 이후에도 Hidden 루트킷을 함께 설치하는 Gh0st RAT 변종인 HiddenGh0st가 부적절하게 관리되고 있는 MS-SQL 서버를 대상으로 한 공격에 사용되었던 사례를 다루었다. [4]
소스 코드가 공개되어 있어서 이미 다양한 리눅스 버전이 존재할 수도 있지만 여기에서 다루는 유형인 Nood RAT은 2018년경에 최초로 확인되었다. 가장 오래된 기록은 WebLogic 취약점(CVE-2017-10271) 공격을 통해 설치된 사례이며 [5] 이후 코인 마이너를 설치하는 Rocke 공격자가 공격에 함께 사용한 사례가 있다. [6] 2020년에는 Cloud Snooper APT 공격 캠페인에서도 사용된 이력이 확인되는데 공격자는 아마존 사의 클라우드 서비스인 AWS 내의 서버를 대상으로 백도어 악성코드를 설치하여 제어를 탈취하였다. [7]
2. Gh0st RAT 리눅스 버전 분석
Nood RAT은 다음과 같은 빌더를 통해 제작된다. 압축 파일 내부에는 릴리즈 노트와 빌더 프로그램인 “NoodMaker.exe” 그리고 백도어를 제어하는 데 사용하는 “Nood.exe”가 존재한다. NoodMaker는 제작 시 아키텍처 별로 x86 및 x64 바이너리를 생성하며 공격 대상 시스템에 맞는 바이너리를 선택해 사용할 수 있다.

Figure 1. Nood RAT 빌더 (리눅스 버전의 Gh0st RAT)
Nood RAT은 정상 프로그램으로 위장하기 위해 자신의 이름을 변경하는 기능이 존재한다. 위장할 프로세스의 이름은 악성코드 제작 과정에서 선택할 수 있다. 처음 실행되면 RC4 알고리즘을 이용해 암호화된 데이터를 복호화하는데 해당 과정을 통해 복호화된 문자열이 변경할 프로세스의 이름이다. 이외에도 설정 데이터도 동일하게 RC4 알고리즘으로 암호화되어 있으며 복호화에 사용되는 RC4 키는 “r0st@#$” 문자열이다. 참고로 Socks 프록시 및 포트 포워딩 통신에서는 “VMware#@!Station” 문자열이 대신 사용된다.

Figure 2. 프로세스 이름 위장 기능
프로세스 이름 변경 이후에는 자신을 “/tmp/CCCCCCCC” 경로에 복사하고 실행하며 여기까지의 과정이 끝나면 복사한 파일 즉 “/tmp/CCCCCCCC”를 삭제한다. 이에 따라 현재 실행 중인 악성코드는 “/tmp/CCCCCCCC” 파일이 실행된 형태이지만 파일이 존재하지 않게 되며 악성코드의 프로세스 이름도 위장한 정상 프로세스로 보이게 된다.

Figure 3. 변경된 프로세스 이름
이후 설정 데이터를 복호화하는데 설정 데이터는 크게 C&C 서버 주소들과 활성화 날짜 및 시간 그리고 C&C 연결 시도 간격으로 나누어진다. C&C 서버와 통신하면서 명령을 전달받을 수 있는 활성화 날짜는 요일별로 정할 수 있으며 활성화 시간 또한 지정 가능하다.
- 설정 데이터 형식 : “C&C_Server_1″;”C&C_Server_2″|”Mon”;”Tue”;”Wed”;”Thu”;”Fri”;”Sat”;”Sun”;|”Time”;|”Interval”

Figure 4. 빌더 및 설정 데이터
Gh0st RAT은 처음 C&C 서버에 연결 시 감염 시스템에 대한 기본적인 정보들을 획득하여 전송한다. 전송하는 데이터는 RC4 알고리즘으로 암호화하며 암호화에 사용된 키도 현재 시간을 기준으로 생성하기 때문에 네트워크 패킷 기반의 탐지를 우회할 수 있다.
| Offset | Size | Data |
|---|---|---|
| 0x0000 | 0x0018 | “Key Type 2” (Key Type 1로 암호화) |
| 0x0018 | 0x0004 | “Key Type 1” |
| 0x001C | 0x0208 | 감염 시스템 정보 (Key Type 2로 암호화) |
Table 1. C&C 서버에 전달하는 데이터
C&C 서버에 전달하는 처음 0x18 크기의 데이터는 다음과 같은 형태로서 하드코딩된 4바이트 값 2개와 현재 시간을 기준으로 생성한 4바이트 값 4개로 이루어져 있다. 이 값은 RC4 알고리즘으로 암호화되어 C&C 서버에 전달되는데 이를 암호화하는데 사용하는 키는 “Key Type 1”로 이름 붙인 키를 활용하여 제작한다.
| Offset | Size | Data |
|---|---|---|
| 0x00 | 0x04 | 생성한 4바이트 키 #1 |
| 0x04 | 0x04 | 생성한 4바이트 키 #2 |
| 0x08 | 0x04 | 생성한 4바이트 키 #3 |
| 0x0C | 0x04 | 0x00009F72 |
| 0x10 | 0x04 | 생성한 4바이트 키 #4 |
| 0x14 | 0x04 | 0x000002E9 |
Table 2. 암호화된 키 데이터
C&C 서버에서는 “Key Type 1”을 이용해 RC4 키를 제작하여 “Key Type 2”를 복호화할 수 있으며 복호화된 “Key Type 2”를 이용해 제작한 RC4 키로 0x0208 크기의 데이터를 복호화해 최종적으로 감염 시스템 정보를 구할 수 있다.
| Offset | Type | Data |
|---|---|---|
| 0x0000 | String | 로그인 배너 문자열 (“/etc/issue.net” 또는 “/etc/issue” 파일의 내용) |
| 0x0100 | Flag | 로그인 배너 문자열 정보 획득 여부 (0x01 / 0x00) |
| 0x0101 | Flag | 아키텍처. “/proc/version”에서 x86_64 키워드 존재 여부 (0x01 / 0x00) |
| 0x0102 | String | 호스트 이름 |
| 0x0202 | Flag | 호스트 이름 획득 여부 (0x01 / 0x00) |
| 0x0203 | Hex | IP 주소의 16진수 값 |
| 0x0207 | Flag | IP 주소 획득 여부 (0x01 / 0x00) |
Table 3. C&C 서버에 전송하는 감염 시스템 정보

Figure 5. C&C 패널에서 보여지는 감염 시스템 정보
Nood RAT은 크게 4가지 기능을 지원하는데 원격 쉘 및 파일 관리, Socks 프록시, 포트 포워딩 기능이 그것이다. 이를 통해 공격자는 감염 시스템에서 악의적인 명령을 실행하거나 파일 업로드 및 다운로드 기능을 이용해 정보를 탈취할 수 있다. 또한 감염 시스템을 프록시로 사용하거나 포트 포워딩 기능을 통해 측면 이동 과정에서 해당 시스템을 활용할 수도 있다.

Figure 6. Nood RAT이 지원하는 명령들
3. 공격 사례
Nood RAT을 사용한 공격 사례는 과거 WebLogic 취약점 공격 사례와 Cloud Snooper APT 공격 사례가 있었다. 이후 최근까지도 Nood RAT 악성코드가 지속적으로 수집되고 있으며 VirusTotal에서도 업로드되고 있다. 비록 구체적인 공격 방식은 확인되지 않지만 다양한 공격자들이 감염 시스템을 제어하고 정보를 탈취하기 위한 목적으로 사용하고 있는 것으로 추정된다. 다음은 최근 수년간 확인된 Nood RAT을 분류한 표이다.
| 수집일 | 국가 | 이름 | 위장 프로세스 | 설정 데이터 |
|---|---|---|---|---|
| 240130 | KR | AliDunYun | /usr/bin/ssh | 43.156.118[.]72:443;43.156.118.72:443;| 1;1;1;1;1;1;1;|00-24;|1 |
| 240116 | HK | pki.rar | /usr/bin/ssh | b.niupilao[.]vip:80;|1;1;1;1;1;1;1;|00-24;|1 |
| 231028 | PH | x.uu | [kworker/0:0] | update.kworker[.]net:443;check.snapupdate[.]org:80;| 1;1;1;1;1;1;1;|00-24;|1 |
| 231027 | CN | nginx | /usr/bin/ssh | 42.51.40[.]184:56;|1;1;1;1;1;1;1;|00-24;|1 |
| 230907 | RU | MFWzS4YNXpQd | [kworker/2:0] | 13.214.222[.]35:443;|1;1;1;1;1;1;1;|00-24;|1 |
| 221013 | HK | hsperf | kworker | cloud.awsxtd[.]com:443;|1;1;1;1;1;1;1;|00-24;|3 |
| 220911 | RU | adyagent | /usr/bin/ssh | 43.140.251[.]218:8080;|1;1;1;1;1;1;1;|00-24;|1 |
| 220726 | CN | update | /usr/bin/ssh | 101.42.139[.]110:8443;101.42.139[.]110:53;| 1;1;1;1;1;1;1;|00-24;|1 |
| 220113 | CN | update | /usr/bin/ssh | 81.68.143[.]132:1234;81.68.143[.]132:8080;| 1;1;1;1;1;1;1;|00-24;|1 |
| 211213 | VN | bo | /usr/bin/ssh | bo.appleupcheck[.]com:443; |1;1;1;1;1;1;1;|00-24;|1 |
| 210921 | PK | N/A | /usr/sbin/xfs_srv | 194.36.191[.]75:443;|1;1;1;1;1;1;1;|00-24;|1 |
| 210601 | CN | titan.bin | /usr/bin/ssh | 1.117.165[.]141:53;1.117.165[.]141:53;| 1;1;1;1;1;1;1;|00-24;|1 |
| 210403 | CN | N/A | /sbin/auditd | 23.100.88[.]61:53;|1;1;1;1;1;1;1;|00-24;|10 |
Table 4. Nood RAT 악성코드
4. 결론
Gh0st RAT은 윈도우 시스템을 대상으로 활발하게 사용되고 있는 악성코드이지만 공개된 소스 코드를 기반으로 제작된 리눅스 버전의 Gh0st RAT 또한 다양한 공격자들에 의해 지속적으로 사용되어 왔다. Gh0st RAT 변종 중 제작자가 Nood라는 이름을 붙인 리눅스 버전의 악성코드는 최근까지도 다양한 국가들에서 수집되고 있다.
Nood RAT은 C&C 서버로부터 명령을 받아 악성 파일 다운로드, 시스템 내부 파일 탈취, 명령 실행과 같은 기능을 수행할 수 있는 백도어 악성코드이다. 간단한 형태이지만 네트워크 패킷 탐지를 우회하기 위해 암호화를 사용하며 공격자의 명령을 받아 다양한 악성 행위를 수행할 수 있다.
이와 같은 보안 위협을 방지하기 위해서는 취약한 환경 설정이나 인증 정보를 검사하고, 관련 시스템들을 항상 최신 버전으로 업데이트하여 공격으로부터 보호해야 한다. 또한 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다.
파일 진단
– Linux/Agent.86208 (2029.01.08.00)
– Backdoor/Linux.Rekoobe.86144 (2022.06.15.00)
– Backdoor/Linux.Rekoobe.86176 (2022.06.15.00)
– Backdoor/Linux.Rekoobe.83264 (2022.06.15.00)