MySQL 서버를 공격 중인 Ddostf DDoS Bot 악성코드

ASEC 분석팀에서는 취약한 데이터베이스 서버를 대상으로 유포되는 악성코드들을 지속해서 모니터링하고 있다. MySQL은 대표적인 데이터베이스 서버로서 기업이나 사용자 환경에서 대량의 데이터를 관리하는 기능을 제공한다. 일반적으로 윈도우 환경에서는 데이터베이스 서비스를 위해 주로 MS-SQL을 설치하며 리눅스 환경에서는 MySQL, PostgreSQL 등의 데이터베이스 서비스가 사용된다. 하지만 MySQL과 같은 DBMS 서비스는 윈도우 환경도 지원하기 때문에 MS-SQL 서버만큼은 아니지만 윈도우 환경에 설치된 사례도 일정 부분 존재하며 이에 따라 윈도우 환경에서 동작 중인 MySQL 서버를 대상으로 하는 공격도 꾸준히 확인되고 있다.

자사 AhnLab Smart Defense (ASD) 로그에 따르면 취약한 MySQL 서버를 대상으로 유포 중인 악성코드들로는 Gh0st RAT 변종이 대부분을 차지한다. 물론 이외에도 다양한 악성코드들이 사용될 수 있으며 과거 AsyncRAT이 사용된 사례도 ASEC 블로그를 통해 공개한 바 있다. [1]

ASEC 분석팀에서는 최근 취약한 MySQL 서버를 대상으로 Ddostf DDoS Bot이 설치되고 있는 것을 확인하였다. Ddostf는 특정 대상에 분산 서비스 거부(DDoS : Denial of Service) 공격을 할 수 있는 DDoS Bot으로서 2016년 경에 처음 확인되었다. [2] 중국에서 제작된 것으로 알려진 Ddostf는 윈도우 환경과 리눅스 환경을 함께 지원하는 것이 특징이다.

Figure 1. MySQL 서비스를 통해 설치되는 Ddostf DDoS Bot


1. MySQL 서버 대상 공격

공격자들은 공격을 수행하기 위해 스캐닝을 통해 공격 대상을 찾을 것이다. 스캐너는 외부에 노출되어 있는 시스템들 중에서 MySQL 서버가 사용하는 3306/TCP 포트가 공개되어 있는 시스템을 찾는다. 이후 해당 시스템을 대상으로 무차별 대입 공격이나 사전 공격을 이용하면 부적절하게 계정 정보를 관리하고 있던 시스템일 경우 관리자 계정 정보를 획득할 수 있다. 물론 이러한 과정 없이 취약점이 패치되지 않은 버전일 경우에는 취약점 공격으로 명령을 실행할 수도 있을 것이다.

일반적으로 MS-SQL 환경에서는 OS 명령을 실행할 수 있는 다양한 방식들이 제공된다. 대표적으로 xp_cmdshell 명령이 있으며 이외에도 OLE Stored Procedure, MS-SQL Agent Jobs, Extended Stored Procedure, CLR Stored Procedure 등의 방식이 존재한다. OS 명령 즉 CMD나 파워쉘을 이용해 사용자의 명령을 실행할 수 있다는 것은 해당 시스템에 대한 제어를 획득할 수 있다는 것을 의미한다.

MySQL은 MS-SQL처럼 xp_cmdshell과 같은 직접적인 OS 명령을 지원하지는 않지만 사용자 정의 함수(UDF : User Defined Function)이라고 하는 기능을 이용해 결국 공격자가 명령을 실행할 수 있게 된다.

Figure 2. Metasploit의 UDF 공격 기능


2. UDF (User Defined Function) DLL

UDF는 사용자가 원하는 기능을 DLL에 구현한 것이며 공격자는 악의적인 명령이 포함된 UDF 라이브러리 즉 DLL을 감염 시스템에 업로드한 후 MySQL 서버에 로드시킨다. 이후 정의한 명령을 실행하는 방식으로 감염 시스템에 악성 명령을 전달할 수 있다.

이는 MS-SQL 서버의 CLR SqlShell과 유사하다. [3] SqlShell은 웹 서버에 설치될 수 있는 WebShell과 유사하게 MS-SQL 서버에 설치되어 공격자의 명령을 실행하거나 다양한 악의적인 행위를 수행할 수 있는 기능을 지원하는 악성코드이다.

