1. 始めに
こんにちは、morioka12 です。
本稿では、AWS 環境における攻撃者のオフェンシブな視点で Cloud Security の入門として紹介します。
- 1. 始めに
- 2. クラウドにおける脅威
- 3. AWS 環境における攻撃者の観点
- 4. MITRE ATT&CK Framework for Cloud (IaaS)
- 5. ツール
- 6. トレーニングコンテンツ
- 7. インシデント事例
- 8. その他
- 9. 終わりに
免責事項
本稿の内容は、セキュリティに関する知見を広く共有する目的で執筆されており、悪用行為を推奨するものではありません。
想定読者
- クラウドに関する学習をしている学生
- セキュリティも興味がある方
- AWS (Amazon Web Services)を使っている方
- AWS 環境を保守している方
2. クラウドにおける脅威
クラウドの重大セキュリティ脅威 11の悪質な脅威
「クラウドの重大セキュリティ脅威 11の悪質な脅威」とは、CSA (Cloud Security Alliance)が公開している資料で、クラウド環境における特に顕著な11の脅威、リスク、脆弱性についてまとめられています。
2022年のランキングは、以下のようになっています。
- 不十分な ID、資格情報およびアクセスとキーの管理
- 安全でないインターフェースや API
- 設定ミスと不適切な変更管理
- クラウドセキュリティのアーキテクチャと戦略の欠如
- 安全でないソフトウェア開発
- 安全でないサードパーティのリソース
- システムの脆弱性
- 偶発的なクラウドデータの漏洩
- サーバーレスやコンテナのワークロードの構成ミスや悪用
- 組織的な犯罪、ハッカーと APT グループ
- クラウドストレージのデータの漏洩
詳しくは、以下をご覧ください。
https://www.cloudsecurityalliance.jp/site/wp-content/uploads/2022/11/topthreat_morozumi_20221117.pdf
また、CSA は「サーバレスアプリケーションのための最も重大な 12 のリスク(2019年)」という資料も公開していて、以下がそのランキングになります。
- 関数イベント・データインジェクション
- 認証の不備
- セキュアでないサーバレス・デプロイの構成
- 関数への過剰な権限と役割の不備
- 不適切な機能のモニタリングとロギング
- セキュアでないサードパーティ依存
- セキュアでないアプリケーションの秘匿領域
- サービス拒否およびリソースの枯渇
- サーバーレス機能実行フローの操作
- 不適切な例外処理と詳細なエラーメッセージ
- 破棄された関数、クラウドリソースおよびイベントトリガー
- 交差実行データの永続性
詳しくは、以下をご覧ください。
クラウドサービス利用に関連するリスク Top 10
「クラウドサービス利用に関連するリスク Top 10」とは、Assured の調べによる SaaS などのクラウドサービスの利用にあたって実際に発生したことのある事例トップ10についてまとめられています。
2023年のランキングは、以下のようになっていました。
- 社内限定公開のつもりが社外からもアクセス可能な設定になっていた(アクセス権限の誤設定)
- 自社で利用しているクラウドサービスがサイバー攻撃を受け、自社の機密情報も漏えいの可能性があった
- 機密情報が保存されたクラウドサービスが利用可能なスマートフォン等を紛失し、情報漏えいの可能性があった
- 退職済みの元従業員アカウント削除ができていなかった
- シャドー IT の存在が判明した
- クラウドサービスに機密情報が意図せず保存されていたことが判明した
- クラウドサービスを利用して自社で提供しているサービスが停止し、自社の顧客に影響が及んだ
- 自社で利用しているクラウドサービスが障害等によりサービスが停止し、業務遂行ができなくなった
- 自社で利用しているクラウドサービスの運営元を装った不審な連絡(メールや電話等)を受けた
- 多要素認証用のスマートフォン等を紛失してログインができなくなった
詳しくは、以下をご覧ください。
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% |
詳しくは、以下をご覧ください。
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 に関する設定不備などは、以下をご覧ください。
また、AWS アカウントを狙ったフィッシングに関しては、以下をご覧ください。
4.2 実行 (Execution)
実行の段階では、「1. 初期アクセス」で取得した認証情報を元に、攻撃者が侵入した AWS 環境内から悪意のある操作を行います。
例えば、以下のような手法が該当します。
- 取得した認証情報(IAM)の有効な権限を列挙して、許可された AWS サービスやリソースを操作する
- 全てのリージョンから列挙する
- 新しい攻撃者用の IAM ユーザーを作成する
- EC2 インスタンスや Lambda 関数などを新しく作成する
- 悪意あるコードを実行させたり、暗号通貨のマイニングを実行する
- S3 バケットを作成したり、乗っ取ったりでマルウェアをアップロードする
- 非公開の API にアクセスする
入手した IAM の有効な権限を列挙する場合は、enumerate-iam などを活用することで効率的に特定することが可能です。
4.3 永続化 (Persistence)
永続化の段階では、攻撃者が侵入した AWS 環境内からアクセス可能な状態を維持できるように行います。
例えば、以下のような手法が該当します。
- 新しい攻撃者用の認証情報を作成する
- IAM の認証に関する設定を変更する
- 取得した認証情報の IAM に権限の強いグループ(もしくは、ポリシーやロール)に追加する
- MFA を無効化したり、独自の MFA を追加する
- EC2 のセキュリティグループなどの設定を変更する
- ECR や Lambda などに悪意あるバックドアをアップロードする
- RDS のインスタンスやスナップショットを公開したり、DB 内に管理者ユーザーを作成する
- EFS のリソースポリシーなどを変更して、アクセスポイントを作成する
- CloudFormation のテンプレートが S3 バケットにアップロードされた時に悪意ある Lambda 関数をトリガーするように設定する
4.4 権限昇格 (Privilege Escalation)
権限昇格の段階では、攻撃者が取得した認証情報をもとに、さらに強いレベルの権限を取得するように行います。
例えば、以下のような手法が該当します。
- 権限昇格した上でさらに強いロールやポリシーを追加してより強い権限に昇格する
- Lambda 関数を作成してロールを渡して、それを呼び出すことで権限昇格する
- CloudFormation にロールを渡して、テンプレートを作成することで権限昇格する
- Data Pipeline にロールを渡して、パイプラインを作成・更新することで権限昇格する
- Control Tower の設定を変更する
IAM の権限昇格についての詳細は、以下をご覧ください。
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 にアクセスを行います。
例えば、以下のような手法が該当します。
4.9 収集 (Collection)
収集の段階では、攻撃者が侵入した AWS 環境内で発見できた情報を収集して、まとめ作業を行います。
例えば、以下のような手法が該当します。
- S3 バケットや EBS などのストレージサービスから得れる機微な情報を収集する
- RDS や DynamoDB などのデータベースサービスから得れる機微な情報を収集する
- AWS Inspector のレポートから得れる脆弱性情報の収集する
4.10 持ち出し (Exfiltration)
持ち出しの段階では、攻撃者が入手できた機微な情報を外部に送って保存を行います。
主に以下のよう情報やファイルを外部に持ち出します。
基本的に「9. 収集」で取得できた個人情報や企業の機微な情報をダウンロードしたりして、攻撃者の手元や外部のクラウド環境に保存するようにします。
4.11 影響 (Impact)
影響の段階では、最終的に攻撃者が侵入した AWS 環境内で企業に対する侵害を与えたり、さらなる悪用を行います。
例えば、以下のような手法が該当します。
- AWS 環境内のデータやリソースなどを改ざん・削除する
- 企業が提供するサービスを停止させる
- AWS 環境内のリソースを悪用して、他の脆弱性攻撃やフィッシング、暗号通貨マイニングなどを行う
- ランサムウェアのように取得した機密データをもとに、企業に対して金銭を要求(脅迫)する
「MITRE ATT&CK Framework for Cloud (IaaS)」の詳細は、以下をご覧ください。
5. ツール
AWS Environment (Offensive)
- Pacu
- CloudFox
- CloudBrute
- AWS-Attack
- MITRE ATT&CK の項目に対応した AWS Exploitation Framework
- AWS Recon
Pacu
Pacu は Rhino 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
- EC2 インスタンスを停止および再起動してコードを実行する
ecs__backdoor_task_def
- ECS のタスク定義をバックドアして認証情報を取得する
lightsail__download_ssh_keys
- Lightsails のデフォルトの SSH キーペアをダウンロードする
lightsail__generate_ssh_keys
- Lightsail で利用可能なリージョンの SSH キーを作成する
lightsail__generate_temp_access
systemsmanager__rce_ec2
- EC2 インスタンスで root(SYSTEM) としてコードを実行する
3 永続化 (Persistence) (クリックで表示)
ec2__backdoor_ec2_sec_groups
- EC2 のセキュリティ グループにルールを追加して、指定の IP アドレスからのアクセスを許可する
iam__backdoor_assume_role
- ユーザー アカウントとアカウント内の 1 つ以上のロールの間に信頼関係を作成して assume role を許可する
iam__backdoor_users_keys
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 インスタンスのリストを収集する
ec2__download_userdata
- EC2 インスタンス/起動テンプレートからユーザー データをダウンロードする
ec2__enum
- EC2 に関連する情報を大量に列挙する
ecr__enum
- リポジトリと関連する画像やタグを列挙する
ecs__enum
- ECS に関する情報を列挙する
ecs__enum_task_def
- ECS タスクからタスク定義を解析する
eks_enum
- EKS リソースを列挙する
enum__secrets
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 インスタンスを列挙する
rds__enum_snapshots
- RDS スナップショットを列挙して、暗号化せずにログに記録する
route53__enum
- Route53 ホストゾーンを列挙して、ログ構成をクエリする
systemsmanager__download_parameters
- SSM からすべてのパラメータと復号化された値をダウンロードする
transfer_family__enum
8 水平展開 (Lateral Movement) (クリックで表示)
Cloudtrail__csv_injection
- 悪意のある数式を CloudTrail イベントの履歴に挿入する
organizations__assume_role
- AWS アカウントのリストとロールを全て収集する
vpc__enum_ternate_movement
10 持ち出し (Exfiltration) (クリックで表示)
ebs__download_snapshots
- EBS のスナップショットをダウンロードする
rds__explore_snapshots
- RDS インスタンスのスナップショットを作成して、外部で復元することで情報にアクセスする
s3__download_bucket
- S3 バケットからファイルを列挙してダウンロードする
詳しくは、以下をご覧ください。
AWS IAM
- SkyArk
- PMapper
- AWS IAM が許可された権限を素早くチェックできるツール
- enumerate-iam
- AWS IAM に関連付いたアクセス権限を列挙するツール
Amazon S3
- S3Scanner
- 公開されている S3 バケットを列挙して、一覧表示とダウンロードができるツール
- s3-buckets-finder
- cloud_enum
- OSINT によって S3 バケットを列挙するツール
- AWSBucketDump
- S3 バケット内から興味深いファイルを列挙するツール
Amaozn EBS
- Dufflebag
- 公開されている EBS のスナップショットを検索して、シークレットな情報を列挙するツール
リポジトリやファイル
AWS Environment (Assessment)
- Prowler
- CloudMapper
- AWS 環境の分析に役立つツール
- ScoutSuite
クラウドに関するツールの詳細は、以下をご覧ください。
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
iam_privesc_by_attachment
ec2_ssrf
ecs_takeover
- ECS の設定不備を悪用して、コンテナに侵入して認証情報を取得する
rce_web_app
- Web アプリケーションに対して脆弱性攻撃を行い、機密ファイルから認証情報を取得して RDS にアクセスすることでシークレットな情報を取得する
codebuild_secrets
- CodeBuild のプロジェクトから認証情報を取得して、RDS のスナップショットを悪用して DB 内からシークレットな情報を取得する
cicd
- EC2 インスタンスの設定を改ざんして権限昇格することで、最終的に CodeCommit などから新しい認証情報を取得する
detection_evasion
ecs_efs_attack
glue_privesc
- Web アプリケーションに対して脆弱性攻撃を行い、認証情報を取得してリバースシェルをアップロードして Glue のジョブを作成することでシークレットな情報を取得する
詳しくは、以下をご覧ください。
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
詳しくは、以下をご覧ください。
過去の Cloud に関する問題まとめ
7. インシデント事例
AWS などのパブリッククラウドで発生したインシデント事例は、以下の GitHub リポジトリや Web サイトで公開されています。
公開されている事例は少ないですが、2023年に起きたインシデントは、主に以下のような事例がありました。
- PyPi にある57個のライブラリで AWS の認証情報が漏洩していた
- Meta (Facebook)のドメインで AWS Lambda 上で RCE による S3 からの情報漏洩
- ソーシャルメディアアプリでステージング環境のファイルから S3 バケット名や AWS のアクセスキー・シークレットキーの漏洩
- Docker Image 内で1,213個の AWS シークレットキーが漏洩していた
- 650個のパブリックな RDS スナップショットから個人情報が漏洩していた
- エンジニアがソーシャルエンジニアリングの攻撃により、エンジニアの MFA トークンが漏洩して顧客のアカウントが乗っ取られた
詳しくは、以下をご覧ください。
検証事例
AWS HoneyToken HoneyPot
この検証では、Administrator Access ポリシー付きのアクセスキーをトップページや Pastebin で公開して、攻撃者が AWS 環境に侵入する際の行動ログを観察したものになります。
アクセスキーを取得した攻撃者は、例えば以下のような行動をとったそうです。
- IAM, EC2, RDS, S3, Route53, SES などの情報収集
- 大量の API コール
- EC2 インスタンスの作成・削除
- S3 バケットの作成
- IAM ユーザーの作成やログインプロファイルの作成・更新
とても面白い攻撃者の行動分析となっているため、詳しくはぜひご覧ください。
2023 Honeypotting in the Cloud Report
この検証では、クラウド内で誤って構成されたリソースをシミュレートするハニーポットを複数に設定して、悪意のある攻撃者がどういう行動をするかを観察したものになります。
攻撃者の餌となる AWS のアクセスキーをハニーポットに設定して公開した箇所は、以下の9箇所です。
- AWS S3 Bucket
- GitHub
- Docker Hub
- Elastic Container Registry
- Elasticsearch
- HTTP
- Elastic Block Storage
- Redis
- SSH
調査結果から、公開してからアクセスキーが発見されるまでの時間は、以下のようだったようです。
詳しくは、以下をご覧ください。
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番目) |
詳しくは、以下をご覧ください。
他にも、過去に GitHub に AWS のキーペアやアクセスキーを公開するとどういうことが起きるかを検証しているブログもありました。
8. その他
侵入テストを行う際の注意点
ペネトレーションテストなどの侵入テストを実際に行う場合は、 AWS カスタマーサポートポリシーの規約に従う必要があります。
規約には、侵入テストを行なって良いサービスや禁止行為などが記載されています。
詳しくは、以下をご覧ください。
おすすめのドキュメント・資料・本
- Hacking The Cloud - AWS
- CloudSecDocs - AWS
- HackTricks Cloud - AWS Pentesting
- Awesome Cloud Security
- InternalAllTheThings - AWS
- CloudSploit Security Remediation Guides
- Book - Hands-On AWS Penetration Testing with Kali Linux
- Book - AWS Penetration Testing: Beginner's guide to hacking AWS with tools such as Kali Linux, Metasploit, and Nmap
- Book - Threat Hunting in the Cloud: Defending AWS, Azure and Other Cloud Platforms Against Cyberattacks
CloudSec に関するブログやニュースレター
- Blog - Rhino Security Labs
- Wiz Blog
- Blog | Orca Security
- Datadog - Security Labs
- tl;dr sec
- CloudSecList
- Cloud Security Podcast Network
- Cloud security | AWS Security Blog
AWS 公式ドキュメント
- AWS クラウドセキュリティ
- 責任共有モデル
- AWS Well-Architected Framework
- Center for Internet Security (CIS) AWS Foundations Benchmark
- IAM でのセキュリティのベストプラクティス
AWS Well-Architected Framework - セキュリティの柱
特に「AWS Well-Architected Framework」のセキュリティの柱は、情報とシステムの保護に焦点を当てたトピックになっているため、今回のオフェンシブな視点に対しての主な保護の観点ともなります。
セキュリティの柱では、主に以下のようなトピックになっていて、ドキュメントにはベストプラクティスが記載されています。
- ID とアクセス管理
- アクセス権限の付与・範囲・強さ・管理
- 検知
- 設定変更, 不要な動作, アラート
- インフラストラクチャ保護
- ネットワーク, コンピューティング
- データ保護
- 保管中のデータ, 転送中のデータ
- インシデント対応
- 予防的対策(設計レベル)と事後対策(自動化)
- アプリケーションのセキュリティ
また、AWS 環境内に侵入された場合に被害を最小限に抑えるために、IAM の最小権限を適切に行なったり、AWS の監視サービスやセキュリティ検知サービスを有効的に活用することが推奨されています。
イベント
Security-JAWS
JAWS-UG は AWS を多くの方に知っていただき、活用を推進するために活動をしているユーザーグループです。
Security-JAWS では、攻撃、監査、認証など、様々な分野のスペシャリスト達が、どのようにして AWS を活用しているのか情報を共有し、より一層 AWS を安全に使えるようにしていくことを目的としています。
fwd:cloudsec
fwd:cloudsec とは、クラウドセキュリティに関するカンファレンスのことです。
また、全ての講演が、以下の YouTube で公開されています。
AWS Security Forum Japan
AWS 国内最大のセキュリティイベント
9. 終わりに
本稿では、AWS 環境における攻撃者のオフェンシブな視点で Cloud Security の入門として紹介しました。
ぜひ、これらの観点を意識した上で AWS 環境の外部面でも内部面でもセキュリティ対策を適切に行ってみてください。
ここまでお読みいただきありがとうございました。