跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

利用BHO劫持IE浏览器


HACK7YD

推荐的帖子

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中,如下图所示

2-1.png

BHO的名字保存在worldbho.rgs中,如下图所示。

2-2.png

helloworld.rc中的CompanyName表示发行商,PRODUCTVERSION表示版本,如下图。

2-3.png

注:

以上三个图对应的是以下附加组件的显示信息。

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浏览器,弹出一个对话框,显示当前网址,如下图所示

3-1.png

在工具-管理加载项中查看IE的加载项,获取加载项信息,如下图所示

3-2.png

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,查看加载项,验证通过,如下图

3-3.png

注:

修改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-4.png

3、下载文件

通过这种方式下载文件,防火墙软件的管理端显示下载文件的程序是IE浏览器,可以在一定程度上实现隐藏。

4、在IE页面注入js

可以参考以下开源项目进行进一步的修改:

https://github.com/xiyiaoo/BHO

本文不再做进一步介绍。

5、补充

BHO的权限默认是低的,所以在操作上会有一些限制。如果通过其他方式获得高权限,可用的途径会更多。

0x06 防御检测

防御:

使用BHO的前提是你需要获得系统的管理员权限。

检测:

在IE浏览器中查看加载项

检查IE进程加载的dll。

0x07 小结

介绍了IE浏览器辅助对象BHO的开发方法,分析了在获得系统管理员许可后使用的思路,并部分使用到现在的技术。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...