blog of morioka12

morioka12のブログ (Security Blog)

オフェンシブ視点による Cloud Security 入門 ~AWS 編~

1. 始めに

こんにちは、morioka12 です。

本稿では、AWS 環境における攻撃者のオフェンシブな視点で Cloud Security の入門として紹介します。


免責事項

本稿の内容は、セキュリティに関する知見を広く共有する目的で執筆されており、悪用行為を推奨するものではありません。


想定読者


2. クラウドにおける脅威

クラウドの重大セキュリティ脅威 11の悪質な脅威

クラウドの重大セキュリティ脅威 11の悪質な脅威」とは、CSA (Cloud Security Alliance)が公開している資料で、クラウド環境における特に顕著な11の脅威、リスク、脆弱性についてまとめられています。

2022年のランキングは、以下のようになっています。

  1. 不十分な ID、資格情報およびアクセスとキーの管理
  2. 安全でないインターフェースや API
  3. 設定ミスと不適切な変更管理
  4. クラウドセキュリティのアーキテクチャと戦略の欠如
  5. 安全でないソフトウェア開発
  6. 安全でないサードパーティのリソース
  7. システムの脆弱性
  8. 偶発的なクラウドデータの漏洩
  9. サーバーレスやコンテナのワークロードの構成ミスや悪用
  10. 組織的な犯罪、ハッカーと APT グループ
  11. クラウドストレージのデータの漏洩

詳しくは、以下をご覧ください。

https://www.cloudsecurityalliance.jp/site/wp-content/uploads/2022/11/topthreat_morozumi_20221117.pdf


また、CSA は「サーバレスアプリケーションのための最も重大な 12 のリスク(2019年)」という資料も公開していて、以下がそのランキングになります。

  1. 関数イベント・データインジェクション
  2. 認証の不備
  3. セキュアでないサーバレス・デプロイの構成
  4. 関数への過剰な権限と役割の不備
  5. 不適切な機能のモニタリングとロギング
  6. セキュアでないサードパーティ依存
  7. セキュアでないアプリケーションの秘匿領域
  8. サービス拒否およびリソースの枯渇
  9. サーバーレス機能実行フローの操作
  10. 不適切な例外処理と詳細なエラーメッセージ
  11. 破棄された関数、クラウドリソースおよびイベントトリガー
  12. 交差実行データの永続性

詳しくは、以下をご覧ください。

https://www.cloudsecurityalliance.jp/site/wp-content/uploads/2021/01/The-12-Most-Critical-Risks-for-Serverless-Applications_J.pdf


クラウドサービス利用に関連するリスク Top 10

クラウドサービス利用に関連するリスク Top 10」とは、Assured の調べによる SaaS などのクラウドサービスの利用にあたって実際に発生したことのある事例トップ10についてまとめられています。

2023年のランキングは、以下のようになっていました。

  1. 社内限定公開のつもりが社外からもアクセス可能な設定になっていた(アクセス権限の誤設定)
  2. 自社で利用しているクラウドサービスがサイバー攻撃を受け、自社の機密情報も漏えいの可能性があった
  3. 機密情報が保存されたクラウドサービスが利用可能なスマートフォン等を紛失し、情報漏えいの可能性があった
  4. 退職済みの元従業員アカウント削除ができていなかった
  5. シャドー IT の存在が判明した
  6. クラウドサービスに機密情報が意図せず保存されていたことが判明した
  7. クラウドサービスを利用して自社で提供しているサービスが停止し、自社の顧客に影響が及んだ
  8. 自社で利用しているクラウドサービスが障害等によりサービスが停止し、業務遂行ができなくなった
  9. 自社で利用しているクラウドサービスの運営元を装った不審な連絡(メールや電話等)を受けた
  10. 多要素認証用のスマートフォン等を紛失してログインができなくなった

詳しくは、以下をご覧ください。

assured.jp


AWS セキュリティ構成ミス Top 10

構成ミスの割合が最も高い AWS サービスの Top 10」とは、トレンドマイクロが2021年に公開している AWS に関するセキュリティの構成ミスのランキングになります。

