- A+
所属分类:逆向工程
我们团队最近捕获到一个vbs后门脚本,发现比较有意思,根据以往遇到的脚本,绝大多数都是蠕虫、下载者(从木马服务器下载一个远控)这类或者是配合木马本身做自删除中间文件,极少遇到本身就是后门或是远程控制类木马,原因是这类木马的局限性较大,一些复杂功能不能完整编写。简单分析下。
木马基本信息
MD5:0ad2a50ac1a1a98ce3db134e795e2974
大小:97,525 字节
目标端口:1346
上线域名:略
原始文件局部一览:
根据脚本本身,拿python写了一个简单的解密片段得到明文vbs恶意文件,或者更简单的方法就是把executeGlobal直接写到另一个文件里保存下来。
'executeGlobal (CKglagJDVsalqnU) set fso =createobject("scripting.filesystemobject") fso.createtextfile("C:\\1.txt").write CKglagJDVsalqnU
木马执行
VBS脚本启动的时候被Wscript.exe分析执行,即Wscripts是VBS脚本的解释器。
木马协议特征:
该木马传输主要是同过http协议传输,同时以字符串“<|>”作为信息分割,通过WMI查询本地计算机信息以及安全信息。
set objsecuritycenter = getobject("winmgmts:\\localhost\root\" & sc) Set colantivirus = objsecuritycenter.execquery("select * from antivirusproduct","wql",0) for each objantivirus in colantivirus security = security & objantivirus.displayname & " ."
该后门已知功能包括:
本地监听
本地监听到上线数据包。
上线数据信息是放在user-Agent里面
上线后接受远程服务器的指令:
利用python写个简易的脚本,模拟服务端,远程执行cmd命令,
得到的效果如下(虚拟机中显示):
可以看出除了传统PE木马外,木马作者配合其他形式脚本,制作出来的木马能起到免杀效果,未来可能会出现其它解释性语言编写木马也说不定。
python解密code片段
def decode_code(arg,key): return chr(ord(arg)-ord(key[0])) encodeString="加密长字符串" split_key = "~*" key = "PqUYslk7QB7zwn7g6BiT7lsXlOixZ7ubWR2" text='' encode_list=encodeString.split(split_key) for i in encode_list: text=text+decode_code(chr(int(i)-847),key) with open('code','w') as f: f.write(text) from SimpleHTTPServer import SimpleHTTPRequestHandler from BaseHTTPServer import BaseHTTPRequestHandler from BaseHTTPServer import HTTPServer class MyHTTPRequestHandler(BaseHTTPRequestHandler): def do_POST(self): text=self.deal_post_data() if text is not None: print text enc='utf-8' self.send_response( 200 ) self.send_header("Content-type", "text/html;charset%s" %enc ) ct = r'cmd-shell<|>dir c:\windows' self.send_header('Content-length', str(len(ct))) self.end_headers() self.wfile.write(ct) def deal_post_data(self): remainbytes = int(self.headers['content-length']) if remainbytes: data = self.rfile.read(remainbytes) return data if __name__ == '__main__': port = 1346 handler = SimpleHTTPRequestHandler httpd = HTTPServer(('', port ), MyHTTPRequestHandler) print "Server is running at port", port httpd.serve_forever()
[本文由360安全卫士原创并投稿,转载请注明来自FreeBuf.COM]
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