반응형

공부해요/리버싱_핵심원리 50

52. Dynamic 안티 디버깅

Dynamic 안티 디버깅의 목적: 내부 코드와 데이터를 리버싱으로부터 감추고 보호하는 것, 원본 프로그램의 핵심 알고리즘 보호하기 위해 사용 예외정상적으로 실행된 프로세스에서 예외 발생 시: SEH메커니즘에 의해 OS에서 예외를 받아 프로세스에 등록된 SEH를 호출디버기에서 예외 발생시: 디버거에서 예외처리 담당둘이 다르게 동작해서 안티 디버깅이 가능하다  SEH대표적인 예외EXCEPTION_DATATYPE_MISALIGNMENT (0x80000002)EXCEPTION_BREAKPOINT (0x80000003)EXCEPTION_SINGLE_STEP (0x80000004)EXCEPTION_ACCESS_VIOLATION ..

51. Static 안티 디버깅

Static 안티 디버깅의 목적Static 안티 디버깅은 디버깅 과정에서 자신이 디버깅 당하는지 여부를 확인하고, 디버깅 중이라고 판단되면 일반 실행과 다른 동작(주로 종료)을 수행하는 기술 구현방법디버거 탐지: 디버거의 존재 여부를 확인.디버깅 환경 탐지: 디버깅 환경의 흔적을 탐지.디버거 강제 분리: 디버거와의 연결을 강제로 해제.  PEB현재 프로세스의 디버깅 여부 판단 위해 PEB를 사용한다. (process environment block)안티 디버깅 시에 사용되는 멤버는 아래와 같다.+0x002 BeingDebugged : UChar+0x00c Ldr : Ptr32 _PEB_LDR_DATA+0x018 ProcessHeap : Ptr32 Void+0x068 ..

50. 안티 디버깅

안티 디버깅을 공부해야 하는 이유1. 각종 안티 디버깅 기법들의 동작 원리를 파악한 후 회피하기 위해서2. 안티 디버깅 기법을 공부하는 과정에서 저절로 고급 리버싱을 배울 수 있음 안티 디버깅 기법이란?고급리버싱 과정디버거와 OS에 강한 의존성이 有 (특정 운영체제에만 동작 or  디버거 종류에 따라 안티 디버깅 기법 상이) 안티 안티 디버깅 기법안티 디버깅을 상대하는 방법 안티 디버깅 분류Static이랑 Dynamic으로 분류Static은 디버깅 시작 시 한 번만 해체해주면 해결되지만 dynamic 기법은 디버깅 진행하면서 안티 디버깅을 만날 때마다 해결해야하므로 난이도가 高 StaticDynamic난이도Low, MediumHigh구현 원리다양한 시스템 정보 활용디버거의 동작 원리 역이용목적디버거 탐지..

49. IA-32 Instruction

IA-32 InstructionInstruction이란 CPU가 알아들을 수 있는 기계어 이다. 명령어 라는거..IA-32 Instruction는 IA-32 계열의 CPU에서 사용되는 명령어를 말하는 것임여기에서 두번째 칸에 보이는 E8 CC27000이나 55이런거가 모두 IA-32 Instruction이다 프로그래밍 언어로 작성된 코드는 컴퓨터가 알아들을 수 있게 compile/Link과정을 거쳐서 위에 형식으로 변환해야된다.  용어정리용어설명Macine Language기계어, CPU가 해석할 수 있는 Binary코드Instruction하나의 기계 명령어 단위OpCodeOperation Code, Instruction 내의 실제 명령어Assembly어셈블리 프로그래밍 언어Assemble어셈블리 코드를 ..

48. SEH

SEH란?Windows 운영체제에서 제공하는 예외 처리 시스템소스코드에서 __try, __except, __finally 키워드로 구현 가능 SEH 예제 실습 #1https://github.com/reversecore/book/blob/master/%EC%8B%A4%EC%8A%B5%EC%98%88%EC%A0%9C/06_%EA%B3%A0%EA%B8%89_%EB%A6%AC%EB%B2%84%EC%8B%B1/48_SEH/bin/seh.exe book/실습예제/06_고급_리버싱/48_SEH/bin/seh.exe at master · reversecore/book리버싱 핵심원리 - 소스 코드 및 실습 예제. Contribute to reversecore/book development by creating an ac..