Rank Service Rate
1 AWS CloudFormation 66.20%
2 AWS CloudTrail 33.14%
3 Amazon EBS 30.84%
4 Amazon S3 30.73%
5 AWS Lambda 27.70%
6 AWS Config 18.37%
7 Amazon EC2 16.88%
8 Amazon SNS 16.57%
9 AWS IAM 11.31%
10 AWS Trusted Actvisor 0%


また、トレンドマイクロが2022年に公開している「"3大クラウド"での設定ミスランキング」のトップ3は以下にようになります。

Rank Service Rate
1 AWS CloudFormation 44%
2 Amazon S3 35%
3 Amazon EBS 29%

詳しくは、以下をご覧ください。

www.trendmicro.com

www.itmedia.co.jp


3. AWS 環境における攻撃者の観点

攻撃者は AWS 環境に対して、主に以下のような情報をターゲットとして得ることができるかを試みます。

  • AWS に関する認証情報(クレデンシャル)
    • IAM のアクセスキーやシークレットキーなど
  • AWS 環境内に保存されている機微な情報
    • 外部サービスの API Key や DB などの認証情報
    • 顧客や社員の個人情報
    • 企業に関する機微な内部情報
  • その他
    • ログファイルやバックアップファイル
    • アプリケーションに関する情報

これらの情報を得る際は、主に AWS 環境の「外部から」と「内部から」の2視点から情報を得れるかを考えます。


3.1 AWS 環境の外部からの観点

AWS 環境の外部からターゲットとなる情報が得れるかは、主に以下のような観点があります。

  • Web アプリケーションやエンドポイントに対して脆弱性攻撃による情報の取得
  • AWS サービスの設定不備による不正な操作や情報の取得
  • GitHub などの外部サービスに保存されたリソースから認証情報の取得
  • CI/CD パイプラインを悪用した攻撃による認証情報の取得や侵害
  • フィッシングやマルウェア感染によるエンジニアから認証情報の取得


3.2 AWS 環境の内部からの観点

AWS 環境に侵入できた後の内部からターゲットとなる情報が得れるかは、主に以下のような観点があります。

  • 許可された AWS サービスやリソースから情報の取得や不正な操作
  • 本番環境用のリソース以外のステージング環境用のリソースなどから情報の取得
  • IAM の権限昇格などを行うことによるさらなる侵害


これらのように、AWS 環境におけるオフェンシブ視点では、「侵入前の外部面」と「侵入後の内部面」の2点でセキュリティを考える必要があります。

また、保守側のディフェンス視点でも同様に外部と内部の2点でセキュリティ対策を行う必要もあります。


4. MITRE ATT&CK Framework for Cloud (IaaS)

MITRE ATT&CK (Adversarial Tactics, Techniques, and Common Knowledge)とは、サイバーセキュリティの専門家や研究者が、攻撃者の戦術、技術、および手順を理解、模倣、そして防御するための知識ベースおよびフレームワークです。

その中で、特にクラウドサービスに対する攻撃手法のテクニックも公開されていて、AWS が該当する IaaS の項目も存在します。

実際に、AWS 環境を狙った攻撃者は、次のような11段階で侵入(侵害)を行なっていきます。


4.1 初期アクセス (Initial Access)

初期アクセスの段階では、AWS 環境に侵入するための初期段階として外部から認証情報などを得ることを行います。

例えば、以下のような手法が該当します。

  • 脆弱な Web アプリケーションやエンドポイントに対して外部から脆弱性攻撃を行う
    • EC2 や ECS 上にある Web アプリケーションに対して SSRF 攻撃による認証情報の取得
    • エンドポイントから Lambda 関数に対して OS Command Injection などの脆弱性攻撃による認証情報の取得
  • AWS サービスやリソースの設定不備による情報の取得
    • 公開を意図していない S3 や EBS などからの機微な情報の取得
  • GitHub などの外部サービスからハードコードされた認証情報の取得
    • .git やログファイルなどにも認証情報が含まれていないか調査する
  • フィッシングやマルウェア感染による AWS アカウントの認証情報の取得

