분석 정보/악성코드 분석 정보

[악성코드 분석] 악성코드 접근을 숨겨주는 포트 루트킷 분석

TACHYON & ISARC 2016. 11. 28. 09:54

악성코드 접근을 숨겨주는 포트 루트킷 




1. 개요 


루트킷(Rootkit)의 의미는 본래 Unix 계열의 관리자 계정인 루트(Root) 권한을 획득하기 위한 코드와 프로그램의 집합으로 사용되었다. 하지만 최근에 루트킷이 단순히 특정 악성코드가 시스템에서 탐지되지 않도록 악용되면서 이제 개인 PC에서 루트킷의 역할은 악성코드 은닉이 주가 되었다. 본 보고서에서는 악성코드가 통신하는 포트 또는 통신 대상의 IP를 기준으로 연결 정보를 숨겨주는 루트킷을 분석하여 포트 루트킷이 동작 방식을 알아보고자 한다.





2. 분석 정보


2-1. 파일 정보

구분

내용

파일명

SynDrives.sys

파일크기

3,840 byte

진단명

Trojan/W32.KRDDoS.3840

악성동작

포트 루트킷

 




2-2. 유포 경로

SynDrives.sys는 이전에 분석된 악성코드 Trojan/W32.jorik.90624.Z 가 드롭하는 부속 모듈이었다. 주로 앞의 상황과 같이 다른 악성코드의 라이프 사이클 연장을 위한 보조적인 목적으로 악성코드와 함께 유포된다.




2-3. 실행 과정

SynDrives.sys가 숙주 파일에 의해 시스템에 설치되면, SSDT 후킹(Hooking)을 통하여 포트를 은닉할 준비를 해놓고 은닉할 대상의 IP 또는 포트 정보 와 명령을 기다린다. 이후 netstat.exe 등의 프로그램에서 네트워크 연결 정보 조회를 시도하면, 네트워크 연결 정보 테이블에서 악성코드가 지정한 IP 또는 포트에 해당되는 정보를 제외한 나머지 정보를 반환하여 악성코드가 지정한 특정 IP 또는 포트에 대한 정보 은닉을 수행한다.





3. 악성 동작


3-1. SSDT 후킹(Hooking)

SynDrives.sys는 [그림 1]과 같이 네트워크 정보 은닉을 위한 자신의 함수(SynDrives+0x70D)를 ZwDeviceIoControlFile 함수가 호출하는 SSDT의 인덱스(NtDeviceIoControlFile)의 주소에 입력하여 이후 ZwDeviceIoControlFile 호출 시 SynDrives+0x70D가 호출 되도록 한다.


[그림 1] ZwDeviceIoControlFile 후킹[그림 1] ZwDeviceIoControlFile 후킹




3-2. 네트워크 정보 은닉

SynDrives.sys 의 드라이버 객체에 등록된 함수는 숙주 파일로부터 IRP(I/O Request Packet)를 받는다. [그림 2]의 우측에 나타낸 것은 숙주 파일로부터 받은 IRP로 IoControlCode 가 0x222004 인 것을 확인할 수 있다. SynDrives.sys 는 이 값을 기준으로 은닉하고자 하는 데이터가 IP인지 Port인지 결정한다.

[그림 2] IRP 버퍼 데이터[그림 2] IRP 버퍼 데이터



위에서 은닉하고자 하는 데이터의 타입(IP or Port)을 확인한 뒤, IRP 구조체의 SystemBuffer에 있는 값을 확인한다. 이 값은 은닉하고자 하는 데이터(0xdec8c8c8)의 값을 나타낸다.


[그림 3] 은닉시킬 데이터 값 확인 (IRP->AssociatedIrp.SystemBuffer)[그림 3] 은닉시킬 데이터 값 확인 (IRP->AssociatedIrp.SystemBuffer)



SynDrives.sys는 IP 및 Port 정보가 있는 구조체 체인에서 은닉하고자 하는 데이터(0xdec8c8c8)를 찾는다. 그리고 해당 데이터가 속한 구조체(그림 4의 표시된 부분)를 덮어씌운다. 이를 통해 결과적으로 은닉시키고자 하는 정보가 조회되지 않도록 한다.


[그림 4] 조회 된 내용이 있는 버퍼 조작[그림 4] 조회 된 내용이 있는 버퍼 조작





4. 결론


앞서 말한 포트 루트킷은 윈도우 XP의 netstat.exe의 네트워크 상태 조회 방식에 맞춰 제작된 것으로 보이며 윈도우 XP 이후의 OS에서는 공격자의 의도대로 동작하지 않는다. 하지만 다른 OS에서도 정확히 동작을 수행하는 포트 루트킷이 존재하기 때문에 수상한 포트가 열려있지 않더라도 백도어(Backdoor) 및 봇(Bot)으로부터 안전한 상태는 아닐 수 있다. 그러므로 수시로 OS와 응용 프로그램들을 최신 버전으로 업데이트하고 출처가 불분명한 파일을 받지 않는 등 미리 악성코드 감염을 예방할 필요가 있다.


해당 악성코드는 잉카인터넷 안티바이러스 제품 nProtect Anti-Virus Spyware V3.0과 nProtect Anti-Virus/Spyware V4.0에서 진단 및 치료가 가능하다.


[그림 5] nProtect Anti-Virus/Spyware V4.0 진단 및 치료 화면[그림 5] nProtect Anti-Virus/Spyware V4.0 진단 및 치료 화면



[그림 6] nProtect Anti-Virus/Spyware V3.0 진단 및 치료 화면[그림 6] nProtect Anti-Virus/Spyware V3.0 진단 및 치료 화면