일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- BOF
- 소프트맥스함수
- 파이썬신경망
- 딥러닝파이썬
- 백준알고리즘
- 정보보안
- 활성화함수파이썬
- 버퍼오버플로우
- C알고리즘
- 신경망구현
- BOJ
- c언어
- 스트림암호
- 딥러닝
- 신경망파이썬
- 신경망 학습
- 달고나bof
- C언어 알고리즘
- 항등함수
- FTZlevel10
- 알고리즘
- 백준
- 신경망
- 파이썬
- 밑바닥부터시작하는딥러닝
- 머신러닝
- 보안
- 8086CPU레지스터
- C언어알고리즘
- 인공지능
- Today
- Total
HeeJ's
[18] dlllist 우회하기(2)(DLL/THREAD) :: Anti Memory Forensics/Volatility 본문
[18] dlllist 우회하기(2)(DLL/THREAD) :: Anti Memory Forensics/Volatility
meow00 2020. 8. 14. 02:14[17] dlllist 우회하기(1)(DLL/THREAD) :: Anti Memory Forensics/Volatility
이어서
2. DLL 하나씩 은닉하기
LDR_DATA_TABLE_ENTRY 구조체의 InLoadOrderLinks, InMemoryOrderLinks 값 변조
은닉해볼 필드: C:\Windows\System32\ntdll.dll
inLoadOrderLinks와 InMemoryOrderLinks의 Flink값은 IMGSF50Start_x86.exe의 LDR_DATA_TABLE_ENTRY를 가리킨다.
IMGSF50Start_x86.exe의 세 필드가 가리키는 Flink값을 wow64.dll을 가리키도록 한다.
MalwareProcess의 물리주소(0x1DABB600)에서 0x338만큼 이동해 PEB주소를 확인해주었다.
이 값(0x7EFDF000)을 물리주소로 바꾸어준 후, 그 주소로(0x11CC000) 따라가주었다.
PEB의 물리주소에서 0x18만큼 떨어진 곳에서 LDR값인 0x773D2640을 확인할 수 있다.
LDR 주소는 _PEB_DRL_DATA 구조체를 가리키기 때문에
이 값의 물리주소(0x91E640)로 이동해주었다.
_PEB_LDR_DATA 구조체로 이동한 후, 10만큼 이동해 InLoadOrderLinks의 주소를 확인해주었다.
이 값을 따라가면 _LDR_DATA_TABLE_ENTRY 구조체로 이동할 수 있기 때문에
이 값의 물리주소(0x174E66E0)로 이동해주었다.
IMGSF50Start_x86.exe(Process)의 InLoadOrderLinks 값과 InMemoryOrderLinks 값을 확인할 수 있었다.
이 값들은 다음 DLL로 넘어갈 수 있는 Flink값으로,
_LDR_DATA_TABLE_ENTRY 구조체 내의 프로세스와 DLL들이 Flink값으로 이동할 수 있다.
그래서 다음 DLL인 ntdll.dll로 넘어가기 위해 0x003727D0과 0x003727E0의 물리주소로 이동해보았다.
이 값들은 다음 DLL인 wow64.dll을 가리키는 Flink값이다.
이 값들을 앞의 IMGSF50Start_x86.exe(Process)의 InLoadOrderLinks 값과 InMemoryOrderLinks값에 넣어 변조해주면 Process의 Flink가 wow64.dll을 가리키게 되면서 ntdll.dll이 은닉된다.
IMGSF50Start_x86.exe(Process)의 InLoadOrderLinks와 InMemoryOrderLinks Flink 값을
wow64.dll을 가리키게 변조해주었다.
ntdll.dll 은닉 성공!