브라우저 도우미 객체

브라우저 도우미 객체(BHO, Browser Helper Object)는 추가 기능을 제공하기 위해 마이크로소프트 인터넷 익스플로러 웹 브라우저용 플러그인으로 설계된 DLL 모듈이다. BHO는 1997년 10월 인터넷 익스플로러 버전 4 출시와 함께 소개되었다. 대부분의 BHO는 인터넷 익스플로러의 새로운 인스턴스마다 한 번씩 로드된다. 그러나 윈도우 탐색기의 경우 각 창마다 새 인스턴스가 시작된다.

BHO는 인터넷 익스플로러 11을 통해 윈도우 10부터 계속 지원되지만 마이크로소프트 엣지에서는 BHO가 지원되지 않는다.

구현 
인터넷 익스플로러의 새 인스턴스가 시작될 때마다 윈도우 레지스트리에서 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects 키를 확인한다. 인터넷 익스플로러가 레지스트리에서 이 키를 찾으면 키 아래에 나열된 CLSID 키를 찾는다. 브라우저 도우미 개체 아래의 CLSID 키는 로드할 BHO를 브라우저에 알려준다. 레지스트리 키를 제거하면 BHO가 로드되지 않는다. BHO 키 아래에 나열된 각 CLSID에 대해 인터넷 익스플로러는 CoCreateInstance를 호출하여 브라우저와 동일한 프로세스 공간에서 BHO 인스턴스를 시작한다. BHO가 시작되고 IObjectWithSite 인터페이스를 구현하는 경우 인터넷 익스플로러에서 이벤트를 제어하고 수신할 수 있다. BHO는 COM을 지원하는 모든 언어로 만들 수 있다.

예시 
일부 모듈에서는 일반적으로 브라우저에서 해석할 수 없는 다양한 파일 형식을 표시할 수 있다. 인터넷 익스플로러 사용자가 브라우저 내에서 PDF 파일을 읽을 수 있도록 하는 어도비 어크로뱃 플러그인은 BHO이다.

현재 탐색 중인 웹 사이트와 관련된 웹 사이트 목록을 제공하는 알렉사 도구 모음이나 구글 검색 상자가 있는 도구 모음을 브라우저 사용자 인터페이스에 추가하는 구글 도구 모음과 같은 다른 모듈은 인터넷 익스플로러에 도구 모음을 추가한다.

컨듀잇(Conduit) 도구 모음은 인터넷 익스플로러 7 이상에서 사용할 수 있는 BHO를 기반으로 한다. 이 BHO는 마이크로소프트의 빙 검색에 연결되는 검색 기능을 제공한다.

문제 
BHO API는 BHO가 현재 페이지의 문서 객체 모델(DOM)에 액세스하고 탐색을 제어할 수 있도록 하는 훅을 노출한다. BHO는 인터넷 익스플로러 이벤트 모델에 제한 없이 액세스할 수 있기 때문에 일부 형태의 악성 소프트웨어도 BHO로 생성되었다.

예를 들어, Download.ject 악성 코드는 금융 기관에 보안 HTTP 연결이 설정될 때 활성화된 후 사용자 비밀번호를 캡처할 목적으로 키 입력을 기록하기 시작하는 BHO이다. 마이웨이 서치바(MyWay Searchbar)는 사용자의 탐색 패턴을 추적하고 기록된 정보를 제3자에게 전달한다. C2.LOP 악성코드는 사용자를 클릭당 지불 웹사이트로 유도하기 위해 웹페이지에 자체 링크와 팝업을 추가한다.

수많은 BHO는 인터넷 익스플로러 등에 도구 모음을 설치하는 등 브라우저 인터페이스에 눈에 띄는 변경 사항을 도입하지만 다른 BHO는 인터페이스를 변경하지 않고 실행된다. 이를 통해 악성 코더가 브라우저 추가 기능의 작업을 쉽게 숨길 수 있다. 특히 BHO를 설치한 후 추가 작업을 수행하기 전에 권한이 필요한 경우가 거의 없기 때문이다. 예를 들어, ClSpring 트로이 목마의 변종은 BHO를 사용하여 스크립트를 설치하여 레지스트리 값 추가 및 삭제, 추가 실행 파일 다운로드 등 수행할 여러 지침을 사용자에게 완전히 투명하게 제공한다. DyFuCA 스파이웨어는 인터넷 익스플로러의 일반 오류 페이지를 광고 페이지로 대체하기도 한다.

BHO 및 유사한 인터넷 익스플로러 확장기능과 관련된 문제에 대응하여 마이크로소프트는 윈도우 XP용 서비스 팩 2(IE6 보안 버전 1, 즉 SP2로 업데이트) 릴리스와 함께 인터넷 익스플로러 6에 추가 기능 관리자를 선보였다. 이 유틸리티는 설치된 모든 BHO, 브라우저 확장 및 ActiveX 컨트롤 목록을 표시하며 사용자가 원하는 대로 이를 활성화하거나 비활성화할 수 있다. 설치된 BHO를 나열하고 사용자가 악성 확장을 비활성화할 수 있는 무료 도구(예: BHODemon)도 있다. 스파이봇 S&D 고급 모드에는 사용자가 설치된 BHO를 비활성화할 수 있는 유사한 도구가 내장되어 있다.

같이 보기 
 브라우저 확장
 플러그인
 파이어폭스 애드온
 구글 크롬

외부 링크 
 Sites.google.com

Microsoft sites 
 IEHelper-Attaching to Internet Explorer 4.0 by Using a Browser Helper Object
 Control Internet Explorer Add-ons with Add-on Manageran article on Microsoft.com that explains this new feature of Windows XP Service Pack 2
 Building Browser Helper Objects with Visual Studio 2005an October 2006 MSDN article by Tony Schreiner and John Sudds

Listings and examples 
 CLSID Listmaster list created by Tony Kleinkramer, which attempts to record and identify every BHO available (previously located atthe now defunctcastlecops.com)also includes Toolbar, Explorer Bar and URLSearchHook GUIDs
 C++ example code for a BHO
 C# example code for a BHO

인터넷 익스플로러