MS-SQL 서버에서는 확장된 기능을 사용할 수 있도록 CLR Stored Procedure라고 하는 방식을 지원하는데 SqlShell은 이러한 방식으로 제작된 DLL이다. CLR Stored Procedure는 xp_cmdshell 명령과 함께 공격자들이 MS-SQL 서버에서 악의적인 명령을 실행할 수 있는 대표적인 방식들 중 하나이다. 공격자들은 주로 코인 마이너나 랜섬웨어같이 최종적인 악성코드를 설치하는 수단으로서 SqlShell을 사용한다.

실제 공격 대상 시스템의 감염 로그를 보면 감염 시스템에는 Ddostf 외에도 다음과 같은 악성 UDF DLL이 함께 설치되는 것이 확인된다. 물론 해당 UDF DLL은 공격자가 Ddosft DDoS Bot을 설치하기 위한 목적으로 제작했다기보다는 오래전부터 다양한 공격에 사용되어 왔다. 즉 공격자는 부적절하게 관리되고 있는 MySQL 서버를 공격하는 과정에서 UDF 악성코드를 도구로써 사용하였다.

Figure 3. Ddostf과 함께 설치되는 UDF DLL 로그

해당 UDF 악성코드는 인자로 전달받은 URL에서 파일을 다운로드하거나 공격자의 명령을 실행하는 기능을 지원한다. 공격자는 UDF DLL에서 제공하는 downloader() 함수를 이용해 외부에서 Ddostf를 다운로드하고 cmdshelv() 함수로 다운로드한 Ddostf를 실행한 것으로 추정된다. 참고로 cmdshelv() 함수는 명령 실행 기능 외에도 실행 결과를 출력하여 “cmd.tmp” 파일로 생성한 후 이를 읽어 실행한 명령의 결과를 C&C 서버에 전달하는 기능도 지원한다.

Figure 4. UDF 라이브러리가 지원하는 기능들


3. Ddostf DDoS Bot 분석

리눅스 환경을 대상으로 하는 ELF 버전과 윈도우 환경에서 동작 가능한 PE 포맷의 Ddostf 버전이 존재하며 여기에서는 윈도우 환경 대상 공격에 사용된 PE 포맷을 다룬다. Ddostf의 대표적인 특징으로는 다음과 같이 “ddos.tf” 문자열이 바이너리에 포함되어 있다는 점이 있다.

Figure 5. 바이너리에 포함되어 있는 ddos.tf 문자열

Ddostf가 실행되면 먼저 자신을 %SystemRoot% 경로에 랜덤 한 이름으로 복사한 후 서비스에 등록한다.

Figure 6. 서비스에 등록된 Ddostf DDoS Bot

이후 암호화된 C&C 서버 주소 문자열 “C8AF3371ACB79AA6119CB33C80C40AE544F319”를 복호화 하여 실제 C&C 서버 주소를 획득한 후 접속한다. 참고로 악성코드 제작자는 분석 방해 목적으로 실제 코드 루틴 중간에 무의미한 printf() 함수들을 삽입하였다. 최초 연결 시에는 감염 시스템에 대한 기본적인 정보들을 수집하여 C&C 서버에 전송한다.

Figure 7. C&C 서버 접속 루틴
OffsetSize설명
0x000x04시그니처 (0x0000000B)
0x080x40윈도우 버전
0x480x20악성코드 버전 정보 (Ver 8.0)
0x680x04CPU 성능 (MHz 단위)
0x6C0x04프로세서 개수
0x700x20컴퓨터 이름
0x900x04언어 정보
Table 1. C&C 서버에 보내는 시스템 정보
Figure 8. C&C 서버에 전달되는 시스템 정보

참고로 최초 시스템 정보 전송 시에는 0x0000000B 값이 시그니처로 함께 전송되지만 C&C 서버의 명령들 중에서 네트워크 속도 및 CPU 사용량과 같은 현재 시스템의 상태 정보를 보낼 때에는 0x0000000A 값이 사용된다.

Figure 9. 시스템의 상태 정보 전송 루틴
OffsetSize설명
0x000x04시그니처 (0x0000000A)
0x080x10네트워크 인터페이스 속도 (kb/bps) / CPU 사용 (%)
Table 2. C&C 서버에 보내는 상태 정보

