作者:啟明星辰ADLab

一、分析背景

2017年9月6日,安全公司賽門鐵克發布消息稱,著名俄羅斯黑客組織“Dragonfly”近期活動更加頻繁。“Dragonfly”是一個專門以能源電力機構、ICS設備制造廠商、石油管道運營商等為攻擊目標的黑客組織,該黑客組織曾經攻擊過法國、德國、意大利、波蘭、土耳其、美國等歐美國家的能源公司。該黑客組織自2010年開始活躍,直到2014年被該公司披露后,一度停止了攻擊活動。最近發現的“Dragonfly”從攻擊目的和惡意代碼技術上都有所提升,被稱為“蜻蜓二代”或者“Dragonfly2.0”。目前的證據表明,實際上蜻蜓二代在2015年12月份就已經有了活動跡象。

二、蜻蜓二代惡意代碼組件描述

蜻蜓二代“Dragonfly2.0”和一代一樣,使用多種攻擊方式(惡意電子郵件、水坑攻擊和合法軟件捆綁)對目標進行滲透并植入惡意代碼。

蜻蜓二代攻擊組件簡單描述如下:

  • Backdoor.Dorshel組件采用逃避框架Sheller處理過的惡意代碼,實現其他惡意組件的下載執行;

  • Trojan.Karagany.B組件為Trojan.Karagany(蜻蜓一代中出現)的升級版,原始文件名為“install_flash_player.exe”,其偽裝成為Flash更新,黑客組織可能通過社交網絡或者水坑式攻擊提供Flash更新鏈接,誘使受害者點擊運行,該組件能夠感染系統并常駐于系統,并且還具有竊密文件回傳、遠程執行任意命令、下載擴展組件執行等功能;

  • Trojan.Heriplor組件為該黑客組織專用后門,第一代和第二代都有出現,用于下載惡意組件執行;

  • Trojan.Listrix組件主要用于收集受害者主機信息,其中包含計算機名稱、用戶名稱、文件列表、進程列表、操作系統版本、CPU信息等;

  • Hacktool.Credrix組件可用于竊取用戶憑證及其他敏感信息;

  • Backdoor.Goodor組件常駐于受害者主機,以實現額外組件的下載和執行;

  • Trojan.Phisherly組件會以郵件的形式進行傳播,主要用于竊取用戶憑證。

本文先對 Backdoor.DorshelTrojan.Karagany.B組件進行詳細的技術剖析,剩下的組件我們將會在后續的篇幅中進行分析闡述。

三、Dorshel 和 Karagany.B 組件詳細分析

(1)組件 Backdoor.Dorshel

該組件通過 Sheller 逃避框架進行了代碼處理,在一定程度能夠躲避安全軟件的監控。該框架將真實惡意代碼執行點切入到預執行代碼中執行,而在真實的入口函數中實現一些無害代碼,比如創建窗口程序執行正常合法行為。

我們通過分析發現,惡意代碼的運行時庫初始化代碼被做了劫持,被劫持的函數為多線程初始化函數_mtinit中的__calloc_crt函數。如下圖中所示,正常CRT代碼應該調用__calloc_crt函數。

因此,在惡意代碼的 WinMain 函數運行之前,惡意代碼會首先得到執行,創建線程執行連接黑客C&C服務器,下載惡意組件執行。線程啟動完成后,該段劫持代碼執行流程會通過 PUSH-RET 的方式跳轉 0x4036b6 的__calloc_crt函數,最后跳回到原始的多線程初始化代碼中執行,直到 WinMain 函數得到執行。

惡意線程通過PEB動態初始化要調用的系統API函數,接著連接C&C服務器 103.41.177.69 發送 HTTPS GET 請求,請求鏈接為https://103.41.177.69/A56WY

如果連接失敗,惡意代碼會進行10次重連(該C&C服務器當前已經不能連接);連接成功,則會提取有效載荷并加載到內存中運行。

(2)組件 Trojan.Karagany.B

該組件偽裝成為 Flash 更新文件,黑客組織可能通過社交網絡或者水坑式攻擊提供 Flash 更新鏈接,誘使受害者點擊運行,該組件以感染系統、常駐系統以及下載擴展組件執行為目的。此外該組件還會用于目標主機信息的獲取,而C&C服務器會根據這些情報信息下發不同的 payload 給該組件執行。

1.解密內置PE代碼

