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는 윈도우 환경과 리눅스 환경을 함께 지원하는 것이 특징이다.

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)이라고 하는 기능을 이용해 결국 공격자가 명령을 실행할 수 있게 된다.

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 악성코드를 도구로써 사용하였다.

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

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

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

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

Offset | Size | 설명 |
---|---|---|
0x00 | 0x04 | 시그니처 (0x0000000B) |
0x08 | 0x40 | 윈도우 버전 |
0x48 | 0x20 | 악성코드 버전 정보 (Ver 8.0) |
0x68 | 0x04 | CPU 성능 (MHz 단위) |
0x6C | 0x04 | 프로세서 개수 |
0x70 | 0x20 | 컴퓨터 이름 |
0x90 | 0x04 | 언어 정보 |

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

Offset | Size | 설명 |
---|---|---|
0x00 | 0x04 | 시그니처 (0x0000000A) |
0x08 | 0x10 | 네트워크 인터페이스 속도 (kb/bps) / CPU 사용 (%) |
C&C 서버에 감염 시스템의 정보를 전송하면 C&C 서버는 0x000000C4 크기의 응답을 전송한다. 여기에는 명령뿐만 아니라 데이터, 예를 들어 구체적인 DDoS 공격 방식이나 다운로드 명령일 경우에는 다운로드 URL이 포함된다.
Offset | Size | 설명 |
---|---|---|
0x00 | 0x04 | Dummy |
0x04 | 0x04 | 명령 |
0x08 | 0xBC | 추가 데이터 |
지원하는 명령은 모두 6가지이지만 DDoS 공격은 내부적으로 SYN Flood, UDP Flood , HTTP GET / POST Flood 공격 등 다양하다.

명령 | 기능 |
---|---|
0x00000005 | DDoS 공격 시작 |
0x00000006 | DDoS 공격 중지 |
0x00000007 | 추가 페이로드 다운로드 및 실행 |
0x00000008 | 시스템 상태 정보 전송 시작 |
0x00000009 | 시스템 상태 정보 전송 종료 |
0x00000013 | 새로운 C&C 서버로부터 DDoS 명령 |
지원하는 명령들 대부분은 일반적인 DDoS Bot과 유사하지만 Ddostf만의 특징이라고 한다면 C&C 서버로부터 전달받은 새로운 주소에 접속하여 일정 기간 동안 명령을 수행할 수 있다는 점이다. 새로운 C&C 서버에서는 다음과 같이 DDoS 명령만 수행 가능하다. 이러한 점은 Ddostf 공격자가 다수의 시스템들을 감염시킨 이후 DDoS 공격을 서비스로 판매할 수 있다는 것을 의미한다.

4. 결론
데이터베이스 서버(MS-SQL, MySQL 서버)를 대상으로 하는 공격에는 대표적으로 부적절하게 계정 정보를 관리하고 있는 시스템들에 대한 무차별 대입 공격(Brute Forcing)과 사전 공격(Dictionary Attack)이 있다. 일반적으로 이러한 방식들이 공격의 대부분을 차지하고 있는 것으로 보이지만 이외에도 취약점이 패치되지 않은 시스템들에 대한 취약점 공격이 있을 수 있다.
이에 따라 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경하여 무차별 대입 공격과 사전 공격으로부터 데이터베이스 서버를 보호해야 하며 최신 버전으로 패치하여 취약점 공격을 방지해야 한다. 또한 외부에 공개되어 접근 가능한 데이터베이스 서버에 대해 방화벽과 같은 보안 제품을 이용해 외부 공격자로부터의 접근을 통제해야 한다. 위와 같은 조치가 선행되지 않을 경우 공격자 및 악성코드들에 의해 계속적인 감염이 이루어질 수 있다.
안랩 MDS 샌드박스에서는 Ddostf 악성코드를 “Persistence/MDP.Event.M29″, “Malware/MDP.Manipulate.M491”, “Malware/MDP.AutoRun.M1038” 진단명으로 탐지하고 있다.


안랩 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:안랩 탐지