본문 바로가기
IT 관련기술

[윈도우 프로그래밍] Hooking & Filter Driver

by bits 2022. 1. 19.

1. Hooking(후킹) 이란?

운영체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다.[참고 : 위키백과]

 

운영체제, 응용프로그램 또는 기타 소프트웨어 구성 요소의 동작을 변경하거나 보강하는데 사용되는 다양한 명령, 방법, 기술이나 행위를 말한다.

 

* 간섭된 함수 호출, 이벤트, 메시지를 처리하는 코드를 '후크'라고 부릅니다. ['갈고리로 중간을 낚는다.']

 

결론적으로 후킹은 '갈고리처럼 특정 함수 코드를 가로채서 원하는 행위를 한 후 원래의 코드로 돌려주는 기법'을 뜻합니다.

따라서 후킹은 다양한 변조가 가능한 기술로 해커들이 오래전부터 자주 사용하는 기법이라고 할 수 있습니다.

 

보통 후크는 소프트웨어가 이미 실행중일 때 삽입되지만, 후킹은 응용 프로그램이 실행되기도 전에 사용할 수 있는 전략입니다.

 

1) 물리적 수정

응용 프로그램이 실행되기 전 리버스 엔지니어링 기법으로 실행 파일 또는 라이브러리 소스를 물리적으로 수정하여 후킹을 할 수 있습니다.

 

해당 기법으로 다음과 같은 작업을 할 수 있습니다.

  • 함수 호출을 가로채서 모니터링 할 수 있습니다.
  • 완전히 다른 함수로 대체하는데 사용될 수 있습니다.

즉, 후킹은 앱이 실행되면서 특정 메서드에 hook을 걸어 본인 마음대로 메서드의 리턴값, 메서드의 내용을 패치할 수 있습니다.

 

  • 대처방안

래퍼 라이브러리(Wrapper Library)를 통해 함수 호출을 차단하는 것입니다.

wrapper 를 만들 때, 응용 프로그램을 로드하는 라이브러리는 원본 라이브러리와 동일한 기능을 가진 자신만의 라이브러리를 만듧니다. 즉, 접근할 수 있는 모든 기능은 원본과 대체된 라이브러리와 모두 동일한 것입니다.

래퍼 라이브러리는 원래 라이브러리의 기능 중 하나를 호출하거나 논리의 완전히 새로운 설정으로 대체되도록 설계할 수 있습니다.

 

 

2. 필터 드라이버(Filter Driver)

필터 드라이버(Filter Driver)는 주변기기의 함수를 확장 또는 수정하거나 개인용 컴퓨터에서 특별한 장치를 지원하는 마이크로소프트 윈도우 드라이버이다.

 

이것은 드라이버 또는 프로그램 또는 모듈로서 특정한 함수를 수행하기 위해 존재하는 드라이버 스택에 삽입된다.

 

디바이스 인식 후 드라이버 생기는 순서

 

버스 드라이버 -> 기능 드라이버 -> 필터 드라이버

 


[참조]

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=on21life&logNo=221446844771 

https://power-girl0-0.tistory.com/48

 

 

 

 

 

댓글