loading
COM 후킹 (Component Object Model Hooking)
본문 바로가기
보안용어

COM 후킹 (Component Object Model Hooking)

by 사월섬 2020. 10. 13.
반응형

COM 후킹 (Component Object Model Hooking)이란?

 

COM(Component Object Model)은 마이크로소프트사가 책정한 통신 규약으로 거의 모든 마이크로소프트 제품들 간의 근간 기술입니다. COM은 인터넷 익스플로러나 탐색기 프로그램 등의 가장 하부에 위치해 있고 응용 프로그램 간 자료 공유 등을 위한 공통 인터페이스를 제공하는데 이러한 COM 인터페이스를 후킹해 사용자가 입력한 계좌 정보 등을 변조하는 행위를 COM 후킹 (Component Object Model Hooking)이라고 합니다.여기에서 말하는 후킹(Hooking)은 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말합니다. 이때 이러한 간섭된 함수 호출, 이벤트 또는 메시지를 처리하는 코드를 후크(Hook)라고 합니다. 

 

 

크래킹(불법적인 해킹)을 할 때 크래킹 대상 컴퓨터의 메모리 정보, 키보드 입력 정보 등을 빼돌리기 위해서 사용되기도 합니다. 예를 들어 특정한 API를 후킹하게 되면 해당 API의 리턴 값을 조작하는 등의 동작을 수행할 수 있습니다. 일반적으로 후크는 소프트웨어가 이미 실행 중일 때 삽입되지만, 후킹은 응용 프로그램이 실행되기도 전에 쓰일 수 있는 전략입니다. 

 

 

응용 프로그램이 실행되기 전에 리버스 엔지니어링 기법으로 실행 또는 라이브러리를 물리적 수정함으로써 후킹을 할 수 있습니다. 이러한 기법은 일반적으로 다른 모니터로 함수 호출을 가로채거나 그것들을 완전히 다른 함수로 대체하는 데 사용됩니다. 예를 들어, 역어셈블러를 사용하여 모듈 내에서 함수의 시작점을 찾을 수 있습니다: 그다음, 다른 라이브러리 모듈을 동적으로 로드하고, 로드된 라이브러리 내에서 원하는 함수를 실행하도록 변경할 수 있습니다. 해당되는 경우, 후킹으로 얻을 수 있는 관련된 다른 접근 방법은 실행 파일의 임포트 테이블을 변경합니다. 이러면 테이블은 추가 라이브러리 모듈을 로드하도록 수정될 수 있을 뿐만이 아니라 함수가 응용 프로그램에 의해 호출될 때 외부 코드가 호출되는 것으로 바뀔 수도 있습니다. 후킹을 하기 위한 대체 방법은 래퍼 라이브러리를 통해 함수 호출을 차단하는 것입니다. 래퍼를 만들 때, 응용 프로그램을 로드하는 라이브러리는 원본 라이브러리와 동일한 기능을 가진 자신만의 라이브러리를 만듭니다. 즉, 접근할 수 있는 모든 기능은 원본과 대체된 라이브러리 모두 동일한 것입니다. 이 래퍼 라이브러리는 원래 라이브러리의 기능 중 하나를 호출하거나, 논리의 완전히 새로운 설정으로 대체되도록 설계할 수 있습니다. 운영체제와 소프트웨어는 후크를 삽입하는 프로세스에 충분한 권한이 부여된 경우 런타임 도중 이벤트 후크를 쉽게 삽입할 수 있습니다. 예를 들어, Microsoft Windows에서는 대화 상자, 스크롤바 및 메뉴뿐만 아니라 다른 항목에 대한 시스템 이벤트와 응용 프로그램 이벤트를 처리하거나 수정하는 데 사용될 수 있는 후크를 삽입할 수 있습니다. 또한 후크는 키보드 및 마우스 이벤트를 삽입, 제거, 프로세스 또는 수정할 수 있습니다. 리눅스에서는 후크가 넷필터를 통해 커널 내의 네트워크 이벤트를 처리하기 위해 비슷한 방식으로 사용될 수 있는 또 다른 예를 제공합니다. 이러한 기능이 제공되지 않은 경우, 후킹의 특별한 형태는 프로세스에 의해 만들어진 라이브러리 함수 호출을 차단하는 방법을 사용합니다. 후킹은 대상 함수의 첫 번째 몇몇 코드가 주입 코드로 이동하도록 지시를 변경하여 구현됩니다. 또는 공유 라이브러리의 개념을 사용하는 시스템에서는 인터럽트 벡터 테이블 또는 임포트 디스크립터 테이블이 메모리에서 수정될 수 있습니다. 기본적으로 이러한 전술은 물리적 수정과 같은 아이디어를 사용하지만 이미 실행되어 있는 상태라면 프로세스의 메모리에 있는 명령과 구조를 변경합니다.

반응형

'보안용어' 카테고리의 다른 글

백 도어 (Back Door) - 1  (0) 2020.10.18
방화벽 (Firewall)  (0) 2020.10.16
말락커(MalLocker)  (0) 2020.10.13
크로스 사이트 스크립팅(XSS, Cross Site Scripting)  (0) 2020.05.14
ARP 스푸핑 (Address Resolution Protocol Spoofing)  (0) 2020.05.13

댓글