执行摘要
攻击者增加了对 Linux 系统的针对性攻击,而 LaZagne(一种流行的开源密码恢复工具)等黑客工具实用程序的易于访问性使得威胁行为者越来越方便地在恶意软件攻击链中使用这种工具来转储密码。该工具给 Linux 用户带来了巨大的风险,因为它针对的是 Pidgin 等流行的聊天软件,使用 D-Bus API 提取包括密码在内的敏感信息。
本文简要概述了 LaZagne 如何利用 Pidgin D-Bus API 来获取此信息,以及为什么密切关注 D-Bus API 可能是明智的安全举措。我们还将研究攻击者如何在特定的恶意软件活动中使用 LaZagne。
使用eBPF的Linux高级WildFire成功检测到D-Bus API相关活动。Palo Alto Networks的客户通过YARA和行为规则从野火中的黑客工具LaZagne获得保护,以检测与LaZagne威胁有关的可疑活动。
D-Bus简介
Desktop-Bus,通常称为D-Bus,是基于 *nix 的系统中的一种进程间通信 (IPC) 机制,允许应用程序和服务有效地相互通信。D-Bus 使用客户端-服务器架构,其中dbus-daemon应用程序充当服务器,应用程序充当客户端。
D-Bus 广泛应用于 NetworkManager、PulseAudio、systemd 和 Evolution 等流行软件中,它可以实现各种系统组件和应用程序之间的无缝通信。例如,Evolution 电子邮件客户端使用 D-Bus 与 Evolution 数据服务器等其他组件进行通信。该数据服务器处理诸如存储和管理电子邮件帐户、联系人和日历等任务。
Linux 系统上的 D-Bus API 促进应用程序和服务之间的通信,可能会暴露敏感数据。因此,如果不对其进行监控,API 可能会带来风险。LaZagne 黑客工具利用Pidgin D-Bus API 来转储凭据。
LaZagne如何窃取Pidgin证书
LaZagne 连接到 Pidgin 客户端的 D-Bus API 并在应用程序运行时获取帐户凭据,包括用户名和密码(如图 1 所示)。
图 1. LaZagne 获取帐户凭据。
图 2 中的代码显示了 LaZagne 黑客工具如何与 Pidgin D-Bus API 连接以检索凭据。
图 2.LaZagne 利用 D-Bus 获取密码
下面是图 2 中突出显示的代码的细分。
1、get_password_from_dbus方法在 Pidgin 类内部定义,该类继承自ModuleInfo类。
2、每个会话的 D-Bus 连接是使用dbus.bus.BusConnection(session)创建的。对于紫色对象(作为 Pidgin D-Bus API 的实例创建)调用的每个方法,dbus-python库在内部处理 D-Bus 消息的创建、发送和接收。
3、PurpleAccountGetUsername (_acc)、PurpleAccountGetPassword(_acc)和PurpleAccountGetProtocolName(_acc)方法用于与 Pidgin 应用程序交互。它们分别从 Pidgin D-Bus API 中获取每个帐户的用户名、密码和协议名称。
4、然后,提取的信息作为字典存储在名为pwd_found的列表中。
可用于类似过程的一些低级libdbus库 API(如图 3 所示)包括:
1.dbus_message_new_method_call()
2.dbus_message_append_args()
3.dbus_connection_send_with_reply_and_block()
4.dbus_message_get_args()
图 3. LaZagne 的 Pidgin 类的低级实现。
LaZagne 允许威胁行为者转储除 Pidgin 之外的其他帐户的凭据。它还可以通过 D-Bus API 转储 KDE 钱包 ( KWallet ) 密码。KWallet 是 Linux 上 KDE 桌面环境使用的安全密码管理系统。这些密码是保存在 KWallet 系统中的个人密码,其中可以包括网站、电子邮件帐户、Wi-Fi 网络的密码或用户选择存储的任何其他凭据。
威胁行为者利用这些 D-Bus API 来获取敏感数据,并且各种公共来源记录了过去几年中利用 LaZagne 的犯罪组织的案例。
恶意软件活动中的 LaZagne
LaZagne 在多个操作系统上的可用性使其成为对威胁行为者有吸引力的工具。
2019 年,疑似伊朗资助的威胁组织 Agent Serpens(又名 Charming Kitten 或 APT35)在一系列攻击中使用 LaZagne,从基于 Windows 的系统中获取登录凭据。
2020 年,Unit 42 研究人员追踪的活动集群CL-CRI-0025(被其他公司追踪为名为 UNC1945 或 LightBasin 的威胁参与者),使用了自定义快速仿真器 (QEMU) Linux 虚拟机,其中包含各种工具,包括 LaZagne ,从意大利和其他欧洲目标获取凭证。
据报道,自 2020 年以来,我们追踪的威胁参与者Prying Libra(又名 Gold Dupont,导致 RansomEXX 勒索软件的攻击幕后黑手)已使用 LaZagne 从目标主机提取凭据。
早在 2021 年 7 月,Adept Libra(又名 TeamTNT)就使用 LaZagne 作为其 Chimaera 活动的一部分,从各种操作系统(包括基于云的环境中的 Linux 发行版)窃取密码。该活动至少持续到 2021 年 12 月,当时 Adept Libra 使用 LaZagne 从 Kubernetes 环境中的 WordPress 网站窃取密码。
下表总结了该黑客工具在各种恶意软件攻击活动中的使用情况:
图 4 显示了在报告的 2021 年 12 月攻击中使用 LaZagne 的 bash 脚本示例。
图 4.TeamTNT LaZagne 脚本(按哈希计算的 VirusTotal 结果)
复杂的威胁组织在其活动中使用 LaZagne 凸显了该工具在捕获密码和进一步利用方面的有效性。
监控 D-Bus API
由于 LaZagne 可以利用 D-Bus 从正在运行的应用程序中提取敏感数据,因此我们可以监控 D-Bus API 调用以检测此类可疑活动。库跟踪工具(例如基于扩展伯克利数据包过滤器 ( eBPF ) 的工具)有助于公开 D-Bus API 调用。
下面的图 5 说明了使用bpftrace工具针对 LaZagne 黑客工具活动监控 D-Bus API(SHA256:d2421efee7a559085550b5575e2301a7c2ed9541b9e861a23e57361c0cdbdbdb)
Bpftrace是Linux系统的命令行工具,专为动态分析内核和用户级程序而设计。使用bpftrace工具,我们在dbus_message_get_args() API上设置探针。我们使用此 API 从回复消息中提取参数,该消息在libdbus-1.so.3共享对象库中定义。
我们使用的单行bpftrace探测命令如下:
sudo bpftrace -e 'uprobe:/lib/x86_64-linux-gnu/libdbus-1.so.3:dbus_message_get_args { printf("pid: %d, comm: %s, func: %s called with 1st param value: 0x%lxn", pid, comm, func, arg0); }'
图 5. 使用 bpftrace 监控 D-Bus API
上面的图 5 显示 LaZagne 成功转储了 Pidgin 用户名和密码(在左侧终端上),并且 API 调用已记录在 bpftrace 输出中(在右侧终端上)。
挂钩高级 D-Bus API 并记录进程标识符 (PID) 和程序名称等详细信息非常有用,因为它们允许我们识别哪个进程正在调用 API。
结论
密切监控 D-Bus API 可能是防御者保护应用程序和连接系统免受恶意软件和黑客工具侵害的重要方法。开发人员和网络安全专业人员必须合作,及时了解安全风险,并采取必要的措施来保护应用程序和敏感用户数据。
随着云计算和物联网的日益普及,强大的安全措施至关重要。配备 eBPF 的Advanced WildFire for Linux 成功检测到 D-Bus API 相关活动。Palo Alto Networks 客户通过 YARA 和行为规则获得 Wildfire 中的黑客工具 LaZagne 的保护,以检测与 LaZagne 威胁相关的可疑活动。
Indicators of Compromise
LaZagne二进制
d2421efee7a559085550b5575e2301a7c2ed9541b9e861a23e57361c0cdbdbdb
LaZagne二进制
d23707e0123732e03d156a0fd474a1384e1b3deee3235df9e96ff5d21a4d440c
LaZagne shell 脚本(在 kubelet 活动中使用)
b58bef842f6d6d4f53e6821f9ac1b63780267cc81006b649b56c263efeab1306
YARA
rule elf_hacktool_lazagne
{
meta:
author = "Siddharth Sharma - PaloAltoNetworks"
description = "the lazagne hacktool."
strings:
$str1="lazagne" ascii wide nocase
$str2="softwares.chats.pidgin" ascii wide nocase
$str3="softwares.wallet.gnome" ascii wide nocase
$str4="softwares.sysadmin.shadow" ascii wide nocase
$str5="libdbus" ascii wide nocase
condition:
uint32(0) == 0x464c457f and all of them
}
转载来源:https://unit42.paloaltonetworks.com/lazagne-leverages-d-bus/
图片来源网络侵权可联系删除