作者:K&Nan@知道創宇404高級威脅情報團隊
原文鏈接:https://mp.weixin.qq.com/s/H-ZRvcofbzwZ8Ikyn5Vu4w

隨著各安全廠商對于APT組織及其應用武器的分析越來越徹底,各活躍APT組織自去年底都開始更新自己的攻擊武器庫,甚至有組織完全放棄了去年的一整套攻擊方法,使用新的攻擊方法,因此給分析團隊對攻擊者組織的確定帶來了一定困難,這符合一般網絡攻防活動對抗的發展規律,防御和攻擊在對抗中一起螺旋上升。

我們會持續對各組織的新攻擊武器進行分析和總結,繼上一篇《PatchWork新攻擊武器報告》分析了我們捕獲的PatchWork組織新武器后,本文我們繼續分享Bitter組織的新攻擊工具。

1. Bitter組織基本信息

Bitter,也被稱為蔓靈花,是一個疑似來源于南亞的高級威脅組織。自 2013年以來,一直屬于活躍狀態,該組織行動目標主要是巴基斯坦、孟加拉國和沙特阿拉伯的能源、工程和政府部門。

去年全年我們捕獲到該組織相關釣魚攻擊200+次,捕獲相關仿冒誘導文檔60+,根據去年捕獲情況來看,該組織攻擊依然延續與以往相似的常態化熱點攻擊。Bitter組織針對行業主要集中在航空航天、軍工、大型企業、國家政務、部分高校。

2. 武器基本信息

樣本來源 持續追蹤
SHA-256 DD53768EB7D5724ADEB58796F986DED3C9B469157A1A1757D80CCD7956A3DBDA
武器名稱 ORPCBackdoor
武器類型 后門程序
針對平臺 Windows

3. 武器功能模塊圖

圖片

4. 武器功能綜述

近期,404高級威脅情報團隊在對Bitter組織的持續追蹤過程中發現其武器庫中出現了一款新型DLL后門,原始名稱為OLEMAPI32.DLL,產品名稱為Microsoft Outlook,本次發現的后門使用的通訊方式較為獨特,與該組織其他武器相比較,本次發現的后門通訊方式采用RPC與服務端交互。

根據已有信息來看,此次新發現的后門極有可能針對Outlook用戶群體,為方便后續追蹤狩獵及區分,故據此特征我們將其命名為ORPCBackdoor。

4.1 ORPCBackdoor功能描述

本次捕獲的ORPCBackdoor共計17個導出函數,相關導出函數名稱如下所示:

  • GetFileVersionInfoA
  • GetFileVersionInfoByHandle
  • GetFileVersionInfoExW
  • GetFileVersionInfoSizeA
  • GetFileVersionInfoSizeExW
  • GetFileVersionInfoSizeW
  • GetFileVersionInfoW
  • VerFindFileA
  • VerFindFileW
  • VerInstallFileA
  • VerInstallFileW
  • VerLanguageNameA
  • VerLanguageNameW
  • VerQueryValueA
  • VerQueryValueW
  • GetFileVersionInfoByHandleEx(void)
  • DllEntryPoint

從導出函數來看ORPCBackdoor使用了version.dll模版,version.dll是一個Windows操作系統的動態鏈接庫文件,它主要用于管理可執行文件或者DLL文件的版本信息。故我們有理由猜測ORPCBackdoor使用DLL劫持技術,采用白加黑方式用于達到一定的免殺效果,由于調用該DLL的情況較多,我們暫時無法準確確定Bitter組織此次采用的白文件具體是哪一款。

其中ORPCBackdoor惡意入口有兩處,第一處為GetFileVersionInfoBy-HandleEx(void)導出函數,第二處為DllEntryPoint。

ORPCBackdoor從設計思路來看可分為兩個模塊,分別為初始化模塊和交互模塊,整體硬編碼字符采用HEX字符串保存,例如“SYSTEM INFORMATION \n”字符在ORPCBackdoor中保存的字符為"53595354454D20494E464F524D4154494F4E205C6E",該方式可略微達到阻礙反檢測以及對抗分析等目的,根據ORPCBackdoor所支持的功能,我們可以推斷出該后門處于感染鏈前端,用于為后續行動提供基礎環境。

初始化模塊描述

初始化模塊內包含多個功能模塊。多個模塊配合完成與服務端交互執行的前期工作,前期工作包括了字符解析、首次運行測驗、持久化、本機信息收集、C2在線檢測等方面,各部分內容詳述如下:

a) 字符初始化

