全部產品
Search
文件中心

Security Center:處理挖礦程式最佳實務

更新時間:Jul 17, 2024

伺服器被挖礦破壞入侵後,挖礦病毒會消耗伺服器的資源、降低生產效率、影響系統穩定性,對受感染的個人或企業使用者構成嚴重的威脅。被入侵後,您需要及時響應並處理挖礦病毒,加固系統安全。本文介紹如何處理挖礦病毒。

挖礦程式的特徵

  • 挖礦程式會佔用CPU進行超頻運算,導致CPU嚴重損耗,並且影響伺服器上的其他應用。

  • 挖礦程式還具備蠕蟲化特點,當安全邊界被突破時,挖礦病毒會向內網滲透,並在被入侵的伺服器上持久化駐留,以擷取最大收益。

  • 挖礦程式具有聯動作用,在清理過程中會存在處理不及時或清理不徹底導致挖礦病毒反覆發生、出現惡意指令碼替換系統命令的現象,從而導致執行系統命令時觸發惡意指令碼執行(例如:xorddos)。因此,您需要在挖礦程式的一個執行循環內,儘快將被入侵伺服器上的木馬程式和持續化後門清理乾淨,否則容易導致挖礦病毒頻繁複發。

如何判斷資產中是否存在挖礦威脅

在收到挖礦警示或處理完挖礦病毒後,您可以參考下面兩種方法判斷伺服器中是否存在挖礦病毒。

  • 如果您伺服器的CPU使用率明顯升高,例如周期性或者長時間持續達到80%以上,並且出現未知進程持續向外發送網路包的情況,可以判定您的伺服器中存在挖礦威脅。

  • 已安裝Security Center用戶端的伺服器被挖礦程式入侵時,Security Center會向您發送警示簡訊或郵件,您可以在警報頁面處理挖礦事件警示。挖礦程式如果關聯了其他警示事件,例如礦池通訊行為訪問惡意網域名稱等,建議您一併處理關聯的警示事件。如何查看和處理關聯警示,請參見查看安全警示

    挖礦警示

方案一:使用Security Center處理挖礦程式

該方案中的步驟為建議您操作的順序,這些操作可以從快速止血、深度查殺、全盤掃描的角度層層遞進,以便全面地發現並處理風險。您也可以根據實際情況調整順序或選擇某些功能進行使用。

前提條件

步驟一:處置警示結束惡意進程

使用Security Center警報功能,可以終止惡意進程的運行,並隔離病毒檔案,快速阻斷挖礦程式運行。詳細內容,請參見查看和處理安全警示。樣本操作如下:

  1. 登入Security Center控制台。在控制台左上方,選擇需防護資產所在的地區:中國全球(不含中國)

  2. 在左側導覽列,選擇檢測響應 > 警報

  3. 找到並單擊挖礦警示操作列的詳情,查看該警示的詳細資料。

    重要

    根據云資訊安全中心控制台提供的警示基礎資訊、事件說明等,您可以找到挖礦程式的位置,以及確認是否存在其他警示或可疑檔案。您需要自行判斷導致挖礦警示的檔案是正常業務檔案,還是攻擊者啟動並執行檔案。如果確認為攻擊事件,建議您處理挖礦程式警示後,一併處理該伺服器上其他警示和可疑檔案。

  4. 返回安全警示列表,處理挖礦程式警示。

    1. 單擊目標挖礦程式警示操作列的處理

    2. 在警示處理對話方塊,處理方式選中病毒查殺,然後選中結束該進程的運行結束進程並隔離源檔案,並單擊立即處理,防止該程式再次啟動。

      如果您確認導致挖礦警示的檔案為非業務檔案,建議您選中結束進程並隔離源檔案,以避免病毒檔案進一步感染您的伺服器。

      Security Center支援同時處理相同警示功能,如果需要批量處理相同規則或類型觸發的警示,您可以選中同時處理相同警示

  5. 在安全警示列表,對挖礦事件產生的其他衍生警示(例如:礦池通訊行為),執行阻斷操作。

    Security Center通過產生對應的策略防止伺服器訪問礦池,確保您有充足的時間對安全事件進行處理。您也可以手動將礦池IP加入安全性群組禁用。添加安全性群組的具體操作,請參見添加安全性群組規則

  6. 在安全警示列表,查看進程行為異常警示,確認是否存在異常的計劃任務,並處理對應警示。

    計劃任務

