본문 바로가기

Hacking Study/Windows

Windows Kernel Exploitation Part 1 : 환경 설정


오랜만에 글 쓰는 것 같습니다.

동아리 회장을 맡으면서 공부를 못했던 거 같아 정신차리고 공부하는 내용 하나 적겠습니다.


원본 글 : https://rootkits.xyz/blog/2017/06/kernel-setting-up/


소개
[원본]

최근에 HackSysTeamnullcon에서 Windows Kernel Exploitation에 대한 교육에 참석하게 된 것을 기쁘게 생각합니다. 교육은 잘 수행되었으며 커널의 세계에 대한 소개를 받았습니다. 하지만 아시다시피, 며칠 안에 내부 개발자에게 커널 개발에 대해 가르쳐 줄 수있는 사람은 아무도 없습니다. 그래서 커널로 들어가기를 생각하고 그 과정에서 배운 모든 것을 공유했습니다. 이 시리즈는 내가 만나는 모든 것을 배우고 문서화 할 시간을 알기 때문에 부분적으로 나타날 것입니다.



필요 요건

- VMWare or VirtualBox [원본에선 VMWare 시리즈를 사용하지만 이 글에서는 Paralles 를 사용합니다.]

- Windows 7 x86 VM

- Symbols 다운로드를 위한 인터넷 연결

- VM 을 구동하기 위한 성능 좋은 기계 (저는 Macbook Pro 2017 입니다.)

- 해당 분야에 대한 기본적인 지식 (Reversing, System Hacking, OS 등)


왜 VM?

- 번역중

[내용 상으론 크래쉬도 내면서 하는 파트기에 Host OS 에서 구동을 하지 않고 VM에서 테스트 해보라는 내용입니다.]



VM 2개가 필요합니다.

Debug 용 VM, Debugger 용 VM


1. Windows 7 x86 을 VM 안에 설치합니다. Microsoft VM Download Page 에서 무료로 다운로드가 가능합니다.



2. Debugger 용 VM을 부팅합니다. 그 뒤 디버깅에 필요한 Windbg 를 설치합니다. 여기 에서 다운받을 수 있습니다.

3. Debugger 용 VM에 Symbols 을 설정해야합니다. Microsoft에서 제공하는 공용 디버깅 Symbol을 사용하면 됩니다.

제어판 -> 시스템 및 보안 -> 시스템 -> 고급 시스템 설정 -> 고급 -> 환경변수

새로운 Symbol 을 생성합니다.

- Symbol 변수 이름 : _NT_SYMBOL_PATH

- Symbol 변수 값 : SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols



4. Windbg 를 설치한 뒤 BCD 에 debugging 을 활성화 해야합니다.

- 관리자 권한으로 cmd를 연 뒤 아래의 명령어를 실행합니다.


bcdedit /copy {current} /d "Win7Dbg"
bcdedit /debug {위의 명령어로 나온 값} on
bcdedit /dbgsettings



5. 이제 Debugger VM의 연결된 클론을 만들어 Debug VM을 만듭니다.

6. Debugger 용 VM을 종료한 뒤 시리얼 포트를 추가합니다.


[Windbg 가 설치된 Debugger 용 VM]


7. 마찬가지로 Debug 용 VM 도 시리얼 포트를 추가해줍니다.


[Debug 용 VM]


8. 이제 Debugger 용 VM 을 부팅한 뒤, 부팅 관리자에서 Windows 7을 선택합니다.


9. 부팅이 되면 Windbg를 실행한 뒤 File -> Kernel Debug -> COM 을 선택합니다.




10. Debug 용 VM 은 Win7Dbg 를 선택 후 부팅합니다.



11. Debugger 용 VM 에서 Windbg의 출력 화면을 보면 정상적으로 작동되는 것을 볼 수 있습니다.



12. Debug 용 VM 이 부팅이 된 뒤 Break Button 을 누르면 kd> 프롬프트로 바뀌어 명령어를 실행할 수 있습니다.



13. 정상적으로 작동하는지 확인하려면 다음 명령어를 실행합니다.


!sym noisy
.reload



결론

성공적으로 커널 디버깅을 위한 설정을 했습니다. 다음 파트에선 커널을 깊이 파 커널 공간에서의 Stack Overflow 를 분석할 것입니다.


이거 하느라 3일 머리아프게 생각했는데 2시간만에 성공하니깐 허무했다...