EC2 や Lambda で動くアプリケーションに対しての脆弱性攻撃や S3 に関する設定不備などは、以下をご覧ください。

scgajge12.hatenablog.com

blog.flatt.tech

blog.flatt.tech

また、AWS アカウントを狙ったフィッシングに関しては、以下をご覧ください。

scgajge12.hatenablog.com


4.2 実行 (Execution)

実行の段階では、「1. 初期アクセス」で取得した認証情報を元に、攻撃者が侵入した AWS 環境内から悪意のある操作を行います。

例えば、以下のような手法が該当します。

  • 取得した認証情報(IAM)の有効な権限を列挙して、許可された AWS サービスやリソースを操作する
    • 全てのリージョンから列挙する
  • 新しい攻撃者用の IAM ユーザーを作成する
  • EC2 インスタンスや Lambda 関数などを新しく作成する
    • 悪意あるコードを実行させたり、暗号通貨のマイニングを実行する
  • S3 バケットを作成したり、乗っ取ったりでマルウェアをアップロードする
  • 非公開の API にアクセスする

入手した IAM の有効な権限を列挙する場合は、enumerate-iam などを活用することで効率的に特定することが可能です。


4.3 永続化 (Persistence)

永続化の段階では、攻撃者が侵入した AWS 環境内からアクセス可能な状態を維持できるように行います。

例えば、以下のような手法が該当します。

  • 新しい攻撃者用の認証情報を作成する
    • SSH Key, API Key, IAM, アクセスキー
  • IAM の認証に関する設定を変更する
    • 取得した認証情報の IAM に権限の強いグループ(もしくは、ポリシーやロール)に追加する
    • MFA を無効化したり、独自の MFA を追加する
  • EC2 のセキュリティグループなどの設定を変更する
  • ECR や Lambda などに悪意あるバックドアをアップロードする
  • RDS のインスタンスやスナップショットを公開したり、DB 内に管理者ユーザーを作成する
  • EFS のリソースポリシーなどを変更して、アクセスポイントを作成する
  • CloudFormation のテンプレートが S3 バケットにアップロードされた時に悪意ある Lambda 関数をトリガーするように設定する


4.4 権限昇格 (Privilege Escalation)

権限昇格の段階では、攻撃者が取得した認証情報をもとに、さらに強いレベルの権限を取得するように行います。

例えば、以下のような手法が該当します。

  • 権限昇格した上でさらに強いロールやポリシーを追加してより強い権限に昇格する
  • Lambda 関数を作成してロールを渡して、それを呼び出すことで権限昇格する
  • CloudFormation にロールを渡して、テンプレートを作成することで権限昇格する
  • Data Pipeline にロールを渡して、パイプラインを作成・更新することで権限昇格する
  • Control Tower の設定を変更する

IAM の権限昇格についての詳細は、以下をご覧ください。

github.com


4.5 防御回避 (Defense Evasion)

防御回避の段階では、攻撃者が AWS 環境内での不正な操作を検知されないように行います。

例えば、以下のような手法が該当します。

  • CloudWatch や CloudTrail などの監視サービスの機能を停止や無効化する
  • GuardDuty に対して攻撃者の IP アドレスをホワイトリストに登録する
  • ファイアウォールなどのネットワーク設定を変更する
  • 新しい VPN エンドポイントを作成する
  • 攻撃者の記録が残るログファイルを削除する


4.6 認証情報アクセス (Credential Access)

認証情報アクセスの段階では、攻撃者が侵入した AWS 環境内から認証情報を管理するリソースから機微な情報の取得を行います。

例えば、以下のような手法が該当します。

  • AWS の Secrets Manager や DynamoDB などからパスワードや API Key 、その他の認証情報などを取得する
  • EC2 のインスタンス内部からメタデータサービスにアクセスして、認証情報を取得する
  • さらにアクセス可能なソースコードや Terraform などのファイルからハードコードされた認証情報を取得する


4.7 探索 (Discovery)

探索の段階では、攻撃者が侵入した AWS 環境内から権限昇格や入手したアカウントを元に、アクセス可能なサービスやリソース、ユーザーなどの列挙を行います。