47. PEB

PEB란?프로세스의 정보를 담고 있는 구조체방대한 크기문서화 된 내용 PEB 접근 방법앞에 TEB설명가지고 생각해보면 FS:[30] = TEB.ProcessEnvironmentBlock = address of PEB 이런 공식을 구할 수 있다. 이 공식을 어셈블리 코드로 만들어보면방법1. 바로 PEB 주소 구하는 방법MOV EAX, DWORD PTR FS:[30]            ; FS[30] = address of PEB 방법2. TEB 주소 구하고 ProcessEnvironmentBlock멤버를 이용하는 방법MOV EAX, DWORD PTR FS:[18]             ; FS[18] = address of TEB MOV EAX, DWORD PTR DS:[EAX+30]           ..

46. TEB

TEB란?프로세스에서 실행되는 스레드에 대한 정보를 담고 있는 구조체스레드 별로 TEB 구조체가 하나씩 할당됨.TEB 구조체는 OS 종류별로 모양이 달라짐 TEB 구조체 정의typedef struct _TEB { BYTE Reserved1[1952]; PVOID Reserved2[412]; PVOID TlsSlots[64]; BYTE Reserved3[8]; PVOID Reserved4[26]; PVOID ReservedForOle; PVOID Reserved5[4]; PVOID TlsExpansionSlots;} TEB, *PTEB;MSDN의 TEB 구조체 설명이다.구조체 내용을 자세히 보기 위해 WinDbg사용(커널 디버거 사용) WinDbg로 비교해보면 W..

45. TLS 콜백 함수

TLS 콜백 함수란?EP 코드보다 먼저 실행됨 EP코드보다 먼저 실행된다는 특징때문에 안티 디버깅에 사용할 수 있다. 실습..https://github.com/reversecore/book/tree/master/%EC%8B%A4%EC%8A%B5%EC%98%88%EC%A0%9C/06_%EA%B3%A0%EA%B8%89_%EB%A6%AC%EB%B2%84%EC%8B%B1/45_TLS_Callback_Function/bin book/실습예제/06_고급_리버싱/45_TLS_Callback_Function/bin at master · reversecore/book리버싱 핵심원리 - 소스 코드 및 실습 예제. Contribute to reversecore/book development by creating an acc..

44. InjDll.exe-DLL 인젝션 전용 도구

InjDll.exe실습예제에서 자주소개되는 프로그램임Windows 2000이상의 운영체제만 지원 https://github.com/reversecore/book/tree/master/%EC%8B%A4%EC%8A%B5%EC%98%88%EC%A0%9C/05_64%EB%B9%84%ED%8A%B8_%26_Windows_Kernel_6/44_InjDll.exe_-_DLL_Injection_%EC%A0%84%EC%9A%A9_%EB%8F%84%EA%B5%AC/bin book/실습예제/05_64비트_&_Windows_Kernel_6/44_InjDll.exe_-_DLL_Injection_전용_도구/bin at master · reversecore/book리버싱 핵심원리 - 소스 코드 및 실습 예제. Contribute ..

43. DLL Injection in Kernel 6

CreateRemoteThread() API사용하는 방법은 xp에서는 잘 되는데 7에서는 다르게 동작함 그래서 DLL 인젝션이 안된다..왜냐면 세션관리 정책이 변경되었기때문https://github.com/reversecore/book/tree/master/%EC%8B%A4%EC%8A%B5%EC%98%88%EC%A0%9C/05_64%EB%B9%84%ED%8A%B8_%26_Windows_Kernel_6/43_DLL_Injection_in_Kernel_6/bin book/실습예제/05_64비트_&_Windows_Kernel_6/43_DLL_Injection_in_Kernel_6/bin at master · reversecore/book리버싱 핵심원리 - 소스 코드 및 실습 예제. Contribute to r..

반응형