HACK7YD 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 本文源于一个隐蔽连接的测试,模拟IE浏览器发起网络连接,可以绕过一些防护产品拦截发起网络连接的第三方程序。 IE浏览器发起的模拟互联网连接的方式有很多种,其中有很多优点(接口开放、简单高效、功能丰富等。)利用BHO劫持IE浏览器,所以本文将介绍BHO的开发和劫持思路。 0x01 简介 本文将介绍以下内容: BHO简介 发展BHO 利用理念 实物试验 保护 0x02 BHO简介 BHO,浏览器助手对象的全称(Browser Helper Object) 微软作为浏览器为第三方程序员开放交互界面的行业标准。 BHO的作用: 获取浏览器行为,如“后退”、“前进”、“当前页面”等。 控制浏览器行为,如修改和替换浏览器工具栏,添加自己的程序按钮等。 BHO依赖于浏览器的主窗口,与浏览器实例的生命周期一致,即BHO对象在浏览器页面打开时运行,在页面关闭时结束。 使用BHO时,你需要注册,这相当于写入注册表。它位于HKEY _本地_机器\软件\微软\ windows \当前版本\资源管理器\浏览器助手\对象\ {guid}和HKEY _类_根\CLSID\{GUID}中 0x03 开发BHO 本节只是一个简单的介绍。 开发工具:VS2012 1、生成dll 新的可视化C -ATL Add-class -ATL-ATL简单对象,设置其缩写为HelloWorldBHO,选择IObjectWithSite(即对象支持)。 修改以下文件: HelloWorldBHO.h HelloWorldBHO.cpp dllmain.cpp HelloWorld.rgs 注: 详情请参考http://blog.csdn.net/feier7501/article/details/11266345。 BHO的GUID保存在helloworld.rgs中,如下图所示 BHO的名字保存在worldbho.rgs中,如下图所示。 helloworld.rc中的CompanyName表示发行商,PRODUCTVERSION表示版本,如下图。 注: 以上三个图对应的是以下附加组件的显示信息。 HelloWorldBHO.cpp保存IE浏览器中不同事件对应的操作。这里只介绍一个示例代码(详细代码参考开源项目)实现页面加载时,弹出框显示当前URL。关键代码如下: void STDMETHODCALLTYPE CHelloWorldBHO:OnDocumentComplete(IDispatch * pDisp,VARIANT *pvarURL) { BSTR URL=pvar URL-bstr val; CComBSTR u(网址); //从站点中检索顶级窗口。 HWND hwnd HRESULT HR=m _ sp webbrowser-get _ HWND((LONG _ PTR *)HWND); 如果(成功(小时)) { MessageBox(0,u,L 'the url是',MB _ OK); } } 生成helloworld.dll 注: 如果VS2012不是管理员权限,编译时会提示注册,然后可以手动注册。 2、注册dll 需要管理员权限,命令如下: regsve 32 helloworld.dll 注: /s参数用于删除注册成功的提示框。 相当于写入注册表,位于HKEY _本地_机器\软件\微软\ windows \当前版本\资源管理器\浏览器助手\对象\ {guid}和HKEY _类_根\CLSID\{GUID} 补充: 卸载dll: helloworld.dll/南美洲 或者删除相应的注册表项值。 0x04 实际测试 测试系统:Win 7x86 IE8 打开IE浏览器,弹出一个对话框,显示当前网址,如下图所示 在工具-管理加载项中查看IE的加载项,获取加载项信息,如下图所示 helloworld.rgs、HelloWorldBHO.rgs和helloworld.rc可以指定的名称、发布者和版本,文件日期对应dll的修改时间。 自己生成的dll不是微软签名的,所以不验证。 0x05 利用思路 1、伪造微软签名,隐藏BHO 在helloworld.dll中添加微软Authenticode签名,修改注册表劫持系统的签名验证功能,使签名生效。 请参考上一篇文章:《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》 需要微软公司的签名,可以在Office文件中获得。可用路径为:C:\ Program Files \ Microsoft Office \ Office 14 \ urlredir.dll。 使用sigthickness添加签名,下载地址: https://github.com/secretsquirrel/SigThief 参数: SIG thief . py-I ' C:\ Program Files \ Microsoft Office \ Office 14 \ URLREDIR。DLL '-t helloworld.dll-o new.dll 生成new.dll 修改注册表,劫持签名签证功能: (管理员权限) REG ADD ' HKLM \软件\微软\密码术\ OID \ encoding type 0 \ cryptsipdlverifyindirectdata \ { C 689 aab 8-8e 78-11d 0-8c 47-00 C 04 fc 295 ee } '/v ' Dll '/t REG _ SZ/d ' C:\ Windows \ System32 \ ntdll . Dll '/f REG ADD ' HKLM \软件\微软\密码术\ OID \ encoding type 0 \ cryptsipdlverifyindirectdata \ { c 689 aab 8-8e 78-11d 0-8c 47-00 c 04 fc 295 ee } '/v ' FuncName '/t REG _ SZ/d ' DbgUiContinue '/f 注册dll,重新打开IE,查看加载项,验证通过,如下图 注: 修改BHO信息可以进一步隐藏BHO。 2、抓取浏览器POST数据,记录明文口令 抓取浏览器帖子数据的开源代码可以从github获得。参考地址是: https://github.com/liigo/bho 在BeforeNavigate2事件之前抓取浏览器的POST数据。 我直接引用了自己项目中的关键函数:stdmethodimp cbhoapp:invoke(dispid dispid成员,ref iidriid,lcid lcid,word w flags,dispparams * p dispparams,variant * pvarresult,excelpinfo * pexcepinfo,uint * puargerr)。 添加函数声明,实现日志功能。 注: GetTempPath获取当前系统的Temp目录,IE权限下的实际路径为%Temp%\Low。 完整的代码已经开源,地址如下: https://github.com/3gstudent/IE-BHO-POSTdata-Logger 抓取浏览器帖子数据,可以得到用户输入的明文密码,比如github的登录密码,如下图所示。 3、下载文件 通过这种方式下载文件,防火墙软件的管理端显示下载文件的程序是IE浏览器,可以在一定程度上实现隐藏。 4、在IE页面注入js 可以参考以下开源项目进行进一步的修改: https://github.com/xiyiaoo/BHO 本文不再做进一步介绍。 5、补充 BHO的权限默认是低的,所以在操作上会有一些限制。如果通过其他方式获得高权限,可用的途径会更多。 0x06 防御检测 防御: 使用BHO的前提是你需要获得系统的管理员权限。 检测: 在IE浏览器中查看加载项 检查IE进程加载的dll。 0x07 小结 介绍了IE浏览器辅助对象BHO的开发方法,分析了在获得系统管理员许可后使用的思路,并部分使用到现在的技术。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子