序言
想起以前做实验的时候,机房电脑感染1KB
病毒, U
盘中的文件出现全部成为了快捷方式. 这几天做病毒分析, 心血来潮那1KB
病毒来开刀.
病毒总览
注册表
/*开机运行*/
HKCU\Software\Microsoft\Windows\CurrentVersion\Run = \
C:\WINDOWS\system32\cmd.exe /c start wscript /e:VBScript %temp%\SysinfY2X.db
/*修改文件显示选项,不显示隐藏文件*/
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden = 2
对文件操作
查找系统中驱动器的个数,对除了C盘之外之的其他盘进行感染. 感染的方式很简单, 拷贝SysinfY2X.db
, 所有文件设置为隐藏文件,创建一个指向原文件夹的快捷方式, 快捷方式的一些属性
targetPath = "cmd.exe"
argument = /c start wscript /e:VBScript.Encode Manuel.doc & start explorer 文件/子文夹 & exit
这样,点击任何一个快捷方式, 直接触发又一次的传播.
网络行为
与http://realy.mooo.com/bot/lancer/index.php?cmd=命令
进行交互, 这个网站已经挂了.
病毒运行过程
首先修改注册表, 将恶意文件保存在tmp
目录下, 创建一个新进程运行恶意文件, 本身退出,新进程接着就会做上述行为.
弱点
这个病毒也有弱点, 只会在根目录下创建快捷方式, 不会递归的创建快捷方式, 着实有点缺心眼.
杀毒
首先在进程管理器中,停止wscript
进程, 然后修改注册表, 删除快捷方式.
import os, psutil, win32api, win32con
import winshell
def killProc(name):
for p in psutil.process_iter(attrs=['name', 'pid']):
if p.info['name'] == name:
proc = psutil.Process(p.info['pid'])
proc.terminate()
def isLNK(fileName):
fName = fileName.split('.', -1)
if 'lnk' == fName[len(fName) - 1]:
return True
else:
return False
def modifiedOnlyRead(path):
files = os.listdir(path)
for i in xrange(len(files)):
p = os.path.join(path, files[i])
try:
win32api.SetFileAttributes(p, win32con.FILE_ATTRIBUTE_NORMAL)
except win32api.error:
pass
finally:
pass
def deleteFile(path):
modifiedOnlyRead(path)
files = os.listdir(path)
for i in xrange(len(files)):
p = os.path.join(path, files[i])
if isLNK(files[i]):
link = winshell.shortcut(p)
if ("cmd.exe" in link.path and "Manuel.doc" in link.arguments):
os.remove(p)
else:
pass
elif "Manuel.doc" == files[i]:
os.remove(p)
def modifyReg():
run = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, win32con.KEY_ALL_ACCESS)
try:
SysinfY2X = win32api.RegQueryValueEx(run, "SysinfY2X")
if "SysinfY2X.db" in SysinfY2X[0]:
win32api.RegDeleteValue(run, "SysinfY2X")
else:
pass
except win32api.error:
print "no registry entry"
finally:
win32api.RegCloseKey(run)
Advanced = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", 0, win32con.KEY_ALL_ACCESS)
try:
hidden = win32api.RegQueryValueEx(Advanced, "Hidden")
if 2 == hidden[0]:
win32api.RegSetValueEx(Advanced, "Hidden", 0, win32con.REG_DWORD, 1)
else:
print "Modified"
except win32api.error:
print "no registry entry"
finally:
win32api.RegCloseKey(Advanced)
killProc("wscript.exe")
killProc("cscript.exe")
deleteFile('E:\\') # U disk
modifyReg()
吐槽
vbs
能够在U
盘里面创建文件,却不能删除文件,着实奇怪。
GITHUB
1KB 源码