步驟二:深度查殺病毒

結束惡意進程的運行後,建議您使用Security Center的病毒查殺功能掃描您的資產,掃描結果會顯示在警報頁面。病毒查殺功能可以掃描清理惡意檔案的一些持久化行為,例如:自啟動項、定時任務。具體操作,請參見病毒查殺。樣本操作如下:

  1. 登入Security Center控制台。在控制台左上方,選擇需防護資產所在的地區:中國全球(不含中國)

  2. 在左側導覽列,選擇防護配置 > 主機防護 > 病毒查殺

  3. 病毒查殺頁面,單擊立即掃描重新掃描

  4. 掃描設定面板,設定掃描模式和掃描範圍,然後單擊確定

    掃描模式選擇快速掃描掃描範圍選擇被挖礦程式攻擊的伺服器。

    image

  5. 等掃描完成後,在病毒查殺頁面,單擊目標警示操作列的處理

  6. 警示處理面板,選擇深度查殺,單擊下一步

    系統開始處理警示。處理完成後,您可以查看處理結果和警示狀態。

    image

步驟三:全盤掃描病毒

您可以使用Security Center無代理檢測功能,對Elastic Compute Service的系統硬碟和資料盤進行全面的安全檢測。該功能僅支援檢測,不支援修複;您需要根據風險詳情頁的說明,自行處理風險項。更多資訊,請參見無代理檢測

  1. 登入Security Center控制台。在控制台左上方,選擇需防護資產所在的地區:中國全球(不含中國)

  2. 在左側導覽列,選擇防護配置 > 主機防護 > 無代理檢測

  3. 無代理檢測頁面主機安全檢測面板,單擊建立檢測任務

  4. 建立檢測任務面板,選中要檢測的主機,並單擊下一步

  5. 選擇掃描範圍並設定快照/鏡像儲存時間,單擊下一步

  6. 等待檢測任務完成後,查看檢測出的漏洞風險、基準檢查、安全警示和敏感檔案結果。

    建議您根據風險詳情頁的說明及時處理對應風險項。

    image

方案二:手動處理挖礦程式

挖礦程式為了最大程度擷取利益,會存放大量的持久化後門,導致病毒難以清理或無法殺死。如果您在未購買Security Center服務的情況下遇到挖礦病毒,可以採取如下措施排查和處理。

