澳大利亞議會網絡攻擊活動相關的惡意程序分析

澳大利亞議會網絡攻擊活動相關的惡意程序分析

2月初,澳大利亞議會遭遇了一場有針對性的網絡攻擊。據BBC消息,澳大利亞總理莫里森聲稱:黑客曾試圖入侵澳大利亞議會網絡系統,且在國家聯邦選舉前幾個月,就已秘密潛伏在了執政的聯盟黨和反對黨工黨的網絡中,好在澳大利亞網絡安全中心(Australian Cyber Security Centre, ACSC)及時對攻擊進行了遏制防範。另外,負責信息安全的澳大利亞信號局(ASD)將會與議會事務部(DPS)一起對該起攻擊事件進行調查。

澳總理的聲明中指出,攻擊幕後黑手為活動於亞太地區的國家支持型APT黑客組織,但卻未在官方聲明中給出明顯指向,也沒公佈任何與黑客組織相關的證據。只是澳大利亞網絡安全中心(ACSC)公佈了此次網絡攻擊中黑客所使用的一些惡意程序樣本,為此,安全公司Cybaze-Yoroi 打算從這里入手,來分析該APT黑客組織的一些能力特點和攻擊手法。

技術分析

據分析,所有給出的樣本都為後滲透利用階段程序,攻擊者利用這些惡意程序來實現數據滲漏和橫向滲透。另外,這些惡意程序都不屬於如 Metasploit 或 Empire的開源框架,而是完全定製化且基於C#和.NET開發的程序。

LazyCat DLL

首先我們來看的是在安全社區中被標記名為LazyCat的樣本,它屬於滲透測試套裝Mimikatz中的工具。

澳大利亞議會網絡攻擊活動相關的惡意程序分析

從靜態分析中可以看出,LazyCat樣本涉及的庫為.NET架構,無任何編碼混淆,因此可以很容易地轉化出其源碼形式:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

澳大利亞議會網絡攻擊活動相關的惡意程序分析

從以上代碼中可以看出,DumpMemory 函數通過利用屬於DbgHelp庫的MiniDumpWriteDump方法,來監測和收集任意進程記憶體的內容,其執行結果將被儲存在利用「Output」參數命名的一個文件中:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

而且,該樣本還可以啟動一個名為「TcpRelay」的服務,目的可能想在攻擊者端和受害者網絡之間建立一條路由,以便後續的橫向深入滲透,其中的StartTcpRelay函數如下:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

仔細查看源碼,可見一個名為 「RottenPotato」 的特殊模塊,它其中包含了很多有意思的函數,如與 MS Windows環境中後滲透階段相關的 「findNTLMBytes」 和 「HandleMessageAuth」。關聯分析後發現,該模塊來自於GitHub上的一個開源攻擊框架- https://github.com/foxglovesec/RottenPotato。其中的findNTLMBytes函數如下:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

通過diff比對分析發現,這里的惡意RottenPoteto模塊比GitHub上原版的RottenPoteto中多出了一些方法函數,由此可見,為了符合自身目的,攻擊者已經對開源的RottenPotet做過武器化改裝。這種開源工具的改裝應用,加大了調查取證中的溯源和歸因難度。LazyCat惡意程序還設置了一個專門的痕跡清理模塊「LogEraser」:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

「LogEraser」模塊中最主要的方法函數為 「RemoveETWLog」,其功能在於刪除Windows系統下的事件日誌跟蹤記錄(ETW)文件,以此來對攻擊環境執行清掃。以下為刪除Windows系統ETW文件的代碼:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

由上圖代碼可以看出,惡意程序會檢查所有和Windows日誌相關的記錄,如果某條記錄ID與特定ID相符,則會執行刪除。

在我們的分析過程中,可能由於其引用了開源代碼的原因,該惡意樣本具備了一個中低的檢出率。以下是VirusTotal的檢測結果:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

Powerkatz DLL樣本

這個Powerkatz程序有兩個樣本,其屬性分別如下:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

澳大利亞議會網絡攻擊活動相關的惡意程序分析