例えば、以下のような手法が該当します。

  • 稼働している EC2 などのインスタンスを列挙する
  • S3 バケットや EBS などのストレージを列挙する
  • IAM のユーザーやロールなどを列挙する
  • CloudTrail のイベント履歴や CloudWatch のログを列挙する
  • AWS WAF や GuardDuty などのセキュリティサービスを列挙する


4.8 水平展開 (Lateral Movement)

水平展開の段階では、攻撃者が侵入した AWS 環境内からアクセス可能なクラウド内の VM にアクセスを行います。

例えば、以下のような手法が該当します。

  • AWS EC2 Instance Connect や AWS System Manager などに対話型で接続して情報を取得する


4.9 収集 (Collection)

収集の段階では、攻撃者が侵入した AWS 環境内で発見できた情報を収集して、まとめ作業を行います。

例えば、以下のような手法が該当します。

  • S3 バケットや EBS などのストレージサービスから得れる機微な情報を収集する
  • RDS や DynamoDB などのデータベースサービスから得れる機微な情報を収集する
  • AWS Inspector のレポートから得れる脆弱性情報の収集する


4.10 持ち出し (Exfiltration)

持ち出しの段階では、攻撃者が入手できた機微な情報を外部に送って保存を行います。

主に以下のよう情報やファイルを外部に持ち出します。

  • AWS 環境内で入手した認証情報
  • ストレージ内の情報
  • データベース内の情報
  • ログファイル
  • バックアップファイル
  • アーカイブされたファイル

基本的に「9. 収集」で取得できた個人情報や企業の機微な情報をダウンロードしたりして、攻撃者の手元や外部のクラウド環境に保存するようにします。


4.11 影響 (Impact)

影響の段階では、最終的に攻撃者が侵入した AWS 環境内で企業に対する侵害を与えたり、さらなる悪用を行います。

例えば、以下のような手法が該当します。

  • AWS 環境内のデータやリソースなどを改ざん・削除する
  • 企業が提供するサービスを停止させる
  • AWS 環境内のリソースを悪用して、他の脆弱性攻撃やフィッシング、暗号通貨マイニングなどを行う
  • ランサムウェアのように取得した機密データをもとに、企業に対して金銭を要求(脅迫)する


MITRE ATT&CK Framework for Cloud (IaaS)」の詳細は、以下をご覧ください。

attack.mitre.org


5. ツール

AWS Environment (Offensive)


Pacu

PacuRhino Security Labs が提供する AWS 環境への侵入・侵害にとてもおすすめなツールです。

様々な情報収集や攻撃用のモジュールが用意されていて、最も人気なモジュールは以下のようです。

  • confirm_permissions
    • 現在のアカウントで確認された権限のリストを列挙する
  • privesc_scan
    • 20 種類以上の異なる権限昇格の方法を悪用して、さらなるアクセス権を取得する
  • cloudtrail_csv_injection
    • CloudTrail の CSV エクスポートに悪意のある数式を注入する
  • disrupt_monitoring
    • GuardDuty・CloudTrail・Config・CloudWatch・VPC をターゲットにして、様々な監視およびログ機能を中断する
  • backdoor_users_[keys/passwords]
    • 他の IAM ユーザーのアカウントに認証情報を追加して、バックドアを仕掛ける
  • sysman_ec2_rce
    • SSM を悪用して、EC2 インスタンス上で root (SYSTEM) レベルの不正なコード実行(RCE)を試みる
  • backdoor_ec2_sec_groups
    • EC2 のセキュリティ・グループにバックドアを仕掛ける


また、先ほどの MITRE ATT&CK の段階に各モジュールを照らし合わせた場合は、主に以下のようなモジュールがあります。