Linux系統

  1. 阻斷惡意網路通訊。

    在發現主機存在挖礦行為後,由於完整地處理整個挖礦事件的周期比較長,所以為了及時控制挖礦影響,需要首先阻斷挖礦木馬的網路通訊行為。

    1. 執行以下命令,查看當前系統網路連接狀態。

      netstat -antp

      image

    2. 將以下命令中c2地址替換為正常業務不會使用的可疑遠程地址(Foreign Address),然後執行下述命令添加防火牆規則,阻斷伺服器與該可疑地址之間的所有網路連接。

      iptables -A INPUT -s c2地址 -j DROP
      iptables -A OUTPUT -d c2地址 -j DROP
  2. 清除計劃任務。

    挖礦木馬常通過計劃任務實現定期下載(更新)並啟動挖礦木馬,如果僅清理挖礦進程、挖礦木馬檔案,並不能根治挖礦程式,且會出現挖礦反覆的情況。

    排查以下計劃任務檔案,刪除計劃任務中的挖礦木馬下載和啟動任務。

    • 查看目前使用者或指定使用者(username)的計劃任務。

      crontab -l
      crontab -u username -l
    • 主機所有計劃任務檔案。

      /etc/crontab
      /var/spool/cron/
      /etc/anacrontab
      /etc/cron.d/
      /etc/cron.hourly/
      /etc/cron.daily/
      /etc/cron.weekly/
      /etc/cron.monthly/
  3. 清除自啟動服務項。

    1. 執行以下命令,排查系統所有自啟動服務。

      systemctl list-unit-files | grep enabled
    2. 找到對應可疑服務的單元檔案,排查服務詳細資料。

      將命令中*替換為服務名稱,<service_unit_name>替換為服務的單元檔案名稱。

      ls -al /etc/systemd/system/*.service
      ls -al /usr/lib/systemd/system/*.service
      
      # 查看服務詳細資料(服務啟動的進程檔案)
      cat /etc/systemd/system/<service_unit_name>.service
    3. 如果發現惡意的自啟動服務項,使用以下命令禁用服務,刪除對應單元檔案。

      將命令中<service name>替換為服務名稱,<service_unit_name>替換為服務的單元檔案名稱。

      systemctl disable <service name>
      rm /etc/systemd/system/<service_unit_name>.service
      rm /usr/lib/systemd/system/<service_unit_name>.service
    4. 排查以下服務路徑是否有自啟動服務,然後參考以上步驟進行清理。

      /etc/rc.local
      /etc/inittab
      /etc/rc.d/
      /etc/init.d/
  4. 清除SSH公開金鑰。

    挖礦木馬通常會將駭客SSH公開金鑰寫入~/.ssh/authorized_keys檔案中,以便駭客可以通過SSH免密登入受害主機,重新植入惡意檔案。您需要排查~/.ssh/authorized_keys檔案,如果發現可疑公開金鑰,立即刪除。

  5. 清除.so劫持。

    通過/etc/ld.so.preload檔案設定預先載入的.so檔案,可以劫持常見的系統命令,例如top/ps/netstat等,達到隱藏挖礦進程的目的。

    1. 執行以下命令,排查預先載入的.so檔案。

      cat /etc/ld.so.preload
    2. 執行以下命令,刪除預先載入劫持。

      echo > /etc/ld.so.preload
  6. 清除惡意帳號。

    部分挖礦木馬家族會建立新的後門帳號,以達到長期控制受害主機的目的。執行以下命令,查看惡意帳號,然後手動刪除相關帳號資訊。

    • 通過日誌查看近期是否有建立帳號行為。

      cat /var/log/audit/audit.log | grep useradd
      # 或者
      cat /var/log/secure | grep 'new user'
    • 通過/etc/passwd檔案查看是否有可疑帳號。

      cut -d: -f1 /etc/passwd
    • 通過賬戶的home目錄查看可疑賬戶的建立或最近活躍時間,需特別關注近期建立的home目錄。

      stat /home/guest/
  7. 防修改對抗。

    部分挖礦木馬在寫入計劃任務、自啟動等持久化檔案後,會為對應檔案設定一個不可更改的屬性,防止對應持久化任務被刪除。

    image

    如上圖,遇到此類情況可以執行以下命令,恢複檔案屬性後再刪除對應任務。

    chattr -i /etc/passwd
    chattr -i /etc/crontab
  8. 清除挖礦木馬進程。

    1. 挖礦進程通常佔用較高的CPU,通過以下命令可以排查可疑的挖礦進程。

      • 排查佔用主機大量CPU的進程。

        top -c

        image

        ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more

        image

      • 排查異常網路連接行為。

        netstat -antp

        image

      • 擷取可疑進程的檔案路徑。

        ls -al /proc/$PID/exe
      • 計算對應進程檔案的MD5資訊,在阿里雲威脅情報平台查詢對應檔案資訊。

        md5sum /proc/$PID/exe

        image

    2. 執行以下命令,終止挖礦進程,並清理挖礦檔案。

      kill -9 $PID
      # 刪除 ls -al /proc/$PID/exe 擷取的進程路徑
      rm /path/to/executable

Linux系統(特定挖礦事件處理)

偽裝AliyunDuns的挖礦

  1. 執行以下命令,排查持久化自啟動項。

    grep -rlE "\\-\\-donate\\-level|xmrig|\\/opt\\/sysetmd|A_li_yun_Duns" /etc/systemd/system/*
    grep -rl "wget"  /etc/cron.hourly/*
  2. 如果有返回結果,表示存在自啟動服務項,執行以下命令,刪除自啟動服務項。

    rm -f /etc/systemd/system/sysetmd.service
    rm -f /etc/systemd/system/monero.service
    rm -f /etc/systemd/system/A_li_yun_Duns.service
    chattr -i /etc/cron.hourly/0
    rm -f /etc/cron.hourly/0
  3. 排查並處理異常使用者。

    1. 執行下述命令查詢系統使用者列表,鎖定異常使用者名稱稱。

      cat /etc/passwd
    2. 執行下述命令查看異常系統使用者的資訊。異常系統使用者以shaojiang99為例。

      cat /etc/passwd | grep shaojiang99
      cat /etc/shadow | grep shaojiang99
    3. 執行下述命令刪除異常系統使用者。

      chattr -i /etc/passwd
      chattr -i /etc/shadow
      sed -i '/^shaojiang99:/d' /etc/shadow
      sed -i '/^shaojiang99:/d' /etc/passwd

Skidmap手動處理

  1. 執行以下命令,刪除自啟動服務項。

    echo "" > /lib/systemd/system/systemd-cgroup.service
    echo "" > /lib/systemd/system/systemd-deltaed.service
    echo "" > /usr/bin/systemd-cgroup.org
    echo "" > /usr/bin/systemd-cgroup
    echo "" > /usr/bin/systemd-deltaed
    echo "" > /usr/bin/systemd-deltaed.org
  2. 使用者手動恢複SSH公開金鑰檔案authorized_keys

Cleanfda手動處理

  1. 排查以下計劃任務路徑,查看計劃任務是否存在可疑指令碼執行,例如/etc/upat.sh

    /var/spool/cron/
    /etc/cron.d/
    /var/spool/cron/crontabs
    /etc/crontab
  2. 排查被修改過的命令(pspstreetop等原程式會被加上尾碼.original進行重新命名)。

    ls -al /usr/bin | grep original
  3. 排查SSH公開金鑰,刪除未知公開金鑰。

    cat ~/.ssh/authorized_keys
    cat /root/.ssh/authorized_keys

樣本:

# 恢複被修改的命令
crondir='/var/spool/cron/'"$USER"
mv /bin/ps.original /bin/ps
mv /bin/top.original /bin/top
mv /bin/pstree.original /bin/pstree

# 恢複計劃任務檔案編輯許可權
chattr -R -ia /var/spool/cron
chattr -ia /etc/crontab
chattr -R -ia /var/spool/cron/crontabs
chattr -R -ia /etc/cron.d

# 刪除可疑計劃任務、載荷
sed -i '/upat.sh/d' /etc/crontab
rm -rf /etc/cron.d/httpd2
rm -rf /etc/upat.sh
rm -rf /tmp/upat.sh
rm -rf /etc/httpd2
rm -rf /tmp/httpd2

# 刪除可疑公開金鑰
sed -i '/cKtXBjj******hVI0K7b/d' ~/.ssh/authorized_keys
sed -i '/cKtXBjj******hVI0K7b/d' /root/.ssh/authorized_keys

Outlaw家族挖礦

  1. 排查所有cron計劃任務,查看是否存在.configrc5/字串。

    • 計劃任務路徑:

      /var/spool/cron/root
      /var/spool/cron/
      /etc/cron.d/
      /var/spool/cron/crontabs
      /etc/crontab
    • 執行以下命令排查。

      grep -r ".configrc5/" /var/spool/cron/*
      grep -r ".configrc5/" /etc/cron*
  2. 如果存在,執行以下命令,刪除相關檔案。

    rm -rf /tmp/.X2xi-unix/.rsync
    rm -rf ~/.configrc5

kinsing家族挖礦

  1. 執行以下命令排查cron計劃任務,查看是否存在類似gi.sh | bash > /dev/null的內容,如存在請刪除該行。

    grep -r "gi.sh | bash > /dev/null" /etc/cron*
    grep -r "gi.sh | bash > /dev/null" /var/spool/cron/*
  2. 執行以下命令排查是否存在/lib/systemd/system/bot.service服務。

    cat /lib/systemd/system/bot.service 
  3. 如果存在以上服務,執行以下命令排查/etc/ld.so.preload,查看是否存在libsystem.so檔案。

    cat /etc/ld.so.preload
  4. 排查到libsystem.so檔案路徑後,刪除libsystem.so檔案。

Windows系統

  1. 在PowerShell中執行以下命令,通過CPU佔用情況排查可疑的挖礦進程。

     ps | sort -des cpu
     While(1) {ps | sort -des cpu | select -f 15 | ft -a; sleep 1; cls}
  2. 執行以下命令,查看挖礦進程的磁碟檔案、進程啟動命令的參數。

    wmic process where processid=xxx get processid,executablepath,commandline,name     //xxx表示進程pid
  3. 結束挖礦進程,清除挖礦檔案。

  4. 執行以下命令,檢查主機串連的可疑網路連接埠。

    netstat -ano | findstr xxx            // xxx表示可疑的網路連接埠
  5. 執行以下命令,檢查伺服器中hosts檔案是否存在挖礦程式的礦池地址。

    type  C:\Windows\System32\drivers\etc\hosts
  6. 執行以下命令,排查是否存在挖礦程式設定的計劃任務。

    schtasks /query

其他方案

如果破壞入侵較深,關聯到系統底層組件,很難手動排查和清除。強烈建議您在備份重要資料後,重設伺服器的系統,以確保完全清理挖礦程式。具體操作步驟如下:

  1. 建立快照備份伺服器上的重要資料。具體操作,請參見建立一個雲端硬碟快照

  2. 初始化伺服器的作業系統。具體操作,請參見重新初始化系統硬碟

  3. 使用快照產生雲端硬碟。具體操作,請參見使用快照建立雲端硬碟

  4. 掛載雲端硬碟到重裝系統後的伺服器上。具體操作,請參見掛載資料盤

方案三:購買應急響應服務

阿里雲提供安全應急響應服務,由專業的安全技術人員來協助您解決被病毒感染等問題。應急響應提供的服務內容如下:

  • 幫您全面清理系統中存在的木馬、病毒、異常帳號、異常檔案、WebShell、暗鏈等問題。

  • 分析駭客入侵手法,尋找入侵原因。

  • 指導使用者進行安全強化。

更多資訊,請參見應急響應服務

加固建議

開啟惡意主機行為防禦

針對無法及時清理伺服器上殘留的挖礦程式或清理不乾淨導致複發的情況,Security Center提供的惡意主機行為防禦功能可對挖礦程式進行精準攔截,從而在事前抑制挖礦事件的發生。更多資訊,請參見主動防禦

開啟惡意主機行為防禦的操作入口如下所示:

image

下圖是被Security Center自動攔截的挖礦程式警示詳情頁:

image

提升主機安全性

  • 重裝系統:伺服器被挖礦後,由於系統可能存在遺留的安全威脅,往往系統檔案會被更改和替換,此時系統已經變得不可信,最好的方法就是重新安裝系統;

  • 減少攻擊暴露面:使用ECS安全性群組、SLB白名單、Cloud Firewall等服務來限制非必要的服務連接埠暴露在外網,僅對必要的服務連接埠開放存取權限,並且只允許信任的IP地址進行訪問;

  • 主機系統安全強化:對資料庫系統或檔案系統(MySQL、PolarDB、MaxCompute、Redis、NAS、OSS)、服務管理後台(寶塔面板BT、Nacos服務等)、作業系統使用者密碼(SSH、RDP等)配置複雜密碼,限制錯誤密碼重試次數,防止密碼被爆破入侵;

  • 常見漏洞修複:關注安全性漏洞情報,及時修複應用漏洞、應急漏洞和作業系統漏洞,部分原因是系統使用的應用程式軟體版本較老,存在較多的漏洞沒有修複,導致被入侵;

  • 業務安全強化:對業務代碼上線前,進行代碼安全性測試或接入Web Application Firewall,來防禦SQL注入、XSS跨站指令碼、常見Web伺服器外掛程式漏洞、木馬上傳、非授權核心資源訪問等OWASP常見攻擊,防止業務系統漏洞被利用導致被入侵。

憑據的安全使用方式情節

憑據一旦發生泄露,會給雲上資源和使用者業務帶來很大的安全隱患。建議您安全地使用憑據。更多資訊,請參見憑據的安全使用方式情節

相關文檔