在Linux上狩猎Netwire RAT

如今攻击者可以选择多种 RAT,现在的这些 RAT 不仅针对 Windows 而是跨平台的(如 CrossRAT、Pupy 与 Netwire)。尽管此前有大量的研究针对  Windows 与  macOS 版本的 Netwire,但是 Linux 版本的 Netwire 却鲜为人知。

Netwire 简介

Netwire 是由 World Wired Labs 开发并销售的 RAT。它支持远程访问 Windows、macOS、Linux 和 Solaris 系统,可以用多种方式传输文件与系统管理。

其中也有许多功能会被滥用,被滥用时这些功能没有看起来那么好了:

键盘记录

使用浏览器 User-Agent 伪装网络流量

捕获屏幕截图

在 Web 浏览器中访问凭据

Netwire 允许通过代理转发流量、监听接收加密命令控制的任何端口。文章的末尾表格列出了 Netwire 使用的 ATT&CK 概述情况,特定在 Linux 中的技术以粗体显示。

Linux 版特性

Netwire 大多数功能在各个平台上都是相同的,只有少数功能不同。比如 Windows 平台的持久化依赖 Windows 注册表,但在非 Windows 系统中不存在注册表需要更改持久化方法。另外,不同平台的可执行格式也不相同,Windows 和 macOS 版本分别使用 PE 与 Mach-O 格式,而 Linux 与 Solaris 使用 ELF 格式。

持久化机制也有变化,提供了使用 XDG 自启动项与 crontabs 定时任务进行持久化。之前,我们介绍过 crontabs 但是没有详细探讨过 XDG 自启动项,这类似于 Windows 中的开始菜单启动项。

在任何使用与 Freedesktop.org 的 XDG 兼容的类 Unix 桌面操作系统中,都可以添加自启动项在桌面加载时执行程序或脚本。这些文件通常在以下文件夹中,也可以通过环境变量对路径进行更改:

 /etc/xdg/autostart
 ~/.config/autostart

自启动项本身的文件扩展名通常为 .desktop,其内容如下所示:

[Desktop Entry]
Type=Application
Exec=/home/user/.config/dbus-notifier/dbus-inotifier
Name=system service d-bus notifier

当然,Netwire 不是唯一一个使用这种方法的 RAT( FysbisPupyjRATCrossRAT )。

详细分析

我们在 VirusTotal 上查看了 Netwire 的 样本 ,我们将其下载下来进行详细地分析。

执行样本后,注意到样本将自身复制到一个隐藏文件夹中,并从该隐藏文件夹中启动。

这是将自己隐藏起来的第一步,用以将 RAT 的副本安装到本地文件夹以便长期潜伏。接下来现实了 Netwire 使用 .desktop 进行持久化的机制与其他两个文件的创建。

文件 /tmp/.rOuYXzdOF 可能是用于确保 Netwire 只运行一次的互斥量。接下来的文件 .default.conf 是一个配置文件,用于存储 Netwire 与 C&C 服务器通信所需的配置数据。在 Windows 中该信息存储在注册表中。最后,Netwire 会建立网络连接以供攻击者进行远程控制。

归因到 Netwire

为了归因到 Netwire,我们提供了多方证据。首先,VirusTotal 上的反病毒引擎的检测率与家族分类信息可以提供可信支撑。接下来,根据 Patrick Wardle 对 macOS 的 Netwire 变体的 分析文章 中从 macOS 版 Netwire 样本中提取的字符串。将这些字符串与 Linux 版 Netwire 进行比较可以发现 14 个相同的字符串。如 User-Agent、网络配置发现、可能是会话 ID 或密码的特殊字符串:

/bin/bash
/bin/sh
/tmp/.%s
Accept-Language: en-US,en;q=0.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
CONNECT %s:%d HTTP/1.0
Current IP Address:
GET / HTTP/1.1
Host: %s:%d
Host: checkip.dyndns.org
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
checkip.dyndns.org
exit
hyd7u5jdi8

