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




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 진단 및 치료 화면




저작자 표시 비영리 변경 금지
신고
Posted by nProtect
앞서 설명한 행동기반 분석 Tool을 제외한 Process Explorer와 Autoruns Tool등은 등록되거나 실행중인 정보는 확인이 가능하나 IceSword등을 통해 확인이 가능한 일부 숨김 기능등의 루트킷 관련 정보들은 확인 할 수 없었다.

물론 IceSword Tool로 루트킷등의 기능에 대한 고급 제어 기능을 활용 할 수 있으나, 더이상의 상위 패치버전이 배포되지 않는 단점이 있어 지속적인 패치버전이 배포되고 있는 보다 강력한 안티 루트킷 프로그램에 대해 알아보도록 하겠다.

◆ 보다 강력하게 나몰래 활동중인 적을 확인하자!

Gmer

 - IceSword와 같은 안티 루트킷 프로그램.
 - IceSword보다 더 높은 제어기능을 제공한다.
 - 다운로드 URL : http://www.gmer.net/


- Gmer는 다음과 같은 루트킷에 대한 스캔이 가능하다.

  1) 숨겨진 프로세스
  2) 숨겨진 서비스
  3) 숨겨진 파일들
  4) 숨겨진 레지스트리 키
  5) 숨겨진 드라이버
  6) 숨겨진 쓰레드
  7) 숨겨진 모듈
  8) SSDT를 Hooking하는 드라이버
  9) IDT를 Hooking하는 드라이버
  10) IRP Calls를 Hooking하는 드라이버

- Gmer는 다음과 같은 시스템 기능들에 대한 모니터링이 가능하다.

  1) 프로세스 생성
  2) 드라이버 로딩
  3) 라이브러리 로딩
  4) 파일기능
  5) 레지스트리 엔트리
  6) TCP/IP

Gmer는 IceSword와 같은 기능을 제공하여주며, IceSword와는 다르게 지속적인 패치버전이 제공되어 범용적으로 사용하기에 IceSword보다 편리하다. 또한 IceSword보다 더 높은 파일제어기능을 제공한다.


IceSword와 마찬가지로 Process Explorer와 Autoruns등으로 악성코드 감염 의심파일에 대한 확인 및 제어가 어려운 경우 사용되는 Tool이며, SSDT 후킹을 비롯한 다양한 루트킷 악성코드에 대하여 위의 그림과 같이 확인하기 간편한 UI로 정보가 제공된다.
Gmer는 최초 구동시 단독모듈로 드라이버를 등록 후 동작이 이루어지며, 설정된 루트 드라이버에 대한 스캔작업을 시작한다. 위의 화면과 같이 루트킷 서비스 및 드라이버와 같이 유해기능의 항목이 발견되면 빨간색으로 인덱스 처리가 이루어져 표시되며, 마우스 우 클릭으로 Disable service등의 기능을 수행할 수 있다.

확인되지 않거나 사용자 본인이 모르는 항목의 루트킷 기능의 서비스 등이 실행되고 있다면 Disable service기능을 통해 서비스 중단을 진행하도록 하자.


Disable service 기능등을 수행하며 확인한 서비스명으로 레지스트리의 Services 하위에 해당 서비스명으로 키값이 등록되어 있는것을 확인 할 수 있다. 다만, 레지스트리 등록 값에 대한 확인 및 수정은 가능하나 삭제는 불가능하다. 

Services탭은 루트킷등과 같은 서비스 이외에도 PC에 적용되어 있는 모든 서비스들에 대한 상태 및 출처와 같은 정보 확인이 가능하며, 삭제 또한 진행 할 수 있다.

추가적인 정보들을 모두 얻었다면 재부팅을 진행하고 재부팅후에는 서비스로 등록되었던 키값 및 실제 파일에 대한 확인 및 제어가 가능하다. 해당 루트킷에 대한 백신의 진단이 불가능 하거나 파일에 대한 일반적인 채취가 불가능할 시 Gmer에서 제공하는 복사기능을 이용하여 채취 후 백신 업체등에 신고하여 추후에는 백신상에서 안전하고 편리하게 치료기능을 제공 받을 수 있도록 한다.

