攻擊者利用Redis未授權訪問漏洞進行新型入侵挖礦的事件分析
一、事件背景
近日,騰訊安全雲鼎實驗室發現一起針對雲上伺服器利用 Redis 未授權訪問漏洞的入侵挖礦事件,和以往研究發現的入侵挖礦行為相比,此次入侵行為更具有針對性,主要瞄準大型雲服務商提供的伺服器,並且入侵手法更高階,具備掃描感染、程序隱藏等多種能力。
二、入侵分析
攻擊者利用 Redis 未授權訪問漏洞入侵伺服器,寫入 crontab 任務下載惡意指令碼並植入挖礦程式。仔細分析此次入侵事件,有以下特點:
·惡意指令碼存放在 hxxps://pastebin.com 站點,下載連結頻繁改變,方便隱藏,增加攔截成本;
· 通過受害者伺服器感染更多有相同漏洞的外網伺服器,使得難以追蹤真實攻擊源;
· 從 ident.me 站點獲取要感染的 IP 地址,多是大型雲服務提供商的伺服器地址;
· 採用對抗手段,解除安裝安全產品,極有可能是針對雲上伺服器的入侵挖礦行為;
· 在 root 和 ubuntu 使用者目錄下寫 SSH 公鑰,並設定 iptables 禁止外網訪問 Redis,後續可通過 SSH 後門入侵;
· 受害伺服器訪問 hxxps://2no.co/11Grb,記錄受害者 IP 地址;
· 利用 Linux 動態連結庫載入機制隱藏程序,使用 top 等命令不能發現異常程序,增加排查難度;
· 留存在系統上的惡意指令碼功能不全,僅僅守護挖礦程序,隱藏真實的攻擊手法;
· 挖礦程式經過 UPX 加殼處理,增加檢測難度。
惡意指令碼中定義的函式如下圖:
由於指令碼內容過多,下面先分析指令碼的核心部分,再對部分函式進行細緻分析。
1. 惡意指令碼的核心程式如下:
惡意指令碼首先訪問 hxxps://pastebin.com/raw/SGM25Vs3, 返回內容為noupdate 或 update;根據返回內容執行不同的流程,返回內容為 update 則呼叫 echocron 函式更新 crontab 任務,否則執行一系列函式下載挖礦程式、Redis 掃描等程式;最後訪問 hxxps://2no.co/11Grb 記錄受害者 IP,並且在伺服器的 root 和 ubuntu 使用者目錄下寫入 SSH 公鑰,後續的入侵資料也提取到攻擊者 SSH 訪問的 IP 地址為103.87.9.40,屬於3A網路運營商(cnaaa.com)。
2. 惡意指令碼中的部分函式:
· tables 函式
tables 函式設定 iptables 規則,禁止外網訪問 Redis 6379埠,執行本地訪問6379埠。生成 /tmp/.tables 檔案,作為 iptables 規則設定的標誌。
· uninstall 函式
uninstall 函式解除安裝安全產品,生成 /tmp/.uninstall 檔案作為解除安裝成功的標誌。
· python 函式
python 函式執行一段 Python 程式碼,生成 /tmp/.tmpp 作為執行成功的標誌。程式碼比較簡單,解碼 base64 字串並呼叫 exec 執行,base64 解碼後內容如下:
從 hxxps://pastebin.com/raw/eRkrSQfE 獲取 base64 編碼的內容,解碼後執行。解碼內容如下:
Python 指令碼掃描外網開放6379埠的伺服器,利用 Redis 未授權訪問漏洞寫 crontab 任務。指令碼從 ident.me 站點獲取要掃描的 IP 地址,生成B段 IP 地址列表,然後掃描這些 IP 地址,若存在 Redis 未授權漏洞,則寫入 crontab 任務,內容如下:
站點 hxxps://pastebin.com/raw/5bjpjvLP,內容如下:
hxxps://pastebin.com/raw/Gw7mywhC 返回的內容和最初分析的惡意指令碼內容一致,表明攻擊者利用受害者的伺服器去感染外網存在 Redis 未授權訪問漏洞的伺服器。
· system 函式
system 函式從 hxxps://pastebin.com/raw/KqzUfgz0 下載指令碼命名為 dns,存放於系統 bin 目錄下,然後賦予指令碼可執行許可權,並寫入crontab任務。dns 檔案內容為
hxxps://pastebin.com/raw/9DTSBYBt 返回的內容,解碼後發現僅保留了下載挖礦程式和寫 crontab 任務功能,刪除了 Redis 掃描,解除安裝安全產品等功能。將 dns 檔案存放在伺服器上,功能越少越方便隱藏攻擊者的入侵手法。
· top 函式
top 函式從
hxxps://monero.minerxmr.ru/1/1535595427x-1404817712.jpg 下載惡意程式,主要功能是過濾挖礦程序,過濾程序名為 kworkerds。下載檔案命名為 libdns.so,存放在系統 /usr/local/lib/ 路徑下,然後將 /usr/local/lib/libdns.so 寫入 /etc/ld.so.preload,這裡是利用 Linux 的動態連結庫預載入機制,是一種常用的程序隱藏方法,而系統命令 top 受這個機制影響的。因此在 Linux 上執行 top 命令並不能看到挖礦的程序。
· downloadrunxm 函式
downloadrunxm 下載挖礦配置檔案,並根據伺服器作業系統位數下載合適的挖礦程式。挖礦程式主要配置資訊如下:
礦池地址:
stratum+tcp://x1.minerxmr.ru:56415
錢包地址:
47eCpELDZBiVoxDT1tBxCX7fFU4kcSTDLTW2FzYTuB1H3yzrKTtXLAVRsBWcsYpfQzfHjHKtQAJshNyTU88LwNY4Q3rHFYA
下載的挖礦程式都經過 UPX 加殼處理,去殼後分析,發現使用了兩種不同挖礦程式,一個是基於 https://github.com/xmrig/xmrig 原始碼編譯的挖礦程式,版本為 XMRig 2.6.5,另一個是挖礦工具 xmr-stak,github 地址為 https://github.com/fireice-uk/xmr-stak,版本為v2.4.7。
三、攻擊者資訊
通過攻擊者使用的 pastebin 站點的 URL 進行分析,發現使用的使用者名稱為 SYSTEMTEN, 地址為 hxxps://pastebin.com/u/SYSTEMTEN
四、安全建議
利用 Redis 未授權訪問漏洞讀取 Redis 資料庫中的資料,可能導致敏感資訊洩露;惡意執行 Redis 提供的 flushall 命令清空資料,可能導致資料丟失;執行 Redis 提供的 config 命令進行檔案讀寫操作,可能導致目標伺服器被遠端控制。為了避免正常業務受影響,雲鼎實驗室安全運營團隊提醒企業務必高度重視,可按下述方式進行防護。
· 禁止外網訪問 Redis
修改 redis.conf 檔案,繫結本地 IP 或內網 IP,禁止外網訪問 Redis
bind 127.0.0.1
· 修改 Redis 預設埠
修改 redis.conf 檔案,將預設的6379埠改為其他埠
· Redis新增密碼驗證
修改 redis.conf 檔案,設定 Redis 新增密碼驗證
requirepass mypassword
· 禁用高危命令
修改 redis.conf 檔案,禁用遠端修改DB檔案地址
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
· 低許可權執行 Redis 服務
給 Redis 服務建立單獨的user和home目錄,並且配置禁止登陸,例如:
groupadd -r redis && useradd -r -g redis redis
· 採用騰訊雲 Redis 資料庫產品
騰訊雲 Redis 資料庫產品預設已進行加固且會由相關團隊定期維護,不受該漏洞影響。
五、附錄
IOC/">IOCs:
· IP
103.87.9.40
167.99.8.184
· URL
https://pastebin.com/raw/9VbG2qrD
https://pastebin.com/raw/KqzUfgz0
https://pastebin.com/raw/SGM25Vs3
https://pastebin.com/raw/cAfrnxHu
https://pastebin.com/raw/wRrpixP3
https://monero.minerxmr.ru/1/1535595427x-1404817712.jpg
https://monero.minerxmr.ru/1/1537330544x-1404764619.jpg
https://monero.minerxmr.ru/1/1537410304x-1404764882.jpg
https://monero.minerxmr.ru/1/1537410750x-1566657908.jpg
https://monero.minerxmr.ru/2/1535175015x-1404817880.jpg
https://monero.minerxmr.ru/2/1535175343x-1566657675.jpg
https://monero.minerxmr.ru/2/1534496022x-1404764583.jpg
https://monero.minerxmr.ru/2/1537410304x-1404764882.jpg
https://monero.minerxmr.ru/007/008/1534496022x-1404764583.jpg
https://monero.minerxmr.ru/007/1534496022x-1404764583.jpg
https://monero.minerxmr.ru/007/1535595427x-1404817712.jpg
https://2no.co/11Grb
x1.minerxmr.ru:56415
ident.me
· 樣本 MD5
59d04962a3934303cd87f640daa725d1
ff7005e420393e3c18b264bdebe231e7
0497a86dc11e773d93deeb728da0f675
5ab9a32f2a864e2533b382b33c640858
e1a725cdb275e8f6140c2b94f0fbe2e8
a29678541358d595d88ab3c9e95ba29b
e6d66c765048e5c1a997276b6c962720
0497a86dc11e773d93deeb728da0f675
b7992c96303f995669ef0d5926c35ec1
39f37cc04b45210cfa44eeec6e1be283
76e7845eca279ab65783f5eb9ad9d8fb
9ed18ce3c758646ead9dcae17fbf9a95
c1e7f16b7de6fe03848a17333c7c49e0
· 礦池地址
stratum+tcp://x1.minerxmr.ru:56415
· 錢包地址
47eCpELDZBiVoxDT1tBxCX7fFU4kcSTDLTW2FzYTuB1H3yzrKTtXLAVRsBWcsYpfQzfHjHKtQAJshNyTU88LwNY4Q3rHFYA
本文作者: hanochzhang、 jaryzhou