Ddostf 디도스 봇 유포 주의보! 타겟은 MySQL 서버

최근 안랩은 Ddostf 디도스 봇(DDoS Bot) 악성코드가 MySQL 서버를 대상으로 공격 중인 정황을 확인했다. MySQL은 대표적인 데이터베이스(DB) 서버로서 기업이나 사용자 환경에서 대량의 데이터를 관리하는 기능을 제공한다. 이번 글에서는 MySQL 서버를 공격하는 Ddostf 디도스 봇의 유포 과정을 자세히 알아본다.

 

​안랩의 ASD(AhnLab Smart Defense) 로그에 따르면, 취약한 MySQL 서버를 대상으로 유포 중인 악성코드 중 고스트랫(Gh0st RAT) 변종 악성코드가 대부분이다. 물론 고스트랫 변종 외에도 다양한 악성코드가 있으며, 작년 6월에는 에이싱크랫(AsyncRAT)이 사용되기도 했었다.

 

최근에는 부적절하게 관리되는 MySQL 서버를 대상으로 Ddostf 디도스 봇 악성코드가 설치되는 사례가 확인됐다. 2016년 처음 발견된 Ddostf는 특정 대상에 디도스 공격을 가하는 디도스 봇 악성코드로, 중국에서 제작된 것으로 알려졌다. Ddostf는 윈도우와 리눅스 환경을 모두 공격할 수 있다는 점이 특징이다.

 

[그림 1] MySQL 서비스를 통해 설치되는 Ddostf 악성코드

1. MySQL 서버 대상 공격

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

 

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

 

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

 

[그림 2] 메타스플로잇(Metasploit)의 UDF 공격 기능

2. UDF DLL

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

 

이는 MS-SQL 서버의 CLR SQL Shel(SQL 셸)과 유사하다. SQL Shell은 웹 서버에 설치될 수 있는 웹 셸(Web Shell)과 유사하게 MS-SQL 서버에 설치돼 공격자의 명령을 실행하거나 악의적인 행위를 수행할 수 있는 기능을 지원하는 악성코드이다.

 

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

 

실제 공격 대상 시스템의 감염 로그를 보면 감염 대상 시스템에는 Ddostf 외에도 [그림 3]의 악성 UDF DLL이 함께 설치된 것이 확인됐다. 해당 UDF DLL은 공격자가 Ddosft 악성코드를 설치하기 위한 목적으로 제작됐다기 보다는 오래 전부터 다양한 공격에 사용돼 왔다.

[그림 3] Ddostf와 함께 설치되는 UDF DLL 로그

해당 UDF 악성코드는 인자로 전달받은 URL에서 파일을 다운로드하거나 공격자의 명령을 실행하는 기능을 지원한다. 공격자는 UDF DLL에서 제공하는 downloader() 함수를 이용해 외부에서 Ddostf를 다운로드하고, cmdshelv() 함수로 다운로드한 Ddostf를 실행한 것으로 추정된다.

[그림 4] UDF 라이브러리가 지원하는 기능들

3. Ddostf 디도스 봇 분석

Ddostf 디도스 봇은 리눅스 환경을 대상으로 하는 ELF(Executable and Linkable Format) 버전과 윈도우 환경에서 동작 가능한 PE 포맷의 Ddostf 버전 이렇게 2가지로 존재한다. 이번 글에서는 윈도우 환경 대상 공격에 사용된 PE 포맷을 다룬다. Ddostf의 대표적인 특징으로 [그림 5]와 같이 ‘ddos.tf’ 문자열이 바이너리에 포함돼 있다는 점을 들 수 있다.

 

[그림 5] 바이너리에 포함된 ddos.tf 문자열

Ddostf는 실행 시 먼저 자신을 %SystemRoot% 경로에 이름을 무작위로 지어 복사한 후, 서비스에 등록한다.

[그림 6] 서비스에 등록된 Ddostf 악성코드

그런 다음, 암호화된 C&C 서버 주소의 문자열 ‘C8AF3371ACB79AA6119CB33C80C40AE544F319’를 복호화해 실제 C&C 서버 주소를 획득한 후 접속한다. 참고로 악성코드 제작자는 보안 솔루션의 분석 및 탐지를 방해하기 위헤 코드 루틴 중간에 무의미한 printf() 함수들을 삽입했다. 최초 연결 시에는 감염 대상 시스템에 대한 기본적인 정보들을 수집해 C&C 서버에 전송한다.

[그림 7] C&C 서버 접속 루틴

[표 1] C&C 서버에 전송하는 시스템 정보

[그림 8] C&C 서버에 전달되는 시스템 정보

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

[그림 9] 시스템의 상태 정보 전송 루틴

 

[표 2] C&C 서버에 전송하는 시스템 상태 정보

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

[표 3] C&C 서버로부터 전달받은 명령 구조

Ddostf가 지원하는 명령은 6가지이지만, 디도스 공격은 SYN Flood, UDP Flood, HTTP GET/POST Flood 공격 등으로 매우 다양하다.

[그림 10] 공격에 사용되는 다양한 User-Agent 문자열들

[표 4] 지원하는 명령 목록

지원하는 명령들 대부분은 일반적인 디도스 봇과 유사하지만, Ddostf만의 특징이라고 한다면 C&C 서버로부터 전달받은 새 주소에 접속해 일정 기간 동안 명령을 수행할 수 있다는 점이다. 새 C&C 서버에서는 [그림 11]과 같이 디도스 명령만 수행할 수 있다. 이는 Ddostf 공격자가 다수의 시스템들을 감염시키고 나서 디도스 공격을 서비스로 판매할 수 있다는 것을 의미한다.

[그림 11] 디도스 공격 명령만 지원하는 새 C&C 서버

4. 결론

MS-SQL, MySQL 서버 등 DB 서버를 노린 공격은 일반적으로 무차별 대입 공격, 사전 공격이 대다수를 차지하며, 간혹 패치되지 않은 시스템들을 대상으로 하는 취약점 공격도 발생한다.

 

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

 

안랩 MDS(AhnLab MDS)는 Ddostf 악성코드를 ‘Persistence/MDP.Event.M29’, ‘Malware/MDP.Manipulate.M491’, ‘Malware/MDP.AutoRun.M1038’ 진단명으로 탐지한다.

 

[그림 12] 안랩 MDS의 악성코드 탐지 화면

 

​[그림 13] Ddostf의 지속성 유지 행위들에 대한 탐지

 

 

​출처 : AhnLab

02-553-2331
견적 요청
카카오톡 문의