盡管這兩個DLL樣本之間的HASH值不同,但其功能基本一致,攻擊者只是稍微對其中的一些字符串和變量名做了修改,目的估計是為了免殺處理。兩個樣本之間僅存在少許不同,且都具備有效的整體功能,樣本對比如下圖所示:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

兩個樣本的主類反編譯源碼中也顯示了相同的功能,例如,從兩樣本的AsyncTask類比較來看,其具備基本一致的特徵,因此,下文中我們將會統一把它看做是一個樣本。

澳大利亞議會網絡攻擊活動相關的惡意程序分析

這個樣本由多個類和函數組成,我們可以把「StartNew」函數作為分析入口,顧名思義,如其名稱所示,該函數可以在受害者係統中啟動一個新的異步任務,且把_app當做任務對象參數傳遞。這個異步任務一旦啟動,該函數會用重復1秒(1000ms)的休眠週期等待任務執行完成,然後向函數調用返回一個有效的狀態碼。這個樣本模塊可能會與其它惡意植入程序一起配合使用,隱秘地在後台執行任務。以下為StartNew函數代碼:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

該樣本名稱雖和Github上的Powershell工具https://github.com/digipenguin/powerkatz同名,但兩者代碼完全不同。與前一個樣本類似,該樣本在VirusTotal上檢出率也不算太高,28/70,如下:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

攻擊偵查模塊(Recon Module)

該模塊程序中的端口掃瞄樣本屬性如下:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

和前面樣本類似,該樣本也是C#編寫的,主要包含了「PortScanner」和「ReconCommonFuncs」兩個主類,通過該樣本,攻擊者的植入程序才能開展下一步動作。該樣本的兩個主類:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

從反映出的代碼來看,實際上,「portScan」函數中內置了一個整型數組,其中包含了一系列常見的網絡端口,涵蓋了主要的本地網絡服務,如HTTP,TELNET, RDP, POP, IMAP, SSH, SQL …等等。如下:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

對於「portScan」函數中聲明的每個端口,樣本都會執行一個嘗試連接的TCP掃瞄。如果連接成功,證明開啟了相應的服務和端口,然後會把返回響應的服務banner信息存儲在一個名為「StringBuilder」的對象中。樣本程序會把所有掃瞄端口的響應進行連接,最後會把它寫入到一個用「ReconCommonFuncs」 類定義的文件中去。以下為執行端口掃瞄的具體代碼:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

以下是樣本中調用C#的TcpClient執行掃瞄:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

在「ReconCommonFuncs」類中,提供了一些能用得到的實用函數,如「Append」和「GZipAndBase64」,這些函數意圖一目瞭然。以下為「ReconCommonFuncs」類包括的函數:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

Powershell客戶端(Agent)

該樣本主要屬性如下:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

該樣本名稱為「OfficeCommu.dll」,攻擊者可能想把它和正常的Office通信模塊混淆,Office通信模塊在大多Windows系統中都具備。並且,該樣本就是一個用於後滲透階段的應用型程序,目的在於創建一個Powershell客戶端(Powershell Agent),用它作為攻擊者植入程序解析腳本和執行Powershell命令的組件。以下為Powershell客戶端的主要函數代碼:

澳大利亞議會網絡攻擊活動相關的惡意程序分析

總結

從分析結果來看,攻擊者選擇了多模塊方法來開發他們自身的網絡入侵工具,並且利用程序庫生態下的某些函數功能封裝了深入且具備入侵性質的攻擊,成功實現了復雜的惡意程序植入。

盡管這些利用到的函數和庫沒有0day漏洞利用和相關技術,而且從澳大利亞議會提供的惡意程序樣本來看,其檢出率也相對較高,但也恰恰說明,攻擊者傾向於對開源工具進行包裝利用,再進行入侵工具的二次定製化開發,這樣一方面可以縮短入侵程序的「上市時間」,也不會對資源的有效性和危險性形成影響。這種對已知技術的二次包裝開發,也能在某種程度上繞過某些殺軟,突破傳統安全邊界,實現隱秘植入。

來源:華人頭條A

來源:A1d2m3i4n5