| 導語 自從Redis未授權問題獲取Linux系統root許可權的攻擊方法的披露後, 由於其易用性, 利用該問題入侵Linux服務進行挖礦、掃描等的駭客行為一直層出不窮;而在眾多利用該問題入侵伺服器進行黑產行為的案例中, 其中就存在一類利用該問題進行挖礦並且會利用pnscan自動掃描感染其他機器;該類攻擊一直存在, 不過在近期又呈現數量增加的趨勢, 在最近捕獲到多次, 我們針對其做下具體的分析
一、 背景
自從Redis未授權問題獲取Linux系統root許可權的攻擊方法的披露後, 由於其易用性, 利用該問題入侵Linux服務進行挖礦、掃描等的駭客行為一直層出不窮;而在眾多利用該問題入侵伺服器進行黑產行為的案例中,
二、 漏洞說明
首先針對利用的漏洞做個說明, Redis 預設情況下, 會綁定在 0.0.0.0:6379, 在沒有利用防火牆進行遮罩的情況下, 將會將Redis服務暴露到公網上, 如果在沒有開啟認證的情況下, 可以導致任意使用者在可以訪問目標伺服器的情況下未授權訪問Redis以及讀取Redis的資料。 攻擊者在未授權訪問Redis的情況下利用Redis的相關方法, 可以成功將自己的公開金鑰寫入目標伺服器的 ~/.ssh 資料夾的authotrized_keys 檔中,
相關漏洞詳情可以參考:
https://www.seebug.org/vuldb/ssvid-89715
以下為漏洞利用演示:
經過在ZoomEye和SHODAN檢索, 可以發現分別眾多Redis服務開放在公網上, 這些服務都可能成為攻擊目標。
三、 入侵分析
經過對捕獲的事件進行分析, 我們發現整個入侵流程大概是包含以下幾個環節:
掃描開放6379埠的Linux伺服器(後續感染掃描網段為1.0.0.0/16到224.255.0.0/16)
通過redis-cli嘗試連接Redis並執行預置在.dat檔裡的利用命令將Redis的資料檔案修改為/var/spool/cron/root, 然後通過在Redis中插入資料, 將下載執行腳本的動作寫入crontab任務
通過腳本實現以上的相關行為, 完成植入並啟動挖礦程式
再編譯安裝pnscan, 繼續掃描感染下一個目標
四、 腳本分析
整個入侵利用以及後續的感染的實現, 最主要的功能都是基於通過Redis問題寫入crontab任務中下載執行的.cmd腳本來實現的, 通過對它的分析, 我們基本能夠得到整個流程的所有細節, 這是一個base腳本, 我們通過解讀來分析下它的相關功能。
這部分代碼只要是用作重複執行的判斷, 將.mxff0檔作為標記檔, 如果存在該檔則代表機器上已執行腳本, 直接退出, 否則寫.mxff0檔並進行下一步動作;
設置預置動作, 在腳本退出後刪除相關檔和腳本自身;
這部分主要是修改系統的配置, 開頭兩行為關閉SELINUX;然後清空/var/spool/cron, 進而判斷系統DNS伺服器是否存在8.8.8.8, 沒有則添加;接著清空系統tmp目錄和刪除相關檔;同時清空系統緩存, 而最後修改/etc/security/limits.conf來更新系統的資源限制;
這裡再進一步的增加iptables限制6379埠只允許本地訪問, 同時kill相關包含挖礦、redis用戶端、爬蟲等進程, 這裡的目的也比較簡單, 避免被其他駭客再次入侵, 同時清除可能其他駭客入侵啟動的進程;
清除相關登錄日誌、命令操作歷史;
這一長串的內容主要目的是下載並編譯安裝pnscan, 從內容中我們可以看到對於不同作業系統的判斷然後安裝依賴的相關模組, 然後才是從github下載pnscan的源碼進行編譯安裝;至於為什麼採用編譯安裝的形式, 猜測是出於相容不同系統以及每次編譯生成的pnscan的MD5都不一樣, 避免形成固定特徵;
這部分主要是下載挖礦程式並重命名為.gpg, 增加執行許可權, 執行後刪除, 同時重新上傳到https://transfer.sh/ 獲取新的連結;
而這部分內容主要是生成新的.dat檔, 包含將原來.cmd腳本裡的裡挖礦程式的下載位址替換為上一步上傳到https://transfer.sh/得到的新位址, 還有Redis利用的相關語句;
而步主要是調用pnscan去掃描子網段1.0.0.0/16到224.255.0.0/16中開放6379埠並且作業系統為Linux的目標, 然後利用redis-cli執行.dat中的命令, 進行下個目標的感染;這裡pnscan的-W參數值'2a 31 0d 0a 24 34 0d 0a 69 6e 66 6f 0d 0a'轉換後內容'*1\r\n$4\r\nINFO\r\n', 是向目標Redis服務發送請求獲取Redis伺服器的各種資訊和統計數值, 再通過-R參數值'6f 73 3a 4c 69 6e 75 78'(轉換後內容為os:Linux)判斷是否Linux系統。
最後就是收尾工作, 清除相關日誌和命令執行歷史, 同時在腳本退出的時候會觸發腳本一開始用trap預置的動作, 會做刪除操作, 刪除相關檔和腳本自身(rm -rf m* .cmd tmp.* .r .dat $0)。 通過對腳本的解讀, 我們基本已經清楚整個蠕蟲的行為和入侵流程, 也就是我們開始所描述的流程。
另外,通過閱讀腳本,我們發現雖然整個入侵流程並不是多複雜,但腳本其實有很多”工程化”的細節考慮,不得不讓人驚歎入侵者的”考慮周到”:
利用.mxff0檔做重複執行檢驗,避免腳本的重複執行
為了增加成功性,一些環境的預處理:
關閉SELINUX
增加8.8.8.8的DNS
清空tmp目錄
清空系統緩存
修改系統資源限制
痕跡清除
利用trap預置動作好在腳本執行完成後刪除相關檔和腳本自身
重複清除相關登錄等日誌和命令執行歷史
同行預防
利用iptables避免Redis服務開放在公網上從而導致再次被入侵
清除同行可能遺留的入侵行為,kill相關進程
系統相容性
判斷作業系統,針對性的執行相關命令,安裝依賴包,最大限度的提高pnscan編譯安裝的成功率
關閉SELINUX,通過setenforce和修改/etc/sysconfig/selinux兩種手段實現
寫入Crontab裡的下載並執行腳本的任務,通過curl、wget、lynx三種方式實現
Pnscan掃描增加作業系統判斷,減少沒有必要的感染嘗試
特徵去除,存活延續
Pnscan採用安裝編譯的方式,既提高在不同系統下的相容性,也避免形成固定的MD5特徵
利用https://transfer.sh中轉,每一次感染均生成新的連接,避免固定連結形成固定特徵
下載到系統的相關檔均採用隨機生成的檔案名
正是由於入侵者種種的”考慮周到”使得他的入侵感染的成功率能夠達到的一定的層度。
五、安全建議
病毒清理和系統恢復
我們主要參考腳本的相關行為進行對應的行為恢復和刪除即可:
關閉SELINUX,根據系統原環境和業務需要重新開啟SELINUX
清空了/var/spool/cron,根據原先備份清空恢復
修改/etc/resolv.conf增加DNS服務8.8.8.8,如無影響可不處理,或者刪除
修改了系統資源限制(/etc/security/limits.conf),可根據備份情況恢復
增加了對6379埠的Iptables規則,如果不影響業務,建議保留
Kill了相關進程,檢查是否包含業務所需進程,根據情況恢復
安裝了相關包,具體清單見上文,可根據情況刪除或者如無影響可保留
編譯安裝了pnscan,可刪除/usr/local/bin/pnscan
清除了相關日誌和tmp目錄,對系統無影響,可忽略
啟動了挖礦進程和pnscan掃描感染,進程:.gpg、pnscan,直接kill
還包含了一些中間檔,雖然腳本包含相關刪除操作,但建議還是全域查找確認:
.mxff0、.x112、.gpg、.dat、.cmd、.r.xx.xx.o/l、tmp.xxxx
Redis服務加固
導致入侵的主要原因是Redis未授權訪問問題,所以如果要扼制入侵的入口,需要針對Redis服務進行加固,避免駭客通過該途徑進行入侵植入挖礦蠕蟲。
如無必要,修改bind項,不要將Redis綁定在0.0.0.0上,避免Redis服務開放在外網,可以通過iptables或者騰訊雲用戶可以通過安全性群組限制訪問來源
在不影響業務的情況,不要以root啟動Redis服務,同時建議修改預設的6379埠,大部分針對Redis未授權問題的入侵都是針對預設埠進行的
配置AUTH,增加密碼校驗,這樣即使開放在公網上,如果非弱口令的情況,駭客也無法訪問Redis服務進行相關操作
使用rename-command CONFIG "RENAME_CONFIG"重命名相關命令,這樣駭客即使在連接上未授權問題的Redis服務,在不知道命令的情況下只能獲取相關資料,而無法進一步利用
其他建議
騰訊雲公有雲和私有雲用戶可以安裝騰訊雲主機安全產品-雲鏡,在被入侵植入木馬後可以第一時間獲得提示,及時止損
建議開通雲鏡專業版,可以提前檢測獲知伺服器的安全性漏洞,及時修復,避免被利用
六、 附錄
IOCs
腳本
https://transfer.sh/MIpIA/tmp.9kIguIhkI7
挖礦程式
https://transfer.sh/MIpIA/tmp.vOYTgmtZge
2918ee2b69bc4e6b581c7b25f08434fe
.mxff0、.x112、.gpg、.dat、.cmd、.r.xx.xx.o/l、tmp.xxxx
連結
樣本
https://www.virustotal.com/#/file/9756e66c168ec963c58b3d0ca5483927c14a64a99ba718fa9488a52d4d207ed6
Pnscan項目位址
https://github.com/ptrrkssn/pnscan
漏洞說明
https://www.seebug.org/vuldb/ssvid-89715
漏洞利用演示
https://v.qq.com/x/page/u0661b9o772.html
雲鏡產品官網
https://cloud.tencent.com/product/hs
也就是我們開始所描述的流程。另外,通過閱讀腳本,我們發現雖然整個入侵流程並不是多複雜,但腳本其實有很多”工程化”的細節考慮,不得不讓人驚歎入侵者的”考慮周到”:
利用.mxff0檔做重複執行檢驗,避免腳本的重複執行
為了增加成功性,一些環境的預處理:
關閉SELINUX
增加8.8.8.8的DNS
清空tmp目錄
清空系統緩存
修改系統資源限制
痕跡清除
利用trap預置動作好在腳本執行完成後刪除相關檔和腳本自身
重複清除相關登錄等日誌和命令執行歷史
同行預防
利用iptables避免Redis服務開放在公網上從而導致再次被入侵
清除同行可能遺留的入侵行為,kill相關進程
系統相容性
判斷作業系統,針對性的執行相關命令,安裝依賴包,最大限度的提高pnscan編譯安裝的成功率
關閉SELINUX,通過setenforce和修改/etc/sysconfig/selinux兩種手段實現
寫入Crontab裡的下載並執行腳本的任務,通過curl、wget、lynx三種方式實現
Pnscan掃描增加作業系統判斷,減少沒有必要的感染嘗試
特徵去除,存活延續
Pnscan採用安裝編譯的方式,既提高在不同系統下的相容性,也避免形成固定的MD5特徵
利用https://transfer.sh中轉,每一次感染均生成新的連接,避免固定連結形成固定特徵
下載到系統的相關檔均採用隨機生成的檔案名
正是由於入侵者種種的”考慮周到”使得他的入侵感染的成功率能夠達到的一定的層度。
五、安全建議
病毒清理和系統恢復
我們主要參考腳本的相關行為進行對應的行為恢復和刪除即可:
關閉SELINUX,根據系統原環境和業務需要重新開啟SELINUX
清空了/var/spool/cron,根據原先備份清空恢復
修改/etc/resolv.conf增加DNS服務8.8.8.8,如無影響可不處理,或者刪除
修改了系統資源限制(/etc/security/limits.conf),可根據備份情況恢復
增加了對6379埠的Iptables規則,如果不影響業務,建議保留
Kill了相關進程,檢查是否包含業務所需進程,根據情況恢復
安裝了相關包,具體清單見上文,可根據情況刪除或者如無影響可保留
編譯安裝了pnscan,可刪除/usr/local/bin/pnscan
清除了相關日誌和tmp目錄,對系統無影響,可忽略
啟動了挖礦進程和pnscan掃描感染,進程:.gpg、pnscan,直接kill
還包含了一些中間檔,雖然腳本包含相關刪除操作,但建議還是全域查找確認:
.mxff0、.x112、.gpg、.dat、.cmd、.r.xx.xx.o/l、tmp.xxxx
Redis服務加固
導致入侵的主要原因是Redis未授權訪問問題,所以如果要扼制入侵的入口,需要針對Redis服務進行加固,避免駭客通過該途徑進行入侵植入挖礦蠕蟲。
如無必要,修改bind項,不要將Redis綁定在0.0.0.0上,避免Redis服務開放在外網,可以通過iptables或者騰訊雲用戶可以通過安全性群組限制訪問來源
在不影響業務的情況,不要以root啟動Redis服務,同時建議修改預設的6379埠,大部分針對Redis未授權問題的入侵都是針對預設埠進行的
配置AUTH,增加密碼校驗,這樣即使開放在公網上,如果非弱口令的情況,駭客也無法訪問Redis服務進行相關操作
使用rename-command CONFIG "RENAME_CONFIG"重命名相關命令,這樣駭客即使在連接上未授權問題的Redis服務,在不知道命令的情況下只能獲取相關資料,而無法進一步利用
其他建議
騰訊雲公有雲和私有雲用戶可以安裝騰訊雲主機安全產品-雲鏡,在被入侵植入木馬後可以第一時間獲得提示,及時止損
建議開通雲鏡專業版,可以提前檢測獲知伺服器的安全性漏洞,及時修復,避免被利用
六、 附錄
IOCs
腳本
https://transfer.sh/MIpIA/tmp.9kIguIhkI7
挖礦程式
https://transfer.sh/MIpIA/tmp.vOYTgmtZge
2918ee2b69bc4e6b581c7b25f08434fe
.mxff0、.x112、.gpg、.dat、.cmd、.r.xx.xx.o/l、tmp.xxxx
連結
樣本
https://www.virustotal.com/#/file/9756e66c168ec963c58b3d0ca5483927c14a64a99ba718fa9488a52d4d207ed6
Pnscan項目位址
https://github.com/ptrrkssn/pnscan
漏洞說明
https://www.seebug.org/vuldb/ssvid-89715
漏洞利用演示
https://v.qq.com/x/page/u0661b9o772.html
雲鏡產品官網
https://cloud.tencent.com/product/hs