作為一個加密貨幣挖礦軟件,StripedFly常年隱藏在一個支持Linux和Windows的復雜模塊化框架后面。它配備了一個內置的TOR網絡隧道,用于與命令控制(C2)服務器通信,同時通過可信服務(如GitLab、GitHub和Bitbucket)進行更新和交付功能,所有這一切都使用自定義加密歸檔。可以說,創建這個框架所付諸的努力確實十分了不起,同樣地,它所披露的真相也相當驚人。
背景介紹
2022年,卡巴斯基研究人員在WININIT.EXE進程中遇到了兩個驚人的發現,隨后的分析揭示了可追溯到2017年的早期可疑代碼實例。在此期間,它有效地逃避了分析,并被誤歸類為加密貨幣挖礦軟件。然而,盡管它確實在服務于這個目的,但這卻并非其主要目標。
為此,研究人員決定對收集的樣本進行全面分析,唯一的目的就是排除任何不確定因素。分析結果完全出乎意料:這個加密貨幣挖礦軟件只是一個更龐大實體的組成部分。該惡意軟件使用了定制的“永恒之藍”(EternalBlue)SMBv1漏洞來滲透受害者的系統。重要的是,調查剖析了二進制時間戳,表明這個漏洞是在2017年4月之前創建的。值得注意的是,EternalBlue漏洞是“影子經紀人”(Shadow Brokers)組織于2017年4月14日才公開披露的。
這個特殊的蠕蟲與其他使用EternalBlue的惡意軟件的區別在于其獨特的傳播模式。它會悄無聲息地傳播,從而避免了大多數安全解決方案的檢測。
感染過程
第一個檢測到的shellcode位于WININIT.EXE進程中,該進程能夠從bitbucket[.]org下載二進制文件,并執行PowerShell腳本。在最初發現時,感染媒介是未知的。然而,隨著調查的逐步深入,研究人員發現了一個與EternalBlue非常相似的SMBv1漏洞。
內核shellcode通過漏洞利用將額外的shellcode注入到用戶空間中,然后部署有效載荷,其中包括一個具有插件式可擴展功能的框架,以及一個超輕量級的TOR網絡客戶端。一旦該過程完成,入口被永久密封,惡意軟件會進一步禁用受感染系統上的SMBv1協議。
該蠕蟲功能試圖依賴漏洞和SSH協議在本地網絡中傳播,使用在受害者設備上找到的密鑰。

【Windows主機上的感染流程】
持久性
為了實現持久性,該惡意軟件采用了各種方法,具體行為取決于PowerShell解釋器的可用性和授予該進程的特權。通常情況下,該惡意軟件在通過漏洞利用安裝時以管理權限運行,而在通過Cygwin SSH服務器交付時以用戶級權限運行。
如果PowerShell不存在,該惡意軟件將用MZ-PE加載程序生成一個隱藏文件,其隨機名稱位于%APPDATA%目錄中。該加載程序包括system.img的副本,并隨后在Windows注冊表項Software\Microsoft\Windows\CurrentVersion\Run中以類似GUID的名稱注冊。
如果安裝了PowerShell,其行為將因是否有管理訪問權而異。如果有管理權限,它將執行一個PowerShell腳本,該腳本會創建兩個具有類似GUID的名稱和不同觸發器的任務調度器項。這些任務的動作由PowerShell加載腳本運行。
如果沒有管理權限,PowerShell腳本加載程序將被放置在HKCU\Software\Microsoft\Windows\CurrentVersion\Applets注冊表項中,然后使用以下命令將其注冊到HKCU\Software\Microsoft\Windows\CurrentVersion\Run項中:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -W Hidden -
Command "Invoke-Expression((Get-ItemProperty -Path
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets').
'%RegValNameFromPrevStep%')".
在PowerShell可用的兩種情況下,該惡意軟件歸檔本身的主體將被存儲在注冊表項Software\Microsoft\Windows\CurrentVersion\Shell中,由Base64編碼,并通過上述PowerShell腳本啟動。
在Linux主機上,該惡意軟件進程隱藏在名稱(sd-pam)下。并且有諸多方法來建立持久性:它可以是系統或用戶systemd服務、自動啟動的.desktop文件,或在合適的/etc/rc*、profile、bashrc或inittab文件中的額外行。該惡意軟件可執行文件以隨機名稱放置在/tmp目錄下。
Bitbucket存儲庫
為了最小化初始漏洞利用的足跡,所有可卸載的元素都封裝在加密和壓縮的自定義二進制歸檔中。這個歸檔被謹慎地托管在合法網站上,巧妙地偽裝成標記為“m100”的神秘設備的固件二進制文件。
Bitbucket存儲庫于2018年6月21日由Julie Heilman的帳戶創建,是與該配置文件相關的唯一存儲庫。

