作者:啟明星辰ADLab
一、分析簡述
在《蜻蜓二代“Dragonfly2.0”惡意組件分析報告(上篇)》中,啟明星辰ADLab詳細闡述了蜻蜓二代的兩個組件 Backdoor.Dorshel 和 Trojan.Karagany.B 相關的技術細節,本篇將對剩余的組件進行詳細分析。其中組件Backdoor.Goodor 和 Screenutil 目前未能找到樣本,但根據目前掌握的信息可知,組件 Backdoor.Goodor 為一款常駐組件,實現了遠程組件的下載執行,可能屬于蜻蜓二代攻擊的第二階段組件。而組件 Screenutil 為一款屏幕工具組件,主要用于實現桌面截圖功能,此項功能在蜻蜓一代中同樣也存在,該組件屬于第三階段的信息竊取組件。本文將對剩余的4個核心組件進行詳細的剖析。
本次公開的8個組件中一些組件的功能有所重疊,由于蜻蜓黑客組織的攻擊手段多樣,所以第一個階段會因為所依賴的攻擊方式不同而采用了不同的攻擊組件,比如組件 Trojan.Karagany.B 偽裝成為 Flash 更新,適合作為第一階段的后門投放,而同樣作為第一階段被投放的 Dorshel 組件卻可能是通過郵件或者水坑式攻擊的方式進入受害主機。根據目前掌握的情況,我們列出蜻蜓二代各個組件的基本功能及其可能的投放階段,如下表:

上表中第一階段投放表示黑客通過各種攻擊手段向受害者投放的第一個可執行組件,主要用于下載第二階段的組件執行以及執行一些必要操作;而第二階段的組件是由第一階段的組件下載執行的,主要以收集情報為主;第三階段可能在已有情報的基礎上對目標下放特定組件,一則可能用于進一步的信息竊取,二則用于掃描受害者主機的環境,這個階段的樣本并不完整,比如缺少 OPC/SCADA 掃描組件等。
二、蜻蜓二代技術變化
從以上公開的組件分析來看,蜻蜓二代相比蜻蜓一代而言通信更加難以監測,蜻蜓一代幾乎都采用了明文的 HTTP 通信,而二代組件與C&C的通信(包含信息收集、命令交互、文件回傳等操作)普遍采用了 HTTPS 的方式來進行加密傳輸,無法通過 IDS 等流量監測設備進行有效的監測。另外組件進行遠程請求的 URL 也有所改進,蜻蜓一代的 URL 都包含有明確含義的.php(如:“log.php”、“testlog.php”、“source.php”),而蜻蜓二代更具有迷惑性,如采用隨機名且無后綴的URL(如:/A56WY),以及采用后綴名.gif(如:getimage/830411.gif)。蜻蜓二代的 Loader 模塊開始采用實時下載純加密 Shellcode 代碼執行的方式來執行,并不會落地到磁盤,而蜻蜓一代的 Loader 模塊則是下載完整PE文件執行,并且會落地到磁盤。另外,蜻蜓二代還將一些隱蔽性很高的技術應用于其攻擊組件之中,如預初始化劫持技術(Backdoor.Dorshel)、模板注入技術(Trojan.Phisherly)等。
蜻蜓二代在收集信息及竊密時,采用組件 Hacktool.Credrix 竊取更為敏感的信息,除了竊取各類瀏覽器相關登錄憑證外,還開始獲取系統賬戶的登錄憑證、遠程桌面登錄憑證以及郵件客戶端的登錄憑證。
三、蜻蜓二代剩余組件分析
1. 組件 Trojan.Heriplor
Trojan.Heriplor 為該黑客組織專用后門,第一代和第二代都有出現,用于下載惡意組件執行。目前我們所能得到的樣本是一個64位 dll 文件,該模塊的主要功能是從C&C端下載 Shellcode 并且執行。
該組件首先初始化要調用的系統 API 函數,隨后通過 Socket 連接遠程C&C服務器121.200.62.194,連接端口為8443。連接成功后組件向C&C端發送8個字節數據。