2 実行 (Execution) (クリックで表示)

  • api_gateway__create_api_keys
  • ebs__explore_snapshots
    • EBS ボリューム(スナップショット)を復元して、選択した EC2 インスタンスにアタッチする
  • ec2__startup_shell_script
  • ecs__backdoor_task_def
    • ECS のタスク定義をバックドアして認証情報を取得する
  • lightsail__download_ssh_keys
    • Lightsails のデフォルトの SSH キーペアをダウンロードする
  • lightsail__generate_ssh_keys
    • Lightsail で利用可能なリージョンの SSH キーを作成する
  • lightsail__generate_temp_access
  • systemsmanager__rce_ec2

3 永続化 (Persistence) (クリックで表示)

  • ec2__backdoor_ec2_sec_groups
    • EC2 のセキュリティ グループにルールを追加して、指定の IP アドレスからのアクセスを許可する
  • iam__backdoor_assume_role
    • ユーザー アカウントとアカウント内の 1 つ以上のロールの間に信頼関係を作成して assume role を許可する
  • iam__backdoor_users_keys
    • アカウント内の他のユーザーに AWS API キーを追加する
  • iam__backdoor_users_password
    • アカウント内の他のユーザーにパスワードを追加する
  • lambda__backdoor_new_roles
    • 新しい IAM ロールをバックドアするための Lambda 関数と CloudWatch Events ルールを作成する
  • lambda__backdoor_new_sec_groups
    • 新しい EC2 のセキュリティ グループをバックドアするための Lambda 関数と CloudWatch Events ルールを作成する
  • lambda__backdoor_new_users
    • 新しい IAM ユーザーをバックドアするための Lambda 関数と CloudWatch Events ルールを作成する

4 権限昇格 (Privilege Escalation) (クリックで表示)

  • cfn__resource_injection
    • CloudFormation のテンプレートでのリソース インジェクション
  • iam__privesc_scan
    • 権限の設定ミスをスキャンして、権限昇格が可能な場所を特定する

5 防御回避 (Defense Evasion) (クリックで表示)

  • Cloudtrail__download_event_history
    • CloudTrail イベントの履歴を JSON ファイルでダウンロードする
  • Cloudwatch__download_logs
    • CloudWatch のログを保存して、セッション ダウンロード フォルダーにダウンロードする
  • detection__enum_services
    • 監視サービスを列挙する
  • detection__disruption
    • 様々な監視サービスを無効化、削除、または最小化する
  • elb__enum_logging
    • ログが無効になっている ELB のリストを収集する
  • guardduty__whitelist_ip
    • GuardDuty の信頼できる IP リストに追加して、これらの IP に対するセキュリティ アラートを基本的に無効する
  • waf__enum
    • ルール グループ・ルール・ルールの一致セットを含む WAF を列挙する

6 認証情報アクセス (Credential Access) (クリックで表示)

  • iam__enum_roles
    • アカウント ID を指定して、別の AWS アカウントの IAM ロールを列挙する
  • iam__enum_users
    • アカウント ID を指定して、別の AWS アカウントの IAM ユーザーを列挙する

