[#] ShHelper update
[0x00] Concept
기존에 루트킷을 개발하거나, 다양한 PoC 코드를 개발할 때 사용하던 템플릿을 공유합니다.
이를 공유하는 이유는 다양한 이슈를 제보받음으로써 개발력을 좀 더 향상시키기 위함입니다.
[0x01] Features
루트킷에 들어간 기능들은 대부분 비공개로, 안티 치트 업무에 있어서는 치명적일 수 있는 부분이 분명 존재하기 때문에 포함되지 않습니다.
Mini Filter
와 Object Callback
, Notify Routine
에 대한 간단한 예제가 포함되어 있습니다.
주요 기능 몇 가지만 소개하도록 하겠습니다.
[-] Pe Parser
기본적인 PE
포맷을 파싱하기 위한 기능입니다.
[-] Process
프로세스의 정보들과 메모리 관련 루틴들이 포함되어 있습니다.
프로세스와의 통신 등의 용도로 활용 가능한 공유 메모리 생성 기능이 포함되어 있습니다.
VAD
관련 기능은 포함되지 않습니다.
[-] Global Offset
InitializeOffset_Unsafe
루틴은 서비스 제공자는 사용하지 않는 것이 좋습니다.
버전 별 오프셋을 제공하지만, 지속적인 업데이트가 필요하기 때문입니다.
가장 현명한 방법은 심볼을 이용하는 것 입니다.
실제 루트킷의 경우 유저 애플리케이션에서 심볼을 파싱한 후 이를 드라이버로 전달하여 설정하는 방법을 사용합니다.
또는 버전과 관계없이 동일한 루틴을 이용하여 오프셋을 찾는 방법이 있습니다.
하지만 이 방법 또한 지속적으로 관찰이 필요한 부분입니다.
[-] Pool Manager
메모리 관리는 어려운 과제 중 하나라고 생각했습니다.
때문에 풀을 용도에 맞게 미리 할당하고 이를 사용하는 방식으로 구현하였습니다.
최종적으로 드라이버가 언로드될 때는 미리 할당된 풀들을 해제함으로써 메모리 관리를 조금 더 수월하게 하려고 구성하였습니다.
[0x02] Conclusion
단지 개발의 편의성을 위해 만들어 둔 템플릿 입니다.
이를 활용한 프로젝트가 https://github.com/Shhoya/Shh0yaTool 입니다.
많은 피드백 부탁드리겠습니다.