利用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)支持
开发步骤
-
创建ATL项目
- 新建项目 → Visual C++ → ATL项目
- 添加类 → ATL → ATL简单对象
- 设置简称为
HelloWorldBHO - 勾选
IObjectWithSite接口(IE对象支持)
-
关键文件说明
HelloWorldBHO.h/.cpp:主实现文件dllmain.cpp:DLL入口点HelloWorld.rgs:注册脚本,包含BHO的GUIDHelloWorldBHO.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注册与卸载
-
注册DLL
regsvr32 helloworld.dll /s/s参数用于静默注册(不显示成功对话框) -
卸载DLL
regsvr32 helloworld.dll /s /u或直接删除注册表相关键值
0x04 BHO高级利用技术
1. 伪造微软签名隐藏BHO
步骤:
-
从Office文件中提取合法签名(如
URLREDIR.DLL)C:\Program Files\Microsoft Office\Office14\URLREDIR.DLL -
使用SigThief工具添加签名
sigthief.py -i "C:\Program Files\Microsoft Office\Office14\URLREDIR.DLL" -t helloworld.dll -o new.dll -
劫持系统签名验证功能(需管理员权限)
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)环境,如需更高权限:
- 利用其他漏洞提升权限
- 通过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工作机制
- 掌握检测方法
- 实施适当的防御措施
开源项目参考: