工作来源:Virus Bulletin 2021

背景分析

Linux 僵尸网络呈愈演愈烈之势,许多是由脚本小子使用开源工具包(如 Mirai、Gafgyt 源码)创建的,但仍有一半以上是由专业的攻击团伙来运营的。年初,Keksec 因构建 Necro/Freakout 僵尸网络而闻名,但其组建 DDoS 僵尸网络最早可追溯到 2016 年。

Keksec 在 2020 年短暂的休整后在 2020 年 8 月再次活跃,而后一共发现了 20 次攻击行动。Keksec 的攻击者非常高调,还会在社交媒体上炫耀攻击行动。

Keksec在 pastebin.com 上创建了一个开放目录保存恶意软件和一些针对 Windows 和 Linux 主机的攻击工具。

攻击行动

通过历史样本总结生成 Yara 规则,在海量样本库中进行回扫。再通过样本相似性聚类进行分组,人工去除误报后共留下 5000 个样本。将这些样本作为种子,利用威胁情报挖掘系统扩展样本,关联捕获时间、漏洞利用和其他一些相关属性,再进行分析。

一共捕获发现了 23 个漏洞利用、5564 个样本文件和 3 个恶意软件家族。以此形成如下图表:

通过蜜罐发现 Keksec 几乎不间断地对网络发起扫描和攻击,尤其是引入新漏洞利用后,扫描就会显著增强。高频攻击从 2020 年 8 月持续到 12 月,随后低迷直到 2021 年 1 月 Keksec 开始传播新的恶意软件家族 Necro。

漏洞利用

Keksec 可以使用专用的扫描服务器,也可以利用样本内置的扫描功能。其利用的漏洞和相应传播的恶意软件家族如下所示:

Keksec 对 1day 漏洞的利用非常迅速,特别是在使用 Necro 恶意软件后,通常在 POC 披露的两到三天内就可以看到 Keksec 的在野利用。

恶意软件

Keksec 针对 Windows 和 Linux 平台开发了多个恶意软件:

  • 针对 Linux 平台:Tsunami (Capsaicion、Ziggy)、Gafgyt (LULzbOT、Oreo、Gafgyt_tor)

  • 针对 Windows 平台:DarkIRC (AutoIt 加壳)、DarkHTTP (AutoIt 加壳)

  • 跨平台 Python 脚本:Necro

  • 基于开源项目:Rootkit、Miner、JS Bot

Keksec 积极维护 Gafgyt、Tsunami 和 Necro 三个主要的恶意软件家族,并为之不断增加新的功能。虽然 Necro 的框架是由 Keksec 自己开发的,但也从另外两个家族的开源代码中继承了不少功能。

Keksec 利用开源的恶意代码开发各种各样的变种,导致变种极其混乱。例如,Keksec 的主要成员 Freak 开发并开源了名为 Capsaicion 和 Ziggy Redo 的两个 Tsunami 变种。也发现了一些混用 Capsaicion 和 Ziggy 代码的 Tsunami 样本。而 Gafgyt 的变种中也同样混乱,包括 LulZBoT、Oreo、bigB04t 和 Simps,一些变种甚至重用了 Tsunami 的代码。而使用 Python 开发的 Necro 不仅重用了 IRC 协议进行 C&C 通信,还借鉴了许多开源项目的关键特性。

三个主要的恶意软件家族的特点如下所示:

Scan

Keksec 主要使用 Telnet 和 SSH 弱口令扫描和诸多漏洞利用进行扫描。

Telnet Scan

开源 Tsunami 的 Telnet 弱口令扫描功能是名为 BurnTheJews 的函数,如下所示:

而在 Keksec 中名为 ak47telscan 的函数,与 BurnTheJews 基本一致。

该函数其实也是从其他开源项目中修改而来:

SSH Scan

SSH 弱口令扫描由 Necro 僵尸网络执行,在安装 paramiko 库后使用内置弱口令进行爆破。

漏洞利用扫描

Keksec 并不具备 0day 发现能力。如果 POC 是 C 实现的,就集成到 Tsunami 和 Gafgyt 的恶意软件中,如果 POC 是 Python 实现的,就集成到 Necro 恶意软件中。

Necro 最常用的三个漏洞利用为:

  • TerraMaster RCE:CVE-2020-28188

  • VMware vCenter Server RCE:CVE-2021-21972

  • WebLogic RCE:CVE-2020-14882

Sniffer

