【权威发布】360追日团队:Xshellghost技术分析——入侵感染供应链软件的大规模定向攻击
本文由 安全客 原創發布,如需轉載請注明來源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4280.html
概述
近日,NetSarang旗下的Xmanager、Xshell、Xftp和Xlpd等在全球流行使用的服務器遠程管理軟件曝出被多家殺毒軟件報毒查殺的情況,經過360科技集團追日團隊調查分析確認,NetSarang旗下多款軟件的關鍵模塊被植入了高級后門,這是一起入侵感染供應鏈軟件的大規模攻擊事件,我們將其命名為“XshellGhost”(xshell幽靈)。
事件時間軸
2017年7月17日,NetSarang公司發布旗下多款產品的新版軟件,更新修復多處bug和增強了會話加密能力,用于對抗CIA木馬“BothanSpy”的密碼劫持功能。
2017年8月7日,NetSarang與卡巴斯基發布聯合聲明,聲稱7月18日發現軟件存在安全漏洞被攻擊。
2017年8月15日,NetSarang與卡巴斯基更新聯合聲明,發現在香港利用該軟件漏洞的案例。
攻擊形式
NetSarang系列軟件的關鍵網絡通信組件nssock2.dll被植入了惡意代碼,廠商在發布軟件時并未發現惡意代碼,并給感染組件打上了合法的數字簽名隨新版軟件包一起發布,用戶機器一旦啟動軟件,將會加載組件中的惡意代碼,將主機的用戶信息通過特定DGA(域名生成算法)產生的DNS域名傳送至黑客的遠程命令控制服務器,同時黑客的服務器會動態下發任意的惡意代碼至用戶機器執行。
攻擊影響面
使用被感染的軟件的用戶,將會被黑客竊取用戶信息,并在云端下發任意的惡意代碼進行遠程控制,由于該系列軟件在國內的程序員和運維開發人員中被廣泛使用,多用于管理企事業單位的重要服務器資產,所以黑客極有可能進一步竊取用戶所管理的服務器身份驗證信息,秘密入侵用戶相關的服務器,請相關軟件用戶和企事業單位提高警惕。
XshellGhost技術分析
“XshellGhost”(xshell幽靈)是一個精密的定向攻擊平臺,所有的功能模塊實現均為shellcode形式,客戶端攻擊通過感染供應鏈軟件和各個shellcode模塊,實現了無自啟動項、無落地文件和多種通信協議的遠程控制,后門潛伏于受害者電腦等待黑客在云控制平臺下發shellcode數據執行,黑客在云端甚至可能通過上傳的用戶信息進行選擇性的定向攻擊。
遠程控制邏輯分析
XshellGhost的遠程控制主要分為5個步驟:
1.軟件啟動加載被感染組件nssock2.dll,解密shellcode1執行。
2.Shellcode1解密Shellcode2執行如下功能:
a)創建注冊表項,上報數據到每月對應的DGA域名當中;
b)通過發往知名的域名解析器當中上傳用戶信息給攻擊者;
c)將接收的數據寫入到創建的注冊表項當中;
d)通過獲取的key1和key2解密Shellcode 3并執行;
3. ?Shellcode3會創建日志文件并寫入信息,啟動系統進程Svchost.exe,修改其oep處的代碼,并注入shellcode形式的Root模塊執行。
4. ?Root模塊的初始化過程中,會加載并初始化Plugins、Config、Install、Online和DNS等功能模塊,然后調用函數Install->InstallByCfg以獲取配置信息,監控注冊表并創建全局互斥體,調用Online-> InitNet;
5. 函數Online-> InitNet會根據其配置初始化網絡相關資源,向指定服務地址發送信息,并等待云端動態下發代碼進行下一步攻擊。?
初始加載模塊分析
此次攻擊的所有模塊調度加載實現方式都是通過shellcode形式,采用了模塊化的方法進行統一管理。每個Shellcode的入口函數都會根據傳入的第2個參數的數值決定將其具體要執行的功能,參數數值和對應的功能列表如下所示:
根據Shellcode編號102、103和104所對應的功能,可以獲取每個Shellcode的信息列表:
關鍵的網絡通信模塊,除DNS協議通信,此后門還會利用其他5種網絡協議進行遠程控制。
基礎管理模塊分析
Root模塊是該次攻擊的基礎管理模塊,其它各個模塊的功能的展開和運行都依賴于Root模塊提供的函數接口列表:
Root模塊的初始化邏輯如下圖所示:
?
插件功能模塊分析
Plugins模塊為其他插件提供接口,包括讀寫注冊表指定字段的加密數據,加載DLL等,以及監控注冊表指定字段變化并將其數據解密作為插件加載:
在調用Install模塊的InstallByCfg函數時,會調用Plugins模塊的MonitorRegLoadShellCode函數。該函數負責監控注冊表指定key,如果key值被改變,該函數將會讀取注冊表中的數據并調用Root模塊的LoadAndInsertShellcodeEx函數將其加載。
如果網絡控制端下發調用Plugins模塊的OpByCmd函數的指令,將會設置其注冊表指定key的數據,過后MonitorRegLoadShellCode函數將會監控到key值發生改變,讀取注冊表數據動態加載下發的Shellcode代碼。
C&C配置模塊分析
配置模塊Config主要負責管理當前機器當中的配置文件以及對應機器的ID:
該模塊包含了一個大小最大為0x858的配置數據塊,其中配置數據塊是從文件中讀取的,文件位置是由該模塊的第三個函數RandomStr提供
隨機串生成的過程跟系統的卷序列號相關,所以在不同的機器上其位置并不相同。但是其有固定的格式,RandomStr均為大寫字母:
%ALLUSERSPROFILE%\RandomStr\ RandomStr\ RandomStr\ RandomStr
配置信息是加密存儲在配置文件中的,通過調用該模塊的接口函數,可以獲取解密后的配置文件,配置數據塊的結構如下:
配置塊的頭部是一個OffsetTable,其中記錄了各項配置串相對于EncryptStringStub的偏移,
目前已知的配置位置:
OffsetTable[8]配置塊0x10要注入的進程路徑
OffsetTable[0xC]配置塊0x18CC URL地址和CC類型
原始串的前2個字節為本串加密的Key,之后通過解密函數解密獲取解密后的串,所以解密后的串長度要比原始串的長度少2。經分析還原的解密函數如下:
?
通過對程序自身的配置文件進行分析:
?
注入程序路徑,加密前的字符:
| 1 | \x1F\xE5\x3A\x86\xF4\x31\xFF\xB8\x9F\x64\x81\x96\xAA\xC4\xB1\xF0\x02\x5E\xC5\xB1\x3E\xAF\x98\x19\xF6\x00\x21\x39\x20\xC5\xC4\x39 |
解密后:%windir%\system32\svchost.exe
CC遠程命令控制服務器的 URL,加密前的串:
| 1 | \x7B\x3C\x1F\x9F\x7E\x01\xA0\x08\xF0\xF6\x1C\x7F\x71\x60\xBD\x63\x66\x95\x7B\xE6\x62\x4C\xB3 |
解密后:dns://www.notped.com
DNS查詢地址:
8.8.8.8
8.8.4.4
4.2.2.1
4.2.2.2
代碼注入模塊分析
主體代碼注入模塊Install,負責將Root模塊代碼注入到指定的進程當中,以及調用Online模塊的相關初始化工作:
函數InstallByCfg的邏輯如下所示:
?
功能A:
1、調用Plugins的MonitorRegLoadShellCode函數,創建并監控指定注冊表鍵,讀取注冊表數據加載shellcode執行;
2、調用Config的RandomStr函數獲取字符串,用來創建全局互斥體
a)如果全局互斥體已存且Root的Op數值為3,結束自身進程。
b)調用 Online的 InitNet,初始化網絡模塊
功能B:
1、調用Plugins的MonitorRegLoadShellCode函數,打開并監控指定注冊表鍵, 讀取注冊表數據加載shellcode執行;
2、查詢Shellcode 106,如果不存在,則休眠1秒繼續查詢
3、調用Shellcode 106的第2個接口函數
功能C:
1、調用Config的函數GetCfgCon獲取配置文件中保存的Pe路徑
2、啟動Pe,修改Oep處的代碼,注入Shellcode Root
a)如果失敗,則創建線程調用功能A
b)如果成功,則結束自身
網絡通信模塊分析
Online模塊是本次攻擊的網絡通信管理模塊,在本次攻擊事件當中我們已經發現了DNS模塊,其它幾個網絡模塊(TCP、HTTP、UDP、HTTPS、SSL)雖然在代碼當中有所體現,但是在shellcode當中尚未主動運行,各個網絡模塊的函數接口及其作用如下表所示:
各個網絡模塊的功能的展開和運行依賴于Online模塊提供的函數接口列表:
InitNet在讀取網絡代理配置以后每隔1秒調用功能A,如果功能A返回20000,則函數徹底結束,功能A邏輯:
?
功能B邏輯,用于等待云端下發代碼執行:
?
此次攻擊已知使用的通信模塊是DNS模塊,該后門基于DNS隧道技術進行通信:
該模塊發送的數據包有3種類型:
1.初始化數據包,大小為0x18?
?
2.Data數據包,大小0x8+
?
3.關閉數據包, 大小0x8
其發送函數如下:
?
在調用DNS模塊2號函數返回自定義對象時,其調用了GetAdaptersAddresses獲取適配器的DNS
?
最多收集0x10個DNS,隨后在調用該模塊第3號函數時,其使用收集到的DNS,合并Config文件中的4個DNS地址,循環往每一個DNS發送查詢,等到到任何一個返回數據,或者超時,并記錄下第一個返回應答的DNS數據包,以后再次發送的時候,只會給第一個返回應答的DNS發送數據。
?
在發送數據包時,會將數據嵌套到DNS協議中發送,其中數據會編碼成特定的字符串,添加在要配置文件中的CC DNS URL前,實現DNS隧道通訊。
總結
通過技術分析,我們發現“XshellGhost”(xshell幽靈)是一整套復雜的模塊化的精密木馬病毒,這是一起黑客入侵供應鏈軟件商后進行的有組織有預謀的大規模定向攻擊,我們仍將會持續關注此次攻擊的進一步發展,建議廣大用戶使用360安全衛士查殺“XshellGhost”(xshell幽靈)木馬病毒和防御供應鏈軟件攻擊。
360追日團隊(Helios Team)
360 追日團隊(Helios Team)是360科技集團下屬的高級威脅研究團隊,從事APT攻擊發現與追蹤、互聯網安全事件應急響應、黑客產業鏈挖掘和研究等工作。團隊成立于2014年12月,通過整合360公司海量安全大數據,實現了威脅情報快速關聯溯源,獨家首次發現并追蹤了三十余個APT組織及黑客團伙,大大拓寬了國內關于黑客產業的研究視野,填補了國內APT研究的空白,并為大量企業和政府機構提供安全威脅評估及解決方案輸出。
已公開APT相關研究成果
總結
以上是生活随笔為你收集整理的【权威发布】360追日团队:Xshellghost技术分析——入侵感染供应链软件的大规模定向攻击的全部內容,希望文章能夠幫你解決所遇到的問題。