일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CodeEngn
- .net
- 분석 보고서
- dotPeek
- UTF-16
- Dynamic안티디버깅
- 리버싱
- x32dbg
- ImageSwitching
- Self-Creation
- 서비스디버깅
- PEImage
- 서비스프로세스
- OllyDbg
- RedLine Stealer
- JIT
- Advanced안티디버깅
- IL코드
- PEImageSwitching
- Python
- Exe2Aut
- 안티디버깅
- 리버싱핵심원리
- Static안티디버깅
- Visual Studio
- UTF-32
- 디버깅
- hxd
- DebugBlocker
- CP949
- Today
- Total
-榮-
[CodeEngn] Basic RCE L04 (+α IsDebuggerPresent 우회) 본문
● CodeEngn Basic RCE L04 문제
디버거를 탐지하는 함수의 이름은 구글링을 통해 쉽게 찾을 수 있지만
주어진 파일을 분석하여 파일에서 사용된 디버거 탐지 함수를 찾아봅시다.
◎ 파일 실행 화면
◎ 패킹 및 난독화 여부 확인
● CodeEngn Basic RCE L04 분석 및 풀이
디버거를 탐지하는 함수를 찾기 위해 [Animate Step Over(Ctrl + F8)] 명령을 진행하다 보면 중간에 멈추고, CMD화면에 '디버깅 당함'을 출력합니다.
CALL 0040100F에 [Step Into(F7)]하여 진행하다보면 IsDebuggerPresent 함수를 발견하게 됩니다.
(함수 이름으로 IsDebuggerPresent 함수가 디버거를 탐지하는 함수라는 것을 알 수 있습니다.)
[Step Over(F8)]로 진행하면, 00401074의 CALL 함수에서 '디버깅 당함'을 출력하는 것을 볼 수 있습니다.
[그림 6]을 보면 [0040106D]는 분기점이며, [CALL 00408190]은 CMD창에 출력하는 함수로 예상됩니다.
또한 00431024에는 '디버깅당함', 0043101C에는 '정상'이 있을 것으로 예상됩니다.
Dump window에서 확인해 보면 해당 ASCII를 확인할 수 있습니다.
따라서, 분기점 위의 [00408210] 와 IsDebuggerPresent 중에 디버거를 탐지하는 함수가 있다는 것을 추측 가능합니다.
◎ CALL 00408210
[CALL 00408210]에서는 바로 RETN 되어서 나오는 것이 확인됩다.
◎ IsDebuggerPresent
IsDebuggerPresent의 반환 값은 1은 디버거에서 실행 중을 의미하고, 0은 디버거에서 실행 중이 아님을 의미합니다.
+α IsDebuggerPresent 우회
IsDebuggerPresent 우회하는 2가지 방법
- 반환 값을 0으로 변경
- IsDebuggerPresent 함수를 MOV EAX, 0으로 패치
1. 리턴 값을 0 으로 변경
매번 변경해 주어야 되기 때문에 L04 문제처럼 반복해서 IsDebuggerPresent 함수에 접근하는 경우, 다른 방법을 추천합니다.
2. IsDebuggerPresent 함수를 MOV EAX, 0으로 패치
기존의 IsDebuggerPresent Code가 6Byte이었기에, 1Byte가 NOP으로 대체됩니다.
'CodeEngn > Basic' 카테고리의 다른 글
[CodeEngn] Basic RCE L07 (0) | 2021.03.23 |
---|---|
[CodeEngn] Basic RCE L06 (0) | 2021.03.21 |
[CodeEngn] Basic RCE L05 (+α UPX 패킹 상태에서 OEP 찾는 법) (0) | 2021.03.21 |
[CodeEngn] Basic RCE L03 (+α All intermodular calls) (0) | 2021.03.20 |
[CodeEngn] Basic RCE L01 (+α 패치파일 만드는 법) (0) | 2021.03.20 |