作者:
阿里雲安全
·
2015/11/06 14:38
作者:喔歐(阿里巴巴安全部安全威脅情報中心)
0x00 背景介紹
在當下全球網路威脅活動中,國外攻擊者主要使用Zeus、CryptoWall、Bedep、各類常見RAT工具等作為惡意負載,但在最近我們監控惡意威脅的過程中,發現個別高階樣本攻擊中使用了較為少見的BetaBot木馬,關於此木馬很少有相關的分析資料。在進一步瞭解、分析後發現,該木馬還是具有很強的危害和對抗手段。為了方便監控BetaBot木馬惡意攻擊活動,所以記錄相關分析結果,以供參考。
0x01 功能介紹
BetaBot,又被稱為Neurevt,大概從2013年3月出現在地下市場被出售,售價大約在$120到$500。使用HTTP協議進行通訊,使用RC4演算法進行加密,程式碼使用C++語言編寫,功能強大。據作者聲稱,該木馬具備破壞殺軟、自保護、BotKiller、Userkit(Ring3 Rootkit)、自定義注入技術、防其他木馬感染、、DDoS、網路監視/阻塞、USB裝置感染、SOCKS4代理、自校驗保護、過UAC、反Sandbox等功能。
下圖為示例的BetaBot服務端介面
0x02 木馬功能
系統駐留
新增登錄檔自啟動
新增Windows Tasks
收集資訊
執行環境、系統資訊、硬體資訊、軟體資訊等
例如軟體資訊蒐集
啟動引數
部分命令以程式啟動引數傳入解析並執行
DDoS
支援4種型別的DDoS攻擊方式
System Wide Userkit(Ring3 Rootkit)
功能名稱引用作者描述,用於隱藏保護木馬。
HOOK API列表
UAC欺騙繞過
根據使用者語言習慣構造錯誤資訊,欺騙使用者
呼叫cmd.exe或者rundll32.exe觸發UAC,實際呼叫木馬自身
根據使用者語言習慣構造錯誤資訊
在BetaBot木馬對抗殺軟介紹時作者也提到了使用”社會工程學”的手段
配置解密
BetaBot的配置資料包含執行時所需要的釋放目錄位置、C&C、通訊金鑰等重要資訊,並加密存放在木馬檔案內。
配置資料解密流程可以分為:
- 解密整體Config
- 依次解密C&C Entry
配置檔案結構大小是0x0D56位元組(隨木馬版本更新),下圖為解密整體config初始化程式碼,構造引數,動態解密執行程式碼,替換啟動執行緒。
解密執行緒從imagebase搜尋加密config特徵,透過RC4和4位元組異或進行解密,RC4解密key在自身程式碼中儲存,解析出所需資料後,使用自更新的加密key重新加密。
解密結果如下
上圖中前半部分已經解密,偏移0x156起始的C&C Entry還需要使用圖中偏移0x6選中內容作為key解密,解密流程見下圖
可以看出該木馬最多可以支援16個C&C配置。
例如解密出的一條C&C配置,其中包含了域名(偏移0x26)、埠(偏移0x14)、path(偏移0x66)、C&C通訊key1(偏移0xAA)、key2(偏移0XB7)。
C&C通訊解密
請求過程
構造請求資料
RC4加密請求資料並進行bin2hex轉換,加密key是由C&C Entry配置的key1和隨機位元組序列拼接處理得到。
第一次請求會附上額外資訊。
額外資訊異或特定值並進行bin2hex轉換。
最後將參與加密請求資料的隨機位元組序列進行bin2hex轉換和上述bin2hex轉換資訊一起傳送到服務端。
傳送資料如下
響應過程
伺服器響應包含兩部分,header和body。
首先需要解密header,其中最重要的是8個DWORD組成的陣列streams_array,位於偏移0x3C,表示body各個結構的長度。
解密過程如下,RC4加密key是由C&C Entry的key1和response資料的前四個位元組組合異或得到。
最後根據streams_array計算body長度然後解密。
加密的body位於偏移0x5C,解密過程如下,RC4加密key是由C&C Entry的key2和response資料偏移0x4四個位元組組合異或得到。
最終解密結果如下圖,此圖所示是服務端下發的監視域名列表配置。
其他
DNS阻斷、表格抓取等功能可見參考連結。
0x03 對抗手法
反除錯
1.ZwQueryInformationProcess檢測DebugPort
2.DbgBreakPoint對抗
3.ZwSetInformationThread
4.多處程式碼執行過程反除錯對抗
例如解密config程式碼中
反虛擬機器
反JoeBox,GFI,Kasperksy,CWSandbox,Anubis等沙箱
反Sandboxie沙箱
反wine
匯入API加密
透過遍歷系統dll匯出表,拼接成moduleName+’.’+APIName計算hash進行搜尋
Hash計算方式
對抗殺軟
檢測殺軟型別
禁用殺軟
程式碼加密、動態替換
解密執行程式碼過程,例如解密Config執行緒函式體內容
在一些函式呼叫時透過替換stub引數實現。例如stub原始程式碼
替換引數
Snort檢測規則
alert http any any -> any any (msg: "Betabot Windows RAT Trojan Online Request"; flow: established, to_server; content: "POST"; http_method; content:"="; http_client_body; pcre: "/=\d{8}&/P"; content: "1="; distance:1; http_client_body; content: "2="; distance:1; content: "3="; distance:1; content: "4="; distance:1; content: "5="; distance:1; flowbits: set, betabot_online; classtype: trojan-detect; sid:010200291; rev:1; )
0x04 參考連結
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!