www.zap.pe.kr

admin login

Windows Internals

MS社는 윈도우즈 시스템에 대한 대부분의 정보를 개발자에게 공개하지 않았습니다. 따라서 모든 개발자는 MSDN이나 DDK문서에 기술된 표준화된 API와 방법론으로 시스템에 접근해야 하죠. 하지만 시키는데로 한다는건 무지 짜증나는 일입니다. 정말 지루하죠. 그런 이유로 이 섹션에서는 MSDN이나 DDK에 기술되지 않는 방법으로 윈도우즈 시스템에 접근하고, 그 기능이나 정보를 수정하는 내용을 제공할 예정 입니다. 주제가 주제이다 보니 상용 보안 프로그램에 영향을 끼칠 정도로 악용될 소지가 있는 자료들도 생길 수 있습니다. 때문에, 문제가 될것 같은 자료에 대해서는 미리 판단하여 소스를 공개 하지 않도록 하겠습니다.



ksthb v1.0 - 2005년 9월 1일

이번 자료는 SDT에 관련된 기존 커널 해킹 문서들이 잘못되었음을 지적하고자 하여 만든 툴입니다. 정확히 말해 KiServiceTable 후킹에 관한 문서인데, 문서대로 하자면 서비스 테이블의 Entry를 수정함으로서 이 서비스를 요청하는 모든 스레드의 동작을 후킹할 수 있습니다. 하지만 이것이 성립하기 위해서는, 모든 스레드가 이 서비스 테이블을 사용해야 한다는 전제가 뒤따라야 하는데, 실제로 테스트 해 본 결과 이것은 임의로 수정이 가능했습니다. 즉, 스레드가 사용하는 SDT와 KiServiceTable을 임의로 제작된 테이블에 연결시키면 더이상 SDT 후킹은 동작하지 않는 것이죠. ksthb는 이 사실을 실제 확인시켜 주는 툴로, ksthb로 타겟팅된 프로세스가 MemoryDefender에 의해 어떤 영향도 받지 않는 모습을 스샷을 통해 확인 하실수 있습니다. ^^





  • ksthb_v10.zip - XP동작. 시스템에 따라서 재부팅 될 수 있습니다. 주의 하세요.



Application Checker v1.1 - 2006년 2월 13일

Kernel Checker와는 반대로 윈도우즈에 로드된 어플리케이션 프로세스들의 안전성을 체크하는 보안툴 입니다. 다른 프로세스의 데이터를 조작하거나 악의적인 코드를 삽입하는 프로그램이 극성이어서, 모니터링 용으로 만들었다가 기능 몇가지를 추가하여 홈페이지를 통해 공개한 것입니다. 현재 v1.0은 IAT 및 모듈의 익스포트된 함수들이 후킹되었는지를 확인하는 기능을 갖고 있고, 추가적으로 Kernel Checker가 지원하는 메모리 덤프나 코드 디스어셈블 기능도 지원하고 있습니다. (Kernel Checker가 갖고있는 대부분의 기능을 지원하려고 생각 중입니다.) 아래는 WPE 툴을 이용해 후킹한 프로세스를 체크한 스샷 입니다. ^^





  • achecker_v11.zip - 2K, XP, 2K3 동작. 이 프로그램은 디바이스 드라이버를 사용하지 않습니다.



HandleInjector v1.0 - 2005년 8월 18일

프로세스의 커널단에 있는 핸들 테이블을 조작하는 간단한 툴 입니다. Handle Injector는 크게 3가지 기능을 갖고 있는데, 첫번째로 접근이 금지된 프로세스를 PROCESS_ALL_ACCESS권한으로 오픈하는 기능입니다. 보통 상용 드라이버들이 어느 특정 프로세스로의 접근을 막기위해 커널 함수를 후킹하여 이를 차단하는데, Handle Injector는 이런 루틴들을 거치지 않고 직접 핸들테이블을 수정하기 때문에 오픈이 가능 합니다. 두번째로, 다른 프로세스가 사용하고 있는 핸들을 복사해오는 기능, 마지막 세번째로, 핸들의 접근 권한을 새롭게 바꾸는 기능이 있습니다. 자세한 것은 아래 스샷을 참고하시면 됩니다. 참고로 XP만 리버싱 해봤기 때문에 다른 운영체제는 현재 지원하지 않습니다.





  • hinjector_v10.zip - XP동작. 시스템에 따라서 재부팅 될 수 있습니다. 주의 하세요.



MemoryDefender v1.1e - 2005년 9월 9일