Gmer는 강력한 안티 루트킷 서비스를 제공하는 대신 제어에 많은 주의를 요구한다. 접근이 어려운 파일등에 대한 제어가 가능하기 때문에 정상파일에 대한 삭제가 진행될 수 있기 때문이다. 위에서 설명한 Disable service가 아닌 상단의 Delete service기능을 수행 할 경우 서비스값 뿐만 아니라 해당 파일에 대한 삭제까지 가능하니 네트워크 패킷 발생등의 목적으로 정상 svchost.exe를 통해 루트킷 서비스로 등록(svchost명으로 서비스 등록)되는 경우 정상파일이 삭제되지 않도록 주의해야 한다.


<※ 도구 활용편 추가 보기>

[Process Explorer 활용편] 간단한 Tool을 이용한 악성 프로그램 대응 #1 : http://erteam.nprotect.com/11
[Autoruns 활용편] 간단한 Tool을 이용한 악성 프로그램 대응 #2 : http://erteam.nprotect.com/12
[TCPView 활용편] 간단한 Tool을 이용한 악성 프로그램 대응 #4 : http://erteam.nprotect.com/14

저작자 표시
신고
Posted by nProtect

일반적으로 정상 프로그램이나 악성코드가 실행되면 모두 그 실행 프로그램에 대한 Process 정보나 레지스트리 값에 대한 확인이 이전 시간에 설명한 Process Explorer, Autoruns Tool 그리고 윈도우에서 제공하여 주는 작업 관리자, 레지스트리 편집기 등에 의해서 확인이 가능하다.

그러나 일부 악성코드의 경우는 이러한 Process 및 레지스트리 확인을 어렵게 하기위해 자신을 사용자들이 발견하지 못하도록 숨기는 기능등을 가지고 있으며, 이러한 기능중 대표적으로 루트킷을 예로들 수 있다.

이번시간에는 기본적인 Process 및 레지스트리 정보, 또한 루트킷과 같은 기능등에 대한 스캔이 가능한 유용한 Tool에 대해 알아보는 시간을 갖도록 하겠다.

◆ 나 몰래 활동중인 적을 확인하자!

IceSword

 - 안티 루트킷 프로그램이다. 접근이 어려운 파일에 대한 제어등이 가능하게 해주는 기능 또한 제공한다.
 - 다운로드 URL : http://pjf.blogcn.com/index.shtml


- 각 색션별 주요기능

  1) Process : 현재 실행 중인 프로세스 목록을 보여준다.(Hidden 포함)
  2) Port : 네트워크의 접근 현황을 보여준다.
  3) Kernel Module : 실행파일에 의해 로드된 sys파일이나 dll파일의 목록을 보여준다.
                             루트킷의 경우 자신을 은폐하기 위한 파일들이 이곳에 등록될 수 있다.
                             다만, 이곳에 존재하는 정상파일들을 강제로 종료하는 경우 BSOD가 발생할 수 있다.
  4) Startup : 윈도우 시작 시 함께 실행되는 목록들을 보여준다.
  5) Win32 Services : 서비스로 실행되는 프로세스 목록을 보여준다.
  6) SPI(Service Provider Interface) : 네트워크 드라이버에 로딩되는 부분을 보여준다.
  7) BHO(Browser Helper Object) : 브라우저나 시스템의 쉘 실행 시 로딩되는 DLL의 목록을 보여준다.
  8) SSDT(System Service Descriptor Table) : 시스템에 로드되어 있는 메모리를 참고 할 수 있다.(Hidden 포함)
  9) Message Hooks : 프로그램 동작시 입출력 장치의 반응을 보여준다.
  10) Log Process/Thread Creation : 프로세스가 실행한 목록을 보여준다.
  11) Log Process Termination : 프로세스/쓰레드의 종료 시점을 보여준다.
  12) Scan Module Hooks : 모듈을 검사하며, 특정 프로세스나 파일의 모니터링에 사용된다.
                                       사용시 PC에 많은 부하가 발생.
  13) Registry : 레지스트리 편집기를 실행하며, regedit.exe 로 접근이 불가능한 정보까지 접근이 가능하다.
  14) File : 숨김 폴더/파일을 모두 볼 수 있는 파일 탐색기를 실행하며, 접근불가 경로도 접근 가능.
  15) Reboot and Monitor : 실행하면 재부팅이 이루어지며 부팅시 실행에 관한 모든 로그를 남긴다.
  16) RegFile : IceSword 의 일부 기능을 명령줄로 바꿔 실행이 가능하다. cmd창이 열리며 이때는 사용중인 파일도 삭제가
                    가능하다.