C&C 서버에 감염 시스템의 정보를 전송하면 C&C 서버는 0x000000C4 크기의 응답을 전송한다. 여기에는 명령뿐만 아니라 데이터, 예를 들어 구체적인 DDoS 공격 방식이나 다운로드 명령일 경우에는 다운로드 URL이 포함된다.

OffsetSize설명
0x000x04Dummy
0x040x04명령
0x080xBC추가 데이터
Table 3. C&C 서버로부터 전달받은 명령 구조

지원하는 명령은 모두 6가지이지만 DDoS 공격은 내부적으로 SYN Flood, UDP Flood , HTTP GET / POST Flood 공격 등 다양하다.

Figure 10. 공격에 사용되는 다양한 User-Agent 문자열들
명령기능
0x00000005DDoS 공격 시작
0x00000006DDoS 공격 중지
0x00000007추가 페이로드 다운로드 및 실행
0x00000008시스템 상태 정보 전송 시작
0x00000009시스템 상태 정보 전송 종료
0x00000013새로운 C&C 서버로부터 DDoS 명령
Table 4. 지원하는 명령 목록

지원하는 명령들 대부분은 일반적인 DDoS Bot과 유사하지만 Ddostf만의 특징이라고 한다면 C&C 서버로부터 전달받은 새로운 주소에 접속하여 일정 기간 동안 명령을 수행할 수 있다는 점이다. 새로운 C&C 서버에서는 다음과 같이 DDoS 명령만 수행 가능하다. 이러한 점은 Ddostf 공격자가 다수의 시스템들을 감염시킨 이후 DDoS 공격을 서비스로 판매할 수 있다는 것을 의미한다.

Figure 11. DDoS 공격 명령만 지원


4. 결론

데이터베이스 서버(MS-SQL, MySQL 서버)를 대상으로 하는 공격에는 대표적으로 부적절하게 계정 정보를 관리하고 있는 시스템들에 대한 무차별 대입 공격(Brute Forcing)과 사전 공격(Dictionary Attack)이 있다. 일반적으로 이러한 방식들이 공격의 대부분을 차지하고 있는 것으로 보이지만 이외에도 취약점이 패치되지 않은 시스템들에 대한 취약점 공격이 있을 수 있다.

이에 따라 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경하여 무차별 대입 공격과 사전 공격으로부터 데이터베이스 서버를 보호해야 하며 최신 버전으로 패치하여 취약점 공격을 방지해야 한다. 또한 외부에 공개되어 접근 가능한 데이터베이스 서버에 대해 방화벽과 같은 보안 제품을 이용해 외부 공격자로부터의 접근을 통제해야 한다. 위와 같은 조치가 선행되지 않을 경우 공격자 및 악성코드들에 의해 계속적인 감염이 이루어질 수 있다.

안랩 MDS 샌드박스에서는 Ddostf 악성코드를 “Persistence/MDP.Event.M29″, “Malware/MDP.Manipulate.M491”, “Malware/MDP.AutoRun.M1038” 진단명으로 탐지하고 있다.

Figure 12. 안랩 MDS 제품의 악성코드 탐지 화면
Figure 13. Ddostf의 지속성 유지 행위들에 대한 탐지

안랩 V3 제품에서는 해당 유형에 대해 다음과 같이 진단하고 있다.

파일 진단
– Trojan/Win32.Nitol.R215641 (2017.12.18.00)
– Downloader/Win32.Agent.R24480 (2012.05.08.03)

행위 진단
– Malware/MDP.Behavior.M29
– Malware/MDP.Behavior.M1091
– Persistence/MDP.Event.M29
– Malware/MDP.Manipulate.M491
– Malware/MDP.AutoRun.M1038

IOC
MD5
– 6e7e26a6e237f84b51bc61aa7dff5680 : Ddostf (11188.exe)
– fe550baf5205d4b2503ad0d48014fccf : UDF DLL (amd.dll)

C&C 주소
– 136.243.103[.]119:6681

샌드박스 기반 동적 분석으로 알려지지 않은 위협을 탐지 대응하는 AhnLab MDS에 대한 자세한 정보는 안랩닷컴에서 확인이 가능하다.

Categories:안랩 탐지

Tagged as:,,

5 1 vote
별점 주기
Subscribe
Notify of
guest

0 댓글
Inline Feedbacks
View all comments