APT34是一個來自伊朗的APT組織,自2014年起,持續對中東及亞洲等地區發動APT攻擊,涉獵產業主要包含政府、金融、能源、電信等。攻擊武器庫不斷升級,攻擊手法也不斷推陳出新,而攻擊者不會因為被曝光而停止攻擊行為,這種情況已經持續多年。
4月17日,有國外媒體報道,一個名為「Lab Dookhtegan」的用戶在Telegram上曝光了來自APT34組織的攻擊工具包,一些APT34的受害者資料也同時被揭露出來。該事件如同以前的原始碼外洩事件一樣,極具爆炸性。 APT34組織至少從2014年開始,持續對中東及亞洲的某些國家發動了多次攻擊,攻擊目標為政府、金融、能源、電信等產業。組織的目標一般是伊朗的對立國家,所以有人猜測,該組織是伊朗的某個安全部門,或是和伊朗政府長期合作的安全公司。該組織善於利用社群媒體,偽造各種身分的網路帳號,透過社交工程技巧接近攻擊目標。同時,該組織的攻擊武器庫不斷升級,攻擊手法也越來越高明,他們將魚叉釣魚等攻擊手段與新型攻擊技術融合,不斷擴大現有目標的滲透範圍。
被揭露的APT34組織成員
根據洩漏的Webshell列表,很明顯該組織近期對中國進行了大規模的攻擊行動。這張圖表列出了超過10家標註為「China」的網站被攻破,可作為證據來支持針對國內攻擊的論述。
Lab Dookhtegan曾經聲稱每隔幾天就會曝光一名組織人員的個人資訊,不過現在Telegram和Twitter上的帳號已經被封鎖。
在此原始碼外洩的事件中,包含了大量APT34組織常用的重要攻擊武器,如:Webshells_and_Panel、 posion frog 、Webmask、Glimpse。東巽科技2046Lab使用《鐵穹高級持續性威脅預警系統》對這些攻擊武器做了威脅偵測,並從技術層面做了深入分析。
Webshells_and_Panel目錄中主要包含了多種C#所寫的Webshell工具,在Webshell目錄中包含兩個主要的檔案夾,分別為HighShell和HyperShell。
1.1 HighShell
#在HighShell目錄中只有HighShell.aspx,該Shell為針對Windows伺服器的WebShell。開啟後預設介面如下圖:
透過上面的圖片可以看出,版本為5.0版本,擁有認證、檔案上傳、指令執行、資料庫運算等多項功能。
使用該Webshell需要在「Login」標籤後的紅色輸入框中輸入連線密碼( Th!sN0tF0rFAN) 後點「Do it」按鈕,當輸入框變為綠色即可透過該Webshell對伺服器進行相關操作。下圖為操作「command」指令並取得伺服器資訊的操作圖:
# 1.2 HyperShell
HyperShell是個包含多個源碼檔案的項目,其中包含多個WebShell的源碼檔案。以下為幾個可以使用的webshell的功能。
simple.aspx
包含認證、指令執行和檔案上傳功能的簡易webshell是simple.aspx。打開後如圖所示:
在Password輸入框中輸入連線密碼(MkRg5dm8MOk)點選「Login」按鈕後,即可對伺服器進行指令控制及檔案上傳。密碼連接如下圖:
下圖為操作「command」指令並取得伺服器資訊的操作圖:
simpleDownload.aspx
simpleDownload.aspx只有一個上傳功能,如下圖:
# HighShelllocal.aspx
HighShelllocal. aspx為HighShell的升級版,版本號為8.6.2,此版本功能與獨立的5.0版大致相同主要對介面及功能進行了最佳化,介面圖如下:
2.1 Agent
2.1.1 poisonfrog.ps1
Poisonfrog.ps1 is the only file of Agent, which is used to plant backdoor programs on compromised hosts.。該檔案運行後,會在失陷主機的C:\Users\Public\Public目錄下留下3個檔案,dUpdater.ps1、hUpdater.ps1和UpdateTask.vbs。
主機上留下的後門程式是UpdateTask.vbs腳本,每10分鐘透過排程任務自動執行。它的作用是運行兩個腳本:dUpdater.ps1和hUpdater.ps1。
2.1.2 dUpdater.ps1
此腳本為遠控腳本,它會產生DNS網域並連接控制伺服器,從中接收遠端指令,並進行文件的發送和接收。在生成DNS域名時使用了DGA.Changer演算法,動態地計算伺服器域名, 2046Lab對這個DGA.Changer演算法進行了復原:
receive函數:
執行EEA函數取得VVA域名,JJA參數設為r;
嘗試解析VVA域名,若失敗,則拋出異常,並重新產生新域名且嘗試解析新域名,重複操作直到域名解析成功;若成功,則取第一個成功解析的IP,並將IP的每一段分別取出;
若IP為1.2.3.*,則將NNA設為false,將RRA的值寫入PPA的文件,並退出主函數;
若NNA為true,修改RRA 的值,為IP的前三段,繼續循環主函數;
若IP為24.125.*.*,則將IP的第三段與第四段拼接作為C:\Users\Public\Public\$DDA\receivebox子資料夾名稱(PPA),將GGA設為1,將NNA設為true,繼續循環主函數;
若IP為11.24.237.110,則停止解析並退出主函數,該IP為OilRig曾經使用的IP。
Send函數:
執行Slaber檢查發送的文件,執行EEA函數取得VVA域名,JJA參數設為s;
嘗試解析VVA域名,若失敗,則拋出異常,並重新產生新域名且嘗試解析新域名,重複操作直到域名解析成功;若成功,則取第一個成功解析的IP,並將該IP的每一段分別取出;
#若IP為1.2.3.*,則取出IP的第四段得值並循環主函數;
若IP為11.24.237.110,則停止解析並退出函數,同時刪除要傳送的文件。
Slaber函數:
檢查傳送的檔案大小,超過600kb則報錯,否則執行resolver函數。
resolver函數:
解析發送的文件,每30個字元為一組。
processor函數:
處理接收的文件,MMB為」sendbox」資料夾中的文件;
若接收的檔案名稱以」0」結尾,將會接收的檔案寫入」sendbox」資料夾內,並使用UTF-8編碼,隨後移除先前接收的檔案;
若接收的檔案名稱以」1」結尾,若接收檔案內容裡面有路徑,則將路徑作為發送路徑;
若不存在則將」File not exist」字串寫入MMB文件,隨後移除先前接收的文件; # 時# 名以”2”結尾,將RRB設為”done”資料夾中的文件,將接收的文件移動至”done”資料夾下,再將該文件內容寫入MMB文件,隨後移除先前接收的文件。
2.1.3 hUpdater.ps1解析"myleftheart.com"的IP,並嘗試連接;
若存在C:\Users\Public\Public\files\ cfg.ini文件,則取對應參數欄位如srv、usr、pas、prt、dom。將srv與prt的值通過」:」拼接為新字串,並將該字串使用http設定為代理伺服器,將usr、pas、dom的值作為代理伺服器的憑證;若不存在,則取得預設代理伺服器,將usr、pas、dom的值作為代理伺服器的憑證;若不存在,則取得預設代理伺服器;
OOA:隨機取0至9中的若干個整數,取的個數在1至9個隨機選取,將取出的數拼接;
DDA:為dUpdater. ps1腳本中的DDA;
PPA:DDA的第5位插入OOA所得;
從「http://myleftheart.com/co/$PPA」下載文件,設下載的文件內容為QQA,將QQA以「」分隔,陣列設為SSA。
p為路徑C:\Users\Public\Public\files\$SSA[0]。
若SSA[2]長度大於0且SSA[2]不存在「not」字串,則從http://myleftheart.com/fil/SSA[3]下載檔案至C:\Users \Public\Public\files\$SSA[2],再將該內容寫入路徑p;
若SSA[1]長度大於0且SSA[1]不存在「not」字串,則上傳路徑p的檔案上傳至http://myleftheart.com/res/$PPA$SSA[0];
若SSA[4]長度大於0且SSA[4]不存在「not」字元串,則上傳路徑SSA[4]d的檔案上傳至http://myleftheart.com/res/$PPA$SSA[0];
若SSA中最後一個資料中值為“1” ,則循環執行主函數;
若SSA[0] 長度大於0且SSA[1]不存在」not」字串,則上傳路徑p的檔案至http://myleftheart.com/res /$PPA$SSA[0],並刪除路徑p的檔案。
Server端是APT34用於管理失陷主機的的總控制端,可從失陷主機下載文件,上傳檔案到失陷主機。
這個服務端提供了一個簡單的登入介面。
透過一個 JSON 設定檔管理使用者和密碼非常簡單。在洩漏的檔案中,使用了易於猜測的使用者名稱(blacktusk)和密碼(fireinthehole)。
下圖的GUID( /7345SDFHSALKJDFHNASLFSDA3423423SAD22 )的作用是引導瀏覽器進入登陸頁面,這個GUID可以說是很重要的。
The host lists for both HTTP Agent and DNS Agent are also available on the server side.。從這個清單中可以很方便地看到哪些主機現在是受控制的。
每個HTTP Agent和DNS Agent具有詳細資訊的頁面,在這裡,就可以對這個失陷的主機下發C&C的命令,上傳或下載檔案了。這裡的DNS Agent可能是合併了Glimpse的某些功能,Glimpse在下面做了詳細的介紹。
對於失陷主機,APT34使用一個預設的BAT遠控腳本來獲取主機信息,獲取的信息非常的詳細,包括系統、用戶、群組、網域、特定註冊表、規劃任務、防毒軟體等等。
該工具主要部署在攻擊者伺服器上,實現DNS代理,針對特定的DNS網域進行劫持,並將網域名稱預設指向本機伺服器,透過Squid3 ICAP實現HTTP/HTTPS代理,竊取受害者帳號密碼等敏感資訊。
dns-redir目錄:
#dnsd.py:DNS代理程式轉送腳本
config.json:設定檔
dnsd.js: JS類型的DNS代理程式腳本,和dnsd.py功能類似a。
本地模擬DNS代理功能截圖顯示如下:
#icap目錄:
icap.py:需要和Squid3結合使用,建立http/https代理,並將代理中的敏感資料記錄到本地。
squid.conf設定檔:
#Squid3 ICAP實作透明代理伺服器,icap.py腳本對密碼等敏感資料進行擷取,記錄到本機log文件中。
icap腳本檔案中針對回應response_body部分加入了劫持的程式碼,在受害者瀏覽器中載入指定的圖片元素。
Glimpse包含Agent、Panel和Server三個部分,是一種DNS遠端控制工具。從Glimpse Server中的某些程式碼來看,它的某些功能可能和poison frog是重合的,例如下發指令的方式。
總體來說,Glimpse和上面介紹的poison frog非常類似。在洩漏的資料中,也給了我們Glimpse的使用方法。
4.1 Agent
同樣,Glimpse中的Agent是運行在失陷主機上的後門程序,他的主要功能是接受命令,上傳和下載檔案。
Agent使用主機上的C:\Users\Public\Libraries目錄作為其工作目錄。傳送檔案、接受檔案都會在這個目錄下的子目錄內完成。
Agent可以工作在兩種模式下面,一種是ping模式,另一種是text模式。
ping模式主要用來交換主機資訊。 The text mode is akin to the internal protocol mode between the Agent and Server, which enables the acceptance of internal instructions.。
4.2 Panel
Panel用來查看總控的狀態,可以看到有多少失陷主機被控制,同時在這裡可以向失陷主機發送指令。
可以看到,透過panel對失陷主機發送指令,並且得到了回傳結果。
4.3 Server
Server是總控端, 透過DNS隧道協定進行通信,能夠回應Agent發送的ping模式訊息或TXT模式的命令, 同時也以TXT模式向Agent發送命令。根據程式碼風格來看,Glimpse和Poison Frog應該是由同一團隊創建的。
Server端支援了更多的TXT模式的協定指令,我們可以簡單的檢視一下這些指令的意義。
if (action == 'M') { // in this place we check the request for type of connection ping or text type if (action == 'W') { // in this place we check the request type if its text we response it else if (action == 'D') { else if (action == '0') { // ctrl[0] => action, if 0 = is there any file else if (action == '1') { // ctrl[0] => action, if 1 = sending the file else if (action == '2') {// ctrl[0] => action, if 2 = receiveing the file
cd0bbff03ce7946cd7c9dc339726d90a9d3d8fe14927172ca5546bdb95d947625e17061bf2dce87d402ddd8531abb49f
myleftheart.com
11.24.237.110
1 .不要輕易開啟可疑文件,如電子郵件、可疑連結、可疑文件等等。
2.及時安裝系統補丁,使用最新版本的軟體。
3.安裝防毒軟體、及時更新病毒庫。
以上是如何實現APT34洩密武器報告分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!