process hollowing (프로세스 할로윙)은, 악성코드가 탐지를 회피하기 위해 사용하는 방법으로,
탐지 솔루션이 well known process는 검사를 하지 않는 점을 이용하였다.
탐지 솔루션은 다음과 같은 구조로 설계 되었다고 추측한다.
실제 탐지 솔루션의 코드를 볼 수는 없었기 때문에, 순수히 추측을 통해서 만든 자료임을 참고 해 주었으면 한다.
Well known은 explorer, winlogon같은 process가 존재하고
Unknown은 DB에 없는 process나, cmd와 같이 악용 가능한 process가 검사목록에 존재한다고 가정한다.
다음과 같이, 검사 대상이 비 검사 대상을 실행하는 구조일때, 비 검사 대상은 당연히 검사 목록에서 제외된다.
이 점을 이용하여 솔루션의 감시를 벗어나는 방법이 process hollowing이다.
process hollowing 기법을 실행하려면, 다음의 과정을 거쳐야한다.
1. create process at suspended condition
2. get base address of created process
3. unmap
4. reallocation
5. write
6. context setting
7. resume
다음 과정중 필요한 WINAPI 이다.
1. CreateProcess
2. CreateFile
3. NtQueryInformationProcess (get remote PEB)
4. VirtualAllocEx
5. WriteProcessMemory
6. GetThreadContext & SetThreadContext
7. ResumeThread
::해당 기법의 구현 성공::
::추가 정보::
(2020-09-02) 기준 Avast라는 솔루션은 이미 해당 기법에 필요한 WINAPI를 후킹하여 감시하고있었다.
따라서 해당 기법을 실제로 악용하려면 해당 WINAPI에 대한 언후킹이 필요하다.
필자는 언후킹이후 실제 솔루션을 우회하여 실습하였다.
'리버싱' 카테고리의 다른 글
해킹의 방어에 대한 개인적인 생각 (1) | 2020.09.02 |
---|---|
64비트 프로세스 은닉 (3) | 2020.04.09 |
reversing.kr (Replace.exe) (1) | 2020.03.27 |
reversing.kr (Music_Player.exe) (0) | 2020.03.27 |
reversing.kr (Easy_UnpackMe.exe) (0) | 2020.03.27 |