반응형

최근 간단하게 행위 기반 탐지로 프로젝트를 잡고 구현중에 있는데,


처음 진행할 건 DLL Injection을 막는 것, 이건 32bit 환경에선 SSDT 후킹을 통해서 진행하려고 한다.


별 다른건 없으니 진행하도록 하겠다.





DLL Injection을 탐지하는 방법을 생각해본 결과 아래와 같이 4가지 정도가 있었다.


1. CreateRemoteThread, WriteProcessMemory 등의 함수 글로벌 후킹


2. IDT 참조 후 실제 프로세스에서 사용중인 DLL과 비교


3. 현재 로딩된 DLL을 리스트로 잡아놓고 비교


4. SSDT 후킹으로 ZwCreateThreadEx 변경





현재 2, 3번은 구현을 완료했고 별건 없었다.


1번도 간단하게 제작 가능하다만, 문제는 4번이였다.


스레드를 생성하는 함수는 CreateThread(Ex), CreateRemoteThread(Ex) 이런게 있는데


CreateThread나 CreateRemoteThread나 각각 Ex함수로 Wrapping되버리고


Ex함수들은 ZwCreateThreadEx함수를 호출하게 된다.


CreateThread가 CreateThreadEx로 Wrapping되버려 Ex의 다른 인자값인 다른 프로세스의 핸들이 없다.


그 때문에 0xFFFFFFFF 로 넣어주고 호출해준다.


CreateRemoteThread는 핸들이 있으니 그 핸들을 넣어주고 호출해줌.

'Project' 카테고리의 다른 글

[행위기반탐지] 삽질2  (0) 2017.02.01
[행위기반탐지] 삽질 1  (0) 2017.01.31
[Project] Console Web  (0) 2016.05.18
[Project] Interpret Nyan  (0) 2016.03.13
Project_1 :: iptime 펌웨어 뜯어보기  (1) 2014.11.21
블로그 이미지

KuroNeko_

KuroNeko

,