실행중인 특정 프로세스의 메모리를 보호하는 용도의 보안툴 입니다. Memory Defender는 크게 두가지 기능을 가지고 있습니다. 첫번째로 특정 프로세스의 메모리가 다른 프로그램에 의해 읽혀지거나 쓰여지는걸 방지하는 기능으로, 일반적인 상용 보안툴과 그 원리가 동일합니다. 두번째 기능은 메모리 R/W 모니터링 기능으로, 악성 프로그램의 동작을 관찰하고 분석하는 용도를 위해 제공합니다. 모니터링 기능으로 크랙툴을 관찰 할 경우, 어떤 방식으로 타켓 메모리 주소를 추적하는지, 어떤 데이터가 수정되는지를 알 수 있습니다. 아래는 이 두가지 기능을 예시 해놓은 스샷 입니다. (Memory Defender는 Anti-Debugger 코드가 들어가 있기 때문에 절대 SoftICE나 기타 보안툴과 함께 사용하시면 안됩니다.)





  • mdefender_v11e.zip - 2K, XP동작. 시스템에 따라서 재부팅 될 수 있습니다. 주의 하세요.



KernelChecker v2.5a - 2006년 2월 13일

윈도우즈 커널에 상주하는 모든 모듈과 오브젝트들의 안전성을 체크하는 보안툴 입니다. 악성 코드나 드라이버에 의해 커널 정보들이 변경 되었을 시에, 이를 탐지해주고 빠르게 복구 가능하도록 여러 정보를 제공해 줍니다. 현재 제공되는 v2.0은 v1.0에 비해 향상된 명령어 구조와 더 많은 커널 정보들을 확인 할 수 있도록 하는 기능들이 추가 되었습니다. 또한, 실행 속도가 눈에 띄게 빨라졌으며 여러 버그로 인해 재부팅 되던 문제 또한 수정 되었습니다. 아래는 KChecker를 이용해 각 커널 모듈과 오브젝트들의 안전성을 체크하는 모습을 담은 스크린 샷 입니다. 문제가 발생할 소지가 있는 스크린샷에 대해선 자체 심의조정 했습니다. (KernelChecker는 해킹툴이 아닙니다. 오해없으시길... ^^)





  • kchecker_v25a.zip - 2K, XP동작. 시스템에 따라서 재부팅 될 수 있습니다. 주의 하세요.



FingerPrint (Hooking Keyboard Drivers for Keystroke Sniffing) - 2004년 6월 5일

키보드 드라이버를 후킹하여 키 스트로킹 메세지를 가로체는 드라이버와 이를 사용하는 어플리케이션 입니다. 가끔 프로그램을 개발하다 보면 원본 키 스트로킹 메세지를 사용할 때가 있는데, 이를 매번 가져오기가 번거로워서 하나 만들어 봤습니다. PS/2 나 USB 키보드 모두에서 동작하니까 사용하시는데 별 불편함이 없으실 겁니다. 그리고 이걸 만들면서 생각한 건데, 아래의 Monster와 이걸 합하면 보안 드라이버에 걸리지 않고도 사용자의 키 스트로킹 메세지를 전부 외부로 빼돌릴수가 있겠더군요. 참 재미있죠? 어플리케이션과는 다른 묘한 재미가 있네요. 어쨌든 필요하신분은 사용해 보세요. 악성 코드는 없으니 안심하시구요. ^^





  • fingerprint.zip - 9X, ME, 2K, XP동작. 시스템에 따라서 재부팅 될 수 있습니다. 주의 하세요.



The Monster (Hooking Protocol Drivers for Packet Sniffing) - 2004년 5월 14일

네트워크 패킷을 캡쳐하는 유틸리티 입니다. MFC로 만들어진 어플리케이션 부분과 이를 지원해주는 디바이스 드라이버로 이루어져 있습니다. 기존의 패킷 캡쳐 유틸리티와는 달리, Monster는 특정 프로토콜 드라이버(혹은 시스템 전체 프로토콜 드라이버)의 패킷만을 가져올 수 있습니다. 또한 캡쳐 도중 패킷을 손실하지 않으며, 네트워크 속도에 영향을 거의 미치지 않습니다. (좀더 적은 부하를 위해 필터링을 제공 합니다.) 아래의 스크린샷 중, 첫번째는 TCP/IP 프로토콜 드라이버와 PSCHED 프로토콜 드라이버를 통해 오가는 패킷만을 캡쳐한 모습이고, 두번째는 vmware를 통해 오가는 패킷만을 캡쳐한 모습입니다. 네트워크 어플리케이션을 제작할때 쓸려고 만들고 있는건데 다른 분들에게도 유용하게 쓰이리라 생각 됩니다. ^^





  • monster.zip - 2K, XP동작. 시스템에 따라서 재부팅 될 수 있습니다. 주의 하세요.



Library

작업 도중 정리해 놓은 문서들 입니다.



References

공개 툴

  • dumpchk.zip - 윈도우즈 덤프 파일 분석을 위한 툴.

참고 소스

  • PE.exe - zip. Matt Pietrek씨가 작성한 소스와 프로그램. PE헤더의 구조를 엿볼수 있는 툴.
  • APISPY32.zip - zip. Matt Pietrek씨가 작성한 소스와 프로그램. API 후킹 예제 소스.
  • PEPASSP.zip - zip. PE 형식의 실행파일에 암호를 넣는 프로그램의 소스.

관련 문서

참고 서적

홈페이지 링크