IceSword는 이전 시간에 설명한것과 같이 Process Explorer, Autoruns 각각의 Tool에서 제공하는 파일 및 레지스트리 값 제어를 한번에 진행할 수 있다. 또한 상기 두가지 Tool에서 제공되지 않는 루트킷 스캔등의 고급 제어기능을 추가적으로 제공하여 준다.


위 그림과 같이 고급 제어 기능중 유용하게 사용될 수 있는 BHO(Browser Helper Object) 스캔 기능이 있으며, 사용자가 사용하지 않는 BHO 값등의 제어를 원하는 경우 해당 레지스트리 값에 마우스 우 클릭으로 삭제 및 새로고침 기능을 수행 할 수 있다.

※ BHO 란 근본적으로는 브라우저에서 지원하지 못하는 기능등을 지원하기 위해 플러그인 형태로 Internet Explorer(이하 IE)에 추가되는 DLL모듈등을 말하며, 이러한 BHO로 인해 IE에서는 다른 브라우저에서 접근하지 못하는 영역에 대한 접근 및 추가적인 기능수행등이 가능하다.


또한, IceSword는 안티 루트킷 프로그램으로 위 그림과 같이 SSDT(System Servoce Descriptor Table)후킹에 대한 스캔 및 제어 기능을 제공한다.

만일 특정 파일이나 Process에 대한 제어가 불가능 하거나 지속적으로 원하지 않는 불필요한 기능들의 Refresh등이 유지된다면 SSDT 메뉴로 이동하여 위 그림과 같이 정보를 확인 후 빨간색으로 표시되는 값을 찾아 마우스 우클릭 후 모두 Restore메뉴를 통해 복구해주면 된다.

※ SSDT 후킹이란 윈도우에서 제공하는 API가 커널모드에서 서비스를 받기 위해 필요한 내용(삭제, 생성, 복사등의 기능)을 조작하는 커널모드 후킹 방법을 말한다. 즉, 특정파일이나 Process에 대해 삭제, 생성, 복사등의 제어기능이 정상동작하지 못하도록 막는것을 SSDT 후킹이라 한다.

또한, IceSword는 윈도우상에서 접근이나 제어가 불가능한 폴더나 파일에 대한 제어가 가능하다. 즉, 악성코드에 의해 레지스트리값이 변경되어 사용자에게 보이지 않거나 폴더에 대한 이동이 불가능한 경우 IceSword에서 제공하는 윈도우 탐색기를 통해 파일, 폴더에 상관없이 모두 마우스 우 클릭을 통해 삭제 및 복사가 가능하다. (단, 복사의 경우는 파일에만 해당된다.)

만일 백신에 의해 진단되지 않으면서 위와 같이 IceSword를 통해 숨김속성이나 윈도우상에서 정상접근이 불가능한 파일에 대해 확인이 된다면 IceSword에서 제공하는 파일에 대한 복사기능을 이용하여 파일을 채취한 후 백신 업체등에 신고하는 편이 보다 안전할 수 있다. 그렇게된다면 추후에는 이러한 유사한 악성기능을 갖는 루트킷 악성코드에 대해 안전한 치료기능을 백신으로 부터 제공받을 수 있을것이다.

이번 시간에는 일반적인 확인이 어려운 루트킷등의 기능에 대한 대처 방법에 대해 알아보았다. 보통 Process나 레지스트리 값에 의심되거나 사용자가 모르는 정보가 확인되지 않는 상황에서 지속적인 의심상황(네트워크 속도의 하향 및 트래픽 발생, 특정 프로그램의 동작 오류등)이 발생할 경우 루트킷 감염에 대한 의심을 해 볼 수 있으며, 이러한 경우 상기의 Tool을 이용하여 일정 정보에 대한 확인이 가능하다.

다음 시간에는 인터넷 사용등에 영향을 주는 네트워크가 심하게 느려지는 경우 일반 사용자들이 편리하게 네트워크 현황을 확인 할 수 있는 Tool에 대해 알아보도록 하겠다.


<※ 도구 활용편 추가 보기>

[Process Explorer 활용편] 간단한 Tool을 이용한 악성 프로그램 대응 #1 : http://erteam.nprotect.com/11
[Autoruns 활용편] 간단한 Tool을 이용한 악성 프로그램 대응 #2 : http://erteam.nprotect.com/12
[TCPView 활용편] 간단한 Tool을 이용한 악성 프로그램 대응 #4 : http://erteam.nprotect.com/14
[Gmer 활용편] 간단한 Tool을 이용한 악성 프로그램 대응 #5 : http://erteam.nprotect.com/15

저작자 표시
신고
Posted by nProtect