DKOM는 커널 옵젝트를 수정해야하기 때문에 일반적으로 DDK를 이용하여 드라이버를 작성하여 구현 한다.
드라이버를 작성할 때는 DDK에서 제공하는 PsGetCurrentProcess() 가 현재 프로세스의 EPROCESS(KPROCESS)의 시작주소를 리턴하기 때문에 쉽게 entry_list의 flink, blink로 접근을 할 수 있고 쓰기 권한도 있기 때문에 숨기고자 하는 프로세스와의 링크를 다 끊어버리고 전, 후 프로세스를 다시 연결해주기만 하면 프로세스를 은닉 할 수 있다.
드라이버를 작성하지 않고 winapi 만 사용하여 구현할 수도 있다.
NtQuerySystemInformation을 사용하여 커널 옵젝트에 접근 하고 AdjustTokenPrivilige로 프로세스에게 debug권한을 주고 NtSystemDebugControl를 사용해 가상메모리를 씀으로 커널 옵젝트를 수정 할 수 있다.
아래의 코드는 windows xp sp3에서 PID를 입력받고 그 process 은닉을 한다.
0 개의 댓글:
댓글 쓰기