【Bitbucket存儲庫的內容】
該存儲庫只包含一個README.md文件,內含項目名稱。值得注意的是,Downloads文件夾(通常包含編譯后的項目二進制文件)包含五個二進制文件:delta.dat、delta.img、ota.dat、ota.img和system.img。

【該存儲庫的Downloads文件夾】
該文件夾沒有任何版本控制,并且下載計數器僅反映自上次文件更新以來的下載次數。尤其是,system.img文件是用于初始Windows系統感染的真實有效載荷歸檔。該文件的下載計數器準確反映了自上次更新以來的新感染數量。在分析期間,該文件最后一次更新是在2022年2月24日,截至2022年6月,初始感染數量為16萬。然而,截至2023年9月,這個數字已降至6萬。
文件ota.img和delta.img用于更新惡意軟件,其中ota.img對應Windows版本,而delta.img對應Linux版本。有趣的是,system.img和ota.img功能上是相同的,不過ota.img包含用于完整性驗證的補充元數據,而delta.img充當了入侵Linux主機的初始感染有效載荷。
文件ota.dat和delta.dat以及版本文件都是惡意軟件檢查新更新可用性的工具。然而,值得注意的是,ota.img和delta.img的下載計數器不能準確反映當前感染數量。這是因為惡意軟件主要從其C2服務器獲取更新,并且只有在C2服務器沒有響應時才從存儲庫下載更新文件。
在分析期間,研究人員從存儲庫中獲得了約100萬更新。截止本文撰稿時,Windows系統只有8次更新,Linux系統只有4次更新,這表明存在兩種情況:要么活躍感染極少,要么C2服務器保持活躍,并對所有受感染的受害者做出響應。
TOR網絡
C2服務器位于TOR網絡中,其.onion地址為:
gpiekd65jgshwp2p53igifv43aug2adacdebmuuri34hduvijr5pfjad[.]onion:1111。
為了與C2通信,該惡意軟件采用了一個自定義的、輕量級的TOR客戶端實現。有趣的是,這種實現似乎并不是基于任何已知的開源TOR實現,因為許多標準的TOR特性(如路由、目錄列表、中繼、出口節點模式以及對控制協議的支持)都不存在。
該惡意軟件會定期啟動與C2服務器的TCP連接,發送含有受害者獨特ID的信息。然后,它會每分鐘發送一個空信標消息。
這個功能所展示的精妙水平是了不起的。攻擊者不惜一切代價隱藏C2服務器的目標推動其開發了一個獨特而耗時的項目:創建自己的TOR客戶端。這種方法在APT和犯罪軟件開發者中并不常見,由此也強調了這種惡意軟件的高度復雜性。因而,研究人員將其歸類為高度先進的威脅。
模塊
該惡意軟件有效載荷本身的結構是一個單體式二進制可執行代碼,旨在支持可插入模塊來擴展或更新其功能。這種架構方法是APT惡意軟件的標志,每個模塊負責實現和注冊回調函數,該回調函數在與C2服務器的連接建立或脫機時觸發,或者在從C2服務器接收消息時觸發。這些模塊中的功能分為兩類:服務和擴展功能模塊。
服務模塊
配置存儲
該模塊通過在Windows版本的HKCU\Software\Classes\TypeLib密鑰中創建一個類似GUID的注冊表項,安全地存儲AES加密的惡意軟件配置。Linux版本將該信息隱藏在位于用戶主目錄中的隨機隱藏文件夾中。
升級/卸載
當與C2服務器建立初始連接時,該服務模塊會生成一個8字節的受害者ID,存儲它,然后與所用的system.img文件的散列一起重用它,用于向服務器返回報告。該模塊旨在實現兩個特定的命令:
- 服務器發送img的新版本,升級過程由生成的腳本或生成的可執行文件來執行。
- 執行全面卸載。
如果C2服務器脫機時間超過20分鐘,并且這種情況持續存在,該模塊將嘗試下載ota.dat文件(對于Linux來說是delta.dat),然后驗證其完整性。如果文件版本發生了變化,那么該模塊會通過下載適當的.img文件(Windows版本的ota.img和Linux版本的delta.img)來觸發升級過程。
功能模塊
反向代理
該模塊授予訪問受害者網絡的權限,并允許代表受害者執行遠程操作。
雜項命令處理程序
該模塊包含一系列命令,用于與受害者的文件系統交互、捕獲屏幕截圖、檢索系統版本,并獲得Linux上的活躍X11顯示內容(默認值是Windows上的WinSta0)。它還包含一個能夠執行從C2服務器收到的shellcode的命令。
憑據收集程序
該模塊運行一個專用線程,每兩小時運行一次定期掃描。在掃描過程中,它會從所有活躍用戶收集一系列敏感信息。這些信息包括網站登錄用戶名及密碼,以及個人自動填寫數據,比如姓名、地址、電話號碼、公司和職位。它還獲取已知的Wi-Fi網絡名稱和相關密碼,以及來自流行的軟件客戶軟件(如FileZilla、Cyberduck和WinSCP)的SSH、FTP和WebDav憑據。
值得注意的是,Web瀏覽器對憑據收集的支持不僅限于Chrome、Firefox和Internet Explorer等知名瀏覽器,還包括一些不太知名的瀏覽器,比如Nichrome、Xpom、RockMelt、Vivaldi、SaMonkey、Epic Privacy和Brave。
在Linux版本中,它還收集存儲在$HOME/.ssh中的OpenSSH密鑰,將來自$HOME /.ssh/known_hosts的主機整理成表,并包括從Libsecret保管庫檢索秘密信息的功能。然而,這個特殊的功能目前存在缺陷,因為在鏈接的musl libc庫中沒有dlopen API實現。
可重復的任務
該模塊擁有一些內置的功能任務,這些任務可以執行一次,也可以在可重復的調度基礎上執行,條件是這些任務必須在特定窗口可見。
以下是對任務的簡要描述:
- 獲取屏幕截圖,并列出在那一刻可見的所有窗口。
- 使用給定的命令行執行進程,重定向其輸出,并使用正則表達式對其進行過濾。
- 記錄麥克風輸入。
- 該任務收集具有特定擴展名的文件列表,例如與圖像、文檔、聲音、視頻、歸檔、數據庫、證書、源代碼文件相關的文件及其他關鍵的用戶數據文件。此進程掃描所有本地驅動器和網絡共享區,系統文件夾除外。這是在Linux版本的惡意軟件中唯一有效的任務。
偵察模塊
該模塊編譯大量的系統信息,并在連接時將其傳輸到C2服務器。收集的數據包含廣泛的詳細信息,包括操作系統版本、計算機名稱、硬件MAC地址列表、Windows系統的當前用戶名、Linux系統的/etc/passwd文件、設備IP地址、當前連接的TOR網絡出口節點的IP地址、系統啟動時間、惡意軟件正常運行時間、時間及時區,總內存/可用內存量、用戶管理權限以及特定的Windows相關信息,如UI語言和鍵盤布局、存在的防病毒軟件、NetBIOS名稱、DNS域、機主的Windows許可證詳細信息以及存在的PowerShell命令解釋器。
SMBv1和SSH感染程序
還有兩個模塊專門用于惡意軟件的滲透能力,它們構成了核心的蠕蟲功能。
一旦憑據收集模塊完成其任務,SSH感染程序就會啟動,它會過濾SSH密鑰和憑據的搜索結果,一旦找到,就激活專用線程。該線程的隨機超時中斷時間從10分鐘到2小時不等,并啟動滲透進程。首先,它從緩存或直接從bitbucket[.]org檢索delta.dat和delta.img。然后,它進而驗證這些文件的完整性,從delta.img動態加載libay庫、zlib庫和libssh2庫。下一步是嘗試連接到遠程SSH服務器。如果連接成功,它調用并解析/bin/sh -c ' uname -nmo '命令的輸出。如果遠程系統受支持,惡意軟件將其二進制文件以隨機名稱上傳到遠程的/tmp文件夾,并以命令/bin/sh -c 'cat > %s; chmod +x %s; nohup sh -c "%s; rm %s" &>/dev/null'執行該文件。這個方法確保了與x86、amd64、arm和aarch64 Linux CPU等架構兼容,并使用生成的MZ-PE加載程序與Cygwin x86和amd64遠程主機兼容。
SMBv1感染模塊使用自定義的EternalBlue漏洞利用代碼,作為Windows受害者的主要滲透工具。在初始執行時,它會立即通過修改受害者系統上的HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters注冊表項來禁用SMBv1協議。然后,它會啟動兩個專用線程來執行定期的蠕蟲程序。
第一個線程負責檢查網絡適配器的IP地址和子網掩碼,然后,它會試圖在整個局域網子網內引起感染;第二個線程則定期嘗試選擇一個隨機的互聯網IP地址,以下地址排除在外:
- Bogon網絡,如0.0.0/8、10.0.0.0/8、100.64.0.0/10、 127.0.0.0/8、172.16.0.0/12、192.168.0.0/16、198.18.0.0/15、224.0.0.0/4和240.0.0.0/4。
- 255.0.0/16——主要指南非。這可能是一個漏洞,開發者可能意指169.254.0.0/16——bogon網絡列表中缺失的部分。
- 0.0.0/8、15.0.0.0/8、16.0.0.0/8、56.0.0.0/8——-亞馬遜、惠普和美國郵政部等。
- 0.0.0/8和55.0.0.0/8——美國陸軍信息系統司令部。
- 0.0.0/8、11.0.0.0/8、21.0.0.0/8、22.0.0.0/8、26.0.0.0/8、 28.0.0.0/8、29.0.0.0/8、30.0.0.0/8、33.0.0.0/8、214.0.0.0/8和215.0.0.0/8——美國國防部網絡信息中心。
受支持的Windows版本包括Windows Vista、Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012和Windows 10(直至build 14392)。
門羅加密貨幣挖礦模塊
錦上添花的是Monero挖礦模塊。它在一個單獨的進程中運行,并巧妙地偽裝成位于Google\Chrome\Application\Services目錄中的chrome.exe進程,該目錄可以在公共或本地AppData目錄中找到。這種欺騙性的外觀甚至包括對偽裝的可執行文件的版本信息和進程圖標的更改。主模塊中的惡意軟件功能定期監視木偶挖掘進程,并在必要時重新啟動它。它還向C2服務器如實報告哈希率、工作時間、發現的錯誤和錯誤統計信息。
池服務器(pool servers)的DNS解析被巧妙地隱藏在針對Cloudflare DoH(DNS over HTTPS)服務的DNS over HTTPS請求的后面,為其操作增加了額外的隱形層。
研究人員強烈懷疑,這個模塊就是惡意軟件能夠長時間逃避檢測的主要原因,它的存在主要是出于巧妙偽裝的需要。值得注意的是,該模塊挖掘的門羅幣于2017年徘徊在10美元左右,后于2018年1月9日達到了542.33美元的峰值。截至2023年,其交易價約為150美元。雖然這個模塊肯定是有利可圖的,但它不一定是這種惡意軟件最賺錢的用途。例如,尋找未加密的二進制錢包或錢包憑據可能會產生更高的利潤。
此外,該惡意軟件代碼中存在與挖礦相關的未加密字符串,也從側面證明了其潛在的輔助用途。
ThunderCrypt
在分析過程中,研究人員偶然發現了該惡意軟件的早期版本,這促使其發現了一個相關的勒索軟件變體:ThunderCrypt。事實證明,這兩種惡意軟件共享相同的底層代碼庫,更重要的是,它們與位于ghtyqipha6mcwxiz[.]onion:1111的同一臺C2服務器通信。
與StripedFly相比,ThunderCrypt勒索軟件展現了驚人相似的功能和模塊。其中包括TOR客戶端、配置存儲、升級/卸載和偵察模塊,一個值得注意的例外是沒有SMBv1感染模塊。有意思的是,該勒索軟件使用可重復任務模塊的文件列表組件作為其勒索加密進程的組成部分。
遙測數據顯示,ThunderCrypt首次出現于2017年4月23日,活動的主要高峰期出現在隨后的5月份。有趣的是,因為一件趣事它引起了臺灣新聞網的注意。據報道,一名臺灣網民因無法支付0.345比特幣的勒索贖金以換取解密內容,決定通過提供的支持電子郵件地址與攻擊者聯系。他在郵件中坦率地解釋了面臨的困境,稱其月收入只有400美元。令許多人吃驚的是,攻擊者回復承認高估了臺灣民眾的收入,這次攻擊被認為是一次徹底失敗的嘗試。

