揭穿伪装 和加密型VBS脚本病毒的较量
2018-11-22河南刘景云
■ 河南 刘景云
编者按:VBS是一种小巧精悍的脚本语言,合理的使用VBS脚本有助于提高系统运行效率。不过,VBS一旦被病毒设计者恶意利用,就会“开发”出危害很大的病毒程序,对系统安全构成威胁。一些狡猾的VBS、病毒为了逃避杀软检测,会将自身进行加密处理,这大大提高了其运行的隐蔽性。这里就结合笔者的工作经历,通过具体的实例来分析如何同此类病毒进行斗争。
借力打力 解密VBS病毒
单位某台电脑最近运行异常,磁盘中的所有文件夹图标发生了奇怪的变化,都出现了类似于快捷方式小箭头标记。查看其属性信息,发现其全部指向某个VBS文件。毫无疑问,该VBS文件就是病毒。出于分析的考虑,笔者将该VBS文件复制到了U盘上便于以后研究分析。
注意,该病毒文件处于磁盘根目录下,且处于隐藏状态。因为文件夹设置界面中的相关项目被病毒隐藏,所以需要手工使用“Attrib.exe”命令取消该VBS文件的隐藏状态。因为U盘上安装有杀毒软件,所以直接对该机进行了全面扫描,清除了所有的由病毒创建的快捷方式,并删除了病毒文件。
图1 加密后的病毒源码
经过查杀操作,以为可以万事大吉了。不过当别的用户使用该机时,却出现打不开我的电脑,以及无法正常打开各种文件的故障。系统总是提示某个VBS文件找不到等信息。看来,病毒一定是系统进行了各种破坏。虽然从表面上将病毒清除,但病毒的影响力依然存在。但因为该机没有备份注册表,又存储有一些重要数据,不能贸然执行重装等操作。看来只要对该病毒文件进行解析,就能发现其对系统做了哪些手脚,然后有的放矢的进行恢复即可。
本以为阅读分析VBS脚本没什么技术问题,但当使用记事本打开该VBS脚本文件后,感觉到情况有些复杂。病毒内容是一堆乱码,和一般的VBS格式大相径庭(如图1)。VBS其实和一般的Basic语言差别不大,和VB有几分相似。一般的VBS程序开头都是“on error resume next”。 而 该 文 件却为“' nOrrE roseRemueN tx3”。对比之下不难发现,两个组成内容虽然一样,但字母顺序完全不同,看起来散乱。而且几乎所有的代码行都是以“’”符号开始,在VBS中该符号表示注释,说明之后的语句是无法运行的。
种种迹象表明,该病毒文件经过了加密处理。但病毒既然要执行,就必须先对自身进行解密。基于这种分析,笔者仔细查看了加密后的代码,果然在其中发现了端倪,有一段代码开头没有“’”符号,其内容为“EXEcUte("SEt B830 = CrEATeObJeCt(""SCRIPTiNG.FILeSystEmOBjecT"")…….”,该 段代码很长,看起来似乎不太容易理解。笔者将其单独复制出来,保存到一个名为“decode.vbs”的文件中。经过逐行整理,理清了其脉络。
图2 真实的病毒内容
果然,这是一段解密代码,其尾部提供了三个函数,主要作用是乱序,转化大小写等操作。该代码第二行的作用是读取原加密脚本,笔者将原脚本名称更改为“virus.txt”,将其存放到了E盘根目录下。之后将该行代码“set c013=b830.opentextfile("e:virus.txt",1)”,让 解 密 程 序 是读取所需的病毒文件,之后将另一行代码修改 为“Set C013=B830.OpENtextFILE("G:解 密后.txt",2,1)”,作用是保存解密后的文件。之后运行该“decode.vbs”文件,经过解密处理,果然得到了解密后的VBS文件(如图2),这样病毒本来面目就彻底显现了。
因为病毒的代码很长,无法逐行分析。经过研究发现该病毒“本领”还不小。对注册表进行了很多修改,例如修改了很多文件关联,如 cmd、bat、txt、hlp、chm等。造成这些文件无法正常使用。病毒还破坏了和我的电脑、文件夹属性设置等相关的注册表信息,使用户无法顺利打开我的电脑,无法修改文件夹设置信息。病毒还会对各种安全工具进行监控,当病毒激活后,如发现有杀软进程,会立即将其关闭。即使运行“msconfig.exe”之类的工具也会遭到病毒拦截。病毒还会在各磁盘根目录下创建名为“Autorun.inf”的文件来指向病毒程序,即使事先对各磁盘进行了免疫处理,例如创建了“Autorun.inf”文件夹,也会被清除。病毒会搜索所有的文件夹,并分别为其创建虚假的快捷方式,使之指向病毒文件。为将真实的文件夹隐藏起来,病毒还会修改系统版本信息,将杂乱内容添加进来。对代码进行解读后发现,病毒还会在“C:WindowsSystem”文件夹下创建名为“svchost.exe”的文件进行更多破坏。
了解其特点后,恢复起来就容易多了。首先将从别的电脑上打开注册表编辑器,打开“HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindows”分支,将“Windows”子健导入到该机的注册表中。之后按照同样方法将注册表中“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHidden”分支的内容导入到该机。之后即可在文件夹选项窗口中显示所有文件了。
找到上述病毒创建的“svchost.exe” 文 件,打开各磁盘,将病毒创建的“Autorun.inf文件清除。对于文件关联的恢复及更多修复操作,笔者编写了专用的修复文件。因为BAT文件关联遭到破坏,所以先进入CMD窗口运行“ftype batfile="%1" %*”命令,恢复其正常关联。之后运行笔者提供的“恢复文件关联.bat”文件就可以修复被病毒破坏的文件关联及其他注册表项目,让系统恢复正常。注册表对系统安全关系重大,对注册表进行及时备份,可以快速有效的恢复病毒的影响。下载地址:http://www.dwz.cn/zG9ng。
李代桃僵 直接解密VBS病毒
办公室的一台电脑最近遭到病毒袭击,原本运行正常的杀软突然“罢工”,使用U盘上的移动版杀软扫描系统却未发现病毒。看来病毒可能是加过了加壳或加入花指令等手段避开检测。经查询发现3749端口处于监听状态。但本机的正常网络程序并没有开启该端口,由此分析一定是木马所为。在文件夹选项窗口中选择“显示所有文件和文件夹”项,取消“隐藏受保护的操作系统文件”的选择状态,之后在所有分区的根目录下都发现了名为“config32.vbs”和“Autorun.inf”的文件。打开“Autorun.inf”文件发现其指向“config32.vbs”。和普通病毒不同,对应的激活语句为“shell1command=wscript.exe config32.vbs”,这样当用户双击磁盘后,“wscript.exe”程序会激活名为“config32.vbs”的病毒文件。
看来,这个“Config32.vbs”文件内部另有玄机。使用记事本打开该文件,发现其内容充斥着“chr(XXX)”之类杂乱的字符,看起来不是合法的VBS程序。据此分析该VBS病毒经过了加密处理,所有的病毒内容全部被“chr(XXX)”加密内容覆盖了。病毒半遮半掩的目的在于防止被读取和分析其结构。相对于上面谈到的加密方式,该病毒的加密显得比较简单。解密方法不难,先建立名为“jiemi.vbs”的文件,写入“msgbox()”字样。之后将“config32.vbs”中清除和execute相关的语句,将其他内容完整复制到上述“msgbox()”函数中的括号内部,形成一个独特的字符串显示语句。运行“jiemi.vbs”文件,在弹出窗口显示原“config32.vbs”的真实内容。病毒代码不难理解,功能就是对注册表进行修改,将病毒文件添加启动项中,之后在系统路径中创建名为“RlkService.exe”的程序。病毒在各磁盘根目录下创建病毒文件和“Autorun.inf”文件。该病毒还对注册表中有关LNK连接文件参数进行了修改,在各磁盘很目录下伪造和特定目录关联的快捷方式,并使之指向病毒文件,引诱用户上当受骗。
了解了病毒的活动特点,首先从别的主机上运行注册表编辑器,将“HKEY_CLASSES_ROOTlnkfile”分支中的内容导出并恢复到本机上,之后删除各磁盘根目录下所有的病毒文件和快捷方式。在“C:Windows”文件夹中清除“config32.vbs”和“RlkService.exe”病 毒文件,将启动项中和病毒相关的内容删除。原以为这样可以让病毒消失,但检测网络连接情况发现可疑端口依然开启。
看来,病毒的余党仍然在暗中活动。运行XurTr这款安全利器,在主界面中的“服务”面板中点击“映像路径”列名,让所有的服务按照文件路径排序。之后点击“描述”列名。让其再按照描述信息排列。细致查看,找到两个内容看起来有些相似的服务,一个经过确认是依靠“svchost.exe”自启动的真实服务,一个名为“Winvgg”的可疑服务,很显然这就是隐藏的木马程序。
在该服务的右键菜单上点击“定位到XT文件管理器(ServiceDll)”项,可 以找到宿主文件为“bsfile.dll”。但是该文件具有只读、系统等特殊属性,无法直接删除。运行“regedit.exe”程序,在注册表编辑器中打开“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”分支,当试图打开其中的“Winvgg”子健时,却无法显示内容,且无法直接删除该键值。在右键菜单上点击“权限”项,在弹出窗口中点击“添加”按钮,在打开窗口中依次点击“高级”、“立即查找”按钮,将当前账户添加进来,保存设置信息后,就可以将该键值彻底删除了。
按照同样方法,将“HKEY_LOCAL_MACHINESYSTEMControlSet001Services”分支下的相同名称键值删除。之后点击“Ctrl+F”,搜索和“Winvgg”相关的键值,在“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionSvcHost etsvcs”分 支 下删除与之同名的键值。在“HKEY_LOCAL_MACHINESOFTWAREMicrosoftShared ToolsMSConfig”分 支 下删除“winvgg”键值。之后重启系统,在“C:WindowsSystem32”文件夹下删除名为“bsfile.dll”的文件,之后在注册表中搜索“bsfile.dll”字符串,找到并删除与之关联的键值,当重启系统后发现可疑的端口消失了。经过一番较量,终于将病毒彻底驱逐出去。