- Introduction -


Rootkit을 분석하는데 이 Rootkit은 로드 타임(Load Time)에 커널 디버거가 붙여져 있으면 그것을 감지하고 드라이버 로드가 되지 않게끔 구현 되어져 있었다.

그것이 프로텍터에 의한 것인지 실제 악성코드 제작자가 의도하고 구현한 것인지는 모르겠지만,  어쨌든 분석하는 입장에서는 VMWare에 Windbg를 붙인 상태에서 마음 놓고 Rootkit을 로드 시켰는데 로드가 안되니 답답할 노릇이었다.


그래서 생각한 것이 Rootkit이 완전히 로드 되고난 다음에는 Timer DPC나 쓰레드 등을 이용해서 따로 실시간 감시하는 루틴이 존재하지 않을 것이란 전제하에, 즉, 로드 타임에만 검사가 이루어진다면 WinDbg를 잠시 떼어낸 상태에서 Rootkit 드라이버를 로드 시킨 다음에 다시 WinDbg를 붙이면 어떨까 하는 생각에 의해서 나온 것이 이것이다.



- How to implement -


구현 방법은 간단하다.


커널에서 Export 하고 있는 KdDebuggerEnabled, KdDebuggerNotPresent 변수의 값을 내가 원하는 값으로 바꿔버리는 것이 전부이다.


When you want to detach Windbg : KdDebuggerEnabled = FALSE,   KdDebuggerNotPresent = TRUE

When you want to attach Windbg again : KdDebuggerEnabled = TRUE, KdDebuggerNotPresent = FALSE


이렇게만 설정 해주면 된다.



- Supported OS -


32Bit, 64Bit  Windows XP/7/8 have been tested.

(64Bit should be in Test Mode. The 64bit kernel driver has been test signed.)


In 32bit OS, "ctrlkerneldbgX86.sys" will be dropped and executed.

In 64bit OS, "ctrlkerneldbgX64.sys" will be dropped and executed.



- How to use -


1. Windbg를 VMware나 VirtualPC 등등에 입맛에 맞게 붙이고 가상 머신을 켠다.


2. Rootkit이 로드 타임에 커널 디버거를 감지하는 루틴을 가지고 있다면, 이 프로그램을 이용해서 잠시 Windbg를 Disable 시킨다.


3. Rootkit을 로드시킨다.


4. 다시 Windbg를 Enable 시킴으로써 Rootkit의 디버깅이 가능해진다.



- ETC -


This app hasn't been tested on real PC. It may cause BSOD. Don't run this on your real PC. Just try it on VM.


This app has been built by VS2012 Update 3. If you can't run this app on your PC. 

Install this : (http://www.microsoft.com/en-us/download/details.aspx?id=30679)






ctrl_hookdriver.exe



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
by Sone 2013.08.02 09:30
| 1 2 3 4 5 ... 142 |

티스토리 툴바