最后,我们将其余字符串与 Netwire 在线用户手册的功能进行了比较。Netwire 较新版本的发行说明中提到了对 crontab 持久化的支持,并且我们观察到一个字符串暗示该程序可能使用了 crontab -l 命令,尽管在执行过程中我们并未发现该命令执行。我们还观察到了 Netwire 用户手册中描述的 HTTP 和 SOCKS 代理的字符串。据此,我们可以非常肯定地说该样本是 Netwire 的变体,而且是较新的版本。希望本文能够对检测、阻止环境中的 RAT 提供一些帮助!

Netwire 使用的 ATT&CK 技术项

ATT&CK ID 战术 描述 注释
XDG 自启动项 N/A Netwire 可能会在 Linux 系统上使用 XDG 自启动项来进行持久化 可由用户在编译时配置
数据压缩(T1002) 数据外带 Netwire 可以将捕获的屏幕压缩
应用窗口发现(T1010) 发现 Netwire 可以发现并关闭受控主机上的窗口
系统网络配置发现(T1016) 发现 Netwire 与外部通信发现其公共 IP 地址 Netwire 使用域名 checkip.dyndns.org
数据加密(T1022) 数据外带 Netwire 将捕获的击键记录存储在加密的日志文件中
标准加密协议(T1032) 命令控制 Netwire 使用 AES 加密来传输数据
系统用户发现(T1033) 发现 Netwire 可以发现已登录的用户
伪装(T1036) 防御逃避 Netwire 伪装成其他软件,网络流量伪装 User-Agent Netwire 模拟了 TeamViewer、macOS Finder 与其他软件的流量,通常使用 Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko. 作为 User-Agent
加壳(T1045) 防御逃避 一些文件使用 .NET 加壳工具进行检测逃避
计划任务(T1053) 执行、持久化、权限提升 使用计划任务保持 Netwire 的持久化 Netwire 并未内置计划任务,通常由部署 Netwire 的另一种机制实现
进程注入(T1055) 防御逃避、权限提升 使用进程注入逃避检测 代码注入系统进程如 notepad.exe、svchost.exe 和 vbc.exe 中
输入捕获(T1056) 信息收集、凭据访问 Netwire 可以执行键盘记录
进程发现(T1057) 发现 Netwire 可以发现并中止受控主机上的进程
命令行界面(T1059) 执行 Netwire 可以使用 cmd.exe 和 sh 执行命令
注册表运行/启动文件夹(T1060) 持久化 Netwire 创建一个注册表启动项维持持久化 可以在编译时配置
本地计划任务(T1168) 持久化、执行 Netwire 通过 cron 定时任务实现的能力
文件中的凭据(T1081) 凭据访问 Netwire 可以从邮件客户端程序中检索密码 支持的程序包括 Windows Live Messenger、Pidgin、Mozilla Thunderbird 和 Microsoft Outlook
系统信息发现(T1082) 发现 Netwire 可以发现并收集失陷主机信息
连接代理(T1090) 命令控制、防御逃避 Netwire 可以代理系统的网络流量
进程 Hollowing(T1093) 防御逃避 使用该技术逃避检测
远程文件复制(T1105) 命令控制、横向平移 Netwire 将文件传输至远端系统
修改注册表(T1112) 防御逃避 Netwire 将配置存储在 Windows 注册表中 配置信息通常存储在 HKCU:\Software\Netwire
屏幕截图(T1113) 信息收集 Netwire 可以捕获失陷主机的屏幕
数字签名(T1116) 防御逃避 Netwire 使用伪造或无效的数字证书
启动代理(T1159) 防御逃避 Netwire 包含启动代理的 macOS 启动选项 可在编译时进行配置
登录(T1162) 持久化 Netwire 包含用于登录的 macOS 启动项 可在编译时进行配置
Web 浏览器凭据(T1503) 凭据访问 Netwire 从众多 Web 浏览器检索密码 支持的浏览器包括 Mozilla Firefox、Internet Explorer、Opera、Chromium 和 SeaMonkey

*参考来源: RedCanary ,FB 小编 Avenger 编译,转载请注明来自 FreeBuf.COM