接下來開始下載shellcode執行。通信時,組件先從C&C接收4個字節的數據作為下一次要接收數據的長度。組件以接收的長度作為內存大小分配一段可讀可寫可執行內存,用于接收shellcode執行,如下圖:

2. 組件 Trojan.Listrix
Trojan.Listrix 組件主要用于收集受害者主機信息,根據賽門鐵克描述的信息,該模塊具有收集計算機名稱、用戶名稱、文件列表、進程列表、操作系統版本等信息。
該組件通過遍歷感染主機的所有驅動器查找符合如下文件后綴的文件:*.rtf,*.zip,*.pfx,*.cer,*.crt,*.pem,*.key,*.cfg,*.conf,*.pst,*.rar,*.doc,*.docx,*.xls,*.xlsx,*pass*.*,*.pdf,*.pub,*.ppk,Volume*.*,然后將這些文件的文件路徑、大小、創建時間等信息寫入到臨時文件目錄下臨時文件中,接著將其拷貝到AppData目錄下的“\Update\Temp\ufiles.txt”。最后惡意代碼通過cmd命令進行自刪除,并退出。
在臨時文件目錄創建臨時文件:

遍歷硬盤,查找符合規則的文件:

將獲取到的符合規則的文件信息寫入到臨時文件:

通過cmd命令執行刪除自身文件:

3. 組件Trojan.Phisherly
該組件是一個 DOCX 文檔,其利用了 Office 對 DOCX 中指定的關聯資源解析漏洞來竊取用戶的共享憑證。
通過我們對該組件的分析發現,該組件文件中的 Relationship 標簽被指定為一個遠程的共享文件。當該文檔被打開后,Office進程會利用 SMB 協議來訪問該共享文件。

在 SMB 通信中,當客戶端訪問遠程服務器時,客戶端會先向服務器發送一個“Negotiate Protocol Request”請求,這個請求中包含了客戶端所支持的所有 SMB 版本信息,服務器收到請求后,選擇一個它支持的最新版本,在通過“Negotiate Protocol Response”回復給客戶端。Negotiation 結束之后,客戶端請求和服務器建立一個會話,在客戶端發送的 Session Setup Request 里,包含了身份驗證請求。服務器回復 Session Setup Response,包含了驗證的結果。Session Setup 通過后,客戶端就成功的連上了服務器,客戶端發送 Tree Connect Request 來訪問具體的共享資源。
如果遠程服務器被設置成誘餌服務器,那邊受害者主機會嘗試將自身的憑證發送給誘餌服務器做驗證。此時誘餌服務器便可以獲取到該憑證并且收集起來供黑客使用。

該方法此前稱為“模板注入”技術,實際上并不準確,該技術實際上和模板并沒有關系,只是當時發現的樣本中剛好利用了模板文件作為遠程共享文件。如下圖:

4. 組件 Hacktool.Credrix
組件 Hacktool.Credrix 同樣也是用來竊取用戶憑證,該組件可以接收一個參數用來指定保存憑證信息的文件路徑,如果不提供參數則將憑證信息保存到C:\\Users\\Public\\Log.txt文件。
竊取的信息包括系統憑證信息、Google Chrome、Mozilla Firefox、Internet Explorer、Opera瀏覽器中保存的憑證信息,FTP客戶端 FileZilla 中保存的憑證信息,郵箱客戶端 Outlook、Thunderbird 保存的憑證信息,遠程終端的憑證信息等。
其中竊取系統憑證信息的代碼采用了開源項目 mimikatz 的代碼。相關憑證信息及實現方法如下表所示:

