BPFdoor:隐形Linux恶意软件绕过防火墙进行远程访问

发布时间:2022-05-13 01:14

最近发现的一种名为 BPFdoor 的后门恶意软件已经悄悄地针对 Linux 和 Solaris 系统,五年多来一直没有被发现。

BPFdoor 是一个 Linux/Unix 后门,它允许攻击者远程连接到 Linux shell 以获得对受感染设备的完全访问权限。

该恶意软件不需要打开端口,无法被防火墙阻止,并且可以响应来自网络上任何 IP 地址的命令,使其成为企业间谍活动和持续攻击的理想工具。

解析“魔术”数据包
BPFdoor 是一个被动后门,这意味着它可以在一个或多个端口上侦听来自一个或多个主机的传入数据包,攻击者可以使用这些端口将命令远程发送到受感染的网络。

该恶意软件使用 Berkeley Packet Filter(后门名称中的 BPF),它在网络层接口上工作,能够查看所有网络流量并将发送数据包发送到任何目的地。

由于定位在如此低的级别,BPF 不遵守任何防火墙规则。

它有适用于 Linux 和 Solaris SPARC 系统的版本,但它也可以移植到 BSD,BleepingComputer 从 Sandfly Security 的创始人 Craig Rowland 那里了解到,该公司提供无代理解决方案来保护 Linux 系统。

安全研究员 Kevin Beaumont在 BPFdoor 上发表了 一篇博文,他告诉 BleepingComputer,操作员使用“魔法”密码来控制植入物的行为。

BPFdoor 仅解析 ICMP、UDP 和 TCP 数据包,检查它们的特定数据值,以及后两种数据包的密码。

BPFDoor 的突出之处在于它可以监视任何端口的魔术包,即使这些端口被其他合法服务使用,例如网络服务器、FTP 或 SSH。

如果 TCP 和 UDP 数据包具有正确的“魔术”数据和正确的密码,则后门会立即执行支持的命令,例如设置绑定或反向 shell。

Beaumont 告诉我们,ICMP 数据包不需要密码,这使他能够使用 ping 功能扫描互联网以运行 BPFdoor 植入程序。

“ping 功能允许您指定 IP 地址和端口以供其回复 - 因此我能够让受害者植入物回复我控制的完全不同的 IP” - Kevin Beaumont

研究人员能够在不同地区的组织网络上找到 BPFdoor 活动,其中最著名的是美国、韩国、香港、土耳其、印度、越南和缅甸。

令人惊讶的是,他发现了 11 台 Speedtest 服务器感染了 BPFdoor。研究人员表示,目前尚不清楚这些机器是如何受到损害的,特别是因为它们运行在闭源软件上。

绕过本地防火墙

Rowland在一份关于 BPFdoor 的综合 技术报告中指出 ,该恶意软件采用了一些巧妙的反规避策略:

驻留在系统内存中并部署反取证操作(擦除进程环境,尽管它没有成功,因为它使其为空)
加载伯克利包过滤器 (BPF) 嗅探器,使其能够在任何本地运行的防火墙前工作以查看数据包
接收相关数据包时修改“iptables”规则以允许攻击者通过本地防火墙进行通信
以类似于常见 Linux 系统守护程序的名称伪装二进制文件
重命名并运行为 /dev/shm/kdmtmpflush
将二进制文件(timestomping)的日期更改为 2008 年 10 月 30 日,然后再将其删除
Rowland 认为,在这种情况下,作为一种反取证技术,timestomping 的解释可能是攻击者可能会尝试保护二进制文件以防删除失败。

研究人员表示,伪造日期的目的可能是隐藏恶意软件,使其无法在系统上寻找新文件。

更改防火墙规则特别重要,因为它允许攻击者通过防火墙无法标记为可疑的流量与后门通信。

Rowland 解释说,当受感染的主机收到一个特殊的 BPFdoor 数据包时,恶意软件“将生成一个新实例并更改本地iptables规则,以从请求主机重定向到 shell 端口。”

“例如,植入程序可以使用 TCP 端口 443(加密网络)将来自攻击者的所有流量重定向到外壳。在外部,流量看起来像 TLS/SSL 流量,但实际上攻击者正在与系统上的远程根 shell 交互”- Craig Rowland,Sandfly 安全

为了进一步澄清,Rowland 表示,对于本地 shell,恶意软件会修改“iptables”配置,以将来自攻击者的所有流量通过合法端口重定向到恶意软件中定义的端口范围。

这样,攻击者可以选择任何端口上的连接,因为它会被路由到防火墙后面的 shell。