7 探索 (Discovery) (クリックで表示)

  • acm__enum
    • AWS Certificate Manager に関する情報を列挙する
  • enum__apigateway
  • aws__enum_account
    • アカウント自体に関するデータを列挙する
  • aws__enum_spend
    • サービスごとにアカウントの支出を列挙する
  • cloudformation__download_data
    • CloudFormation スタックからすべてのテンプレート・パラメータ・エクスポートをダウンロードする
  • codebuild__enum
    • 機密データを探しながら CodeBuild のビルドとプロジェクトを列挙する
  • dynamodb__enum
    • DynamoDB からデータを列挙する
  • ebs__enum_volumes_snapshots
    • EBS ボリュームとスナップショットを列挙して、暗号化せずにログに記録する
  • ec2__check_termination_protection
  • ec2__download_userdata
    • EC2 インスタンス/起動テンプレートからユーザー データをダウンロードする
  • ec2__enum
    • EC2 に関連する情報を大量に列挙する
  • ecr__enum
  • ecs__enum
    • ECS に関する情報を列挙する
  • ecs__enum_task_def
    • ECS タスクからタスク定義を解析する
  • eks_enum
    • EKS リソースを列挙する
  • enum__secrets
    • AWS Secrets Manager と AWS パラメータ ストアからシークレットを列挙してダンプする
  • glue__enum
    • AWS Glue からのすべての関連データ(クローラ、データベース、開発エンドポイント、ジョブなど)を列挙する
  • guardduty__list_accounts
    • GuardDuty アカウントにリンクされているアカウントをリストアップする
  • guardduty__list_findings
    • GuardDuty の検出結果をリストアップする
  • iam__bruteforce_permissions
  • iam__detect_honeytokens
    • アクティブなキーのセットがハニートークンであることがわかっているかどうかを確認する
  • iam__enum_action_query
    • ユーザーとロールの IAM 権限をクエリして、それらの権限を持つリソースを列挙する
  • iam__enum_permissions
    • IAM API を使用して、アカウント内のユーザーやロールに対する IAM 権限の確認済みリストを列挙する
  • iam__enum_users_roles_policies_groups
    • アカウント内のすべてのユーザー・ロール・顧客管理ポリシー・グループの情報の4つを列挙する
  • iam__get_credential_report
    • IAM 認証情報レポートを生成してダウンロードする
  • inspector__get_reports
    • Amazon Inspector のレポートを調査する
  • lambda__enum
    • AWS Lambda からのデータを列挙する
  • lightsail__enum
    • Lightsail に関連する共通データをキャプチャする
  • organizations__enum
    • アカウントやポリシーなどのさまざまな組織リソースのリストを列挙する
  • rds_enum
  • rds__enum_snapshots
    • RDS スナップショットを列挙して、暗号化せずにログに記録する
  • route53__enum
    • Route53 ホストゾーンを列挙して、ログ構成をクエリする
  • systemsmanager__download_parameters
    • SSM からすべてのパラメータと復号化された値をダウンロードする
  • transfer_family__enum
    • AWS Transfer Family SFTP/FTP および FTPS サーバーを列挙する

8 水平展開 (Lateral Movement) (クリックで表示)

  • Cloudtrail__csv_injection
    • 悪意のある数式を CloudTrail イベントの履歴に挿入する
  • organizations__assume_role
    • AWS アカウントのリストとロールを全て収集する
  • vpc__enum_ternate_movement
    • DirectConnect・VPNVPC ピアリングを探して侵害可能な場所を提示する

10 持ち出し (Exfiltration) (クリックで表示)

  • ebs__download_snapshots
    • EBS のスナップショットをダウンロードする
  • rds__explore_snapshots
    • RDS インスタンスのスナップショットを作成して、外部で復元することで情報にアクセスする
  • s3__download_bucket
    • S3 バケットからファイルを列挙してダウンロードする


詳しくは、以下をご覧ください。

rhinosecuritylabs.com

github.com


AWS IAM

  • SkyArk
  • PMapper
    • AWS IAM が許可された権限を素早くチェックできるツール
  • enumerate-iam
    • AWS IAM に関連付いたアクセス権限を列挙するツール


Amazon S3


Amaozn EBS

  • Dufflebag
    • 公開されている EBS のスナップショットを検索して、シークレットな情報を列挙するツール


リポジトリやファイル

  • gitleaks
    • Git リポジトリ内のパスワードや API Key、トークンなどのハードコードされたシークレットを検出する
  • Whispers
    • ハードコードされた資格情報や危険な機能を検索するツール


AWS Environment (Assessment)


クラウドに関するツールの詳細は、以下をご覧ください。

github.com

github.com

github.com


6. トレーニングコンテンツ


CloudGoat

