# インシデントレスポンスのプレイブック:EC2 Linux/Unix の身代金レスポンス このドキュメントは、情報提供のみを目的として提供されています。 本書は、このドキュメントの発行日時点におけるAmazon ウェブサービス (AWS) の現在の製品提供および慣行を表しており、これらは予告なしに変更される場合があります。 お客様は、本書に記載されている情報、および AWS 製品またはサービスの使用について、独自の評価を行う責任を負うものとします。各製品またはサービスは、明示または黙示を問わず、いかなる種類の保証もなく「現状のまま」提供されます。 このドキュメントは、AWS、その関連会社、サプライヤー、またはライセンサーからの保証、表明、契約上の約束、条件、または保証を作成するものではありません。 お客様に対する AWS の責任と責任は、AWS 契約によって管理され、このドキュメントは AWS とお客様との間のいかなる契約の一部でもなく、変更もありません。 © 2021 Amazon ウェブサービス, Inc. またはその関連会社。 すべての権利予約。 この作品はクリエイティブ・コモンズ表示 4.0 国際ライセンスの下に提供されています。 この AWS コンテンツは、http://aws.amazon.com/agreement で提供される AWS カスタマーアグリーメントの条件、またはお客様とアマゾンウェブサービス株式会社、Amazon ウェブサービス EMEA SARL、またはその両方との間のその他の書面による契約に従って提供されます。 ## 連絡ポイント 著者:`著者名` 承認者:`承認者名` 最終承認日: ## エグゼクティブサマリー この Playbook では、EC2 インスタンスに対する身代金攻撃に対する応答のプロセスの概要を説明します。 詳細については、[AWS セキュリティインシデント対応ガイド] (https://docs.aws.amazon.com/whitepapers/latest/aws-security-incident-response-guide/welcome.html) を参照してください。 ### 目標 Playbook の実行全体を通して、インシデント対応機能の強化についてメモを取って、_***望ましい結果***_ に焦点を当てます。 #### 決定する: * **脆弱性が悪用された** * **エクスプロイトとツールが観察された** * **俳優の意図** * **俳優の帰属** * **環境とビジネスに与えたダメージ** #### リカバリ: * **オリジナルで強化した構成に戻す** #### CAF セキュリティパースペクティブの強化コンポーネント: [AWS Cloud Adoption Framework セキュリティの視点] (https://d0.awsstatic.com/whitepapers/AWS_CAF_Security_Perspective.pdf) * **指令** * **探偵** * **レスポンシブ** * **予防** ! [画像] (/images/aws_caf.png) * * * ### レスポンスステップ 1. [**準備**] AWS Config を使用して設定のコンプライアンスを表示する 2. [**準備**] エスカレーション手順の特定、文書化、およびテストを行う 3. [**検出と分析**] CloudWatch メトリクスを使用して、データが漏洩した可能性があるかどうかを判断する 4. [**検出と分析**] vpcFlowLogs を使用して外部 IP アドレスからの不適切なデータベースアクセスを特定する 5. [**封じ込め**] 影響を受けるリソースをすぐに隔離する 6. [**ERADICATION**] ネットワークから侵害されたシステムをすべて削除します。 7. [**ERADICATION**] ネットワーク IOC に基づいて NACL を強制し、さらなるトラフィックを防止する 8. [**撲滅**] その他の関心項目 9. [**リカバリ**] 必要に応じてリカバリ手順を実行する ***対応手順は、[NIST Special Publication 800-61r2 コンピュータセキュリティインシデント処理ガイド] (https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r2.pdf) のインシデント対応ライフサイクルに従います。 ! [画像] (/images/nist_life_cycle.png) *** ### インシデントの分類と処理 * **戦術、テクニック、手順**: 身代金とデータ破壊 * **カテゴリー**: 身代金攻撃 * **リソース**: EC2 * **指標**: サイバー脅威インテリジェンス、サードパーティ通知、Cloudwatch メトリクス * **ログソース**: CloudTrail, CloudWatch, AWS Config * **チーム**: セキュリティオペレーションセンター (SOC)、フォレンジック調査官、クラウドエンジニアリング ## インシデント処理プロセス ### インシデント対応プロセスには、次の段階があります。 * 準備 * 検出と分析 * 封じ込めと根絶 * 回復 * インシデント後の活動 ## 準備 * アカウントのセキュリティ体制を評価し、セキュリティギャップを特定して修正する * AWS はオープンソースのSelf-Service Security Assessment(https://aws.amazon.com/blogs/publicsector/assess-your-security-posture-identify-remediate-security-gaps-ransomware/)ツールを開発しました。このツールは、お客様の AWS のセキュリティ状況に関する貴重な洞察を得るためのポイントインタイム評価を提供します。アカウント * ドメインコントローラー、Microsoft Windows EC2 インスタンス、Microsoft Windows サーバーとデータベース、および外部 ID プロバイダーとの統合など、すべてのリソースの完全な資産インベントリを維持する * [Amazon Inspector] (https://aws.amazon.com/blogs/security/how-to-visualize-multi-account-amazon-inspector-findings-with-amazon-elasticsearch-service/) などのユーティリティを使用して、ホストの定期的な脆弱性分析を実行する * EC2 インスタンスのバックアップを実行する * [AWS Backup] (https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) または [AWS CloudEndure] (https://aws.amazon.com/cloudendure-disaster-recovery/) の使用を検討する * [ファイル履歴でファイルをバックアップする] (https://support.microsoft.com/en-us/windows/file-history-in-windows-5de0e203-ebae-05ab-db85-d5aa0a199255) * バックアップを確認し、感染が蔓延していないことを確認します * 重要なファイルを定期的にバックアップする。 3-2-1 ルールを使用します。 データのバックアップを 2 つの異なるストレージタイプに保持し、少なくとも 1 つのバックアップをオフサイトに保存します。 * オペレーティングシステムとアプリに最新のアップデートを適用する * ソーシャルエンジニアリング攻撃やスピアフィッシング攻撃を特定できるよう、従業員を教育する * 既知のランサムウェアのファイルタイプをブロックする * [Systems Manager と Amazon Inspector] (https://aws.amazon.com/blogs/security/how-to-patch-inspect-and-protect-microsoft-windows-workloads-on-aws-part-1/) を使用して、EC2 インスタンスに一般的な脆弱性およびエクスポージャー (CVE) が含まれているかどうかを調べる * すべてのシステムでマルウェア検出とウイルス対策を有効にしている-商用、サブスクリプション有料のエンドポイント検出と応答(EDR)ソリューションが推奨されます。 * 例ガイドは、ウイルス対策エンジンとして ClamAV を使用した Linux マルウェア検出 (LMD) のインストールと使用方法 (https://www.tecmint.com/install-linux-malware-detect-lmd-in-rhel-centos-and-fedora/) を参照してください。 * インターネット向けアセットを強化し、最新のセキュリティアップデートを入手してください。 脅威と脆弱性の管理を使用して、脆弱性、構成ミス、および疑わしいアクティビティについて定期的にこれらの資産を監査します。 * 最低特権の原則を実践し、資格の衛生を維持する。 ドメイン全体の管理者レベルのサービスアカウントの使用は避けてください。 強力なランダム化されたジャストインタイムのローカル管理者パスワードを強制します。 * ブルートフォースの試みを監視する。 過度に失敗した認証の試行 (/var/log/auth.log または /var/log/secure) をチェックする /var/log/auth.log * イベントログのクリアを監視する * タンパープロテクション機能をオンにして、攻撃者がセキュリティサービスを停止するのを防ぐ * 特権の高いアカウントがログオンし、認証情報を公開している場所を特定する。 * [Wazuh] (https://documentation.wazuh.com/current/getting-started/components/index.html) などのエンドポイントセキュリティエージェントを使う * [Tripwire] (https://github.com/Tripwire/tripwire-open-source) などのファイル整合性モニタを使用して、重要なファイルの変更を検出する ### AWS Config を使用して設定のコンプライアンスを表示します。 1. AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/config/ で AWS Config コンソールを開きます。 1. AWS マネジメントコンソールメニューで、リージョンセレクターが AWS Config ルールをサポートするリージョンに設定されていることを確認します。 サポートされているリージョンのリストについては、Amazon ウェブサービス全般のリファレンスの「AWS Config リージョンとエンドポイント」を参照してください。 1. ナビゲーションペインで、[リソース] を選択します。 [リソースインベントリ] ページでは、リソースカテゴリ、リソースタイプ、およびコンプライアンスステータスでフィルタリングできます。 必要に応じて、[削除されたリソースを含める] を選択します。 テーブルには、リソースタイプのリソース識別子と、そのリソースのリソースコンプライアンスステータスが表示されます。 リソース識別子は、リソース ID またはリソース名です。 1. [リソース識別子] 列からリソースを選択します。 1. [リソースタイムライン] ボタンを選択します。 設定イベント、コンプライアンスイベント、または CloudTrail イベントでフィルタリングできます。 1. 具体的には、次のイベントに焦点を当てます。 * ebs-in-backup-plan * ebs-optimized-instance * ebs-snapshot-public-restorable-check * ec2-ebs-encryption-by-default * ec2-imdsv2-check * ec2-instance-detailed-monitoring-enabled * ec2-instance-managed-by-systems-manager * ec2-instance-multiple-eni-check * ec2-instance-no-public-ip * ec2-instance-profile-attached * ec2-managedinstance-applications-blacklisted っている * ec2-managedinstance-applications-required * ec2-managedinstance-association-compliance-status-check * ec2-managedinstance-inventory-blacklisted っている * ec2-managedinstance-patch-compliance-status-check * ec2-managedinstance-platform-check * ec2-security-group-attached-to-eni * ec2-stopped-instance * ec2-volume-inuse-check ## エスカレーション手順 -「EC2 フォレンジックをいつ実施すべきかについてビジネス上の決定が必要です` -「ログ/アラートを監視し、それらを受け取り、それぞれに対して行動しているのは誰ですか? ` -「アラートが検出されたときに通知されるのは誰ですか? ` -「広報と法律がプロセスに関与するのはいつですか? ` -「AWS サポートにヘルプを依頼するのはいつですか? ` ## 検出と分析 ### [CloudWatch Metrics 使う] (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html) データ漏洩の「スパイク」を探します。 攻撃者がデータ破壊を行い、身代金メモを残した可能性があります。このような場合、悪意のあるアクターと協力してデータ復旧の機会はありません。 1. CloudWatch コンソールを https://console.aws.amazon.com/cloudwatch/ で開く 1. ナビゲーションペインで、[メトリック]、[すべてのメトリック] の順に選択します。 1. [すべてのメトリクス] タブで、インスタンスをデプロイするリージョンを選択します。 1. [すべてのメトリクス] タブで、検索語句 `networkPacketsOut `を入力し、Enter キーを押します 1. 検索の結果の 1 つを選択して、メトリックスを表示します。 1. 1 つ以上のメトリックをグラフ化するには、各メトリックスの横にあるチェックボックスをオンにします。 すべてのメトリクスを選択するには、テーブルの見出し行のチェックボックスをオンにします。 1. (オプション) グラフのタイプを変更するには、[グラフオプション] を選択します。 その後、折れ線グラフ、積み上げ面グラフ、棒グラフ、円グラフ、または数値を選択できます。 1. (オプション)メトリックの期待値を示す異常検出バンドを追加するには、メトリックの横にある「アクション」の下の異常検出アイコンを選択します。 ### vpcFlowLogs を使用して外部 IP アドレスからの不適切なデータベースアクセスを特定する 1. [AWS Security Analytics Bootstrap] (https://github.com/awslabs/aws-security-analytics-bootstrap) を使用してログデータを分析する 1. 特定の IP への、または特定の IP からのすべてのレコードの src_ip、src_port、dst_ip、dst_port クワッドの各バイト数のサマリーを取得します。 ``` vpcflow から byte_count として送信元アドレス、宛先アドレス、送信元ポート、宛先ポート、合計 (数バイト) を選択します。 WHERE (送信元アドレス = '192.0.2.1' または宛先アドレス = '192.0.2.1') そして date_partition >= '2020/07/01' と date_partition <= '2020/07/31' そして account_partition = '111122223333' そして region_partition in ('us-east-1', 'us-east-2', 'us-west-2', 'us-west-2') 送信元アドレス、宛先アドレス、送信元ポート、宛先ポートによるグループ化 バイト数順 DESC ``` 1. その他のクエリ例は、[vpcflow_demo_queries.sql] (https://github.com/awslabs/aws-security-analytics-bootstrap/blob/main/AWSSecurityAnalyticsBootstrap/sql/dml/analytics/vpcflow/vpcflow_demo_queries.sql) で提供されています。 ## 封じ込め ### 影響を受けるリソースをすぐに隔離する **注**: リソースを分離するためのエスカレーションと承認を要求するプロセスがあることを確認し、分離が現在のオペレーションと収益源にどのような影響を与えるかについて、ビジネスへの影響分析を最初に実行するようにします。 1. インスタンスが Auto Scaling グループの一部であるか、ロードバランサーにアタッチされているかを判断する * Auto Scaling Group: グループからインスタンスをデタッチする * Elastic Load Balancer: ELB からインスタンスを登録解除し、ターゲットグループからインスタンスを削除します 1. すべての入出力トラフィックをブロックする*new* セキュリティグループを作成します。出力トラフィックのデフォルトの `allow all` ルールを削除してください 1. 影響を受けるインスタンスに*new* セキュリティグループをアタッチします。 ## 撲滅 ### ネットワークから侵害されたシステムをすべて削除します。 * 規制要件または社内ポリシーに従って、EC2 インスタンスのフォレンジックが必要かどうかを判断する * インスタンスのフォレンジックが必要な場合、またはデータを復元する必要がある場合は、[Playbook: EC2 フォレンジック] (. /docs/ec2_forensics.md) ### ネットワーク IOC に基づいて NACL を適用して、さらなるトラフィックを防止する 1. [Amazon VPC コンソール] (https://console.aws.amazon.com/vpc/) を開きます 1. ナビゲーションペインで、[Network ACLs] を選択します。 1. [Network ACL の作成] を選択します。 1. [ネットワーク ACL の作成(Create Network ACL)] ダイアログボックスで、必要に応じてネットワーク ACL の名前を指定し、VPC リストから VPC の ID を選択します。 次に、[はい、作成] を選択します。 1. 詳細ウィンドウで、追加するルールのタイプに応じて [受信ルール] タブまたは [アウトバウンドルール] タブを選択し、[編集] を選択します。 1. [ルール #] に、ルール番号 (100 など) を入力します。 ルール番号は、ネットワーク ACL でまだ使用されていない必要があります。 ルールを順番に処理し、最小の数字から順に処理します。 * 連番(101、102、103)を使用するよりも、ルール番号(100、200、300 など)の間にギャップを残すことをお勧めします。 これにより、既存のルールを再番号付けしなくても、新しいルールを簡単に追加できます。 1. 「タイプ」(Type) リストからルールを選択します。 たとえば、HTTP のルールを追加するには、[HTTP] を選択します。 すべての TCP トラフィックを許可するルールを追加するには、[All TCP] を選択します。 これらのオプションのいくつか (HTTP など) については、ポートを記入します。 一覧にないプロトコルを使用するには、[カスタムプロトコルルール] を選択します。 1. (オプション) カスタムプロトコルルールを作成する場合は、[プロトコル] リストからプロトコルの番号と名前を選択します。 詳細については、IANA プロトコル番号のリストを参照してください。 1. (オプション)選択したプロトコルにポート番号が必要な場合は、ポート番号またはポート範囲をハイフンで区切って入力します(たとえば、49152-65535)。 1. [送信元] または [宛先] フィールドに(これがインバウンドルールかアウトバウンドルールかに応じて)、ルールが適用される CIDR 範囲を入力します。 1. [許可/拒否] リストから、[許可] を選択して指定したトラフィックを許可するか、[拒否] を選択して指定したトラフィックを拒否します。 1. (オプション)別のルールを追加するには、[別のルールを追加] を選択し、必要に応じて前の手順を繰り返します。 1. 完了したら、[保存] を選択します。 1. ナビゲーションペインで、[Network ACLs] を選択し、ネットワーク ACL を選択します。 1. 詳細ペインの [サブネットの関連付け] タブで、[編集] を選択します。 ネットワーク ACL に関連付けるサブネットの [Associate] チェックボックスをオンにし、[Save] を選択します。 ### その他の関心のある項目 * リチャード・ホーン著 [No Strings on Me: Linux and Ransomware] (https://www.sans.org/reading-room/whitepapers/tools/strings-me-linux-ransomware-39870) の表1は、以下を含むために監視すべき複数の指標を特定しています。 * /tmp ディレクトリ内のプロセスの作成と実行の可能性 * 外部ネットワーク接続要求がある以前にエンドポイントで見られたことがない新しいプロセス * 同じディレクトリツリー内で複数回名前が変更されるファイル * 子プロセスの前に親プロセスが終了する大きなプロセストレス * 特権のエスカレーションや sudo アクセスの試み * 感染前または感染中に通信をエンコードしようとする文字列 cmd の使用 * エントロピーで生成されたファイル名、または連続するファイル名 * ブートオプションの変更 * エントロピーが見つかったDNS名または裸のIPで直接通信を試みた * ユーザーベース以外のホームディレクトリ内に.sh ファイルを作成する * chmod cmd を使用して、実行可能ファイルを過度に許可された権限に変更する * ディストリビューション Yum または Apt リポジトリの変更 * すばやく連続したディレクトリ列挙 * 短時間または持続時間の高メモリ使用量 * 通常の日常業務の外れ値やイベントにフォーカスを当てる * 外部および内部ネットワーク通信 * wget やcurl cmdsの使用 * 共有 Web、データベース、またはファイルストレージディレクトリツリーの列挙 *oddファイル拡張子で作成されたファイル * 1 つのディレクトリ内で複数の変更 * 複数のディレクトリにある同じファイルの複数のコピー * 暗号化ライブラリの呼び出しの可能性 * ワイルドカードを使用して、または確認なしでディレクトリからファイルを削除 * chmod をワイルドカードで使う (または chmod 777) ## リカバリ * 身代金を払わないことをお勧めします * 身代金を支払うことは、犯罪者が支払いを受けた後に取引を尊重するかどうかについてのギャンブルです * データのバックアップが存在しない場合は、コストメリット分析を行い、攻撃者への支払いに対するデータ/評判の侵害の価値を比較検討する必要があります。 * 身代金を支払うことを選択した場合、攻撃者が自分の会社または他のユーザーに対して操作を継続できるようにする * https://www.nomoreransom.org/ にアクセスして、データが感染したマルウェアバリアントに対して復号化が可能かどうかを特定する * [IAM ユーザーキーの削除またはローテーション] (https://console.aws.amazon.com/iam/home#users) と [Root ユーザーキー] (https://console.aws.amazon.com/iam/home#security_credential)。公開されている特定のキーを特定できない場合、アカウント内のすべてのキーをローテーションすることもできます。 * [許可されていない IAM ユーザーを削除する] (https://console.aws.amazon.com/iam/home#users。) * [不正なポリシーを削除する] (https://console.aws.amazon.com/iam/home#/policies) * [権限のない役割を削除する] (https://console.aws.amazon.com/iam/home#/roles) * [一時的な資格情報を取り消す] (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_disable-perms.html#denying-access-to-credentials-by-issue-time)。 一時的な認証情報は、IAM ユーザーを削除することで取り消すこともできます。 注:IAM ユーザーの削除は実稼働ワークロードに影響を与える可能性があるため、注意して行う必要があります。* CloudEndure ディザスタリカバリを使用して、ランサムウェア攻撃またはデータ破損の前に最新の復旧ポイントを選択し、AWS でワークロードを復元します。 * 代替データバックアップ戦略を使用する場合は、バックアップが感染していないことを検証し、ランサムウェアイベントの前にスケジュールされた最後のイベントから復元します。 * 信頼できる AMI から新しい EC2 インスタンスを作成する * CloudEndure ディザスタリカバリを使用して、ランサムウェア攻撃またはデータ破損の前に最新の復旧ポイントを選択し、AWS でワークロードを復元します。 * 代替データバックアップ戦略を使用する場合は、バックアップが感染していないことを検証し、ランサムウェアイベントの前にスケジュールされた最後のイベントから復元します。 ## 学んだ教訓 「これは、必ず「修正」を必要としないが、運用上およびビジネス上の要件と並行してこのプレイブックを実行する際に知っておくべき重要な、貴社固有のアイテムを追加する場所です。 ` ## アドレスバックログ項目 -インシデントレスポンダーとして EC2 フォレンジックを実施するには Runbook が必要です -インシデントレスポンダーとして、EC2 フォレンジックをいつ実施すべきかについてのビジネス上の決定が必要です -インシデントレスポンダーとして、使用の意図に関係なく、有効になっているすべてのリージョンでログを有効にする必要があります -インシデントレスポンダーとして、既存の EC2 インスタンスで暗号マイニングを検出できる必要があります ## 現在のバックログアイテム