Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/aws-samples/drs-malware-scan
脆弱性スキャナーマルウェア分析クラウドセキュリティ脅威インテリジェンスインシデントレスポンス
GitHubaws-samples/drs-malware-scan

drs-malware-scan

AWS を使用してオンプレミスサーバー上のファイルベースのマルウェアスキャンを実行する

リポジトリを見る
142252年前未レビュー
ウェブサイト

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

AWSサービスを使用したオンプレミスサーバーのマルウェアスキャン分析の実行

オンプレミスでのマルウェア検出の課題

セキュリティチームが予算やリソースの制約により、すべてのオンプレミスサーバーを継続的に監視することは困難な場合があります。シグネチャベースのアンチウイルスだけでは不十分であり、現代のマルウェアはさまざまな難読化手法を使用します。サーバー管理者は、過去のすべてのサーバーにわたるセキュリティイベントを可視化できない可能性があります。インシデント発生時に、侵害されたシステムと復元に安全なバックアップを特定することは、一元化された監視とアラートがなければ困難です。サーバー管理者が高度な脅威検出のために追加のセキュリティツールをセットアップおよび維持することは面倒です。感染の平均検出時間と修復時間を短縮することは重要ですが、適切な自動化ソリューションがなければ達成するのは困難です。

包括的な脅威インテリジェンスがなければ、インシデント発生時にどのバックアップイメージから復元しても安全かを判断することも別の難しい問題です。バックアップが利用可能であっても、システムがいつ侵害されたかを正確に知らなければ、バックアップから盲目的に復元するのはリスクがあります。これにより、マルウェアを復元し、インシデント対応中にさらに貴重なデータやシステムを失う可能性が高まります。侵入のタイムラインを特定し、復元に安全なバックアップを推奨する自動化ソリューションが必要です。

AWSサービスを使用してこれらの課題に対処する方法

このソリューションは、AWS Elastic Disaster Recovery (AWS DRS)、Amazon GuardDuty、AWS Security Hubを活用して、オンプレミスサーバーのマルウェア検出の課題に対処します。

これらのサービスの組み合わせにより、パフォーマンスに影響を与えることなく、オンプレミスサーバーを継続的に監視するための費用対効果の高い方法を提供します。また、一元化された脅威分析を通じて侵害のタイムラインを特定し、復元のための安全な復旧時点のバックアップを判断するのに役立ちます。

  • AWS Elastic Disaster Recovery (AWS DRS) は、手頃な価格のストレージ、最小限のコンピューティング、ポイントインタイムリカバリを使用して、オンプレミスおよびクラウドベースのアプリケーションの高速かつ信頼性の高い復旧により、ダウンタイムとデータ損失を最小限に抑えます。

  • Amazon GuardDuty は、AWS アカウントとワークロードを継続的に監視し、悪意のあるアクティビティを検出し、可視性と修復のための詳細なセキュリティ検出結果を提供する脅威検出サービスです。

  • AWS Security Hub は、セキュリティのベストプラクティスチェックを実行し、アラートを集約し、自動修復を有効にするクラウドセキュリティ体制管理 (CSPM) サービスです。

アーキテクチャ

サンプル

ソリューションの説明

