一、背景概述
故事的起因于26號下午做滲透測試時,登錄跳板機發(fā)現(xiàn)CPU進程拉滿到200%,qiao哥看了一眼直接說是XMR挖礦,這句話勾引起我的興趣,由于應急是我的薄弱項也沒有時間深入學習,所以有本篇應急分析文章。
市面上存在很多關(guān)于XMR門羅幣挖礦的教程,這些教程可能會被攻擊者惡意利用來進行盈利。他們通過前期使用非法手段獲取服務器的控制權(quán)限,并在服務器上部署XMR門羅幣挖礦木馬腳本。一旦攻擊者成功部署了挖礦木馬腳本,會通過設置SSH公鑰后門登錄和計劃任務啟動項等方式,維持對服務器的控制權(quán)限,并利用自啟動腳本進行挖礦持續(xù)從中獲利。
下面是應急排查分析。
首先留圖一張,簡單了解一下XMR門羅幣挖礦木馬
二、初步排查
1.如圖下可以看到,CPU進程直線拉滿,CPU已經(jīng)占滿200%,用top命令查看,CPU狀態(tài)顯示xmrig,這里最明顯的特征就是xmrig命令,這也是qiao哥為什么一眼看出是XMR挖礦木馬的原因!!!,在此次排查中一系列常規(guī)排查思路不一一展現(xiàn),只突出重點步驟。 2.使用ps -aux | grep xmrig 查看進程運行命令,可以看到xmrig的執(zhí)行命令
./xmrig --coin=monero -o pool.supportxmr.com:3333 -u 89zqe5wQCDsML1xyYx7GxqDqR3DAizK6cXRsd7rXLLmyRCHaTFe6cDJA
xmrig命令如下
-o 礦池地址:端口號 地址(pool.supportxmr.com:3333)
-u 錢包地址 攻擊者的獲利錢包地址 (89zqe5wQCDsML1xyYx7GxqDqR3DAizK6cXRsd7rXLLmyRCHaTFe6cDJA)
3.使用 ls -l /proc/643961/exe 命令,根據(jù)進程PID查看可執(zhí)行程序 4.使用lsof -p 643961根據(jù)PID查看進程所占用的文件
5.我們先嘗試執(zhí)行殺掉進程 kill -9 643961,發(fā)現(xiàn)進程在掉線后,依舊存活,疑似存在定時計劃任務。
6.排查定時計劃任務并未發(fā)現(xiàn)什么,最后經(jīng)過一些列排查發(fā)現(xiàn)docker容器內(nèi)排查出問題,發(fā)現(xiàn)多了個容器
pmietlicki/monero-miner容器是一個用于挖掘Monero(一種加密貨幣)的Docker容器,其中包含了用于挖礦Monero的軟件和配置文件。通過運行該容器,可以快速啟動Monero挖礦進程進行挖礦。 7.使用docker stop 停止該容器,后再使用top命令發(fā)現(xiàn),cpu速率已回歸正常
在使用docker命令查找到鏡像刪除即可,由于我通過命令“find / -name xmrig 查找刪除xmrig部分容器樣本,會出現(xiàn)一下報錯,并不影響后續(xù),挖礦應急初步排查階段到此為止
三、樣本分析
通過命令“find / -name xmrig “全局搜索這個惡意樣本存儲在哪個目錄,最后在目錄下發(fā)現(xiàn)了它如下圖所示,瀏覽整個目錄,發(fā)現(xiàn)都是惡意樣本相關(guān)的文件,于是將其打包下載到本地進行分析
對該目錄的子目錄和文件進行分析,得到以下信息:
#!/bin/bash
algoMode=$1
poolUrl=$2
poolUser=$3
poolPW=$4
maxCpu=$5
useScheduler=$6 # true / false
startTime=$7 #e.g. 1530 or 1100 for time
stopTime=$8 #e.g. 1530 or 1100 for time
days=$9 #e.g. "Tuesday,Friday"
options=${10}
miner="./xmrig"
if [ "$maxCpu" != "100" ] && [ "$maxCpu" != "50" ] && [ "$maxCpu" != "25" ] && [ "$maxCpu" != "12.5" ] && [ "$maxCpu" != "6.25" ] ; then
echo "maxCpu is not valid"; exit;
fi;
if [ "$useScheduler" != "true" ] && [ "$useScheduler" != "false" ]; then
echo "useScheduler is not valid, use true or false"; exit;
fi;
if ! [[ ${poolUrl} =~ .+\.[a-z]+\:[0-9]+ ]]; then
echo "The URL Format seams not right."; exit;
fi;
if [ "$useScheduler" == "true" ]; then
if [ ${#startTime} -ne 4 ]; then
echo "startTime is not in a valid format"; exit;
fi;
if [[ ${startTime} =~ [A-Za-z_\;\:\.]+ ]]; then
echo "startTime can only contain digits"; exit;
fi;
if [ ${#stopTime} -ne 4 ]; then
echo "stopTime is not in a valid fromat"; exit;
fi;
if [[ ${stopTime} =~ [A-Za-z_\;\:\.]+ ]]; then
echo "stoptimeTime can only contain digits"; exit;
fi;
IFS=',' read -r -a dayArray <<< "$days"
for day in "${dayArray[@]}"
do
if [ "${day,,}" != "monday" ] && [ "${day,,}" != "tuesday" ] && [ "${day,,}" != "wednesday" ] && [ "${day,,}" != "thursday" ] && [ "${day,,}" != "friday" ] && [ "${day,,}" != "saturday" ] && [ "${day,,}" != "sunday" ]; then
echo "Days are not formated correctley."; exit;
fi;
done
# wait for starttime
echo "================================================================";
echo "Cryptonote mining container based on xmrig";
echo "with task scheduling mod by MasterRoshi";
echo "";
echo "Scheduler information";
echo "At: $startTime - $stopTime GMT+0";
echo "On: $days";
echo "================================================================";
echo "Waiting for the next work schedule....";
while { printf -v current_day '%(%A)T' -1 && [[ ${days,,} != *"${current_day,,}"* ]]; } || { printf -v current_time '%(%H%M)T' -1 && [[ ${current_time} != ${startTime} ]]; }; do
sleep 10;
done;
echo "Time to work, miner is signing-on!";
# run xmrig as background
$miner --coin="$algoMode" -o "$poolUrl" -u "$poolUser" -p "$poolPW" --max-cpu-usage="$maxCpu" "${options:---donate-level=3 -k}" &
while printf -v current_time '%(%H%M)T' -1 && [[ $current_time != $stopTime ]]; do
sleep 10;
done;
# end the xmring when the stoptime is reached
pkill xmrig;
echo "Miner signing-off and preparing for the next work schedule!";
"$0" "$algoMode" "$poolUrl" "$poolUser" "$poolPW" "$maxCpu" "$useScheduler" "$startTime" "$stopTime" "$days" "${options:---donate-level=3 -k}";
exit;
else
$miner --coin="$algoMode" -o "$poolUrl" -u "$poolUser" -p "$poolPW" --max-cpu-usage="$maxCpu" "${options:---donate-level=3 -k}";
fi;
以上經(jīng)過分析得知,這個是基于xmrig的加密貨幣挖礦腳本,可以在Linux系統(tǒng)上運行。以下是它的一些參數(shù):
- algoMode:要挖掘的加密貨幣算法。
- poolUrl:礦池的URL地址。
- poolUser:礦工的用戶名。
- poolPW:礦工的密碼。
- maxCpu:礦工使用的最大CPU百分比。
- useScheduler:是否啟用任務調(diào)度模式(true/false)。
- startTime:如果啟用了任務調(diào)度模式,則開始時間(24小時制)。
- stopTime:如果啟用了任務調(diào)度模式,則結(jié)束時間(24小時制)。
- days:如果啟用了任務調(diào)度模式,則應該在哪些日期運行(星期幾)。
- options:其他選項。
如果useScheduler被設置為true,腳本將等到指定的開始時間和日期然后啟動xmrig并在指定的停止時間停止。
如果useScheduler被設置為false,腳本將直接啟動xmrig并運行
四、處置與防御建議
XMR挖礦木馬是指惡意軟件,它利用受感染的計算機的計算資源來挖掘Monero(XMR)加密貨幣,而不經(jīng)過用戶的明確許可。以下是修復和防御XMR挖礦木馬的一些常見手段:文章來源:http://www.zghlxwxcb.cn/news/detail-855155.html
- 及時更新和升級系統(tǒng):保持操作系統(tǒng)、應用程序和安全補丁的最新版本,以減少已知漏洞的風險。
- 安裝可信的安全軟件:使用強大的殺毒軟件、反惡意軟件和防火墻等安全工具,定期進行全面掃描和實時保護。
- 謹慎下載和安裝軟件:只從官方和可信的來源下載軟件,并在安裝過程中仔細閱讀和審查相關(guān)權(quán)限和選項。
- 強化遠程訪問安全:關(guān)閉或限制不必要的遠程訪問服務,如遠程桌面協(xié)議(RDP),并使用強密碼和多因素身份驗證來保護遠程訪問。
- 監(jiān)控系統(tǒng)活動:監(jiān)控系統(tǒng)日志、網(wǎng)絡流量和進程活動,及時發(fā)現(xiàn)異常行為和不尋常的計算資源使用情況。
- 防止未經(jīng)授權(quán)的挖礦腳本運行:使用瀏覽器插件或腳本阻止工具,如NoScript、AdBlock Plus等,防止惡意網(wǎng)站在瀏覽器中運行挖礦腳本。
- 加強網(wǎng)絡安全:使用強密碼、定期更改密碼,啟用網(wǎng)絡防火墻,限制對敏感端口和服務的訪問。
- 定期備份數(shù)據(jù):定期備份重要數(shù)據(jù),并將其存儲在離線和安全的位置,以防止數(shù)據(jù)丟失或被勒索軟件加密。
- 教育員工和用戶:提供安全意識培訓,教育員工和用戶如何識別和避免惡意軟件的風險。
- 及時響應和隔離感染:如果發(fā)現(xiàn)系統(tǒng)受到XMR挖礦木馬感染,立即斷開與網(wǎng)絡的連接,并尋求專業(yè)的技術(shù)支持來清除和修復受感染的系統(tǒng)。
請注意,這些措施可以提高系統(tǒng)的安全性,但沒有絕對的安全保障。因此,持續(xù)的安全意識和定期的安全審查是至關(guān)重要的,以確保系統(tǒng)和數(shù)據(jù)的安全。文章來源地址http://www.zghlxwxcb.cn/news/detail-855155.html
到了這里,關(guān)于記一次“XMR門羅幣挖礦木馬病毒”處置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!