본문 바로가기

Security study/CTF

[Reversing] 안티 디버깅(Anti-Debugging)

[1] 안티 디버깅(Anti-Debugging)이란?

-> 디버깅을 방해하여 분석을 하지 어렵게 하는 기술이다.

-> 디버깅 시 디버거 프로그램 종료 또는 에러 발생을 통해 분석을 방해한다.

 

[2] 분류

1. Static

-> 분석 전에 한 번만 해체를 해주면 된다.

-> 디버거를 탐지하여 프로그램이 정상적으로 실행되지 못하도록 한다.

 

2.Dynamic

-> 디버깅을 진행하면서 해당 안티 디버깅 함수를 만날 때마다 해체 해주어야 한다.

-> Static 기법보다 난이도가 더 높다.

 

[3] 다양한 안티 디버깅 기법

1. CheckRemoteDebuggerPresent() Windows API

2. Detecting Breakpoints by CRC

3. Detecting SoftlCE by Opening Its Drivers

4. UnhandledExceptionFilter

5. Hardware Breakpoint Detection

6. INT 2D Debugger Detecton

7. IsDebuggerPresent() Direct PEB Access

8. IsDebuggerPresent() Windows API

9. LordPE Anti Dumping

10. NtGlobalFlag Edbugger Detection

11. Obfuscated RDTSC

12. OllyDbg Filename Format String

13. FindWindow

14. OllyDbg Instruction Prefix Detection

15. OllyDbg INT3 Exception Detection

16. NtSetInformationThread

17. Memory Breakpoint Detection

18. NtQueryInformationProcess()

19. OllyDbg OllyInvisible Detection

20. OllyDbg OpenProcess() HideDebugger Detection

21. OllyDbg OpenProcess() String Detection

22. OllyDbg OutputDebugString() Format String Vulnerability

23. OllyDbg PE Header Parsing DoS Vulnerabilities

24. OllyDbg Registry Key Detection

25. OutputDebugString on Win2K and WinXP

26. PEB ProcessHeap Flag Debugger Detection

27. PeID GenOEP Spoofing

28. PeID OEP Signature Spoofing

29. ProcDump PE Header Corruption

30. RDG OEP Signature Spoofing

31. RDTSC Instruction Debugger Latency Detection

32. Ring3 Debugger Detection via LDR_MODULE

33. Single Step Detection

34. SoftIce Driver Detection

35. SoftIce Registry Detection

36. SoftIce WinICE.dat Detection

37. TLS-CallBack +IsDebuggerPresent() Debugger Detection

38. Using the CMPXCHG8B with the LOCK Prefix