マルウェアスキャンソリューションは、オンプレミスサーバーがすでに AWS DRS でレプリケートされており、Amazon GuardDuty と AWS Security Hub が有効になっていることを前提としています。このリポジトリの cdk スタックは、アーキテクチャ図で DRS Malware Scan とラベル付けされたボックスのみをデプロイします。

  1. AWS DRS は、オンプレミス環境 (または他のクラウドプロバイダー) から AWS へのソースサーバーのレプリケートを行っています。AWS DRS のセットアップの詳細については、クイックスタートガイド に従ってください。
  2. Amazon GuardDuty はすでに有効になっています。
  3. AWS Security Hub はすでに有効になっています。
  4. マルウェアスキャンソリューションは、Amazon EventBridge のスケジュールルール (プレフィックス DrsMalwareScanStack-ScheduleScanRule) によってトリガーされます。必要に応じてスキャン頻度を調整できます (例: 1日1回、週1回など)。
  5. Amazon EventBridge のスケジュールルールは、Submit Orders Lambda 関数 (プレフィックス DrsMalwareScanStack-SubmitOrders) をトリガーし、ソースサーバー DynamoDB テーブルからスキャンするソースサーバーを収集します。
  6. 注文は、Scan Orders という名前の SQS FIFO キュー (プレフィックス DrsMalwareScanStack-ScanOrdersfifo) に配置されます。このキューは、同じ DRS インスタンスにマッピングされたスキャンリクエストをシリアル化し、競合状態を防ぐために使用されます。
  7. Process Order Lambda はキューからマルウェアスキャン注文を取得し、それをエンリッチして、今後のマルウェアスキャン操作を準備します。たとえば、注文で提供された DRS ソースサーバーに関連付けられたレプリケーション DRS インスタンスの ID を挿入します。Process Order の出力は、GuardDuty マルウェアスキャンを呼び出すために必要なすべての情報を含むマルウェアスキャンコマンドです。
  8. マルウェアスキャン操作は、DRSVolumeAnnotationsDDBTable を使用してボリュームレベルで追跡され、レポート機能を提供します。
  9. マルウェアスキャンコマンドは、回復力を高めるために、Scan Commands SQS FIFO キュー (プレフィックス DrsMalwareScanStack-ScanCommandsfifo) に挿入されます。
  10. Process Commands 関数は、キューに入れられたスキャンコマンドを API スロットリングを避けるために最大 1 秒あたり 1 コマンドのレートで送信します。これは、Amazon GuardDuty が提供する オンデマンドマルウェアスキャン機能 をトリガーします。
  11. オンデマンド Amazon GuardDuty マルウェアジョブの実行は、Amazon GuardDuty サービスから監視できます。
  12. マルウェアスキャンジョブの結果は、Amazon CloudWatch Logs にルーティングされます。
  13. Subscription Filter Lambda 関数は、スキャンの結果を受け取り、DynamoDB を使用して結果を追跡します (ステップ #14)。
  14. DRS Instance Annotations DynamoDB テーブルは、インスタンスレベルでマルウェアスキャンジョブのステータスを追跡します。
  15. ScanReportStack という名前の CDK スタックは、Scan Report Lambda 関数 (プレフィックス ScanReportStack-ScanReport) をデプロイし、プレフィックス scanreportstack-scanreportbucket の Amazon S3 バケット にデータを入力します。
  16. AWS Security Hub は、Amazon GuardDuty からの検出結果を集約および関連付けます。
  17. Security Hub の検出結果イベントは、EventBridge ルール (プレフィックス DrsMalwareScanStack-SecurityHubAnnotationsRule) によってキャッチされます。
  18. Security Hub Annotations Lambda 関数 (プレフィックス DrsMalwareScanStack-SecurityHubAnnotation) は、影響を受けるソースサーバーに関するコンテキスト情報を含む追加のノート (注釈) を検出結果に生成します。この追加情報は、Security Hub 検出結果の Notes セクションで確認できます。
  19. その後のアクティビティは、採用されているインシデント対応プロセスによって異なります。たとえば、感染の日付に基づいて、AWS DRS を使用して、マルウェア感染の日付より前のスナップショットを使用したポイントインタイムリカバリを実行できます。
  20. マルチアカウントシナリオでは、このソリューションは AWS DRS ソリューションをホストする AWS アカウントに直接デプロイできます。Amazon GuardDuty の検出結果は、一元化されたセキュリティアカウントに自動的に送信されます。

使用方法

前提条件

  • AWS アカウント。

  • Amazon Elastic Disaster Recovery (DRS) が設定されており、少なくとも 1 つのソースサーバーが同期中であること。設定されていない場合は、このドキュメントを確認してください。レプリケーション設定では、AWS Key Management Service (AWS KMS) のカスタマーマネージドキー (CMK) を使用した EBS 暗号化を考慮する必要があります。Amazon GuardDuty Malware Protection は、EBS のデフォルトの AWS 管理キーをサポートしていません。

  • このソリューションのコンポーネントをデプロイするための IAM 権限。

  • Amazon GuardDuty が有効であること。有効でない場合は、このドキュメントを確認してください。

  • Amazon Security Hub が有効であること。有効でない場合は、このドキュメントを確認してください。

    警告
    現在、Amazon GuardDuty Malware スキャンは、EBS 管理キーで暗号化された EBS ボリュームをサポートしていません。このソリューションを使用して、DRS でレプリケートされたオンプレミス (または他クラウド) サーバーをスキャンする場合は、KMS で独自の暗号化キーを使用して DRS レプリケーションを設定する必要があります。現在、レプリケートサーバーで EBS 管理キーを使用している場合は、DRS コンソールで暗号化設定を独自の KMS キーを使用するように変更できます。

デプロイ

  1. Cloud9 環境を作成し、Ubuntu イメージ (パフォーマンス向上のため少なくとも t3.small) を AWS アカウントに作成します。Cloud9 環境を開き、このリポジトリのコードをクローンします。注: Amazon Linux 2 には node v16 が含まれていますが、2023-09-11 以降サポートされていません。

    root@kitploit:~
    git clone https://github.com/aws-samples/drs-malware-scan
    
    root@kitploit:~
    cd drs-malware-scan
    
    root@kitploit:~
    sh check_loggroup.sh
    
  2. CDK スタックをデプロイするには、Cloud9 ターミナルで次のコマンドを実行し、デプロイを確認します。

    root@kitploit:~
    npm install
    
    root@kitploit:~
    cdk bootstrap
    
    root@kitploit:~
    cdk deploy --all
    

    注
    このソリューションは 2 つのスタックで構成されています:

    • DrsMalwareScanStack: マルウェアスキャン機能に必要なすべてのリソースをデプロイします。このスタックは必須です。このスタックのみをデプロイする場合は、cdk deploy DrsMalwareScanStack を実行できます。
    • ScanReportStack: レポート機能に必要なリソース (Amazon Lambda と Amazon S3) をデプロイします。このスタックはオプションです。このスタックのみをデプロイする場合は、cdk deploy ScanReportStack を実行できます。

    両方のスタックをデプロイする場合は、cdk deploy --all を実行します。

設定

  1. DRS ソースサーバーが継続的にレプリケートされ、正常なレプリケーション状態であることを確認します。これは、GuardDuty API の制限によるものです。本稿執筆時点では、DRS スナップショットをスキャンするパブリック AWS API はありません。DRS ソースサーバーのデータに対してマルウェアスキャンを実行する唯一の方法は、AWS DRS が管理するレプリケーションサーバー (Amazon EC2 インスタンス) に対してスキャンを実行することです。レプリケーションが正常な状態で実行されていない場合、DRS マルウェアスキャンが正常に完了しない可能性があります。ReadyforRecovery=Ready を確認する必要があります。

  2. スキャンするソースサーバーを特定します。AWS DRS でレプリケートされているすべてのサーバーから、スキャンする候補サーバーのリストを決定します。AWS DRS コンソールから、ソリューションでスキャンするソースサーバー名をコピーし、テキストエディタに貼り付けます。これは次のステップで使用します。

        サンプル

  1. DynamoDB テーブルを更新します。スキャンするサーバーのリストは、CDK スタックによって作成された DynamoDB テーブル (プレフィックス DrsMalwareScanStack-SourceServersDDBTable) に保存されます。AWS DRS によってレプリケートされている各ソースサーバーの DynamoDB アイテムを作成する必要があります。これを行うには、Amazon DynamoDB サービスに移動し、次の手順に従います:

        サンプル

  1. マルウェアスキャンジョブをスケジュールします。Amazon EventBridge サービスに移動し、スタックによって作成された既存のルールを変更します。プレフィックス DrsMalwareScanStack-ScheduleScanRule のルールを編集し、マルウェアスキャン分析のスキャン頻度を設定します。また、このルールはデフォルトで 無効 になっているため、有効 にしてください。

        サンプル

  1. Amazon GuardDuty がマルウェアスキャン操作をトリガーしたことを確認します。ソリューションが期待どおりに動作していることを確認するには、Amazon GuardDuty -> Malware scans コンソールで確認できます。スケジュール時刻から数秒後、ScanStatus = Running のジョブが表示されるはずです。表示されない場合は、以下のトラブルシューティングセクションを確認してください。

        サンプル

  1. オンプレミスサーバー上の潜在的なマルウェア検出結果について AWS SecurityHub を確認します。Amazon GuardDuty と Security Hub の統合により、GuardDuty から Security Hub に検出結果を送信できます。
    • Security Hub は検出結果のみを表示するため、ScanResult=Clean のマルウェアスキャンジョブは Security Hub コンソールに表示されません (ScanResult=Infected のもののみ表示されます)。
    • AWS Security Hub コンソール内で、[検出結果] に移動し、ProductName=GuardDuty でフィルターを適用します (下のアニメーションを参照)。
    • このソリューションは、検出結果の Notes セクションに注釈を追加し、感染しているオンプレミスサーバーの名前を強調表示します。
    • Security Hub は Amazon EventBridge と統合されているため、SOC への電子メール送信、Slack チャネルへのインシデント報告などの対応および修復アクティビティを簡単に自動化できます。詳細については、このリンクを確認してください。

        サンプル

  1. オプション: S3 上のマルウェアスキャンレポートファイルを確認します。ScanReportStack スタックをデプロイした場合、必要に応じてレポートを実行するようにスケジュールできます。レポートは、DRSVolumeAnnotationsDDBTable DynamoDB テーブルの内容を抽出し、スタックによって作成された Amazon S3 バケット (プレフィックス scanreportstack-scanreportbucket) に書き込みます。このレポートは、ルールがトリガーされるたびに上書き (累積) されます。

    • Amazon EventBridge ルールを有効にし、レポートを実行するスケジュールを設定します: プレフィックス ScanReportStack-ScanReportRule のルールを編集し、マルウェアスキャン分析のスキャン頻度と分析する DRS ソースサーバーのリストを設定します。また、このルールはデフォルトで無効になっているため、有効にしてください。

           サンプル

    • レポートを確認するには、プレフィックス scanreportstack-scanreportbucket の Amazon S3 バケット上の csv ファイルをクエリできます。

           サンプル

  2. オプション: マルチアカウント設定の場合。マルチアカウント戦略の一環として、すべてのセキュリティ検出結果を一元化するための指定されたセキュリティアカウントがある場合、このソリューションも機能します。セキュリティチームはセキュリティアカウントに対して同じ分析を実行できます。リンクされたアカウントで報告された Security Hub と GuardDuty の検出結果は、自動的に一元化されたセキュリティアカウントにコピーされます。

トラブルシューティング

すべての Lambda 関数はログを Amazon CloudWatch にルーティングします。各関数の実行を確認するには、各関数の適切な CloudWatch ロググループを調べ、/aws/lambda/DrsMalwareScanStack-* パターンを探します。

マルウェアスキャン操作の所要時間は、スキャンするサーバー/ボリュームの数 (およびそのサイズ) によって異なります。Amazon GuardDuty がマルウェアを検出すると、SecurityHub の検出結果を生成します。ソリューションはこのイベントをインターセプトし、$StackName-SecurityHubAnnotations Lambda を実行して、マルウェアを含む DRS ソースサーバーの名前を含むメモで SecurityHub の検出結果を拡張します。

SQS FIFO キューは、AWS SQS コンソールの Messages available および Message in flight メトリクスを使用して監視できます。

DRS Volume Annotations DynamoDB テーブルは、各マルウェアスキャン操作のステータスを追跡します。

Amazon GuardDuty には、スキャン操作をスキップする理由が文書化されています。詳細については、マルウェアスキャン中にリソースをスキップする理由 を確認してください。

Amazon GuardDuty マルウェアスキャン操作のログを分析するには、/aws/guardduty/malware-scan-events Amazon CloudWatch ロググループを確認できます。このロググループのデフォルトのログ保持期間は 90 日間で、その後ログイベントは自動的に削除されます。

クリーンアップ

  1. ターミナルで次のコマンドを実行します:

    root@kitploit:~
    cdk destroy --all
    
  2. (オプション) Lambda 関数に関連付けられた CloudWatch ロググループを削除します。

AWS コスト見積もり分析

この分析では、例として架空のシナリオを想定しています。以下のコスト見積もりは、米国東部 (バージニア北部) リージョンのサービスに基づいています。

推定シナリオ:

  • レプリケーションするソースサーバー 2 台 (DR) (合計ストレージ: 100GB - 4 ディスク)
  • 月間マルウェアスキャン量 3 TB
  • EBS スナップショット保持期間 30 日
  • 毎日マルウェアスキャン
月間コスト12 か月の総コスト
171.22 USD2,054.74 USD

サービス別内訳:

サービス名説明月間コスト (USD)
AWS Elastic Disaster Recoveryソースサーバー 2 台 / レプリケーションサーバー 1 台 / ディスク 4 台 / 100GB / EBS スナップショット保持期間 30 日71.41
Amazon GuardDuty月間マルウェアスキャン量 3 TB94.56
Amazon DynamoDB100MB / 読み取り 1 回/秒 / 書き込み 1 回/秒3.65
AWS Security Hubアカウント 1 件 / セキュリティチェック 100 件 / 取り込まれた検出結果 1000 件0.10
AWS EventBridgeカスタムイベント 100 万件1.00
Amazon Cloudwatch月間取り込み量 1GB0.50
AWS LambdaARM Lambda 関数 5 つ - 128MB / 10 秒0.00
Amazon SQSSQS FIFO 2 つ0.00
合計171.22

注 ここに示されている数値は、上記の前提に基づく見積もりであり、AWS 料金計算ツールから導き出されています。詳細については、参考としてこの料金計算ツールを確認してください。参照した計算ツールでサービスの設定を調整して、独自の見積もりを作成できます。 この見積もりには、該当する可能性のある税金や追加料金は含まれていません。実際の料金は、使用状況やこの分析でカバーされていない追加のサービスによって異なる場合があることに注意することが重要です。 重要な環境の場合は、Business Support プランを含めることをお勧めします (見積もりには含まれていません)。

セキュリティ

詳細については、CONTRIBUTING を参照してください。

作成者

  • Rodrigo Monge
  • Thierry Francois
  • Diego Pérez Holguín
  • Leandro Santi

ライセンス

このサンプルコードは MIT-0 ライセンスの下でライセンスされています。LICENSE ファイルを参照してください。

ツールをダウンロード