当前位置: 首页 > 图文教程 > 网络安全 > 杀毒防毒 > 移花接木 将Alexa工具条改装成间谍木马

杀毒防毒
来自微软的免费杀毒软件抢先试用
金山毒霸全新功能体验版抢先曝光
IRC后门病毒技术分析及手动清除方法
MSN性感鸡变种刚过,QQ病毒又来捣乱
Win XP中震荡波后应采取的措施
病毒应急处理中心提醒防范高波病毒及其变种
北京公安局、瑞星发布6月13日危险病毒警报
防御计算机病毒十大必知步骤
网吧用QQ隐私难保 黑客工具窥视QQ聊天记录
用MailSpy拦截局域网内危险的病毒邮件
如何根据名称识别计算机病毒
Norton AntiVirus 2005测试版截图大赏
快速干掉感染Internet Explorer的恶意程序
邮件病毒入侵后五个清除步骤
Win 2000防毒从安装系统时开始
木马病毒清除的通用解法
快速有效地封杀—巧利用Iris来查找蠕虫病毒
防病毒必务宝典—计算机病毒专杀进程列表
网络安全之特洛伊木马攻防战略
3721上网助手清除专家

杀毒防毒 中的 移花接木 将Alexa工具条改装成间谍木马


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 51 ::
收藏到网摘: n/a

 

  Alexa是一个发布全球网站排名信息的网站,他的网址是http://www.alexa.com。Alexa通过在客户端安装Alexa工具条来收集采样全球网站的访问数据,以这些数据为依据对全球网站进行排名,类似于电视收视率的统计。Alexa工具条是一种类似于Google工具条的IE插件,你可以在下面URL中下载:http://download.alexa.com/index.cgi。

  一、Alexa工具条的工作原理

  Alexa工具条是一种基于BHO和Toolbar Bands技术的一种IE插件。它以DLL文件的形式存在于系统中,是一种COM组件,IE会在运行时将其加载到自身进程中去,所以一般情况下防火墙是无法禁止该软件访问网络的,这就为他的木马角色提供了先天的便利,而且比本机Sniff软件收集密码的优势是:无论是HTTP还是HTTPS的网站,不管通信通道是否加密,只要是IE页面的表单都能收集到。具体原理可以查阅《关于Alexa排名作弊的一些解惑》。

  系统在安装了Alexa工具条后,会在系统目录下生成AlxTB1.dll和AlxRes.dll两个DLL文件(有些情况下是AlxTB2.dll,而不是AlxTB1.dll。那是因为Alexa工具条会自动上网更新的原因)。Alexa工具条的主要二进制代码存在于AlxTB1.dll文件中,这个文件同时也被注册成多个COM组件,他完成了BHO和Toolbar Bands的COM接口,并将IE的WebBrowser控件封装为一个COM组件供AlxRes.dll调用。AlxRes.dll文件仅包含少量的二进制代码,大量的代码是HTML和javascript代码,他们以资源的形式存在于AlxRes.dll文件中,你可以通过res://AlxRes.dll/CHTML/about.html这样的URL来访问这些资源。也许你会奇怪:又不是做网站,为什么软件的代码会是javascript写的?这就是Alexa工具条垃圾的地方。Alexa工具条的主界面是由HTML+javascript实现的。这些javascript代码通过调用AlxTB1.dll实现的COM接口来实现软件的全部功能。这样做不仅导致软件的效率低下,而且产生大量的资源泄漏,绝对是一种VERY超级SB的开发模式,但是却为我们修改Alexa工具条的功能提供了方便——根本不需要CRACKER知识,只要一个PE资源修改工具就可以对Alexa工具条的代码进行修改了。

  二、破解Alexa工具条

  当然,Alexa也不是真傻,绝对不会蠢到让自己的代码被你用资源修改工具随便改。为了防止AlxRes.dll中的资源被随意修改,他采取了计算文件校验和的保护方法,要是发现文件被修改,就会拒绝加载。我们在修改代码前,必须破解这种保护机制。

  AlxTB1.dll导出一个名叫ChecksumResources的函数,这个函数就是用来计算文件校验和的。用c32asm反汇编AlxRes.dll文件,查看字符串调用列表,找到"ChecksumResources"字符串,跳转到调用该字符串的代码,于100017C0处。往下翻几行,在100017F6处找到一句跳转,采用爆破方式,用NOP指令覆盖JNZ指令即可。通俗点讲:就是将AlxRes.dll文件偏移"0x17F6"处的两个字节"75 11"改成"90 90",你可以使用WinHex之类的16进制编辑软件来修改。

::100017C0:: 68 9C700010 PUSH 1000709C \:BYJMP JmpBy:100017A4,100017B1, \->: ChecksumResources
::100017C5:: 57 PUSH EDI
::100017C6:: FF15 1C500010 CALL [1000501C] >>>: KERNEL32.DLL:GetProcAddress
::100017CC:: 85C0 TEST EAX, EAX
::100017CE:: 74 0E JE SHORT 100017DE \:JMPDOWN
::100017D0:: 8D4D DC LEA ECX, [EBP-24]
::100017D3:: 51 PUSH ECX
::100017D4:: FF35 44740010 PUSH DWORD PTR [10007444]
::100017DA:: FFD0 CALL EAX
::100017DC:: 59 POP ECX
::100017DD:: 59 POP ECX
::100017DE:: 57 PUSH EDI \:BYJMP JmpBy:100017CE,
::100017DF:: FF15 18500010 CALL [10005018] >>>: KERNEL32.DLL:FreeLibrary
::100017E5:: 8D45 B8 LEA EAX, [EBP-48]
::100017E8:: 50 PUSH EAX
::100017E9:: 8D45 DC LEA EAX, [EBP-24]
::100017EC:: 50 PUSH EAX
::100017ED:: E8 AE060000 CALL 10001EA0 \:JMPDOWN
::100017F2:: 59 POP ECX
::100017F3:: 85C0 TEST EAX, EAX
::100017F5:: 59 POP ECX
::100017F6:: 75 11 JNZ SHORT 10001809 \:JMPDOWN ;就是修改这里 

  现在我们可以毫无顾忌的修改AlxRes.dll中的资源了。

  三、修改Alexa工具条的代码

  熟悉IE编程的人都知道,DWebBrowserEvents2接口是用来接收WebBrowser的事件通知的,我们可以在AlxRes.dll的javascript代码中找到这些些对应的函数。在res://AlxRes.dll/SCRIPT/EVT.CLASS.JS的代码中,有一系列的javascript函数,对应于DWebBrowserEvents2接口的成员,如:DocumentComplete->BP_onDocumentComplete,NavigateComplete2->BP_onNavigateComplete,BeforeNavigate2->BP_onBeforeNavigate。按照DWebBrowserEvents2接口,我们可以在BeforeNavigate2中截获PostData,但是在AlxRes.dll的代码中,这个接口没有完全实现。在DWebBrowserEvents2接口中的原型是:

void BeforeNavigate2(IDispatch *pDisp,