自从上次写文章分析“水坑”攻击已经有2个月了,我当时还天真地认为他们将沉寂一段时间,现在看来的确是过于乐观了。自这周起,我就不断捕获到新的样本。尽管与早前的样本存在许多共同点,但正如此前预期,新的样本在混淆方面进行了改进。我们关注的重点依然是其分层混淆和 PowerShell 代码,不过,我会对比此前的旧样本,标记出新样本的改进之处。
下面的是该攻击的"诱饵"文档截图,文件的哈希将在文末给出:

图 1:巴基斯坦选举委员会

图 2:Invest in Turkey网

图 3:IQMOFA

图 4:巴基斯坦国民议会

图 5:土耳其安全指南
从上面的图片可以看到,此次攻击的目标依然是中东地区(土耳其和伊拉克) 和巴基斯坦。一如我之前的博客中提到的,这些“引诱”文档将在一定程度上告诉我们攻击的目标是哪些组织机构和企业。从 VT 提交时间上来看,此次攻击持续时间为2月中旬到最近的捕获样本时间--2018年5月6日。这些样本大多以"mofa.gov.iq.doc" - 94625dd8151814dd6186735a6a6a87b2a4c71c04b8402caf314fb6f98434eaad命名,MOFA,即是外交部(Ministry of Foreign Affairs)的缩写。
下面,将进入对样本的详细分析阶段。POWERSTATS 后门中新的、更改过的混淆代码段,或是额外添加的功能,我都会高亮地标记出来。该样本文档中的宏代码经过 Base64 的多重编码,具体如下图所示:

图 8:第二段 Base64 编码

图 9:第三段 Base64 编码
图 12:解码 JavaScript
解码出来的脚本实际上是 Power Shell 脚本——为了实现进一步解码的路径:"C:\\ProgramData\\WindowsDefenderService.ini"。这个路径下的文件实际上就是第一段 Base64 编码块的内容。
解码出来的内容其实就是 POWERSTATS 后门的变种。让我们来详细研究研究变种中的混淆层。
值得注意的是,代码中的 iex 其实是 Invoke-expression (的变体。为了看到输出内容,我么将 iex 替换为 Write-Output ,将看到下面的输出:

图 14:第一层解码
尽管看起来很混乱,不过却有点眼熟。The character substitute 。更进一步,我们观察到上图中"&((vaRIABle 'MDR').NAME[3,11,2]-jOiN'')" ,这实际是经过混淆的 Invoke - Expression 。这意味着我们仍然可以用 Write-Output 替换它,得到的结果如下:

图 15:二层解码
又一次,你会注意到 "( $enV:ComSpEc[4,24,25]-jOiN'')" 用作 iex 。同样可以将之替换为 Write-Output。这样的循环混淆直到解码后的脚本类似于下图所示的 --包含代理 URL 和 IP 的脚本:

图 16:最终解码后的 PowerShell
这只是众多多层编码的 PowerShell 脚本的一小块。剩余的第二、第三部分是后门的实际功能部分。
我在先前的博客中分析的函数,大多数依然以变种的形式存在。当然,还有一些新添加的和改进过的代码:
图片底部高亮标记的函数 "GDKZVLJXGAPYNUGCPJNPGZQPOLPPBG" 是下面代码块的开头:
这段代码实际上是 Barrett Adams(@peewpw)上个月创建的 Invoke - BSOD 项目,可以在他的 GitHub 主页上查看。特别注意的是,作者申明,该段代码无需管理员权限即可 BSOD 机器。
结合此前的分析文章,该攻击组织依然在活动中,并将目标对准更多其他国家。总的来说,“水坑”攻击特点为:
[原文]:(a8cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6k6h3x3H3N6$3&6Q4x3X3g2T1L8r3!0Y4M7%4m8G2N6q4)9J5k6h3q4W2i4K6u0r3x3U0l9I4z5q4)9J5c8U0l9#2i4K6u0r3j5$3I4W2j5i4u0A6L8X3N6Q4x3X3c8E0N6h3c8V1P5i4N6S2N6r3g2J5i4K6u0V1j5h3&6S2L8s2W2K6K9i4y4Q4x3X3c8G2k6W2)9J5k6r3&6W2N6#2)9J5k6h3S2@1L8h3I4Q4x3@1k6E0i4K6y4p5x3g2!0q4c8W2!0n7b7#2)9^5z5b7`.`.
编译:看雪翻译小组 StrokMitream
校对:看雪翻译小组
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-2-2 14:35
被kanxue编辑
,原因: