Slide 1

Slide 1 text

ハニートークン型ハニーポットによる 攻撃者の行動分析と 脆弱性の発見と報告まで ~AdministratorAccessポリシー付きアクセスキーを 手にした攻撃者がとる行動とは~ 2 0 2 1 年 3 月 2 0 日 J A W S D AY S 2 0 2 1

Slide 2

Slide 2 text

お話ししたいことを書いたら スライドが100ページを 超えてしまいました。 あとでスライド公開しますので、 サクサク進めさせて頂きます。 ご連絡

Slide 3

Slide 3 text

#jawsdays #jawsdays2021 #jawsdays2021_B 3 自己紹介 Kohei Isono(磯野 亘平) • 日本電気株式会社(NEC)にて、セキュア開発 推進、脆弱性診断・ペネトレーションテスト、 インシデントレスポンス対応などに従事 (今回の発表は個人の活動です) • ハニーポットの構築・運用とCTFが趣味 https://graneed.hatenablog.com/ @graneed111

Slide 4

Slide 4 text

#jawsdays #jawsdays2021 #jawsdays2021_B 4 今日お伝えしたいこと アクセスキーの 管理を徹底しよう インシデントの 発生に備えよう 脆弱性レポートを 出そう

Slide 5

Slide 5 text

#jawsdays #jawsdays2021 #jawsdays2021_B 5 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス 6.脆弱性レポート 7.最後に

Slide 6

Slide 6 text

自身でハニーポット環境の構築お よび運用をする際は、環境を理解 の上、十分なセキュリティ対策を 実施してください。 注意

Slide 7

Slide 7 text

#jawsdays #jawsdays2021 #jawsdays2021_B 7 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス 6.脆弱性レポート 7.最後に

Slide 8

Slide 8 text

#jawsdays #jawsdays2021 #jawsdays2021_B 8 アクセスキーとは • AWS CLI等のツールやプログラムから AWSのサービスへのアクセスに使用 • IAMユーザーまたはAWSアカウントの ルートユーザーの長期的な認証情報 • アクセスキーIDと シークレットアクセスキーから構成 アクセスキー ツール AWS サービス

Slide 9

Slide 9 text

#jawsdays #jawsdays2021 #jawsdays2021_B 9 •アクセスキーを使用していますか? •どのような権限を付与していますか? •どのような管理をしていますか? ホワイトペーパーやベストプラクティスを 見てみましょう

Slide 10

Slide 10 text

#jawsdays #jawsdays2021 #jawsdays2021_B 10 AWS Well-Architected フレームワーク セキュリティ 検出 アイデンティティ管理 とアクセス管理 セキュリティの基礎 インフラストラクチャ 保護 データ保護 インシデント対応 オペレーショナル エクセレンス 信頼性 パフォーマンス 効率 コスト最適化 5本の柱 SEC 2 人とマシンの認証の管理は どのようにすれば よいですか? SEC 3 人とマシンのアクセス許可は どのように管理すれば よいでしょうか? 一時的な認証情報を 使用する 定期的に認証情報を 監査およびローテーションする 最小権限のアクセスを 付与する アクセス許可を 継続的に削減する ベストプラクティス AWS Well-Architected フレームワーク - アイデンティティ管理とアクセス管理 https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/framework/a-identity-and-access-management.html

Slide 11

Slide 11 text

#jawsdays #jawsdays2021 #jawsdays2021_B 11 IAMのセキュリティの ベストプラクティス •AWS アカウントの ルートユーザーアクセスキーをロックする •最小限の特権を認める •アクセスキーを共有しない •認証情報を定期的にローテーションする •不要な認証情報の削除 IAM でのセキュリティのベストプラクティス https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html

Slide 12

Slide 12 text

#jawsdays #jawsdays2021 #jawsdays2021_B 12 AWSアクセスキーを 管理するためのベストプラクティス •アカウントアクセスキーを削除する (または生成しない) •長期のアクセスキーの代わりに一時的なセキュ リティ認証情報(IAMロール)を使用する •IAMユーザーのアクセスキーを適切に管理する AWS アクセスキーを管理するためのベストプラクティス https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws-access-keys-best-practices.html

Slide 13

Slide 13 text

#jawsdays #jawsdays2021 #jawsdays2021_B 13 CIS AWS Foundations Benchmark 2. Storage 1. Identity and Access Management 3. Logging 4. Monitoring 5. Networking 1.4. Ensure no root user account access key exists 1.11. Do not setup access keys during initial user setup for all IAM users that have a console password 1.13. Ensure there is only one active access key available for any single IAM user 1.14. Ensure access keys are rotated every 90 days or less

Slide 14

Slide 14 text

#jawsdays #jawsdays2021 #jawsdays2021_B 14 守るには・守ってもらうには • ホワイトペーパーやベスト プラクティスで言われてい ることは確かに重要 • ただ、忙しい開発現場に必 要性を理解してもらい、腹 落ち(納得)した上で対応 してもうらためには?

Slide 15

Slide 15 text

#jawsdays #jawsdays2021 #jawsdays2021_B 15 守るには・守ってもらうには • ドキュメントの受け売りだ けでは説明不足 • 自分で攻撃を受けてみるの はどうだろうか • 生の攻撃者の攻撃手法も観 測できると面白そうだ

Slide 16

Slide 16 text

#jawsdays #jawsdays2021 #jawsdays2021_B 16 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス 6.脆弱性レポート 7.最後に

Slide 17

Slide 17 text

#jawsdays #jawsdays2021 #jawsdays2021_B 17 ハニーポットとは • 一言で言うと「おとりのシステム」 • 攻撃者を誘い込み、 攻撃手法や侵入後の動作を収集する

Slide 18

Slide 18 text

#jawsdays #jawsdays2021 #jawsdays2021_B 18 ハニーポットの分類 ハニーポット 攻撃経路 サーバ クライアント ハニー トークン 高対話 ハイブリッド 低対話 インタラクション インタラクション 検知精度 情報収集 偽装性 スケーラ ビリティ 安全性 低対話型 低 低 低 高 高 高対話型 高 高 高 低 低 コロナ社「実践サイバーセキュリティモニタリング」より

Slide 19

Slide 19 text

#jawsdays #jawsdays2021 #jawsdays2021_B 19 ハニーポットの分類 ハニーポット 攻撃経路 サーバ クライアント ハニー トークン 高対話 ハイブリッド 低対話 インタラクション インタラクション 検知精度 情報収集 偽装性 スケーラ ビリティ 安全性 低対話型 低 低 低 高 高 高対話型 高 高 高 低 低 コロナ社「実践サイバーセキュリティモニタリング」より 今回、採用した方式

Slide 20

Slide 20 text

#jawsdays #jawsdays2021 #jawsdays2021_B 20 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存 Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析

Slide 21

Slide 21 text

#jawsdays #jawsdays2021 #jawsdays2021_B 21 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存 Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析

Slide 22

Slide 22 text

#jawsdays #jawsdays2021 #jawsdays2021_B 22 アクセスキーを提供 • 複数の方法でアクセスキー を公開し、攻撃者に提供 • 攻撃者は、アクセスキーで AWS環境に侵入し、何らか の行動を実施するはず • その行動を観察する AWS サービス ②アクセスキーで 侵入、目的行動 攻撃者 ハニー ポッター ①アクセスキー を公開 ③行動内容 を観察

Slide 23

Slide 23 text

#jawsdays #jawsdays2021 #jawsdays2021_B 23 Administrator Accessポリシー • IAMのAWS管理ポリシー • 全てのAWSのサービスを 利用可能な最強の権限

Slide 24

Slide 24 text

#jawsdays #jawsdays2021 #jawsdays2021_B 24 Administrator Accessポリシー • 攻撃者は、入手したアクセスキー にこのポリシーがアタッチされて いたら、勝ち確と思って目的の行 動を始めるはず • しかし、本当に被害を被る・・・

Slide 25

Slide 25 text

#jawsdays #jawsdays2021 #jawsdays2021_B 25 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存 Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析

Slide 26

Slide 26 text

#jawsdays #jawsdays2021 #jawsdays2021_B 26 AWS Organizations • 複数のAWSアカウントを統合するための アカウント管理サービス • Service Control Policy(SCP)で、 AWSアカウント単位で権限制御が可能 • ほか、組織内のAWSアカウントの料金の 一括請求、マネージドサービスの統合管 理も可能

Slide 27

Slide 27 text

#jawsdays #jawsdays2021 #jawsdays2021_B 27 W-Aフレームワークでも推奨 SEC 1: ワークロードを安全に運用するには、どうすればよいですか? https://wa.aws.amazon.com/wat.question.SEC_1.ja.html

Slide 28

Slide 28 text

#jawsdays #jawsdays2021 #jawsdays2021_B 28 マルチアカウントの構成例 • 例えば、以下の切り口でAWSアカウントを作成 –Aシステム用、Bシステム用アカウント –開発環境用、本番環境用アカウント –共通アカウント • 監視・監査用アカウント • ログ保全用アカウント • 共通サービス用アカウント

Slide 29

Slide 29 text

#jawsdays #jawsdays2021 #jawsdays2021_B 29 マルチアカウントの構成例 SID331_Architecting Security and Governance Across a Multi-Account Strategy https://www.slideshare.net/AmazonWebServices/sid331architecting-security-and-governance-across-a-multiaccount-strategy

Slide 30

Slide 30 text

#jawsdays #jawsdays2021 #jawsdays2021_B 30 JAWSDAYS2021でも • 本セッションと並行して マルチアカウントをテーマにした セッションが! (あとで見ます)

Slide 31

Slide 31 text

#jawsdays #jawsdays2021 #jawsdays2021_B 31 Service Control Policy 【AWS Black Belt Online Seminar】AWS Organizations https://d1.awsstatic.com/webinars/jp/pdf/services/20180214_AWS-Blackbelt-Organizations.pdf

Slide 32

Slide 32 text

#jawsdays #jawsdays2021 #jawsdays2021_B 32 SCPを使うと • ハニーポット用のAWSアカウントを AWS Organizationsのメンバーアカ ウントにし、マスターアカウントか らSCPで権限制限すれば、 AdministratorAccessポリシーがア タッチされていてもサービスを利用 できない状態に メンバーアカウント AdministratorAccess ポリシー SCPで権限がなければ サービス利用不可 マスタ―アカウント Organizations SCPで権限を制限 AWS サービス

Slide 33

Slide 33 text

#jawsdays #jawsdays2021 #jawsdays2021_B 33 つまり? • AdministratorAccessをゲットして ウッキウキな攻撃者に攻撃を空撃ち させ、安全に観察できる • メンバーアカウント内の攻撃者の行 動は、すべてマスターアカウントの 掌の上!

Slide 34

Slide 34 text

#jawsdays #jawsdays2021 #jawsdays2021_B 34 SCPの設定 • ReadOnlyAccess同等権限をアタッチ • 加えて、攻撃者は初手でIAMで権限確認や変更をしようとす るため、他サービスの書き込み権限さえなければIAMを触れ ても問題ないと判断しIAMFullAccess同等権限もアタッチ

Slide 35

Slide 35 text

#jawsdays #jawsdays2021 #jawsdays2021_B 35 SCPの上限サイズ • SCPにはAWS管理ポリシーがない (FullAWSAccessだけ) • よって、IAMのReadOnlyAccessポリ シーの定義をコピーして作成 • ただ、SCPのサイズには 上限サイズ(5120バイト)があり、 ReadOnlyAccessポリシーが収まらない • 苦肉の策だが、 上限サイズに合わせて分割作成

Slide 36

Slide 36 text

#jawsdays #jawsdays2021 #jawsdays2021_B 36 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存 Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析

Slide 37

Slide 37 text

#jawsdays #jawsdays2021 #jawsdays2021_B 37 • ユーザー、ロール、または AWS の サービスによって実行されたアク ションを記録してくれるサービス • 本ハニーポットの分析の要 • AWS Organizationsを使用している と、全アカウントのCloudTrailを一 括で有効化できるので便利 CloudTrail

Slide 38

Slide 38 text

#jawsdays #jawsdays2021 #jawsdays2021_B 38 • CloudTrailからCloudWatchLogsに連携 • Slack通知する関数をLambdaで作成し、 CloudWatchLogsのサブスクリプショ ンフィルタから呼び出すよう設定 • ただ、一度侵入されると、すぐに通知 が100件以上溜まるため、適宜、通知 条件をカスタマイズ CloudTrailとSlack連携

Slide 39

Slide 39 text

#jawsdays #jawsdays2021 #jawsdays2021_B 39 GuardDuty • マネージドの脅威検出サービス • 料金も激安なので、お守り的に有効化して おくことが推奨されている。 • CloudWatchEventをトリガーに Lambdaを呼び出してSlack通知

Slide 40

Slide 40 text

#jawsdays #jawsdays2021 #jawsdays2021_B 40 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存 Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析

Slide 41

Slide 41 text

#jawsdays #jawsdays2021 #jawsdays2021_B 41 Athenaで分析 • Athenaとは、S3内のデータをSQLを 使用して簡単に分析できるサービス • CloudTrailの証跡ログを検索する テーブルを作成 • SQLの実行結果をCSV形式で出力で きるので、細かい分析はExcelで

Slide 42

Slide 42 text

#jawsdays #jawsdays2021 #jawsdays2021_B 42 システム構成図

Slide 43

Slide 43 text

#jawsdays #jawsdays2021 #jawsdays2021_B 43 システム構成図 Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 CloudTrailで証跡ログ保存 Athenaを使用した CloudTrailの証跡ログ分析

Slide 44

Slide 44 text

#jawsdays #jawsdays2021 #jawsdays2021_B 44 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス 6.脆弱性レポート 7.最後に

Slide 45

Slide 45 text

#jawsdays #jawsdays2021 #jawsdays2021_B 45 アクセスキーの漏洩シナリオ ①インターネット上のサービスに アクセスキーを公開 ②AMI(Amazonマシンイメージ)に アクセスキーを残したまま公開 ④トップページにアクセスキーを公開 ③インスタンスメタデータを公開

Slide 46

Slide 46 text

#jawsdays #jawsdays2021 #jawsdays2021_B 46 アクセスキーの漏洩シナリオ ①インターネット上のサービスに アクセスキーを公開 ②AMI(Amazonマシンイメージ)に アクセスキーを残したまま公開 ④トップページにアクセスキーを公開 ③インスタンスメタデータを公開

Slide 47

Slide 47 text

#jawsdays #jawsdays2021 #jawsdays2021_B 47 インターネット上のサービスに アクセスキーを公開 • テキストデータを保存し公開するサービスである Pastebinに公開

Slide 48

Slide 48 text

#jawsdays #jawsdays2021 #jawsdays2021_B 48 インターネット上のサービスに アクセスキーを公開 • Pastebinでキーワードで検索すると、 他者のアクセスキーがHIT・・・ • なお、2020年3月に検索機能は廃止 となった

Slide 49

Slide 49 text

#jawsdays #jawsdays2021 #jawsdays2021_B 49 githubへの公開は? • githubにアクセスキーを誤って 登録してしまう事例は多い • ただ、AWS社でも監視しており、 すぐに通知および対策指示を受 ける可能性が高いため、公開は 見送った • なお、対策しないと、リソース のブロックやAWSアカウントの 停止される可能性がある AWS からリソースに関する不正使用の報告を受け取った場合、どうすればよいですか? https://aws.amazon.com/jp/premiumsupport/knowledge-center/aws-abuse-report/

Slide 50

Slide 50 text

#jawsdays #jawsdays2021 #jawsdays2021_B 50 被害者の声 https://toranoana-lab.hatenablog.com/entry/2018/09/06/204717 https://yoya.hatenadiary.jp/entry/20150404/aws https://mwookpark.blogspot.com/2018/01/aws-20171227.html https://qiita.com/mochizukikotaro/items/a0e98ff0063a77e7b694 https://qiita.com/AkiyoshiOkano/items/72002409e3be9215ae7e

Slide 51

Slide 51 text

#jawsdays #jawsdays2021 #jawsdays2021_B 51 アクセスキーの漏洩シナリオ ①インターネット上のサービスに アクセスキーを公開 ②AMI(Amazonマシンイメージ)に アクセスキーを残したまま公開 ④トップページにアクセスキーを公開 ③インスタンスメタデータを公開

Slide 52

Slide 52 text

#jawsdays #jawsdays2021 #jawsdays2021_B 52 AMIとは • AMIとは、EC2インスタンスを作成 するためのテンプレート • 例えば、AutoScaling構成で動的に インスタンス追加する際に使用 • AMIはパブリック公開可能

Slide 53

Slide 53 text

#jawsdays #jawsdays2021 #jawsdays2021_B 53 パブリックAMIの公開 • インスタンス内に認証情報を残し た状態でAMIを作成すると、イ メージ内に認証情報が残る • そのAMIをパブリックに共有する • セキュリティのベストプラクティ スでも注意されている AWS セキュリティのベスト プラクティス https://d1.awsstatic.com/International/ja_JP/Whitepapers/AWS_Security_Best_Practices.pdf

Slide 54

Slide 54 text

#jawsdays #jawsdays2021 #jawsdays2021_B 54 パブリックAMIの公開

Slide 55

Slide 55 text

#jawsdays #jawsdays2021 #jawsdays2021_B 55 アクセスキーの漏洩シナリオ ①インターネット上のサービスに アクセスキーを公開 ②AMI(Amazonマシンイメージ)に アクセスキーを残したまま公開 ④トップページにアクセスキーを公開 ③インスタンスメタデータを公開

Slide 56

Slide 56 text

#jawsdays #jawsdays2021 #jawsdays2021_B 56 インスタンスメタデータサービス • EC2インスタンスのホスト 名、セキュリティグループ、 IAMロールなど各種情報を 取得できるサービス • EC2インスタンス自体から のみアクセス可能 $ curl http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ (省略) $ curl http://169.254.169.254/latest/meta-data/hostname ip-172-31-6-71.ap-northeast-1.compute.internal $ curl http://169.254.169.254/latest/meta-data/instance-type t3.nano EC2インスタンスからcurlコマンドでアクセスした例

Slide 57

Slide 57 text

#jawsdays #jawsdays2021 #jawsdays2021_B 57 インスタンスメタデータサービス • インスタンスメタデータか ら、EC2インスタンスにア タッチされているIAMロール の一時的な認証情報の取得 も可能 • MITREのATT&CKでも、攻撃 手法として定義されている $ curl http://169.254.169.254/latest/meta- data/iam/security-credentials/lab-dev-c2-role { "Code" : "Success", "LastUpdated" : "2021-03-15T18:24:53Z", "Type" : "AWS-HMAC", "AccessKeyId" : "ASIARMMTII225WBXGDO7", “SecretAccessKey” : “FqklOiT4PyPCM4oAnfw+~省略~", “Token” : “IQoJb3JpZ2luX2VjEMr//////////wEaDmFwLW5vcnRoZWFzd C0xIkYwRAIgdJhJCRm6Egmywm2K8DAH5VfIQVciB6uJX1Z3 m5YnI90CIFs5FRHR1~省略~ "Expiration" : "2021-03-16T00:28:58Z" } EC2インスタンスからcurlコマンドでアクセスした例 Unsecured Credentials: Cloud Instance Metadata API https://attack.mitre.org/techniques/T1552/005/

Slide 58

Slide 58 text

#jawsdays #jawsdays2021 #jawsdays2021_B 58 インスタンスメタデータを公開 • http://IPアドレス/latest/へのアクセスを、直接、 インスタンスメタデータサービスへのアクセスに転送する。 外部からのHTTPアクセス結果

Slide 59

Slide 59 text

#jawsdays #jawsdays2021 #jawsdays2021_B 59 アクセスキーの漏洩シナリオ ①インターネット上のサービスに アクセスキーを公開 ②AMI(Amazonマシンイメージ)に アクセスキーを残したまま公開 ④トップページにアクセスキーを公開 ③インスタンスメタデータを公開

Slide 60

Slide 60 text

#jawsdays #jawsdays2021 #jawsdays2021_B 60 トップページにアクセスキー公開 • Webサーバのindexページにアクセスキーを公開 • 現実世界では到底あり得ないシナリオ • ブービートラップ 外部からのHTTPアクセス結果

Slide 61

Slide 61 text

#jawsdays #jawsdays2021 #jawsdays2021_B 61 システム構成図 ①インターネット上のサービスに アクセスキーを公開 ②AMIに アクセスキーを残したまま公開 ③インスタンスメタデータを公開 ④トップページに アクセスキーを公開

Slide 62

Slide 62 text

#jawsdays #jawsdays2021 #jawsdays2021_B 62 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス 6.脆弱性レポート 7.最後に

Slide 63

Slide 63 text

#jawsdays #jawsdays2021 #jawsdays2021_B 63 サマリ • ②パブリックAMIに公開したアクセスキーと③インスタンスメタデータの利用は無し • 攻撃者ごとに行動に特徴があり、自動ツールだけでない人間の息づかいを感じる 攻撃者 侵入経路 主な行動 A ④トップページにアクセスキーを公開 ・IAM、EC2、RDSの情報収集程度 B ④トップページにアクセスキーを公開 ・IAM、S3、Route53の情報収集程度 C ①インターネット上のサービスにアクセスキーを公開 ・S3のListBuckets(バケット一覧の確認)のみ D ④トップページにアクセスキーを公開 ・短時間に大量の読み取りAPIコール E ①インターネット上のサービスにアクセスキーを公開 ・SESサービスの確認 F ④トップページにアクセスキーを公開 ・m5ad.12xlargeのEC2インスタンス作成 G ④トップページにアクセスキーを公開 ・大量のAPIコール H ①インターネット上のサービスにアクセスキーを公開 ・LightsailのDownloadDefaultKeyPairをコール ・IAMユーザーのログインプロファイル作成 ・PutUserPermissionsBoundaryで権限を制限 I ①インターネット上のサービスにアクセスキーを公開 ・新規IAMユーザー作成、ログインプロファイ ルの更新 ・S3の新規バケット作成、Organizationsから の脱退、EC2インスタンスの削除

Slide 64

Slide 64 text

#jawsdays #jawsdays2021 #jawsdays2021_B 64 攻撃者A~C • IAM、EC2、RDS、S3などの主要な サービスの情報収集をするだけ • 特に新鮮味のない退屈な行動

Slide 65

Slide 65 text

#jawsdays #jawsdays2021 #jawsdays2021_B 65 攻撃者D • 14分間で、98サービスを対象に537 種類のAPIコール • API名がDescribe、Get、Listから始 まる読み取り用APIのみを呼んでお り、情報収集に特化 • 少し不気味

Slide 66

Slide 66 text

#jawsdays #jawsdays2021 #jawsdays2021_B 66 攻撃者E • Simple Email Service(SES)が、 過去24時間に送信したメールの送信数や、 送信可能なメールの最大数を取得する APIをコール • それも6つのリージョンに1回ずつ • レピュテーションの高いEメールアドレス の有無確認や、該当AWSアカウントの利 用企業の特定をしようとしていた可能性

Slide 67

Slide 67 text

#jawsdays #jawsdays2021 #jawsdays2021_B 67 攻撃者F • EC2インスタンスの作成、セキュリティグループにSSHポート の穴あけを要求 • インスタンスタイプはm5ad.12xlarge(5.424USD/時間) • UserAgentが「AWSToolkitPackage.VS2015~」なのが特徴的

Slide 68

Slide 68 text

#jawsdays #jawsdays2021 #jawsdays2021_B 68 AWS Toolkit for Visual Studio AWS Toolkit for Visual Studio Demo https://www.youtube.com/watch?v=B190tcu1ERk

Slide 69

Slide 69 text

#jawsdays #jawsdays2021 #jawsdays2021_B 69 攻撃者G • 「aws-sdk-go/1.4.10 (go1.7.4; linux; amd64)」のUserAgentか ら大量のAPIコール • AWS用セキュリティテストツー ル「pacu」を使用している可能 性が高い

Slide 70

Slide 70 text

#jawsdays #jawsdays2021 #jawsdays2021_B 70 Pacuの説明とデモは JAWS DAYS 2019のセッション参照 PenTesterが知っている危ないAWS環境の共通点 https://www.slideshare.net/zaki4649/pentesteraws

Slide 71

Slide 71 text

#jawsdays #jawsdays2021 #jawsdays2021_B 71 攻撃者H • Permissions Boundaryを設定し、 なぜか自らの権限をEC2のみに制限。 Service Quotasも確認していた。 • EC2に対する操作が失敗する理由に 悩み、試行錯誤していたと推察 • ほか、Lightsailサービスの DownloadDefaultKeyPairをコール

Slide 72

Slide 72 text

#jawsdays #jawsdays2021 #jawsdays2021_B 72 Lightsail • 手軽にアプリケーションや ウェブサイトの構築ができる VPSサービス • 自動的にネットワーキング、 アクセス、およびセキュリ ティ環境を設定

Slide 73

Slide 73 text

#jawsdays #jawsdays2021 #jawsdays2021_B 73 DownloadDefaultKeyPair • Lightsailで構築したサーバに、 SSHでログインするためのキーをダウンロードするAPI • このAPI名で調べてみると以下の記事がHIT。 ReadOnlyでも、AWS Lightsailは完全にReadOnlyではない https://www.ryuzoji.com/archives/1166

Slide 74

Slide 74 text

#jawsdays #jawsdays2021 #jawsdays2021_B 74 Download DefaultKeyPair • ReadOnlyAccessポリシーのVersion47ま では、Download*の権限が付与 • 2019-04-03 04:07更新の Version48で、 権限が外された • つまり、以前はReadOnlyAccessの権限 があれば、サーバにログインできた • もしReadOnlyAccessをコピーしてカス タムのポリシーを作っている場合は、 この問題が残存している可能性がある Version 48 Version 47

Slide 75

Slide 75 text

#jawsdays #jawsdays2021 #jawsdays2021_B 75 攻撃者I • 2週間ほど日次アクセスする粘着さ • 新規IAMユーザー作成、ログインプロ ファイル更新してパスワード変更など、 やりたい放題 • ほか、S3バケット作成、EC2インスタ ンスの削除、Organizationsからの脱退 などを試みていたようだが、 SCPでブロック余裕でした

Slide 76

Slide 76 text

No content

Slide 77

Slide 77 text

#jawsdays #jawsdays2021 #jawsdays2021_B 77 SCPが完全にはいったのに・・・ • SCPの設定を見直すが、EC2の書き込みア クションは許可していない • CloudTrailの証跡ログを確認すると、 RunInstancesをコールしてEC2インスタン スを作成したIPアドレスとUserAgentが、 spotfleet.amazonaws.com • そして、RunInstancesのコールの直前で、 攻撃者によるRequestSpotFleetのコール

Slide 78

Slide 78 text

#jawsdays #jawsdays2021 #jawsdays2021_B 78 スポットインスタンス /スポットフリート • スポットインスタンスは、使用されてい ないEC2キャパシティを利用して、割安 でインスタンスを立てられるサービス • スポットフリートは、入札制で、入札価 格が現在のスポット価格を上回っている と、スポットインスタンスとしてEC2イ ンスタンスを起動できる • RequestSpotFleetは入札するAPI

Slide 79

Slide 79 text

#jawsdays #jawsdays2021 #jawsdays2021_B 79 RequestSpotFleetは PassRoleに依存 • RequestSpotFleetのコールは、 EC2の権限がなくても、IAMの 「PassRole」の権限があれば呼べる ことが判明 • PassRoleは、AWSのサービスに ロールをアタッチできる権限 • RunInstancesのコールによるインス タンス起動はEC2サービスから実行 EC2サービス (スポットフリート) RequestSpotFleetを コールして入札 iam:PassRole権限ありの IAMユーザ RunInstancesをコールして EC2インスタンス起動 (UAはspotfleet.amazonaws.com) EC2インスタンス

Slide 80

Slide 80 text

#jawsdays #jawsdays2021 #jawsdays2021_B 80 原因の考察 • SCPでアカウントにEC2インスタ ンスの作成権限を与えていなく ても、AWSのEC2サービスから は作成できたようだ • SCPで、IAMFullAccessを許可し ていたため、iam:PassRoleの権 限も与えていた メンバーアカウント PassRoleがあれば RequestSpotFleetは可能 iam:PassRole権限ありの IAMユーザ(アクセスキー) SCPの制限にかからず RunInstancesが可能 SCPの制限により RunInstances不可 マスタ―アカウント EC2サービス (スポット フリート) EC2インスタンス Organizations SCPで ReadOnlyAccessと IAMFullAccessのみ許可

Slide 81

Slide 81 text

#jawsdays #jawsdays2021 #jawsdays2021_B 81 【再掲】SCPの設定 • ReadOnlyAccess同等権限をアタッチ • 加えて、攻撃者は初手でIAMで権限確認や変更をしようとす るため、他サービスの書き込み権限さえなければIAMを触れ ても問題ないと判断しIAMFullAccess同等権限もアタッチ この判断が良くなかった

Slide 82

Slide 82 text

#jawsdays #jawsdays2021 #jawsdays2021_B 82 実験 • ReadOnlyAccessとiam:PassRoleが許可されていれば、 EC2インスタンスを作成できることを確認

Slide 83

Slide 83 text

#jawsdays #jawsdays2021 #jawsdays2021_B 83 攻撃への利用方法 • スポットフリートの入札時に、 AMI、VPC、サブネット、セキュリティグループの 指定が可能 • 任意のプログラムを自動実行させるパブリックAMIを用意し ておくことで、以下のようなことが可能 –高性能なインスタンスを起動してマイニング –C2サーバにリバースシェルを張ってVPC内に侵入

Slide 84

Slide 84 text

#jawsdays #jawsdays2021 #jawsdays2021_B 84 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス 6.脆弱性レポート 7.最後に

Slide 85

Slide 85 text

突然の国際電話

Slide 86

Slide 86 text

突然のメール

Slide 87

Slide 87 text

#jawsdays #jawsdays2021 #jawsdays2021_B 87 AWSサポートの 暫定措置 • IAMポリシー 「AWSExposedCredentialPolicy_DO_N OT_REMOVE」を作成し、漏洩したアク セスキーに紐づくIAMユーザにアタッチ • 拒否アクションが列挙された IAMポリシー { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1538161409", "Effect": "Deny", "Action": [ "iam:UpdateUser", "iam:AttachUserPolicy", "lightsail:GetInstanceAccessDetails", "organizations:InviteAccountToOrganization", "iam:AttachRolePolicy", "ec2:StartInstances", "lightsail:Delete*", "iam:CreateInstanceProfile", "iam:UpdateAccessKey", "iam:PutUserPolicy", "iam:DeleteUserPolicy", "iam:AttachGroupPolicy", "lambda:CreateFunction", "iam:CreateLoginProfile", "lightsail:Start*", "iam:CreateUser", "ec2:RunInstances", "lightsail:Create*", "lightsail:Update*", "iam:PutUserPermissionsBoundary", "iam:ChangePassword", "iam:DetachUserPolicy", "organizations:CreateAccount", "iam:PutGroupPolicy", "organizations:CreateOrganization", "iam:UpdateAccountPasswordPolicy", "iam:CreateAccessKey", "iam:CreateRole", "lightsail:DownloadDefaultKeyPair", "ec2:RequestSpotInstances" ], "Resource": [ "*" ] } ] }

Slide 88

Slide 88 text

#jawsdays #jawsdays2021 #jawsdays2021_B 88 利用者側で必要な措置 ① ルートユーザーのパスワード変更 ② 全てのアクセスキーのローテーション ③ 漏洩したアクセスキーに紐づくIAMユーザの削除 ④ 全てのリージョンのリソースをチェック ①~③が完了するまでサポートから対応状況を催促される 一定期間内に対応しないとアカウント凍結されるようだ

Slide 89

Slide 89 text

#jawsdays #jawsdays2021 #jawsdays2021_B 89 AWSCompromisedKeyQuarantine • 2020/8/12にAWS管理ポリシー 「 AWSCompromisedKeyQuarantine 」 が追加された。 • 今は、このポリシーが、侵害された IAMユーザにアタッチされる。

Slide 90

Slide 90 text

#jawsdays #jawsdays2021 #jawsdays2021_B 90 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス 6.脆弱性レポート 7.最後に

Slide 91

Slide 91 text

#jawsdays #jawsdays2021 #jawsdays2021_B 91 疑問 • EC2の権限がなくても、ス ポットフリートを入札できる のは正しいのだろうか?

Slide 92

Slide 92 text

#jawsdays #jawsdays2021 #jawsdays2021_B 92 脆弱性レポート https://aws.amazon.com/jp/security/vulnerability-reporting/

Slide 93

Slide 93 text

#jawsdays #jawsdays2021 #jawsdays2021_B 93 報告してみた

Slide 94

Slide 94 text

#jawsdays #jawsdays2021 #jawsdays2021_B 94 報告してみた

Slide 95

Slide 95 text

#jawsdays #jawsdays2021 #jawsdays2021_B 95 タイムライン(1/3) これ問題あると思うんだけど、どう?手順も送るよ。 ありがとう、受け付けしたよ 調査しているよ。5営業日以内にフォローアップするよ 詳細は教えられないけど対応する予定だよ、報告ありがとね 了解、対応完了したら教えてくれる? あとこの内容、コミュニティで共有しても良い? 問題ないよ。ただ、公開前に内容教えてくれる? 了解、できたら送るよ 2020/3/9 2020/3/16 2020/3/19 2020/3/20

Slide 96

Slide 96 text

#jawsdays #jawsdays2021 #jawsdays2021_B 96 タイムライン(2/3) インスタンスまだ起動してる?再現手順送ってくれない? インスタンスはもう消しちゃった。 手順は最初のレポートで送ったけど、もう1回送るよ もちろん。ところで、この問題っていつ直るの? 2020/4/13 ありがとう、現在も調査しているよ。5営業日以内に連絡するよ ドラフト版ありがとう また何か気付いたことあったら報告してね ドラフト版でも共有してくれない? ドラフト版の資料送るよ(このスライドの前半部分) 2020/4/17 2020/4/7 2020/4/4

Slide 97

Slide 97 text

#jawsdays #jawsdays2021 #jawsdays2021_B 97 タイムライン(3/3) • いつの間にか直っていた 2020/5/23

Slide 98

Slide 98 text

#jawsdays #jawsdays2021 #jawsdays2021_B 98 報告後、Amazonが バグバウンティプログラム開始

Slide 99

Slide 99 text

#jawsdays #jawsdays2021 #jawsdays2021_B 99 認可バイパス 最大$2,500

Slide 100

Slide 100 text

#jawsdays #jawsdays2021 #jawsdays2021_B 100 と思ったらAWSは対象外 よかった。報奨金を逃した人なんていなかったんだね・・・・

Slide 101

Slide 101 text

#jawsdays #jawsdays2021 #jawsdays2021_B 101 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス 6.脆弱性レポート 7.最後に

Slide 102

Slide 102 text

#jawsdays #jawsdays2021 #jawsdays2021_B 102 まとめ アクセスキーの 管理を徹底しよう インシデントの 発生に備えよう 脆弱性レポートを 出そう ・万が一、漏洩したら即座に使用される。 ・使用しないなら、そもそも発行しない。 ・可能であればMFAを設定する。 ・最小権限の付与も。 ・CloudTrailは全アカウント、全リージョン必須。 ・ログを分析する手順やツールを予め準備する。 ・リソース監視も大事。 ・AWS管理の機能にも抜け道や穴はありうる。 ・お客様のため、自社のため、自分のため、 AWSを使用しているみんなのため。

Slide 103

Slide 103 text

No content