該組件內置有一個加密的PE完整鏡像數據,被存儲于地址 0x41f000 處。組件執行后會解密該 PE 數據,通過 PE 結構定位到 PE 入口后執行入口函數。

2.感染系統

內置 PE 代碼得到執行后,如果當前執行文件路徑不為 STService,則會對受害主機實施感染操作:檢測當前進程是否以 STService 名稱運行,如果不是則將自身拷貝到 Application Data 目錄的 STService/STService.exe,并以 ST Service Scheduling 為參數運行,在惡意代碼將自身拷貝到 STService 目錄時,會修改文件時間,并設置文件屬性為系統隱藏。

否則啟動惡意線程工作,首先收集受害主機信息,其中包含用戶名稱、操作系統版本號、架構、安裝日期等信息,并將這些信息拼接在一起。這些信息一則用著互斥事件(Event對象)名稱,來保證每次只有一個實例在主機上運行,二則會被回傳到控制端服務器實現惡意組件的上線功能。

然后,通過利用 COM 接口在開始菜單的啟動文件夾下創建快捷方式來實現自啟動。

完成感染后,該組件會重新啟動并且以 STService 進程運行,接著就會循環創建 320 個線程,其中有一個線程是用來了與遠程地址通信,其他線程不斷的執行申請內存、寫入11111111、釋放內存等操作,可能用于干擾內存監視工具。

3.啟動線程解密配置信息

惡意代碼的配置信息以加密字符串形式存儲,其中以$$$開始,以###作為分隔,解密方法為 xor,但每個配置信息 xor 的 key 不同。

4.構造HTTPS請求數據發送給控制端實現上線

該組件首先連接默認 C&C 為 37.1.202.26,向其提交本地的基本信息并且獲取控制命令,如果無法成功完成該 C&C 的上線和控制命令的獲取,該惡意組件會使用備用 C&C。判斷默認C&C上線是否成功的依據是響應的數據中是否包含有“uE4GMN”,如果包含則表示成功,否則表明失敗。在默認 C&C 上線失敗的情況下,惡意代碼會判斷狀態標志文件“%APPDATA%\STService\status_svr.txt”,如果該文件存在,則使用備用 C&C 進行上線和控制命令的獲取。

5.上線數據包構造

首先,根據本機信息來實現url和請求參數的構造,構造明文數據如下:

其中的getimage/830411.gif為 url 地址,di59d=23947132339773951032&zv=15a0718&param=635為根據本機信息拼接成的字符串。

url格式化串為:

[配置信息中的上線包路徑getimage]/%d%d[.jpg|.png|.gif]

數據格式化串為:

%si%dd=%d[本機信息字符串]&%sv=%d%s[配置信息中的標記0718]&param=%d。

惡意代碼會對數據信息進行加密,并通過base64編碼,在轉換成url編碼。

上圖為di59d=23947132339773951032&zv=15a0718&param=635加密后的十六進制數值。隨后通過編碼轉化后的請求參數如下:

最后,惡意代碼添加HTTP請求頭,通過https協議的方式實現上線請求及控制命令的獲取。

6.解析控制命令并執行相應的控制功能

當遠程服務器成功響應數據后,惡意代碼組件會根據服務器返回的內容執行指定操作,包括下載執行其他組件、進行卸載等。

注:其中上傳文件是通過監控線程實現,惡意代碼將控制端返回的指定路徑的文件拷貝到C:\Documents and Settings\Lorz\Application Data\Update\Tmp\目錄,然后監控線程會將該目錄下的文件上傳到控制端服務器。

惡意代碼運行過程中會創建線程監控"C:\Documents and Settings\Lorz\Application Data\Update\Tmp\*.*"目錄,如果發現該目錄下存在文件,則讀取文件內容進行上傳。其中上傳的 url 路徑為/upload/[rand][.jpg/.png/.gif],其中的upload來自解密后的配置信息(由fdyyvw解密出來),惡意代碼會從.jpg、.png、.gif、中隨機選取作為上傳服務器目標路徑。

四、后續

本報告對蜻蜓二代“Dragonfly2.0”的其中兩個組件 Backdoor.Dorshel 和 Trojan.Karagany.B 進行了深入完整的剖析,后續啟明星辰ADLab會對蜻蜓二代剩下的組件進行一一分析,敬請期待。


啟明星辰積極防御實驗室(ADLab)

ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近300個,持續保持亞洲領先并確立了其在國際網絡安全領域的核心地位。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。


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