先ほどツールで紹介した Pacu と同じ提供元(Rhino Security Labs)である「CloudGoat」は、以下のようなシナリオが用意されています。

  • vulnerable_lambda
    • Lambda 関数に対して脆弱性攻撃を行い、取得した情報を使って Secrets Manager からシークレットな情報を取得する
  • vulnerable_cognito
    • Cognito の設定不備を悪用して、Cognito Identity Pool の認証情報を取得する
  • iam_privesc_by_key_rotation
    • 安全でない IAM の権限を悪用して、権限昇格を行なって Secrets Manager からシークレットな情報を取得する
  • iam_privesc_by_rollback
    • 不適切な IAM のポリシーバージョンから完全な管理者権限に権限昇格する
  • lambda_privesc
    • Lambda 関数を悪用することで、ロールを渡して完全な管理者権限に権限昇格する
  • cloud_breach_s3
    • リバースプロキシサーバーを悪用して EC2 のメタデータサービスから認証情報を取得して、S3 バケットからシークレットな情報を取得する
  • iam_privesc_by_attachment
    • 取得した IAM を活用して 強い権限を持つ EC2 インスタンスを作成して、インスタンスにアクセスして完全な管理者権限に権限昇格する
  • ec2_ssrf
    • EC2 上にある Web アプリケーションに対して脆弱性攻撃を行い、メタデータサービスから認証情報を取得して S3 バケットからシークレットな情報を取得する
  • ecs_takeover
    • ECS の設定不備を悪用して、コンテナに侵入して認証情報を取得する
  • rce_web_app
    • Web アプリケーションに対して脆弱性攻撃を行い、機密ファイルから認証情報を取得して RDS にアクセスすることでシークレットな情報を取得する
  • codebuild_secrets
    • CodeBuild のプロジェクトから認証情報を取得して、RDS のスナップショットを悪用して DB 内からシークレットな情報を取得する
  • cicd
    • EC2 インスタンスの設定を改ざんして権限昇格することで、最終的に CodeCommit などから新しい認証情報を取得する
  • detection_evasion
  • ecs_efs_attack
    • ECS のコンテナにバックドアを仕込み、メタデータサービスから認証情報を取得して EC2 の設定を改ざんすることでサブネットからマウントされたオープンな EFS からシークレットな情報を取得する
  • glue_privesc
    • Web アプリケーションに対して脆弱性攻撃を行い、認証情報を取得してリバースシェルをアップロードして Glue のジョブを作成することでシークレットな情報を取得する

詳しくは、以下をご覧ください。

github.com


AWSGoat

また、INE が提供する「AWSGoat」は、「OWASP TOP 10 2021」の観点を取り入れていて、主に以下のような脆弱性と設定不備が用意されています。

  • XSS
  • SQL Injection
  • Insecure Direct Object Reference (IDOR)
  • Server Side Request Forgery (SSRF) on Lambda Environment
  • Sensitive Data Exposure and Password Reset
  • S3 Misconfigurations
  • IAM Privilege Escalations
  • ECS Container Breakout

詳しくは、以下をご覧ください。

github.com


過去の Cloud に関する問題まとめ

scgajge12.hatenablog.com

scgajge12.hatenablog.com

scgajge12.hatenablog.com

scgajge12.hatenablog.com


7. インシデント事例

AWS などのパブリッククラウドで発生したインシデント事例は、以下の GitHub リポジトリや Web サイトで公開されています。

公開されている事例は少ないですが、2023年に起きたインシデントは、主に以下のような事例がありました。

詳しくは、以下をご覧ください。

github.com

www.breaches.cloud

github.com


検証事例

AWS HoneyToken HoneyPot

この検証では、Administrator Access ポリシー付きのアクセスキーをトップページや Pastebin で公開して、攻撃者が AWS 環境に侵入する際の行動ログを観察したものになります。

アクセスキーを取得した攻撃者は、例えば以下のような行動をとったそうです。

  • IAM, EC2, RDS, S3, Route53, SES などの情報収集
  • 大量の API コール
  • EC2 インスタンスの作成・削除
  • S3 バケットの作成
  • IAM ユーザーの作成やログインプロファイルの作成・更新

とても面白い攻撃者の行動分析となっているため、詳しくはぜひご覧ください。

speakerdeck.com


2023 Honeypotting in the Cloud Report

この検証では、クラウド内で誤って構成されたリソースをシミュレートするハニーポットを複数に設定して、悪意のある攻撃者がどういう行動をするかを観察したものになります。

攻撃者の餌となる AWS のアクセスキーをハニーポットに設定して公開した箇所は、以下の9箇所です。

  • AWS S3 Bucket
  • GitHub
  • Docker Hub
  • Elastic Container Registry
  • Elasticsearch
  • HTTP
  • Elastic Block Storage
  • Redis
  • SSH

