Worok:专门针对亚洲实体的网络间谍组织
ESET 的研究人員發(fā)現(xiàn)了一個全新的攻擊組織 Worok,該組織自動 2020 年就一直處于活躍狀態(tài)。Worok 使用的工具集包括一個 C++
編寫的加載程序 CLRLoad、一個 PowerShell 編寫的后門 PowHeartBeat 和一個 C# 編寫的加載程序
PNGLoad,攻擊者使用隱寫術(shù)來提取隱藏在 PNG 文件中的 Payload。
Worok
在 2021 年初 ProxyShell(CVE-2021-34523)漏洞披露期間,研究人員發(fā)現(xiàn)了各種 APT 組織的利用活動。其中發(fā)現(xiàn)與 TA428
組織類似的特征:
活動時間
目標行業(yè)
ShadowPad 的使用
但其余工具集大不相同,所以分析人員分為 Worok 與 TA428 歸屬相同的證據(jù)不足,將其確定為一個新的攻擊組織。根據(jù) ESET 的遙測數(shù)據(jù),Worok
自從 2020 年底一直保持活躍至今。
2020 年底,Worok 就瞄準多個國家的政府和公司進行攻擊,具體來說:
東亞某電信公司
中亞某銀行
東南亞某海運公司
中東某政府單位
南非某私營公司
從 2021 年 5 月到 2022 年 1 月,攻擊者進入靜默期。Worok 在 2022 年 2 月又重出江湖,攻擊了:
中亞某能源公司
東南亞某公共部門
下圖顯示了攻擊影響的可視化:
攻擊地圖
根據(jù)分析,研究人員認為 Worok 的主要目標是竊密。
技術(shù)分析
攻擊者會利用 ProxyShell 漏洞,成功后上傳 Webshell 進行持久化與后續(xù)攻擊階段。
獲取權(quán)限后,攻擊者部署了多個公開的偵察工具,如 Mimikatz、EarthWorm、ReGeorg 和 NBTscan。緊接著會部署后續(xù)兩階段的攻擊
Payload,但未發(fā)現(xiàn)最終的攻擊 Payload 是什么。在 2021 年,第一階段加載程序是 CLRLoad,而在 2022 年已經(jīng)被功能齊全的
PowerShell 后門 PowHeartBeat 所取代。
執(zhí)行鏈如下所示:
兩條執(zhí)行鏈
CLRLoad
CLRLoad 是一個 C++ 編寫的 Loader,用于加載下一階段的 PNGLoad 樣本。該樣本為一個 DLL 文件,有 32 位與 64
位兩個版本。樣本也是通過合法目錄中的文件進行加載的,用于欺騙作為合法軟件。
CLRLoad 樣本查找文件的完整路徑,路徑被單字節(jié)異或編碼,且每個樣本中都使用不同的密鑰。部分路徑如下所示:
C:\Program Files\VMware\VMware Tools\VMware VGAuth\xsec_1_5.dll
C:\Program Files\UltraViewer\msvbvm80.dll
C:\Program Files\Internet Explorer\Jsprofile.dll
C:\Program Files\WinRar\RarExtMgt.dll
C:\Program Files (x86)\Foxit Software\Foxit Reader\lucenelib.dll
樣本使用的一個互斥量名為 Wo0r0KGWhYGO,故將其命名為 Worok。
PowHeartBeat
PowHeartBeat 是一個 PowerShell 編寫的全功能后門,利用壓縮、編碼和加密等手段進行了混淆處理。根據(jù) ESET
的遙測數(shù)據(jù),PowHeartBeat 在最近取代了 CLRLoad 作為用于啟動 PNGLoad 的工具。
代碼的第一層由多塊 base64 編碼的 PowerShell 代碼組成,重組 Payloda 后會通過 IEX
執(zhí)行。解碼后,會執(zhí)行另一層混淆代碼,如下所示:
PowerShell
代碼
第二層首先使用 base64 解碼其代碼的下一層,然后使用 CBC 模式的三重 DES 算法進行解密。解密后再使用 gzip 算法解壓獲得
PowerShell 的第三層代碼,這才是真正的后門代碼。
后門使用 HTTP 或者 ICMP 協(xié)議與 C&C 服務(wù)器進行通信,原理如下所示:
工作原理
配置
配置中有許多可選字段,如下所示:
| nouse | 未使用 |
| ClientId | 客戶端標識 |
| Version | 版本號 |
| ExecTimes | 執(zhí)行命令嘗試次數(shù) |
| UserAgent | 用于C&C通信的 User-Agent |
| Referer | 用于C&C通信的 Referer |
| AcceptEncoding | 未使用 |
| CookieClientId/CookieTaskId/CookieTerminalId | 用于C&C通信的 Cookie |
| UrlHttps | 用于C&C通信的協(xié)議 |
| UrlDomain/IPAddress/Domains | 用于C&C通信的地址 |
| UrlSendHeartBeat | 用于C&C通信的 URL 路徑 |
| UrlSendResult | 用于C&C通信的 URL 路徑 |
| GetUrl | 完整的 URL |
| PutUrl | 完整的 URL |
| currentPath | 未使用 |
| ProxyEnableFlag | 是否啟用代理 |
| Proxymsg | 代理地址 |
| Interval | 請求間隔 |
| BasicConfigPath | 基礎(chǔ)配置路徑 |
| UpTime | 開始運行時間 |
| DownTime | 停止運行時間 |
| DomainIndex | 用于 C&C 通信的當(dāng)前域名 |
| SecretKey | 用于加解密的密鑰 |
| IfLog | 未使用 |
| IfLogFilePath | 是否啟用日志記錄 |
| logpath | 日志文件路徑 |
| ProxyFile | 代理配置文件路徑 |
| IfConfig | 是否啟用配置文件 |
PowHeartBeat 樣本中提取的配置如下所示:
$Script:nouse = 100;if(Test-Path $MyInvocation.MyCommand.Path){Remove-item $MyInvocation.MyCommand.Path -Force;}$Script:ClientId = "83";$Script:Version = "2.1.3.0003";$Script:ExecTimes = 10;$Script:UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3487.100 Safari/537.36";$Script:Referer = "www.adobe.com";$Script:AcceptEncoding = "text/html,app1ication/xhtml+xml,app1ication/xml;q=0.9,*/*;q=0.8";$Script:CookieClientId = "s_ecid";$Script:CookieTaskId = "aam_uuid";$Script:CookieTerminalId = "AAMC_adobe_0";$Script:UrlHttps = "http://";$Script:UrlDomain= " 118.193.78[.]22:443";$Script:UrlSendHeartBeat = "/latest/AdobeMessagingClient.js";$Script:UrlSendResult = "/content/dam/offers-homepage/homepage.jpg";$Script:GetUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendHeartBeat;$Script:PutUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendResult;$Script:currentPath = Split-Path -Parent $MyInvocation.MyCommand.Definition;$Script:ProxyEnableFlag = $false;$Script:Proxymsg;$Script:Interval = 10 ;$Script:BasicConfigPath = "C:\ProgramData\unins.dat";$Script:UpTime = 0;$Script:DownTime = 24;$Script:Domains;$Script:DomainIndex;$Script:SecretKey = "###ConfigKey###";#$Script:IfLog = $true;$Script:IfLogFilePath = "C:\ProgramData\tpncp.dat";$Script:logpath = "C:\ProgramData\unins000.dat";$Script:ProxyFile = "C:\ProgramData\hwrenalm.dat";$Script:IfConfig = $false;C&C 通信
PowHeartBeat 在 2.4 版本前使用 HTTP 進行 C&C 通信,后續(xù)切換到 ICMP,這兩者都沒有經(jīng)過加密。
HTTP
GET 請求的格式如下所示:
GET <UrlSendHeartBeat> HTTP/1.1User-Agent: <UserAgent>Referer: <Referer>Host: <Domain>Cookie: <CookieClientId>=<ClientId>Connection: close響應(yīng)中通過 command_id 提供要執(zhí)行的命令,加密算法如下所示:
o[int] $pos = $taskId % 256;for ($i = 0; $i -lt $tmpBytes.Value.Length; $i++){$pos = $pos + $clientId;if ($pos -ge 256){$pos = $pos % 256;}$tmpBytes.Value[$i] = [byte]($tmpBytes.Value[$i] -bxor $hexEnc[$pos]);}ICMP
從 PowHeartBeat 的 2.4 版本開始,HTTP 被 ICMP 取代,這可能是一種逃避檢測的方式。
更新的代碼中有一些細微的修改:
請求命令之前,PowHeartBeat 會在每個循環(huán)中發(fā)送一個包含字符串a(chǎn)bcdefghijklmnopqrstuvwxyz的心跳包,告知 C&C
服務(wù)器準備好接收命令
獲取后門執(zhí)行命令的請求中包含字符串a(chǎn)bcdefghijklmnop
心跳包如下所示:
心跳包布局
Client ID 和 Client Flag 的區(qū)別在于每個樣本的 Client ID 都不同,而 Client Flag
在每個樣本中都一樣。Heartbeat Flag 表示后門正在發(fā)送心跳包。響應(yīng)如下所示:
響應(yīng)布局
此處的 Flag 表明是否有命令下發(fā),獲取命令的請求如下所示:
獲取命令的請求布局
ICMP 通信使得后門可以接收無限的數(shù)據(jù),請求的響應(yīng)如下所示:
獲取命令的響應(yīng)布局
與 HTTP 響應(yīng)一樣,data 中的第三個字節(jié)為命令標識符。
連續(xù)七次 ICMP 響應(yīng)為空或者格式不一致的內(nèi)容,C&C 通信就被認為完成了。
后門命令
PowHeartBeat 具備多種功能,支持命令如下所示:
| Cmd | 0x02 | 執(zhí)行 PowerShell 命令 |
| Exe | 0x04 | 執(zhí)行程序 |
| FileUpload | 0x06 | 將文件壓縮上傳到失陷主機 |
| FileDownLoad | 0x08 | 在失陷主機下載文件 |
| FileView | 0x0A | 獲取特定目錄的文件信息 |
| FileDelete | 0x0C | 刪除文件 |
| FileRename | 0x0E | 重命名/移動文件 |
| ChangeDir | 0x10 | 更改工作目錄 |
| Info | 0x12 | 獲取失陷主機的信息 |
| Config | 0x14 | 更新配置文件并重新加載 |
| N/A | 0x63 | 程序退出 |
如果執(zhí)行出現(xiàn)了錯誤,后門會向 C&C 服務(wù)器發(fā)起的 POST 請求中使用特定的命令標識符 0x00。
PNGLoad
二階段載荷為 PNGLoad,通過后門 PowHeartBeat 從 C&C 服務(wù)器下載和執(zhí)行額外的載荷。PNGLoad 是一個 Loader,它使用
PNG 文件中的字節(jié)來創(chuàng)建要執(zhí)行的 Payload。
該文件是 64 位的 .NET 可執(zhí)行文件,并且使用 .NET
Reactor進行了混淆,偽裝成 WinRAR 的 DLL 文件。
偽造的文件信息
去混淆后發(fā)現(xiàn)文件只有一個類,有一個 MainPath 屬性包含后門搜索的目錄路徑,以查找擴展名為 .png的文件,如下所示。
.png
文件列表
通過此 MainPath 搜索找到的每個 .png 文件中的隱寫嵌入內(nèi)容。使用存儲在 PNGLoad 的 SecretKeyBytes
屬性中的密鑰,對緩沖區(qū)的其余部分進行多字節(jié)異或解密,然后對解密的緩沖區(qū)進行 gzip 解壓縮。得到的應(yīng)該是 PowerShell 腳本,會被立即執(zhí)行。
圖片隱寫
PNGLoad 執(zhí)行的操作記錄在一個文件中,該文件的路徑存儲在變量 LogFilePath 中。僅當(dāng)存在其路徑由內(nèi)部變量 IfLogFilePath
指定的文件時,才會記錄操作。
受限于數(shù)據(jù)視野,研究人員未能獲得與 PNGLoad 一起使用的示例 .png 文件。攻擊者將惡意 Payload 隱藏在看起來無害的 PNG
圖片中,將惡意內(nèi)容隱藏在明處。
最后
分享一個快速學(xué)習(xí)【網(wǎng)絡(luò)安全】的方法,「也許是」最全面的學(xué)習(xí)方法:
1、網(wǎng)絡(luò)安全理論知識(2天)
①了解行業(yè)相關(guān)背景,前景,確定發(fā)展方向。
②學(xué)習(xí)網(wǎng)絡(luò)安全相關(guān)法律法規(guī)。
③網(wǎng)絡(luò)安全運營的概念。
④等保簡介、等保規(guī)定、流程和規(guī)范。(非常重要)
2、滲透測試基礎(chǔ)(一周)
①滲透測試的流程、分類、標準
②信息收集技術(shù):主動/被動信息搜集、Nmap工具、Google Hacking
③漏洞掃描、漏洞利用、原理,利用方法、工具(MSF)、繞過IDS和反病毒偵察
④主機攻防演練:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系統(tǒng)基礎(chǔ)(一周)
①Windows系統(tǒng)常見功能和命令
②Kali Linux系統(tǒng)常見功能和命令
③操作系統(tǒng)安全(系統(tǒng)入侵排查/系統(tǒng)加固基礎(chǔ))
4、計算機網(wǎng)絡(luò)基礎(chǔ)(一周)
①計算機網(wǎng)絡(luò)基礎(chǔ)、協(xié)議和架構(gòu)
②網(wǎng)絡(luò)通信原理、OSI模型、數(shù)據(jù)轉(zhuǎn)發(fā)流程
③常見協(xié)議解析(HTTP、TCP/IP、ARP等)
④網(wǎng)絡(luò)攻擊技術(shù)與網(wǎng)絡(luò)安全防御技術(shù)
⑤Web漏洞原理與防御:主動/被動攻擊、DDOS攻擊、CVE漏洞復(fù)現(xiàn)
5、數(shù)據(jù)庫基礎(chǔ)操作(2天)
①數(shù)據(jù)庫基礎(chǔ)
②SQL語言基礎(chǔ)
③數(shù)據(jù)庫安全加固
6、Web滲透(1周)
①HTML、CSS和JavaScript簡介
②OWASP Top10
③Web漏洞掃描工具
④Web滲透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏掃等)
恭喜你,如果學(xué)到這里,你基本可以從事一份網(wǎng)絡(luò)安全相關(guān)的工作,比如滲透測試、Web 滲透、安全服務(wù)、安全分析等崗位;如果等保模塊學(xué)的好,還可以從事等保工程師。薪資區(qū)間6k-15k。
到此為止,大概1個月的時間。你已經(jīng)成為了一名“腳本小子”。那么你還想往下探索嗎?
想要入坑黑客&網(wǎng)絡(luò)安全的朋友,給大家準備了一份:282G全網(wǎng)最全的網(wǎng)絡(luò)安全資料包免費領(lǐng)取!
掃下方二維碼,免費領(lǐng)取
有了這些基礎(chǔ),如果你要深入學(xué)習(xí),可以參考下方這個超詳細學(xué)習(xí)路線圖,按照這個路線學(xué)習(xí),完全夠支撐你成為一名優(yōu)秀的中高級網(wǎng)絡(luò)安全工程師:
高清學(xué)習(xí)路線圖或XMIND文件(點擊下載原文件)
還有一些學(xué)習(xí)中收集的視頻、文檔資源,有需要的可以自取:
每個成長路線對應(yīng)板塊的配套視頻:
當(dāng)然除了有配套的視頻,同時也為大家整理了各種文檔和書籍資料&工具,并且已經(jīng)幫大家分好類了。
因篇幅有限,僅展示部分資料,需要的可以【掃下方二維碼免費領(lǐng)取】
總結(jié)
以上是生活随笔為你收集整理的Worok:专门针对亚洲实体的网络间谍组织的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P/Invoke能够在asp.net 中
- 下一篇: 黑马程序员之手机卫士第五天