Keksec 可以过滤掉一些指定的端口和 IP 地址后捕获 TCP 流量,将数据转发给 C&C 服务器。Tsunami 和 Gafgyt 中使用的 Sniffer 代码也是基本一致的,如下所示数据通过 1337 端口上传。

由于 Necro 也使用 IRC 协议,Necro 可能和 Tsunami 共享同一个 C&C 服务器。Keksec 想要基于 IRC 协议构建一个僵尸网络管理平台,作为能够攻击各种架构和系统的僵尸网络的统一管理平台。

伪装进程

更改进程名称

Linux 系统上一个非常传统的进程伪装技术是使用随机字符串覆盖 argv 参数和 prctl(PR_SET_NAME,buf) 来更改进程名称和启动参数。

Rootkit 隐藏进程

开源项目 r77 Rootkit 是一个 ring3 层 Windows Rootkit,通过全局 Hook ntdll.dll 的一些函数来拦截和过滤目标进程的信息。该 Rootkit 通过进程注入动态加载并在内存中执行。

进程注入

Shellcode 注入进程后加载 Rootkit,该 Shellcode 也来自名为 RDI 的开源项目。

DGA

Necro 使用 DGA 来逃避检测,主要有两种方式的 DGA 生成算法:

随机

第一种是纯随机算法,从自定义字母表中随机选择 16 个字符,以生成在顶级域名 .xyz 下的 C&C 域名。

DDNS+随机

第二种基于 DDNS 服务,从自定义字母表中随机选取 10 到 19 个字符。

Tor

Keksec 使用 Tor 代理进行 C&C 通信。

Gafgyt

在 Gafgyt 中通过内置代理列表与 C&C 服务器通信,单个样本最多可使用 173 个代理 IP。

随机选择一个 C&C 服务器进行通信,建立连接代码如下所示:

通信数据如下所示:

Necro

Necro 也会通过 Tor 代理进行 C&C 通信,而 C&C 通信使用 IRC 协议。如下所示:

混淆和加壳

UPX

捕获的大部分 Gafgyt 和 Tsunami 样本都没有加壳,也没有剥离符号信息。少数样本使用标准 UPX 加壳,脱壳的样本也没有被剥离符号信息。

字符串编码

Gafgyt 和 Tsunami 样本使用简单的映射算法对敏感字符串(例如 C&C 地址)进行加密,并在使用字符串时进行解密。

该算法是由名为 ziggystartux 的 Tsunami 变种所开发的。初期使用的和原始版本一致,经过几次迭代后使用的字符串修改为 "%q*KC)&F98fsr2to4b3yi_:wB>z=;k? "EAZ7.D-md

Necro 还在字符串替换后执行 ZIP 压缩以进一步保护字符串:

多态引擎

Necro 使用了 2015 年公开的 Python 源码混淆技术,Keksec 将其称为“Polymorphic engine”,一共发现了两个版本:

  • 旧版本使用随机字符串替换预定义的关键对象名称列表,如下所示:

  • 新版本使用 AST 库动态遍历并用随机字符串替换全局对象,如下所示:

C&C 通信

Gafgyt 的命令使用 encode 函数进行加密,接收到指令后需要在本地对指令进行解密:

而 Tsunami、Necro 和 DarkIRC 恶意软件家族都使用 IRC 协议,这意味着只需要开发和维护一个 C&C 系统即可控制所有失陷主机。

传播

感染页面

Necro 可以感染失陷主机上的 Web 文件(.js.html.htm.php),在文件中插入 JS 代码 http://ublock-referer.dev/campaign.js

Campaign.js 实际上是一个高度混淆的代码,解码后是一个基于 JavaScript 的木马 Cloud9。

SMB 扫描

Necro 在其中一个版本中加入了 SMB 扫描代码,实现了内网横向平移。可能由于实际效果并不尽如人意,此功能在后续版本中被移除了。

该部分代码也可以在 GitHub 上找到原型:

其他

JS Bot

Necro 感染 Web 文件的目标是传播 JS Bot,当用户通过浏览器访问受感染的页面时,就会加载该 Bot。该 JS Bot 的功能非常丰富,可以记录键盘击键、窃取表单/剪贴板/Cookie和其他数据、伪造 Web 访问行为,并通过浏览器发起 HTTP DDoS 攻击等。

攻击者还使用仿冒的 Firefox 插件,通过逆向发现该插件也会向浏览器注入 Cloud9。

