본문 바로가기

사소한거짓말

[프로젝트소개] 악성코드 분석환경 구축 - "cuckoo"


최근 "분석" 분야의 트렌드는 "자동화" !!

아무래도 공격 자체가 자동화되기 시작하면서, 도저히 수동 분석으로는 넘쳐나는 악성코드의 분석업무를 수행하기 버겁기 때문일 것 입니다. 때마침 이러한 기술적 요구사항을 "가상화" 기술이 충분히 서포트할 수 있게 된 것도 그 이유일 것 같습니다. 



오늘은 지인을 통해 접하게 된 괜찮은 자동화된 악성코드 분석을 위한 오픈소스 프로젝트를 하나 소개하고자 합니다. 

   http://www.cuckoobox.org/index.php

"Cuckoo" 라는 이름은 알을 낳으면 자신의 둥지가 아닌 다른 새의 둥지에 넣어서 키우는 새의 이름으로부터 유래되었다고 합니다..  본 프로젝트에서 사용하는 DLL Injection 기술 때문에 이런 이름을 생각해 냈다고 하는 군요.. ^^;;


- USER : 분석명령과 샘플전달
- Control Server : 중앙 컨트롤 서버, Linux 환경, Python Script (소스 수정후 저는 Windows 환경에서 테스트함)
- VIRTUAL BOX : 샘플 수행과 분석, Windows 환경, AutoIt Script




------- Control Server ---------------

1) 중앙의 컨트롤 서버는 크게 컨트롤 관련폴더와 Virtual Box와의 통신에 필요한 shares 폴더로 구성되어 있습니다. 다시,  shares 폴더는 가상환경 구축에 필요한 setup 폴더와 가상환경에 파일을 전달하고 그 결과를 받기 위한 [Virtual Box 주소] 폴더로 구성되어 있습니다. 따라서, 해당 폴더는 사용하는 가상환경의 숫자만큼 존재하게 되겠죠.....
특히, cuckoo는 setup 폴더에 가상환경에 필요한 파일들을 패키지 형태로 가지고 있어서 쉽게 환경 구축이 가능하다는 장점을 가진 것 같습니다.


2) 모든 폴더구성이 완료되었으며, 서버주소 및 폴더, 가상화 설정등 Control.py 설정파일을 적절히 변경한 후 컨트롤 서버를  실행합니다.

>python core\cuckoo.py

   .---.                       _
  /   6_6                     | |
  \_  (__\    ____ _   _  ____| |  _ ___   ___
  //   \\    / ___) | | |/ ___) |_/ ) _ \ / _ \
 ((     ))  ( (___| |_| ( (___|  _ ( |_| | |_| |
==""===""==  \____)____/ \____)_| \_)___/ \___/
    |||            
www.cuckoobox.org
     |

[2011-02-11 12:20:16] [Start Up] Starting Cuckoo TCP Server...
[2011-02-11 12:20:16] [Start Up] Cuckoo TCP Server running on address XXX.XXX.XXX.XXX and port 7777



------- USER ---------------

3) 사용자는 컨트롤서버에 접속(7777포트)하여 다음과 같은 분석명령을 내리게 됩니다.

 [로컬샘플분석] : START|LOCAL:[파일패스]
 [원격샘플분석] : START|REMOTE:http://[URL경로]

4) 서버가 명령을 받게 되면,  악성코드 분석을 위한 Virtual Box Pool 중에서 하나를 해당 악성파일에 할당하게 됩니다. 파일은 분석을 위해서, shares\[할당된 VirtualBox 주소]\bin 디렉토리 밑에 [MD5].[exe or pdf] 로 복사되고, 가상환경에서 해당 악성파일을 실행하기 위한 AutoIt3 스크립트파일이 shares\[할당된 VirtualBox 주소]\run.au3 에 생성됩니다. 

현재는 파일형식이 "PE32/MS-DOS" 와 "PDF" 만을 판단하고  있습니다. 


------- Virutal Box Client ---------------

5) 우선 가상환경(virtual box)에서는 AutoIt 스크립트를 설치하고, 서버에 존재하는 cuckoo_init.au3 만을 실행하면 됩니다. cuckoo_init.au3 는 주기적으로 컨트롤 서버에 접속해서 cuckoo_run.au3를 실행하도록 설계되어 있습니다. cuckoo_run.au3 는 서버의 setup 폴더를 복사해서 클라이언트 분석 환경을 구축하고, 동적으로 생성된 run.au3를 실행시킵니다. 

분석 요청된 파일을 실행할 수 있도록 동적으로 생성되는 run.au3가 존재한다는 것은 해당 가상환경에 분석이 요구되었다는 것을 의미합니다. 따라서, run.au3가 실행될 때, 분석할 악성코드가 서버에서 클라이언트로 복사되고 실행되며, 그 분석결과를 다시 서버로 복사하는 과정을 수행됩니다.