레이블이 reversing인 게시물을 표시합니다. 모든 게시물 표시
레이블이 reversing인 게시물을 표시합니다. 모든 게시물 표시

ANTI DEBUG 기법들(종명이형 강의 간단정리)

ANTI DEBUG
1. snapshot
     process context snapshot

2. checksum

3. packing
     section 권한 체크
     *virtualprotect - 권한 변경 함수
     암호화
     EP는 암호화를 푸는 루틴, 암호화 푸는 루틴이 실행되면서 암호화가 풀리면서 진짜 코드가
     쓰기, 실행가능한 영역에 써짐, 복호화된 코드의 시작이 OEP, 프로그램 실행!

4. garbage code
     prefix, code에 공백등 넣어서 디버거가 파싱하지 못하도록!

5. SEH
     강제로 exception 발생시켜 SEH에 정상루틴처리, 디버거가 물려있으면 SEH루틴 확인을 하기 힘듬

6. PEB
     InDebuggerPresent, FS[30]이용해서 디버거 물려있는지 확인

7. 난독화
     code 난독화로 해석하기 힘들게함

8. Time check (CPU clock check)

9. CC
     디버거의 특성을 이용해서 CC를 복사하는지 확인

10. 가상화
     가상으로 CPU를 만드는 개념
     55/8b ec를 push ebp, mov esp, ebp로 해석하지만 가상 cpu를 만들어서
     예를들면 66/92 d3를 push ebp, mov esp, ebp로 해석하도록 함

11. Control flow 난독화
     check값에 맞는 opcode를 수행, check++등을 이용해서 다음 opcode로 이동
     check 값을 전역변수로 놓으면 찾기 힘듬

*더미다는 10, 11을 기반으로 만들어진 패커
Read more

process 생성시 debugger로 물기

디버깅을 하다보면 프로세스가 createprocess나 resumethread로 새로운 프로세스를 실행 시키는 경우가 있다.
새롭게 로딩된 프로세스를 디버깅하기 위해서는 레지스트리 키값을 생성 해주면 된다.




위 그림과 같이 

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options/ 

밑에 새롭게 로딩되는 프로세스 이름을 키값으로 생성하고 프로세스 이름키 안에 문자열값인 Debugger 값을 추가하고 데이터에 디버거의 절대 경로를 추가하면 된다.

calc.exe를 실행 하면 ImmunityDebugger에 물리게된다.
Read more