2015년 11월 24일 화요일

4. Direct Kernel Object Manipulation(DKOM)_Process Stealth

Kernel Debugging을 통한 DKOM 시도(Process Stealth)

우선 대상을 notepad.exe로 하겠다.  notepad.exe 의 실행 주소를 확인하기 위해 windbg를 이용하여 아래와 같은 command한다. (windbg에 대한 사용 법은 검색하면 많이 볼 수 있으니 pass~~)


간략하게 이 명령어에 대해서도 설명해 보도록 하겠다.

!process 0 0

보통 위와 같은 방식으로 사용하는데, 이는 모든 프로세스들의 정보를 가장 간단하게 보여달라는 뜻이 된다.

좀 더 자세히 설명하면, 앞에 있는 첫 번째 0은 '모든 프로세스'를(process) 의미하며 두 번째 0은 보여주는 정도(flag)를 나타내는 것으로 '가장 간단하게'라는 의미를 갖는다. 그럼 우리는 notepad.exe의 프로세스 정보가 필요하기 때문에 위와 같이 '!process 0 0 notepad.exe'라는 command를 사용하는 것이다.  flag 값에 대해서 더 설명하면 '7' 값을 넣으면 자세히 보고 싶다는 의미가 된다.

다음으로는 EPROCESS의 주소가 필요하다. notepad의 EPROCESS의 주소를 알아내기 위해서는 아래와 같은 command를 사용할 수 있다.


위의 명령어는 ' dt _EPROCESS [대상파일의 실행 주소값] '을 입력한 것이다. 위와 같은 command를 입력하면 많은 정보를 확인 할 수 있다. 이 중 가장 중요시 볼 부분은 바로 ActiveProcessLinks인 _LIST_ENTRY 부분이다. 바로 +0x88인 부분이다. 그럼 이제 _LIST_ENTRY 부분을 살피기 위해 아래와 같은 dd 명령어를 사용하도록 하자.


아래 명령어는 'dd [대상파일의 실행 주소값] + 0x88 '을 입력한 것인데, 곧, 대상 파일의 실행 주소값 부터 0x88까지의 값을 확인한 것이다.

blink : 0x8909b518
flink : 0x89095bd8

그럼 이제 blink와 flink만 정리하면 된다.


ed [blink] [flink]
ed [flink + 0x4] [blink]
go

그러면 아래와 같이 talklist에서 notepad.exe를 볼 수 없게 된다.



댓글 없음:

댓글 쓰기