본문 바로가기

악성코드 분석

VirTool:WinNT/Rootkitdrv.KM

개요

Rootkit.Agent.g 악성코드는 DDoS 공격 악성코드 이며 특징으로는 커널 루트킷(SSDT 후킹)을 통해서 프로세스를 숨기고 악성코드 파일에 대해서 삭제를 시키지 못하도록 합니다

상세 분석


<virustotal 결과>

<패킹 결과>

패킹 여부를 판단하기 위해서 PEID로 확인 결과 패킹은 하지 않은 Microsoft Visual C++ 6.0 로 작성된 악성코드로 나옵니다.

다음과 같은 루틴을 통해서 GTHOOK.sys 드라이버를 생성합니다.

C:\WINDOWS\system32\drivers\GTHOOK.sys

C:\WINDOWS\system32\drivers\server.exe 악성코드 실행 시 두 파일을 생성 시킵니다.

GTHOOK.sys 루트킷은 SSDT(System Service Dispatch Table) 후킹을 통해서 NTQuerySystemInformation,NTSetInformationFile 함수를 후킹 합니다. 감염 이후 프로세스명 은닉,파일 삭제를 불가능 하게 만듭니다.

감염 이후 루트킷을 탐지하는 IceSword 에서는 server.exe 탐지를 하지만 Process Explorer에서는 탐지를 하지 못합니다.

루트킷 작동을 위해서 sub_10510 안으로 들어갑니다.

KeServiceDescriptorTable 에서 NtQuerySystemInformation 함수 주소를 구합니다. sub_10A20; 호출 합니다

KeServiceDescriptorTable 에서 NtSetInformationFile 함수 주소 구합니다. 그리고 sub_10BD0; 호출 합니다.

sub_10A20 진입하면 프로세스명이 server.exe 를 숨기는 코드가 존재 합니다.

sub_10BD0 진입하면 C:WINDOWS\system32\server.exe 삭제를 방지하는 코드가 존재합니다.

루트킷의 경우 커널(SSDT) 부분을 조작해서 행동하기 때문에 유저모드 디버거(OllyDbg)로는 분석을 진행할수 없습니다. 분석을 위해서 커널 디버거로 루트킷(GTHOOK.sys) Entry Point 부분에 Break Point 걸고 분석을 진행합니다.

(GTHOOK.sys) Entry Point 부분에서 분석을 진행 하면서 SSDT 후킹을 위해서 CR0 레지스터를 조작하는 부분입니다.빨간색 박스 부분은 CR0 레지스터의 WP 비트값을 0으로 변경하고, 파란색 박스 부분은 CRO 레지스터의 WP 부분을 다시 되돌립니다.

(GTHOOK.sys) 분석을 진행하면서 기존의 정상 함수의 주소를 후킹 주소로 변경 시키는 부분 입니다. 빨간색 박스 부분은 NTQuerySystemInformation 함수의 정상 주소를 badd6a20으로 변경하고, NTSetInformationFile 함수의 정상 주소를 badd6bd0으로 변경 시킵니다.

감염 이전의 NTQuerySystemInformation 함수의 Entry Point는 8061308C 입니다.감염 이전의 NTSetInformationFile 함수의 Entry Point는 8057D010 입니다.악성코드 감염 이후 8061308C ->0xBADD6A20, 8057D010 -> 0xBADD6BD0 으로 변경됬습니다.

C&C 서버의 명령을 통해서 웹사이트 파일을 다운받아 오는 기능 탑재 따로 인코딩한 문자열이 없는것으로 봐서 C&C 서버의 명령을 통해서 작동하는걸로 추정됩니다.

생성된 server.exe 파일은 DDoS 공격 방법중 하나인 HTTP GET Flooding 공격 기능이 존재합니다.

분석 도중 DDoS 문자열을 확인 했습니다.

통신하는 서버의 소재지는 대한민국으로 나옵니다.

 

 

'악성코드 분석' 카테고리의 다른 글

Trojan-GameThief.Win32.Magania.fcns  (0) 2012.12.22
Trojan-Ransom.Win32.Seftad.a  (0) 2012.12.14
Downloader/Win32.Banload  (0) 2012.12.05
Trojan/Win32.Magania  (0) 2012.12.04
Rootkit.Win32.Tiny.jm  (0) 2012.12.02