오랜만에 글 쓰는 것 같습니다.
동아리 회장을 맡으면서 공부를 못했던 거 같아 정신차리고 공부하는 내용 하나 적겠습니다.
원본 글 : https://rootkits.xyz/blog/2017/06/kernel-setting-up/
소개
[원본]
최근에 HackSysTeam이 nullcon에서 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를 연 뒤 아래의 명령어를 실행합니다.
5. 이제 Debugger VM의 연결된 클론을 만들어 Debug VM을 만듭니다.
6. Debugger 용 VM을 종료한 뒤 시리얼 포트를 추가합니다.
[Windbg 가 설치된 Debugger 용 VM]
7. 마찬가지로 Debug 용 VM 도 시리얼 포트를 추가해줍니다.
[Debug 용 VM]
9. 부팅이 되면 Windbg를 실행한 뒤 File -> Kernel Debug -> COM 을 선택합니다.
10. Debug 용 VM 은 Win7Dbg 를 선택 후 부팅합니다.
11. Debugger 용 VM 에서 Windbg의 출력 화면을 보면 정상적으로 작동되는 것을 볼 수 있습니다.
12. Debug 용 VM 이 부팅이 된 뒤 Break Button 을 누르면 kd> 프롬프트로 바뀌어 명령어를 실행할 수 있습니다.
13. 정상적으로 작동하는지 확인하려면 다음 명령어를 실행합니다.
결론
성공적으로 커널 디버깅을 위한 설정을 했습니다. 다음 파트에선 커널을 깊이 파 커널 공간에서의 Stack Overflow 를 분석할 것입니다.
이거 하느라 3일 머리아프게 생각했는데 2시간만에 성공하니깐 허무했다...