本文前面有提及ORPCBackdoor內置的關鍵字符均采用TOHEXStr的方式保存,在運行過程中ORPCBackdoor會將即將使用的字符經進行解碼。根據后門中的上下文調用來看,加密的字符中還包含了服務端下發的命令。

b) 持久化

ORPCBackdoor通過判斷文件是否存在來防止多次持久化創建,在進行持久化創建前,ORPCBackdoor會判斷同路徑下是否存在ts.dat文件,當文件不存在時ORPCBackdoor才會創建持久化,持久化創建方式采用COM調用TaskScheduler CLSID,計劃任務名稱為Microsoft Update,創建完成后創建ts.dat文件。

c) 初始信息收集

初始信息收集三個部分數據,分別是進程列表、系統信息、用戶信息,相關信息收集非常詳盡,除基本信息外還會收集OS Build Type、Registered Owner、Install Date等信息。

d) 交互初始化

交互初始化與持久化模塊類似,同樣通過判斷文件是否存在從而防止與服務端同時多進程交互,判斷邏輯為判斷ProgramData路徑下是否存在$cache.dat文件,如果文件存在ORPCBackdoor將不會與服務端建立連接,否則初始RPC調用,ProtSeq采用ncacn_ip_tcp。如果在嘗試RPC調用后服務端無數據返回則休眠5分鐘后繼續嘗試,當服務端返回命令后進入交互模塊。

交互模塊描述

交互模塊與常見的命令處理邏輯相似,通過多層if-else來解析服務端 執行并完成指定功能,ORPCBackdoor所支持的功能并不算多,主要為Get- Shell,其余包含一些文件處理、上傳下載執行等操作。

ORPCBackdoor相關執行及對應功能描述如下:

  • ID

ID指令所對應的功能較為少見,其功能是將服務端下發的一段0xF大小的數據暨15位數字(eg: 818040900140701),保存在本地%ProgramData%/$tmp.txt文件中,根據該指令及前面代碼流程中未出現ClientID相關生成操作,故我們猜測此步操作用于賦予受害者ID用于區分不同受害者。

  • INF

INF指令用于上傳在初始化模塊-初始信息收集子模塊中所收集的詳盡本機信息。

  • DWN

DWN指令所對應的模塊屬于精心設計過的功能模塊,功能為下載文件,根據對代碼的分析來看,DWN功能模塊設計的較為健壯,其支持向服務端反饋每一步操作是否成功或錯誤原因,從而完成既定目標流程,由于ORPCBackdoor屬于感染連前部分故此模塊的穩定性極為重要。

  • RUN

RUN指令用于執行指定文件,使用WinExecAPI啟動文件。

  • DLY

DLY指令為休眠指令,休眠服務端指定時長后再次運行。

  • CMD

CMD指令為ORPCBackdoor核心指令,功能為GetShell,其所使用的處理邏輯為,解析服務端所下發的Shell指令,獲取到服務端下發的Shell指令后進行指令拼接,拼接格式為cmd.exe /c |服務端下發的指令|>> c:\Users\Public\cr.dat。

后續通過WinExec()API執行該條指令,執行完成后將cr.dat的內容發送至服務端,后續刪除cr.dat文件從而達到一次與服務端Shell交互效果。

在分析過程中我們捕獲到服務端首先會下發systeminfo命令再次獲取系統信息緊接著第二條指令為whoami。

通過對ORPCBackdoor整體分析我們可以得出以下結論,ORPCBackdoor后門是一款較為精簡且設計較為成熟的后門程序。

無論是對自身字符的處理,拋棄常用常見的Socket調用轉而使用RPC調用,為規避終端檢測所采用的version.dll劫持模板,還是域名、程序、描述等整體一致性,都可以看出本次攻擊行動算的上是一次經過精心設計策劃的行動,同時為了防止自身暴露還使用了新型攻擊武器從而變更了其慣用的TTP。

4.2 樣本細節描述

圖片

左側為正常version.dll右側為ORPCBackdoor

圖片

通過文件判斷是否進行持久化流程

圖片

主機當前運行的進程信息收集

圖片

圖片

詳盡的系統信息收集

圖片

服務端指令初始化

圖片

RPC初始化

圖片

生成ClientID

圖片

生成的ClientID

圖片

上傳前期收集的系統信息

圖片

文件下載模塊

圖片

RUN指令-運行指定程序

圖片

休眠模塊

圖片

核心模塊-Shell模塊

圖片

服務端下發的命令一

圖片

服務端下發的命令二

圖片

通過NdrClientCall2API收發服務端消息


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