作者:hanochzhang、 jaryzhou @云鼎實驗室
公眾號:云鼎實驗室

一、事件背景

近日,騰訊安全云鼎實驗室發現一起針對云上服務器利用 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數據庫產品默認已進行加固且會由相關團隊定期維護,不受該漏洞影響。

五、附錄

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

Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/711/