来自网络安全解决方案团队(Cyber Safety Solutions Team)的分析结果
通常来说开发者在发布新版本的应用或维护创建的项目时需要经常修改源代码。为满足此方面需求,GitHub 作为一个提供版本控制管理的在线存储库托管服务应运而生。在许多方面,它就像一个程序员和开发人员的专属社交网站,为代码管理、共享、协作和集成提供了一个宝贵的平台。
尽管如此,GitHub 被滥用的现象也屡屡发生。例如,据称以学习为目的创建的开源勒索软件项目 EDA2 和 Hidden Tear 就曾在 GitHub 上进行托管并由此滋生了指向企业的各种分支。此外,物联网(IoT)设备漏洞利用工具在 GitHub 上也有提供。即使是用于针对性攻击的无限键盘记录器( Limiless Keylogger )也与 GitHub 项目相关联。
最近,具有传统网络犯罪(尤其是金融诈骗)背景的中国黑客组织 Winnti 集团被指控将 GitHub 滥用为疑似其新后门(被 Trend Micro 检测为 MBKDR64_WINNTI.ONM )的命令与控制( C&C )通信传输渠道。研究还表明,该组织目前仍在使用一些臭名昭著的 PlugX 恶意软件变种( Winnti 兵器库主要内容)通过特定的 GitHub 帐户进行有针对性的攻击操作。
恶意软件分析
安全团队分析的恶意软件分为两个文件:loader 和 payload。
loadperf.dll 是与其有着相似名称的合法对应文件的修改版本。作为 Microsoft 文件,它有助于操纵性能注册表。目前,已在原有分区上新添加了一个额外组件。该文件自复制在 WINDIR%\system32\wbem\ 上并替换原始 DLL,利用 Windows 收集与系统性能相关信息的合法文件——WMI 性能适配器服务(wmiAPSrv),通过 services.exe 导入loader。该系统还导入所有相关 DLL 文件并将payload loadoerf.ini 包括在内。感染链包括从 loadoerf.ini 导入的附加功能 gzwrite64(虽然为空)。gzwrite64 被用作 payload 入口点的虚假应用程序接口(API)。尽管 gzwrite64 由 loadperf.dll 导入,payload 主要功能实际上位于 loadoerf.ini 的 DLLMain 中。
图 1:添加至原 loadperf.dll 文件的附加分区 .idata
图 2: 导入的附加功能 gzwrite64
payload 是一个名为 loadoerf.ini 的文件,具有解密、运行和代码注入功能。DLLMain 被系统加载时通过 CryptUnprotectData 解密 payload。由于该功能高度依赖于实际“设备 ID ”,无法通过非原始受感染主机解密,增加了恶意软件分析难度。
图 3:payload 中使用的解密功能
解密之后,在设备上运行的部分代码随即被注入到 svchost.exe(一个关键的 Windows 组件);payload 被加载到内存。
图 4:loadoerf.ini 执行/感染流程
说到这里,GitHub 到底如何被滥用呢?感染成功后,恶意软件开始通过存储在 GitHub 项目中的库与 HTML 页面展开通信。
图5:托管 C&C 通信 HTML 页面的 GitHub 账号
看到上述图像,任何恶意软件威胁分析师都会立即将第3行代码识别为潜在的 PlugX 加密特征。开始标记 DZKS 与结束标记 DZJS 在 PlugX 中极具代表性。然而,仔细观察后发现解密算法不同于 PlugX。在此例中,解密过程会为实际的命令与控制(C&C)服务器提供引用:恶意软件将连接到的 IP 地址与端口号。
Winnti 目前通过使用不同的加密算法将这些 C&C 信息存储在 Github 文件中。其中之一就是 PlugX 使用的算法。事实上,我们已从分析的 C&C 字符串中发现了 PlugX 引用,表明该组织也可能在这次特定活动中使用相同后门。虽然我们无法通过那个特定的 GitHub 账号查找到 PlugX 样本,但可以由此推测出一些 PlugX 变种如何在复杂大环境下通过该 GitHub 库获取 C&C 信息。
本次 GitHub 活动中使用的所有其他算法几乎全部派生自原始的 PlugX 算法:
○ PlugX 类型 +移位字符串 + Base64
○ PlugX 类型 +移位字符串+ Base64 + XOR
○ PlugX 类型 + Base64 + XOR
其中一种算法还内置了标记字符串+ 移位字符串 + Base64编码。
Winnti 寻踪
网络犯罪分子使用的 GitHub 帐号创建于 2016 年 5 月。他们还曾于 2016 年 6 月通过该账号创建了一个源自另一个 GitHub 通用页面的合法项目/存储库(手机项目)。
Winnti 的 C&C 通信库创建于 2016 年 8 月。我们推测该 GitHub 帐户未被入侵、确由 Winnti 创建。截至 2017 年 3 月,该库已经包含了创建于不同时间的 14 个不同的 HTML 页面。
活动时间线
我们通过分析 GitHub 中暴露的日期映射 Winnti 开展的活动。对于每个文件,GitHub 存储首次与末次提交时间戳;这使我们能够创建该组织多台 C&C 服务器首次使用时间表。
我们对 IP 地址连接至 Winnti C&C 服务器的时间段进行监控,了解到具体行动从下午开始持续至深夜。此份时间表的特征与网络犯罪分子的传统工作时间相似,此类群体都有着较为简单的组织架构、偏好较晚时间开始工作直至深夜。实际上,我们仅观察了在周末开展的一次活动实例(在此期间创建了一个新的 HTML 文件)。
我们追踪到关于此 GitHub 账户的最早活动时间是 2016 年 8 月 17 日,最近一次发生在 2017 年 3 月 12 日。以下是根据监控记录整理出的 C&C 服务器 IP 地址首次使用时间线:
图6:C&C服务器IP地址时间线
C&C服务器
Winnti 使用的 GitHub 帐号显示了使用各种端口号的 12 个不同的 IP 地址。发送至这些 C&C 服务器的所有通信都经由三个不同的端口号:53(DNS)、80(HTTP)和 443(HTTPS)。这些均是 PlugX 和 Winnti 恶意软件变种在被入侵设备与 C&C 服务器之间进行通信时采用的典型技术。几乎所有 C&C 服务器都在美国托管,其中两台位于日本。
图 7:用于 C&C 通信的 IP 地址以及相应端口号
我们在此篇文章文发布前向 GitHub 私下透露了本次发现,目前正积极与他们展开合作,共同应对该威胁。
结论
滥用 GitHub 等备受欢迎的平台使 Winnti 等威胁行动者得以在雷达覆盖区域内实现被入侵计算机与服务器之间的网络连通。尽管 Winnti 可能仍在使用传统的恶意软件,通过相对独特的策略在威胁活动曲线上保持领先地位的能力反映出他们在具体行动中采用了更加高深的技术。
被检测为 BKDR64_WINNTI.ONM 的相关哈希值(SHA256):
○ 06b077e31a6f339c4f3b1f61ba9a6a6ba827afe52ed5bed6a6bf56bf18a279ba — cryptbase.dll
○ 1e63a7186886deea6c4e5c2a329eab76a60be3a65bca1ba9ed6e71f9a46b7e9d – loadperf.dll
○ 7c37ebb96c54d5d8ea232951ccf56cb1d029facdd6b730f80ca2ad566f6c5d9b – loadoerf.ini
○ 9d04ef8708cf030b9688bf3e8287c1790023a76374e43bd332178e212420f9fb — wbemcomn.ini
○ b1a0d0508ee932bbf91625330d2136f33344ed70cb25f7e64be0620d32c4b9e2 — cryptbase.ini
○ e5273b72c853f12b77a11e9c08ae6432fabbb32238ac487af2fb959a6cc26089 — wbemcomn.dll
英文稿源:blog.trendmicro.com,译者:Liuf,校对:BXD、FOX
from hackernews.cc.thanks for it.