资料来源:Craig Rowland,Sandfly Security
命令和检测
威胁情报和事件响应公司 ExaTrack的 Tristan Pourcelot 对 BPFdoor 的另一项 技术分析指出,该恶意软件带有几个硬编码名称,这些名称与相关数据包中的命令字符串相匹配:

justtryit、justrobot和justforfun在端口 42391 到 42491 上建立绑定 shell
socket或sockettcp为数据包中存在的 IP 地址设置反向 shell

BPFdoor 逃避检测的部分技术是使用以下选项重命名二进制文件以显示为普通的 Linux 守护进程:

/sbin/udevd -d
/sbin/mingetty /dev/tty7
/usr/sbin/console-kit-daemon --no-daemon
hald-addon-acpi: listening on acpi kernel interface /proc/acpi/event
dbus-daemon --system
hald-runner
pickup -l -t fifo -u
avahi-daemon: chroot helper
/sbin/auditd -n
/usr/lib/systemd/systemd-journald

Pourcelot 说,攻击者定期更新 BPFdoor,用不同的命令、进程或文件名称改进每个版本。

例如,较新的植入程序变体从使用命令关键字切换到 MD5 哈希,可能是为了避免微不足道的检测。

目前在Virus Total扫描平台上检测到的BPFdoor至少有21个版本,最早的版本是2018年8月提交的。

虽然这种植入物的检测率有所提高,特别是在 Beaumont、Rowland 和 Pourcelot 发表他们的发现之后,但该恶意软件在很长一段时间内几乎不可见。

从 2019 年开始,Solaris 的一个 BPFdoor 变体至少在今年 5 月 7 日之前未被检测到。今天,28 个防病毒引擎将其标记为恶意软件。

资料来源:Kevin Beaumont,ZZQIDC
在某些情况下,检测是通用的,并且不准确地将上述 Solaris 变体标记为 Linux 恶意软件,尽管它不是 Linux 二进制文件。

Tristan Pourcelot 说,虽然 BPFdoor 没有使用新颖或复杂的技术,但它仍然设法在很长一段时间内保持隐身。

这可以解释为恶意软件监控技术在 Linux 环境中不像在 Windows 中那样普遍。此外,“供应商的知名度要低得多,”博蒙特告诉 BleepingComputer。

Craig Rowland 同意这是一个大问题。即使有监控,人们也不知道要查找什么或使用错误的方法来查找 Linux 恶意软件。

研究人员告诉我们,一些管理员使用加密哈希来扫描系统中的恶意软件或恶意文件。这不能很好地工作,因为文件中的最小更改会导致新的哈希值。

“此外,EDR [端点检测和响应] 想要全面加载代理,而代理会破坏 Linux,因此它们通常不是一个好的选择。所以人们经常在 Linux 上裸奔,这样的事情就会发生”——克雷格·罗兰,特别是指较旧的 Linux 系统

Rowland 说寻找 BPFdoor 很容易,至少对于他分析的 Linux 版本而言,因为它的策略清楚地表明它们“只是开箱即用的恶意软件”。

资料来源:Craig Rowland,Sandfly Security
Nextron Systems THOR APT 扫描仪的创建者Florian Roth找到了 2018 年旧版本 BPFdoor 的源代码。该代码现在在 Pastebin 上公开可用。

研究人员 BleepingComputer 谈到 BPFdoor 时并未将恶意软件归咎于任何威胁行为者。但在一份关于网络威胁的年度报告中,普华永道 (PwC) 的研究人员指出,他们在事件响应参与期间发现了 BPFdoor 植入物。

普华永道将此次入侵归咎于他们追踪的一名中国演员 Red Menshen(前身为 Red Dev 18),他一直在“
中东和亚洲的电信提供商以及政府、教育和物流领域的实体中使用 BPFdoor”部门。”

在调查期间,普华永道研究人员发现,在他们的攻击的后期利用阶段,Red Menshen 使用了 Mangzamel 后门和 Gh0st 远程访问工具 (RAT) 的自定义变体,以及 Mimikatz(提取凭据)和 Metasploit 等开源工具渗透测试套件,用于 Windows 系统上的横向移动。

“我们还发现,攻击者通过托管在知名提供商的虚拟专用服务器 (VPS) 向 BPFDoor 受害者发送命令,而这些 VPS 反过来又通过攻击者使用的位于台湾的受感染路由器进行管理作为 VPN 隧道” -普华永道

研究人员指出,Red Menshen 的活动发生在 9 小时的时间间隔内,即世界标准时间 01:00 到 10:00 之间,这可能与当地的工作时间一致。



客户热线:037125966675