Miner

Keksec 的挖矿功能并未深入集成到 Bot 中,而是通过第三方矿机来实现。

绝大多数挖矿都是门罗币,也有 XTZ,查看钱包地址可以发现攻击者的收益并不理想。

运营

恶意样本投递

从 2020 年 8 月开始,每天捕获的新样本量如下所示:

在此前日常分析中,我们也发现了二月中下旬 Keksec 的活跃传播,其单日峰值传播量达到数万,这与 360 Netlab 的趋势跟踪也是一致的。

攻击者几乎每天都在调整代码,有时一天可以捕获到好几个新样本。这表明 Keksec 团伙拥有充足的人力和资源,并且越来越活跃。

Necro 在 2021 年也在频繁更新升级:

攻击基础设施

提取了 Gafgyt 和 Tsunami 家族样本的 C&C 信息,如下所示。

通过 Passive DNS 关联解析记录可以发现关键域名 gxbrowser.netcnc.c25e6559668942.xyz,大部分 IP 地址都与这两个域名有关。

从 2021 年起,Keksec 便不再使用这两个域名,转而使用 Tor 和 DGA 域名。

基础设施的活动模式如下所示:

  • 每个 C&C IP 生命周期从一个月到三个月不等

  • 在同一时期优先使用同一网段内的 IP 地址资源

  • 从 2021 年 3 月开始转向使用 Tor 代理

  • Tor 的 C&C 域名更新频率非常高,仅 3 月一个月就使用了 10 个 Tor 域名

家族活跃统计

样本的投递也有活动模式:

  • Tsunami 在 2020 年 8 月中旬出现,但活跃时间较短

  • Gafgyt 在 2020 年 9 月至 12 月间断性活跃

  • Necro 在 2021 年 1 月突然出现

  • Tsunami 在 2021 年 2 月上半月恢复传播,接着是 Gafgyt 和 Gafgyt_tor

  • Gafgyt_tor 变种和 Gafgyt 有很多相似之处,代码明显同源

每个家族都在开发和传播之间切换,在开发周期中会进行大量升级改进:

工作思考

尽管 Keksec 尝试通过 DDoS、挖矿、窃取信息和销售恶意软件进行获利,但仍然以 DDoS 攻击为主,这可能是 Keksec 最大的收入来源。尽管 Keksec 没有 0day 的发现能力,但其代码集成和运营能力极其强大,仍然是一个不可忽视的威胁。

工作来自 360 Netlab,分析是一如既往的扎实。可以看出其内部建设的威胁情报挖掘、Passive DNS 等系统对分析工作的支撑十分有效,此前其博客也发布过多篇文章进行描述。其他安全厂商如 Check Point、Lacework 和绿盟等也对 Keksec 有持续的跟踪与披露。公开的威胁披露可以弥补不同厂商间的信息盲区,站在更大的视角下分析安全威胁。

最近勒索软件的声浪一波高过一波,非常引人注目,但僵尸网络作为一大安全威胁仍然值得深入分析。现在的僵尸网络除了 DDoS 外往往选择挖矿来进行多元化获利,大型的僵尸网络如 TeamTNT、8220、DDG 等仍然十分活跃。攻击者对僵尸网络不断地更新迭代也督促安全检测和安全防护能力快速升级,在僵尸网络运营升级时尽早发现就可以在攻击对抗中提前半步。对于全网大规模僵尸网络的持续跟踪监测,也许可以帮助我们去粗取精,聚焦更多精力在更值得关注的点上。

IOC

    107.174.133.119107.175.31.130143.198.120.58185.10.68.175192.210.163.201193.239.147.211193.239.147.224198.144.190.116198.144.190.523.94.190.10145.145.185.22145.145.185.22945.145.185.8345.153.203.1245.253.84.19770.66.139.6883.97.20.9084.16.79.13055pnros74tawlmqn.onionb4bzpyrhc65airpg.onioncjoy2cks2bhtyibj.oniondimumdjenyy4jwlc.onionfaw623ska5evipvarobhpzu4ntoru5v6ia5444krr6deerdnvpa3p7ad.onionfpv4a2q6wqxx7jdh.onionfxiiouorymolxsqcjltq2mqaz3il5uqs3ynlabh5onfw3irbqltot6ad.onionks5wtmd7bbuybajg.oniontzfue66fa5khu44z.onionwvp3te7pkfczmnnl.onion

    声明:本文来自威胁棱镜,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。