CreateMutex
까보면 다나와~

ahnurl.sys 루트킷 드라이버 분석

1. 드럽퍼에 의한 실행 흐름

 


2. 상세 분석

1) DKOM을 이용한 드라이버 은닉

 

다음은 설치된 ahnurl 드라이버에 대한 오브젝트 일부이다. 드라이버는 스스로를 은닉하기 위해 오브젝트 오프셋 +14h 위치의 (DriverSection) 메모리를 접근한다. DriverSection은 이중 링크드 리스트로 이루어진 드라이버 리스트에 대한 정보를 제공하기 때문에 여기에 접근하여 링크된 리스트 항목의 앞 뒤 드라이버를 자신을 뺀 채 연결하고 자신을 리스트에서 조회되지 않도록 수정한다.

 

2) SSDT Hook

 

악성코드는 자신을 보호하기 위해 다음의 Native API대해 Hook을 한다.

NtQueryDirectoryFile(+244), NtEnumerateKey(+11c), ZwEnumerateValueKey(+124)

 위의 함수들은 레지스트리 및 파일을 조회할 때 호출되는데, 이는 인자값을 감시하여 자신이 원하는 레지스트리나 파일을 삭제하지 못 하도록 보호하기 위함이다. *Hook으로 인해 실행되는 함수는 별도로 분석하지 않았다.

 

3) NtMapViewOfSection API Inline Code Patch

 

우선 NtMapViewOfSection함수를 패치하는 목적은 다음과 같다.

프로세스는 새롭게 생성될 때 OS에 의해 독립적인 유저 메모리를 공간을 할당받고 이 공간을 통해서 코드를 실행한다. 특히 DLL은 효율적인 메모리 활용을 위해 Mapping된 파일을 불러오게 되어 있는데 해당 정보를 조회할 때 NtMapViewOfsection이 호출되게 된다. 따라서 이 함수를 수정하면 DLL이 로드됨과 동시에 자신이 원하는 행동도 임의 실행할 수 있게 되는 것이다.

Patch가 된 NtMapViewOfSection API는 사전에 buffer에 저장한 주소로 점프하게 되는데 해당 주소코드의 역할은 주요 온라인게임 계정을 해킹하는 악성코드 DLL파일을 로드하게 된다.

 

  Comments,     Trackbacks