調査結果から、公開してからアクセスキーが発見されるまでの時間は、以下のようだったようです。

  • GitHub: 2分
  • HTTP: 3分
  • SSH: 4分
  • S3: 1時間

詳しくは、以下をご覧ください。

orca.security


Public Access Key 2023

この検証では、意図的に AWS のアクセスキーとシークレットキーを GitHub に公開した際の実際のログを観測したものになります。

タイムラインは、以下のようだったようです。

時刻 イベント
3/23 08:51:00 GitHub に Key を Push
3/23 08:51:50 35.83.131.170 から AWS GetCallerIdentity の1回目の使用
3/23 08:53:07 iam:AttachUserPolicy-AWSCompromizedKeyQuarantineV2 がユーザーに適用
3/23 08:53:57 AWS サポートから電子メール通知
3/23 08:56:50 54.39.190.134 から AWS GetCallerIdentity の 2 回目の使用
3/23 08:56:51 54.39.187.211 から AWS GetCallerIdentity の 3 回目の使用
3/23 08:57:20 54.39.182.0 から AWS GetCallerIdentity の 4 回目の使用
3/23 08:58:08 3.109.16.140 から Key と情報の列挙 (5番目)

詳しくは、以下をご覧ください。

www.chrisfarris.com

他にも、過去に GitHubAWS のキーペアやアクセスキーを公開するとどういうことが起きるかを検証しているブログもありました。

qiita.com

dev.classmethod.jp


8. その他

侵入テストを行う際の注意点

ペネトレーションテストなどの侵入テストを実際に行う場合は、 AWS カスタマーサポートポリシーの規約に従う必要があります。

規約には、侵入テストを行なって良いサービスや禁止行為などが記載されています。

詳しくは、以下をご覧ください。

aws.amazon.com


おすすめのドキュメント・資料・本


CloudSec に関するブログやニュースレター


AWS 公式ドキュメント


AWS Well-Architected Framework - セキュリティの柱

特に「AWS Well-Architected Framework」のセキュリティの柱は、情報とシステムの保護に焦点を当てたトピックになっているため、今回のオフェンシブな視点に対しての主な保護の観点ともなります。

セキュリティの柱では、主に以下のようなトピックになっていて、ドキュメントにはベストプラクティスが記載されています。

  • ID とアクセス管理
    • アクセス権限の付与・範囲・強さ・管理
  • 検知
    • 設定変更, 不要な動作, アラート
  • インフラストラクチャ保護
    • ネットワーク, コンピューティング
  • データ保護
    • 保管中のデータ, 転送中のデータ
  • インシデント対応
    • 予防的対策(設計レベル)と事後対策(自動化)
  • アプリケーションのセキュリティ

また、AWS 環境内に侵入された場合に被害を最小限に抑えるために、IAM の最小権限を適切に行なったり、AWS の監視サービスやセキュリティ検知サービスを有効的に活用することが推奨されています。


イベント

Security-JAWS

JAWS-UG は AWS を多くの方に知っていただき、活用を推進するために活動をしているユーザーグループです。

Security-JAWS では、攻撃、監査、認証など、様々な分野のスペシャリスト達が、どのようにして AWS を活用しているのか情報を共有し、より一層 AWS を安全に使えるようにしていくことを目的としています。

s-jaws.doorkeeper.jp

scgajge12.hatenablog.com


fwd:cloudsec

fwd:cloudsec とは、クラウドセキュリティに関するカンファレンスのことです。

fwdcloudsec.org

また、全ての講演が、以下の YouTube で公開されています。

www.youtube.com


AWS Security Forum Japan

AWS 国内最大のセキュリティイベント

aws.amazon.com


9. 終わりに

本稿では、AWS 環境における攻撃者のオフェンシブな視点で Cloud Security の入門として紹介しました。

ぜひ、これらの観点を意識した上で AWS 環境の外部面でも内部面でもセキュリティ対策を適切に行ってみてください。

ここまでお読みいただきありがとうございました。