【臺灣新聞網關于ThunderCrypt的報道】
EternalBlue
研究人員評估稱,EternalBlue漏洞與StripedFly背后的開發者間存在相似之處。研究人員的假設依賴PE時間戳的準確性,雖然不可能驗證初始EternalBlue模塊時間戳的真實性,但惡意軟件的后續更新含有與遙測數據大致匹配的時間戳,因此初始時間戳很可能也是準確的。研究人員重構的時間線如下:
- 2016年4月9日:PE時間戳表明,StripedFly最早的已知版本包含EternalBlue。
- 2016年8月:Shadow Brokers組織首次泄密。
- 2017年3月14日:微軟發布安全公告MS17-010,引入了EternalBlue漏洞的補丁。
- 2017年4月14日:Shadow Brokers發布了含有EternalBlue漏洞的泄露信息。
- 2017年4月15日:第一個包含EternalBlue的勒索軟件ExPetr出現。
- 2017年4月20日:出現了最早版本的ThunderCrypt勒索軟件(不含EternalBlue)。
- 2017年4月23日:首次在遙測數據中檢測到ThunderCrypt。
- 2017年5月12日:WannaCry勒索軟件利用EternalBlue進行攻擊。
- 2017年6月27日:ExPetr攻擊使用EternalBlue。
- 2017年8月24日:在初始PE時間戳提供的日期一年后,遙測數據首次檢測到StripedFly。
綜上所述,這些不同的數據表明了與Equation惡意軟件的相似之處,盡管沒有直接證據表明它們存在關聯。
結語
StripedFly活躍了很多年,但卻成功逃避了檢測,無疑實現了其預期目的。許多高調和復雜的惡意軟件已被調查過,但這個軟件能夠脫穎而出,確實值得關注和認可。
至于該惡意軟件的真正目的至今仍然是個謎。雖然ThunderCrypt勒索軟件表明開發者存在商業動機,但它也拋出了一個問題:為什么他們不選擇可能更有利可圖的途徑?勒索軟件團伙通常旨在獲取匿名贖金,而這個案例似乎一反常態。
這個問題至今無解,相信只有那些設計這個神秘惡意軟件的人知道答案。鑒于所有的證據都與此相反,很難接受這樣一種觀點,即如此復雜和設計精妙的惡意軟件會服務于如此微不足道的目的。
原文鏈接:
https://securelist.com/stripedfly-perennially-flying-under-the-radar/110903/
007bug
上官雨寶
cayman
Anna艷娜
007bug
CNCERT國家工程研究中心
尚思卓越
安全俠
Anna艷娜
X0_0X