'후킹'에 해당되는 글 2건

  1. 2012.01.22 Hooking의 종류
  2. 2012.01.20 Direct3D Hooking 분석 해봤습니다. 13
프로젝트/D3D Hooking2012. 1. 22. 16:56


창과 방패 및 d3d hooking 분석 작업을 하면서 hooking 의 방어 방법에 많은 생각을 하게 되었습니다.

먼저 방어 방법에 앞서 hooking 에는 무슨 종류가 있는지, 또 어떤 방법으로 후킹 하는지에 대해 알아보고

막을 수 있는 방법에 대해 연구해보도록 하겠습니다.

먼저 웹서핑을 통해 정리가 깔끔하게 되어있는 후킹의 분류에 대해 퍼왔습니다.



API Hooking은 크게 유저모드와 커널모드 두가지로 나뉜다.

 

 

User-Mode Hooking
 

  • IAT(Import Address Table) Hooking: IAT 에 적혀있는 API 의 주소를 자신의 함수주소로 바꾸고 자신의 함수 끝에 다시 원래 API 주소로 돌려주는 방식. 가장 일반적으로 바이러스에서 사용하는 기법.

  • Inline Function Hooking (Detour Hooking): 사용할 API 의 첫 5바이트를 자신의 함수주소로 Jmp 하는 코드로 바꾸고 자신의 코드에서 다시 원래 API 의 바뀐 코드를 수정해주고 API 시작위치로 돌려주는 방식. IAT 후킹보다 지능적이여서 찾아내기가 쉽지 않다. 요새 많이 등장한다.

 

Kernel-Mode Hooking (루트킷)
 

  • SSDT(System Service Descriptor Table Modification): SSDT 가 가리키는 주소를 후킹 함수의 주소로 바꾸고 그 함수 호출후 다시 원래 커널 API 의 주소로 돌려주는 기법. 50% 이상의 루트킷이 사용하는 기법. 이런 기법은 프로세스, 파일의 은폐에 많이 사용됨.

  • DKOM(Direct Kernel Object Modification): 커널 Object 를 직접 조작해서 실행되는 프로세스, 스레드, 서비스, 포트, 드라이버 및 핸들의 Entry 를 실행리스트(PsActiveProcessHead, PsActiveModuleHead....)에서 감추는 기법.

  • SYSENTER: 유저모드에서 시스템 호출로 넘어갈때 INT 2E(for Windows 2000)/ SYSENTER 를 사용하게 되는데 호출후 시스템 서비스의 핸들러는 IA32_SYSENTER_EIP 라는 레지스터리에 저장된다. 커널 드라이버를 설치하여 해당 값을 수정하여 루트킷을 호출하고 다시 원래 값으로 돌려주는 기법.

  • Filter Device Drivers: 시큐리티 제품의 하단에 filter device driver 로 등록하는 기법이다. 부트 타임에 로드됨으로써 다른 어떤 안티바이러스 제품보다 먼저 실행된다.

  • Runtime Detour Patching: 커널 메모리를 직접 조작함으로써 그 메모리의 포인터가 루트킷을 가르키게 함으로써 커널 함수들을 후킹하는 기법. 예를 들면 Exception 을 일으키고 Exception Handle 을 컨트롤하는 IDT 레지스터를 자신을 가리키는 주소로 써줌으로써 후킹목적을 달성한다.

  • IRP table Modification: 디바이스 드라이버가 네트웍 패킷을 처리하거나 파일을 쓸때 사용하는 I/O Request Packets을 제어하는 Dispatch Routine 은 DEVICE_OBJECT 구조체에 저장된다. 바이러스에서 사용하는 루트킷은 IoGetDeviceObjectPointer 란 API를 사용하여 DEVICE_OBJECT 구조체에서 DRIVER_OBJECT 의 위치를 선정해줄수 있다. 즉 다른 Original Driver Call 이 일어나기 전에 자신의 루트킷을 먼저 실행하여 Call 결과를 조
    작한다.
     
출처 : http://cafe.naver.com/cheatenginekorea.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=25962

'프로젝트 > D3D Hooking' 카테고리의 다른 글

Direct3D Hooking 분석 해봤습니다.  (13) 2012.01.20
Posted by NullBr4in
프로젝트/D3D Hooking2012. 1. 20. 05:03


분석한지는 좀 됬지만..
문서 작업하는게 오래걸려서 이제서야 업로드 합니다.

해당 문서에는 D3D Hooking 소스를 분석한 자료가 들어 있습니다.
Hooking 하면서 사용된 Detours Hooking 기술과 vTable에 대한 내용도 같이 들어가 있습니다.

본 문서의 목적은.. 문서에서 가장 맨 앞에 써놔서 그걸 그대로 여기다 씁니다..
-----------------------------------------------------------------------------------
보안 분야를 공부하고 연구하는 입장에서 해당 D3D Hooking 에 대해 방어할 방법을 찾기 위해
D3D Hooking 소스를 분석해 보았으며 본 문서에선 d3d 관련 파일들을 분석하며 알아낸 내용들
을 다른 분들과 정보공유를 통해 좀 더 깊은 내용을 배우고 방어 방법에 대해 같이 생각해보기
위해 부족한 실력에도 불구하고 이렇게 문서를 작성하게 되었습니다. 끝으로 D3D Hooking을
연구 하면서 얻은 기술이나 지식을 공유하고자 최대한 노력하여 본 문서를 작성하였습니다.
------------------------------------------------------------------------------------- 
말그대로 방어하기 위해 소스를 분석했습니다.  





제 인생에서 첫 블로그, 첫 게시글, 그리고 첫 문서네요 

앞으로 잘 부탁드립니다.

D3D Hooking 분석 문서에 대해서 궁금하신거나 잘못된거, 그리고 조언해주실분은 환영합니다!

같이 연구하실분은 더욱 더 환영하고요!  

 

'프로젝트 > D3D Hooking' 카테고리의 다른 글

Hooking의 종류  (0) 2012.01.22
Posted by NullBr4in