1)提取 Chrome 憑證信息
Chrome 瀏覽器保存用戶登錄信息的數據庫文件為%AppData%\Local\Google\Chrome\User Data\Default\ Login Data,該數據庫是 sqlite3 的數據庫,數據庫中用于存儲用戶名密碼的表為 logins。logins 表結構定義如下:

從該表中讀取的內容是加密的,通過 CryptUnprotechData 函數對其進行解密便可以獲取到明文數據。

2)提取 Mozilla 憑證信息
組件首先從注冊表獲取 Firefox 的安裝目錄和安裝版本。

接著利用安裝目錄中文件 nss3.dll 來解密數據庫 signons.sqlite 中被加密的內容。

通過SQL語句獲取到主機名、被加密的用戶名及密碼。

調用 nss3.dll 中的導出函數對 sqlite 查詢出的用戶名和密碼進行解密。

3)Internet Explorer 憑證信息獲取
該組件通過多種方式來提取IE瀏覽器保存的登錄憑證(不同IE內核的提取方法不同),具體如下:
通過pstorec.dll的PStoreCreateInstance函數來提取憑證信息。

通過vautcli.dll組件來提取憑證信息。

通過guid “abe2869f-9b47-4cd9-a358-c22904dba7f7”解密保存的IE密碼。

通過IE的自動完成密碼機制來獲取明文的用戶憑證。

4)FileZilla 憑證獲取
FileZilla 憑證獲取較為簡單,其登錄憑證信息是用明文存儲的。因此只需要定位到相應的配置文件即可找到用戶的登錄名和密碼,如下圖:

5)Outlook 憑證獲取
該組件通過枚舉注冊表 Software\Microsoft\Windows?NT\CurrentVersion\Windows?Messaging?Subsystem\Profiles 下的所有子健,讀取鍵名為下表中的數據比如password進行解密還原出明文的密碼。

6)Thunderbird憑證獲取
同樣,Thunderbird 的憑證數據也是存儲在數據庫文件中%AppData%\\Thunderbird\\Profiles,然后通過 nss3.dll 的導出函數對儲存文件的密碼進行解密。

7)系統憑證提取
針對不同系統使用了兩種獲取系統密碼的方法,NT6 以上內核使用 bcrypt.dll 中的導出函數進行解密,NT6以下則使用 lassrv.dll 進行解密。

通過 lsasrv 的初始化函數發現了一段調試日志信息,通過該信息可以確定該段代碼采用了開源項目 mimikatz 的代碼。

8)RDP 憑證獲取
組件首先獲取 lsass.exe 的進程ID,然后遍歷目錄%AppData%\\Local\\Microsoft\\Credentials下存儲的所有RDP憑證文件,憑證文件只有進程 lsass 才具有解密能力。所以,程序會注入 shellcode 到進程 lsass.exe,對加密的憑證文件進行解密。以下是遠程注入部分的代碼流程:

四、總結
從公開信息以及當前的分析可以看出,蜻蜓組織是一個具有多種攻擊能力的黑客組織,其能夠通過竊取受害主機憑證來訪問目標網絡,并且還有廣泛的定制化的黑客工具集來對目標網絡進行攻擊。從蜻蜓一代到二代的發展來看,該黑客組織的對抗手段已經運用得越來越多(如 https 加密通信、實時的加密 shellcode 下載執行、預初始化代碼劫持、模板注入等),并且也開始頻繁的運用合法的系統管理工具如 PowerShell、PsExec 和 Bitsadmin 來進行輔助實現攻擊,這在一定程度上加大了威脅發現的難度。雖然該黑客組織在攻擊過程中沒有使用過0day,但是其長期對能源部門的情報收集,表明該組織是一個高度專注的黑客組織。從各種攻擊案例來看,該組織的目的并非為謀取經濟利益,更有可能是為了達到某種政治目的。
啟明星辰積極防御實驗室(ADLab)
ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近300個,持續保持亞洲領先并確立了其在國際網絡安全領域的核心地位。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。

本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/395/
暫無評論