WinDbg
- WinDbg를 이용하여 Windows XP의 notepad.exe DLL정보 확인과 PED에 로딩된 DLL정보 확인
notepad.exe를 대상으로 실습해보았다.
- 실습환경 : Windows XP 32bit (Vmware)
- 실습대상 : notepad.exe
1. Vmware에서 SeialPort 추가 후 User named pipe에 ” \\.\pipe\COM_1 ” 입력
<Vmware – Serial Port 추가>
2. Windows XP에서 실행 – .\boot.ini 열람 후 아래 그림과 같이 한줄을 추가한다.
<XP에서 Boot.ini 수정>
3. 로컬에서 WinDbg를 실행 후 File – Kernel Debug 를 클릭한다. 그리고 COM 메뉴에서 Port에 ” \\.\pipe\COM_1 “를 입력 후 Pipe, Reconnect 체크 후 확인을 클릭한다.
<WinDbg 실행>
4. WinDbg가 실행되고 있을 때 Windows XP 재부팅 후 디버거 사용 가능 모드를 선택한다.
<Windows Xp 재부팅>
5. WinDbg 와 연결이 된 상태에서 Debug메뉴 – Break를 클릭하면 아래 와 같이 출력되면서 Windows XP가 멈추게 된다. (Break를 걸기 전에 notepad.exe를 실행한다.)
<Debug메뉴 – Break>
6. [!process 0 0] 명령어를 입력 시 현재 프로세스 리스트를 출력한다.
<!process 0 0>
7. [!process 0 0 notepad.exe] 명령어를 통해 notepad.exe의 Address를 확인 후 [.process (notepad.exe의 Address)]명령어를 통하여 Context를 지정한다.
<Context 지정>
8. [ dt _EPROCESS (ADDRESS)] 명령어를 이용하여 여러정보와 PEB 주소를 확인 할 수 있다.
<_EPROCESS>
9. [dt _EPROCESS Peb (ADDRESS)]를 통해 PEB의 주소를 확인 후 [dt _PEB (ADDRESS)]명령어 입력 후 Ldr의 주소를 확인한다.
< PEB – LDR 확인>
10. [dt _PEB_LDR_DATA (ADDRESS)]명령어를 통해 LDR의 정보를 확인한다. InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList 주소를 확인 후 이를 통해 로딩된 DLL 정보 확인이 가능하다. (뒷부분에서 다시 확인)
<LDR 정보확인>
11. notepad.exe의 ImageBase를 확인 후 [!dh (ADDRESS)] 명령어를 통해 PE Header 정보를 불러온다. 여기서 출력되는 IMPORT DIRECTORY를 확인 후 해당 주소를 통해 아래 그림처럼 DLL의 정보를 확인 할 수 있다.
<PE Header를 통해 DLL정보확인>