Hooking

 

  후킹(Hooking)은 소프트웨어 공학 용어로 운영체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. 이때 이러한 간섭됩 함수 호출, 이벤트 또는 메시지를 처리 하는 코드를 후크(Hook)라고 한다. 크래킹(불법적인 해킹)을 할 때 크래킹 대상 컴퓨터의 메모리 정보, 키보드 입력 정보 등을 빼돌리기 위해서 사용되기도 한다. 일반적으로 후크는 소프트웨어가 이미 실행중일때 삽입되지만, 후킹은 응용 프로그램이 실행되기도 전에 쓰일 수 있는 전략이다.

 

 1) 물리적 수정 : 응용프로그램이 실행되기 전에 리버스 엔지니어링 기법으로 실행 또는 라이브러리를 물리적 수정함으로써 후킹을 할 수 있다. 이러한 기법은 일반적으로 다른 모니터로 함수 호출을 가로채거나 기긋덜이 완전히 다른 함수로 대체하는데 사용된다.

 

  2) 런타임 수정 : 운영체제와 소프트웨어는 후크를 삽입하는 프로세스에 충분한 권한이 부여된 경우 런타임 도중 이벤트 후크를 쉽게 삽입할 수 있다. 예를 들어, Microsoft Windows 에서는 대화상자, 스크롤바 및 메뉴뿐만 아니라 다른 항목에 대한 시스템 이벤트와 응용 프로그램 이벤트를 처리하거나 수정하는데 사용될 수 있는 후크를 삽입 할 수 있다. 또한 후크는 키보드 및 마우스 이벤트를 삽입, 제거, 수정이 가능하다. 리눅스에서는 후크가 넷필터를 통해 커널 내의 네트워크 이벤트를 처리 하기 위해 비슷한 방식으로 사용될 수 있는 또 다른 예를 제공한다.

 

 - 출처 : 위키 백과 

 

'0x012 Etc' 카테고리의 다른 글

[Term] Debugging | Anti-Debugging  (0) 2017.12.29
[Term] Packing  (0) 2017.12.29
[Term] Malware  (0) 2017.12.29
[Term] Exploit  (0) 2017.12.29
[Term] Zero-Day Attack  (0) 2017.12.29

Immunity Debugger는 13가지 후킹 기능을 지원하며 각 후킹은 독립 스크립트로 구현하거나 PyCommand 내부에서 구현할 수 있다.

 1) BpHook/LogBpHook : 브레이크 포인트가 발생될 때 호출 된다. BpHook는 대상 프로세스를 일시 정지 시키지만 LogBpHook는 그렇지 않다.
 2) AppExecptHook : 종류에 상관없이 예외가 발생하는 경우 호출된다.
 3) PostAnalysisHook : 디버가가 로드된 모듈에 대한 분석 작업이 끝났을 때 호출된다. 
 4) AccessViolationHook : 접근 위반이 발생할 때 마다 호출 된다.
 5) LoadDllHook/UnloadDllHok : DLL Load/Unload 시 호출 된다. 
 6) CreateThreadHook/ExitThreadHook : 스레스 생성 및 소멸 시 호출 된다.
 7) CreateProcessHook/ExitProcessHook : 프로세스 생성 및 소멸 시 호출 된다. 
 8) FastLogHook/STDCALLFastLogHook : 대상 프로세스의 특정 레지스터 값이나 메모리 주소를 로깅한다.

출처 : 파이썬 해킹 프로그래밍

'0x003 Reversing > 04. Theory' 카테고리의 다른 글

[Linux] ShellCode 제작 방법  (0) 2017.12.29
[Tip] IDA Map 연동  (0) 2017.12.29
[Tip] IoT 펌웨어 분석 환경 구성  (0) 2017.12.29
[Tip] Process 내 DLL 주소 찾기  (0) 2017.12.29

+ Recent posts