寫在前面的話
長久以來,網絡攻擊者一直都在積極探索和實現針對Linux操作系統的定向攻擊,而LaZagne(一種流行的開源密碼恢復工具)等實用工具的易訪問性,使得威脅行為者在惡意軟件攻擊鏈中使用它們來轉儲密碼時變得越來越方便了。這類工具正在對Linux用戶構成重大安全風險,因為網絡攻擊者可以利用它來攻擊類似Pidgin之類的熱門聊天軟件,并使用D-Bus API來提取包括密碼在內的敏感信息。
在這篇文章中,我們將描述攻擊者如何利用LaZagne從Pidgin D-Bus API來獲取這些敏感信息,以及為什么我們要對D-Bus API的行為保持安全警惕。除此之外,我們還將介紹攻擊者如何在特定的惡意軟件活動中使用LaZagne。
D-Bus介紹
Desktop-Bus,通常稱為D-Bus,它是基于*nix的系統中的一種進程間通信(IPC)機制,允許應用程序和服務高效地相互通信。D-Bus使用客戶端-服務器體系結構,其中dbus-daemon守護程序充當服務器,應用程序充當客戶端。
D-Bus廣泛應用于NetworkManager、PulseAudio、systemd和Evolution等流行軟件中,它實現了各種系統組件和應用程序之間的無縫通信。例如,Evolution郵箱客戶端就使用了D-Bus與其他組件(如Evolution Data Server)進行通信,而這些組件常常負責存儲和管理郵箱賬戶、聯系人和日歷等任務。
Linux系統上的D-Bus API促進了應用程序和服務之間的通信,但也可能會暴露敏感數據。因此,如果不對API進行監控,它們很有可能會帶來風險。沒錯,現在正有很多網絡攻擊者正在利用LaZagne并通過Pidgin D-Bus API來轉儲用戶的憑證信息。
LaZagne是如何竊取Pidgin憑證的?
TLDR:LaZagne會連接到Pidgin客戶端的D-Bus API,然后在應用程序運行的時候,嘗試獲取目標用戶的賬戶憑證,包括用戶名和密碼:

下圖中的代碼顯示了LaZagne如何與Pidgin D-Bus API建立連接,并收集用戶憑證數據:

接下來,我們對代碼中圈中的重點部分進行剖析:
1、get_password_from_dbus方法是在Pidgin類中定義的,并繼承自ModuleInfo類;
2、D-Bus會與使用dbus.bus.BusConnection(session)創建的每一個會話進行連接,針對Purple對象(以Pidgin D-Bus API實例創建的對象)調用的每一個方法,dbus-python庫都會在內部處理D-Bus消息的創建、發送和接收;
3、PurpleAccountGetUsername(_acc)、PurpleAccountGetPassword(_acc)和PurpleAccountGetProtocolName(_acc)方法用于跟Pidgin應用程序交互,它們會嘗試利用Pidgin D-Bus API獲取每一個賬號對應的用戶名、密碼和協議名稱;
4、提取出來的信息會以字典的形式存儲在一個名為pwd_found的列表文件中;
除此之外,LaZagne還允許網絡攻擊者轉儲除Pidgin賬戶之外的其他賬戶憑證信息,其中包括KDE錢包(KWallet)的密碼。而KWallet則是一個安全的密碼管理系統,用于Linux上的KDE桌面環境。這些密碼是保存在KWallet系統中的個人密碼,其中可以包括網站、郵箱賬戶、Wi-Fi網絡或用戶選擇存儲的任何其他憑據數據。
根據研究人員的發現,這些年來很多網絡犯罪分子一直都在利用D-Bus API來嘗試獲取目標用戶的各種敏感信息,這也將LaZagne和D-Bus API的安全問題再次推到了風口浪尖上。
惡意軟件活動中的LaZagne使用
LaZagne在多個操作系統上的可用性使其成為威脅行為者的一個有吸引力的工具。
2019年,疑似伊朗資助的威脅組織“Agent Serpens”(又名“Charming Kitten”或APT35)在一系列攻擊中使用了LaZagne,從基于Windows的系統中獲取登錄憑據。
2020年,Unit 42的研究人員追蹤到了一個名為CL-CRI-0025(被其他公司標記為UNC1945或LightBasin)的網絡犯罪組織,它們使用包含各種工具(包括LaZagne)的自定義快速模擬器(QEMU)Linux虛擬機從意大利和其他歐洲目標獲取憑證信息。
同樣是2020年,研究人員還追蹤到了Prying Libra(又名Gold Dupont,是RansomEXX勒索軟件活動的幕后黑手)同樣也在使用LaZagne從目標主機中提取憑證。
早在2021年7月,Adept Libra(又名TeamTNT)就使用了LaZagne作為其Chimaera活動的一部分,并從各種操作系統竊取密碼,其中還包括基于云環境的Linux發行版。這場活動至少持續到2021年12月,當時的Adept Libra甚至還使用了LaZagne在Kubernetes環境中從WordPress網站竊取密碼。
下圖顯示的是2021年12月份的一次網絡攻擊活動中攻擊者所使用的Bash腳本樣例(利用了LaZagne的功能):

監控D-Bus API
由于LaZagne可以利用D-Bus從運行的應用程序中提取敏感數據,因此我們可以監控D-Bus API調用以檢測此類可疑活動。
Bpftrace是Linux系統的命令行工具,用于內核和用戶級程序的動態分析。使用Bpftrace工具,我們可以在dbus_message_get_args() API上設置探測器,并使用這個API從應答消息中提取參數。在下圖中,我們使用了bpftrace工具來監控LaZagne活動(SHA256: d2421efee7a559085550b5575e2301a7c2ed9541b9e861a23e57361c0cdbdbdb)和D-Bus API調用:

我們所使用的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%lx\n", pid, comm, func, arg0); }'
上圖顯示了LaZagne成功地轉儲了Pidgin用戶名和密碼(在左側終端上),API調用記錄在bpftrace輸出中(在右側終端上)。
總結
密切監控D-Bus API可能是安全防御人員保護應用程序和網絡系統免受惡意軟件和黑客工具攻擊的重要方式。隨著云計算和物聯網的日益普及,強有力的安全措施至關重要。開發人員和網絡安全專業人員必須合作,隨時了解安全風險,并采取必要行動保護應用程序和敏感用戶數據。
入侵威脅指標IoC
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
}
RacentYY
FreeBuf
RacentYY
安全內參
ManageEngine卓豪
GoUpSec
尚思卓越
ManageEngine卓豪
007bug
安全牛