Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ハニートークン型ハニーポットによる攻撃者の行動分析と脆弱性の発見と報告まで / AWS HoneyToken HoneyPot

Bb6c58824da6ffb4aa734173e50bb7a0?s=47 graneed
March 20, 2021

ハニートークン型ハニーポットによる攻撃者の行動分析と脆弱性の発見と報告まで / AWS HoneyToken HoneyPot

2021年3月20日のJAWS DAYS 2021で登壇した資料です。
https://jawsdays2021.jaws-ug.jp/timetable/track-b-1000/

Bb6c58824da6ffb4aa734173e50bb7a0?s=128

graneed

March 20, 2021
Tweet

Transcript

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

    3 月 2 0 日 J A W S D AY S 2 0 2 1
  2. お話ししたいことを書いたら スライドが100ページを 超えてしまいました。 あとでスライド公開しますので、 サクサク進めさせて頂きます。 ご連絡

  3. #jawsdays #jawsdays2021 #jawsdays2021_B 3 自己紹介 Kohei Isono(磯野 亘平) • 日本電気株式会社(NEC)にて、セキュア開発

    推進、脆弱性診断・ペネトレーションテスト、 インシデントレスポンス対応などに従事 (今回の発表は個人の活動です) • ハニーポットの構築・運用とCTFが趣味 https://graneed.hatenablog.com/ @graneed111
  4. #jawsdays #jawsdays2021 #jawsdays2021_B 4 今日お伝えしたいこと アクセスキーの 管理を徹底しよう インシデントの 発生に備えよう 脆弱性レポートを

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

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

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

    6.脆弱性レポート 7.最後に
  8. #jawsdays #jawsdays2021 #jawsdays2021_B 8 アクセスキーとは • AWS CLI等のツールやプログラムから AWSのサービスへのアクセスに使用 •

    IAMユーザーまたはAWSアカウントの ルートユーザーの長期的な認証情報 • アクセスキーIDと シークレットアクセスキーから構成 アクセスキー ツール AWS サービス
  9. #jawsdays #jawsdays2021 #jawsdays2021_B 9 •アクセスキーを使用していますか? •どのような権限を付与していますか? •どのような管理をしていますか? ホワイトペーパーやベストプラクティスを 見てみましょう

  10. #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
  11. #jawsdays #jawsdays2021 #jawsdays2021_B 11 IAMのセキュリティの ベストプラクティス •AWS アカウントの ルートユーザーアクセスキーをロックする •最小限の特権を認める

    •アクセスキーを共有しない •認証情報を定期的にローテーションする •不要な認証情報の削除 IAM でのセキュリティのベストプラクティス https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html
  12. #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
  13. #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
  14. #jawsdays #jawsdays2021 #jawsdays2021_B 14 守るには・守ってもらうには • ホワイトペーパーやベスト プラクティスで言われてい ることは確かに重要 •

    ただ、忙しい開発現場に必 要性を理解してもらい、腹 落ち(納得)した上で対応 してもうらためには?
  15. #jawsdays #jawsdays2021 #jawsdays2021_B 15 守るには・守ってもらうには • ドキュメントの受け売りだ けでは説明不足 • 自分で攻撃を受けてみるの

    はどうだろうか • 生の攻撃者の攻撃手法も観 測できると面白そうだ
  16. #jawsdays #jawsdays2021 #jawsdays2021_B 16 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス

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

  18. #jawsdays #jawsdays2021 #jawsdays2021_B 18 ハニーポットの分類 ハニーポット 攻撃経路 サーバ クライアント ハニー

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

    トークン 高対話 ハイブリッド 低対話 インタラクション インタラクション 検知精度 情報収集 偽装性 スケーラ ビリティ 安全性 低対話型 低 低 低 高 高 高対話型 高 高 高 低 低 コロナ社「実践サイバーセキュリティモニタリング」より 今回、採用した方式
  20. #jawsdays #jawsdays2021 #jawsdays2021_B 20 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存

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

    Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析
  22. #jawsdays #jawsdays2021 #jawsdays2021_B 22 アクセスキーを提供 • 複数の方法でアクセスキー を公開し、攻撃者に提供 • 攻撃者は、アクセスキーで

    AWS環境に侵入し、何らか の行動を実施するはず • その行動を観察する AWS サービス ②アクセスキーで 侵入、目的行動 攻撃者 ハニー ポッター ①アクセスキー を公開 ③行動内容 を観察
  23. #jawsdays #jawsdays2021 #jawsdays2021_B 23 Administrator Accessポリシー • IAMのAWS管理ポリシー • 全てのAWSのサービスを

    利用可能な最強の権限
  24. #jawsdays #jawsdays2021 #jawsdays2021_B 24 Administrator Accessポリシー • 攻撃者は、入手したアクセスキー にこのポリシーがアタッチされて いたら、勝ち確と思って目的の行

    動を始めるはず • しかし、本当に被害を被る・・・
  25. #jawsdays #jawsdays2021 #jawsdays2021_B 25 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存

    Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析
  26. #jawsdays #jawsdays2021 #jawsdays2021_B 26 AWS Organizations • 複数のAWSアカウントを統合するための アカウント管理サービス •

    Service Control Policy(SCP)で、 AWSアカウント単位で権限制御が可能 • ほか、組織内のAWSアカウントの料金の 一括請求、マネージドサービスの統合管 理も可能
  27. #jawsdays #jawsdays2021 #jawsdays2021_B 27 W-Aフレームワークでも推奨 SEC 1: ワークロードを安全に運用するには、どうすればよいですか? https://wa.aws.amazon.com/wat.question.SEC_1.ja.html

  28. #jawsdays #jawsdays2021 #jawsdays2021_B 28 マルチアカウントの構成例 • 例えば、以下の切り口でAWSアカウントを作成 –Aシステム用、Bシステム用アカウント –開発環境用、本番環境用アカウント –共通アカウント

    • 監視・監査用アカウント • ログ保全用アカウント • 共通サービス用アカウント
  29. #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
  30. #jawsdays #jawsdays2021 #jawsdays2021_B 30 JAWSDAYS2021でも • 本セッションと並行して マルチアカウントをテーマにした セッションが! (あとで見ます)

  31. #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
  32. #jawsdays #jawsdays2021 #jawsdays2021_B 32 SCPを使うと • ハニーポット用のAWSアカウントを AWS Organizationsのメンバーアカ ウントにし、マスターアカウントか

    らSCPで権限制限すれば、 AdministratorAccessポリシーがア タッチされていてもサービスを利用 できない状態に メンバーアカウント AdministratorAccess ポリシー SCPで権限がなければ サービス利用不可 マスタ―アカウント Organizations SCPで権限を制限 AWS サービス
  33. #jawsdays #jawsdays2021 #jawsdays2021_B 33 つまり? • AdministratorAccessをゲットして ウッキウキな攻撃者に攻撃を空撃ち させ、安全に観察できる •

    メンバーアカウント内の攻撃者の行 動は、すべてマスターアカウントの 掌の上!
  34. #jawsdays #jawsdays2021 #jawsdays2021_B 34 SCPの設定 • ReadOnlyAccess同等権限をアタッチ • 加えて、攻撃者は初手でIAMで権限確認や変更をしようとす るため、他サービスの書き込み権限さえなければIAMを触れ

    ても問題ないと判断しIAMFullAccess同等権限もアタッチ
  35. #jawsdays #jawsdays2021 #jawsdays2021_B 35 SCPの上限サイズ • SCPにはAWS管理ポリシーがない (FullAWSAccessだけ) • よって、IAMのReadOnlyAccessポリ

    シーの定義をコピーして作成 • ただ、SCPのサイズには 上限サイズ(5120バイト)があり、 ReadOnlyAccessポリシーが収まらない • 苦肉の策だが、 上限サイズに合わせて分割作成
  36. #jawsdays #jawsdays2021 #jawsdays2021_B 36 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存

    Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析
  37. #jawsdays #jawsdays2021 #jawsdays2021_B 37 • ユーザー、ロール、または AWS の サービスによって実行されたアク ションを記録してくれるサービス

    • 本ハニーポットの分析の要 • AWS Organizationsを使用している と、全アカウントのCloudTrailを一 括で有効化できるので便利 CloudTrail
  38. #jawsdays #jawsdays2021 #jawsdays2021_B 38 • CloudTrailからCloudWatchLogsに連携 • Slack通知する関数をLambdaで作成し、 CloudWatchLogsのサブスクリプショ ンフィルタから呼び出すよう設定

    • ただ、一度侵入されると、すぐに通知 が100件以上溜まるため、適宜、通知 条件をカスタマイズ CloudTrailとSlack連携
  39. #jawsdays #jawsdays2021 #jawsdays2021_B 39 GuardDuty • マネージドの脅威検出サービス • 料金も激安なので、お守り的に有効化して おくことが推奨されている。

    • CloudWatchEventをトリガーに Lambdaを呼び出してSlack通知
  40. #jawsdays #jawsdays2021 #jawsdays2021_B 40 ハニーポットの システム要件と実現方法 痕跡を保存できること 攻撃者を誘い込めること 安全であること CloudTrailで証跡ログ保存

    Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御 攻撃を分析できること Athenaを使用した CloudTrailの証跡ログ分析
  41. #jawsdays #jawsdays2021 #jawsdays2021_B 41 Athenaで分析 • Athenaとは、S3内のデータをSQLを 使用して簡単に分析できるサービス • CloudTrailの証跡ログを検索する

    テーブルを作成 • SQLの実行結果をCSV形式で出力で きるので、細かい分析はExcelで
  42. #jawsdays #jawsdays2021 #jawsdays2021_B 42 システム構成図

  43. #jawsdays #jawsdays2021 #jawsdays2021_B 43 システム構成図 Administrator Accessポリシー 付きのアクセスキーを提供 SCPを使用した AWSアカウントの権限制御

    CloudTrailで証跡ログ保存 Athenaを使用した CloudTrailの証跡ログ分析
  44. #jawsdays #jawsdays2021 #jawsdays2021_B 44 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス

    6.脆弱性レポート 7.最後に
  45. #jawsdays #jawsdays2021 #jawsdays2021_B 45 アクセスキーの漏洩シナリオ ①インターネット上のサービスに アクセスキーを公開 ②AMI(Amazonマシンイメージ)に アクセスキーを残したまま公開 ④トップページにアクセスキーを公開

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

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

  48. #jawsdays #jawsdays2021 #jawsdays2021_B 48 インターネット上のサービスに アクセスキーを公開 • Pastebinでキーワードで検索すると、 他者のアクセスキーがHIT・・・ •

    なお、2020年3月に検索機能は廃止 となった
  49. #jawsdays #jawsdays2021 #jawsdays2021_B 49 githubへの公開は? • githubにアクセスキーを誤って 登録してしまう事例は多い • ただ、AWS社でも監視しており、

    すぐに通知および対策指示を受 ける可能性が高いため、公開は 見送った • なお、対策しないと、リソース のブロックやAWSアカウントの 停止される可能性がある AWS からリソースに関する不正使用の報告を受け取った場合、どうすればよいですか? https://aws.amazon.com/jp/premiumsupport/knowledge-center/aws-abuse-report/
  50. #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

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

    ③インスタンスメタデータを公開
  52. #jawsdays #jawsdays2021 #jawsdays2021_B 52 AMIとは • AMIとは、EC2インスタンスを作成 するためのテンプレート • 例えば、AutoScaling構成で動的に

    インスタンス追加する際に使用 • AMIはパブリック公開可能
  53. #jawsdays #jawsdays2021 #jawsdays2021_B 53 パブリックAMIの公開 • インスタンス内に認証情報を残し た状態でAMIを作成すると、イ メージ内に認証情報が残る •

    そのAMIをパブリックに共有する • セキュリティのベストプラクティ スでも注意されている AWS セキュリティのベスト プラクティス https://d1.awsstatic.com/International/ja_JP/Whitepapers/AWS_Security_Best_Practices.pdf
  54. #jawsdays #jawsdays2021 #jawsdays2021_B 54 パブリックAMIの公開

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

    ③インスタンスメタデータを公開
  56. #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コマンドでアクセスした例
  57. #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/
  58. #jawsdays #jawsdays2021 #jawsdays2021_B 58 インスタンスメタデータを公開 • http://IPアドレス/latest/へのアクセスを、直接、 インスタンスメタデータサービスへのアクセスに転送する。 外部からのHTTPアクセス結果

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

    ③インスタンスメタデータを公開
  60. #jawsdays #jawsdays2021 #jawsdays2021_B 60 トップページにアクセスキー公開 • Webサーバのindexページにアクセスキーを公開 • 現実世界では到底あり得ないシナリオ •

    ブービートラップ 外部からのHTTPアクセス結果
  61. #jawsdays #jawsdays2021 #jawsdays2021_B 61 システム構成図 ①インターネット上のサービスに アクセスキーを公開 ②AMIに アクセスキーを残したまま公開 ③インスタンスメタデータを公開

    ④トップページに アクセスキーを公開
  62. #jawsdays #jawsdays2021 #jawsdays2021_B 62 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス

    6.脆弱性レポート 7.最後に
  63. #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インスタンスの削除
  64. #jawsdays #jawsdays2021 #jawsdays2021_B 64 攻撃者A~C • IAM、EC2、RDS、S3などの主要な サービスの情報収集をするだけ • 特に新鮮味のない退屈な行動

  65. #jawsdays #jawsdays2021 #jawsdays2021_B 65 攻撃者D • 14分間で、98サービスを対象に537 種類のAPIコール • API名がDescribe、Get、Listから始

    まる読み取り用APIのみを呼んでお り、情報収集に特化 • 少し不気味
  66. #jawsdays #jawsdays2021 #jawsdays2021_B 66 攻撃者E • Simple Email Service(SES)が、 過去24時間に送信したメールの送信数や、

    送信可能なメールの最大数を取得する APIをコール • それも6つのリージョンに1回ずつ • レピュテーションの高いEメールアドレス の有無確認や、該当AWSアカウントの利 用企業の特定をしようとしていた可能性
  67. #jawsdays #jawsdays2021 #jawsdays2021_B 67 攻撃者F • EC2インスタンスの作成、セキュリティグループにSSHポート の穴あけを要求 • インスタンスタイプはm5ad.12xlarge(5.424USD/時間)

    • UserAgentが「AWSToolkitPackage.VS2015~」なのが特徴的
  68. #jawsdays #jawsdays2021 #jawsdays2021_B 68 AWS Toolkit for Visual Studio AWS

    Toolkit for Visual Studio Demo https://www.youtube.com/watch?v=B190tcu1ERk
  69. #jawsdays #jawsdays2021 #jawsdays2021_B 69 攻撃者G • 「aws-sdk-go/1.4.10 (go1.7.4; linux; amd64)」のUserAgentか

    ら大量のAPIコール • AWS用セキュリティテストツー ル「pacu」を使用している可能 性が高い
  70. #jawsdays #jawsdays2021 #jawsdays2021_B 70 Pacuの説明とデモは JAWS DAYS 2019のセッション参照 PenTesterが知っている危ないAWS環境の共通点 https://www.slideshare.net/zaki4649/pentesteraws

  71. #jawsdays #jawsdays2021 #jawsdays2021_B 71 攻撃者H • Permissions Boundaryを設定し、 なぜか自らの権限をEC2のみに制限。 Service

    Quotasも確認していた。 • EC2に対する操作が失敗する理由に 悩み、試行錯誤していたと推察 • ほか、Lightsailサービスの DownloadDefaultKeyPairをコール
  72. #jawsdays #jawsdays2021 #jawsdays2021_B 72 Lightsail • 手軽にアプリケーションや ウェブサイトの構築ができる VPSサービス •

    自動的にネットワーキング、 アクセス、およびセキュリ ティ環境を設定
  73. #jawsdays #jawsdays2021 #jawsdays2021_B 73 DownloadDefaultKeyPair • Lightsailで構築したサーバに、 SSHでログインするためのキーをダウンロードするAPI • このAPI名で調べてみると以下の記事がHIT。

    ReadOnlyでも、AWS Lightsailは完全にReadOnlyではない https://www.ryuzoji.com/archives/1166
  74. #jawsdays #jawsdays2021 #jawsdays2021_B 74 Download DefaultKeyPair • ReadOnlyAccessポリシーのVersion47ま では、Download*の権限が付与 •

    2019-04-03 04:07更新の Version48で、 権限が外された • つまり、以前はReadOnlyAccessの権限 があれば、サーバにログインできた • もしReadOnlyAccessをコピーしてカス タムのポリシーを作っている場合は、 この問題が残存している可能性がある Version 48 Version 47
  75. #jawsdays #jawsdays2021 #jawsdays2021_B 75 攻撃者I • 2週間ほど日次アクセスする粘着さ • 新規IAMユーザー作成、ログインプロ ファイル更新してパスワード変更など、

    やりたい放題 • ほか、S3バケット作成、EC2インスタ ンスの削除、Organizationsからの脱退 などを試みていたようだが、 SCPでブロック余裕でした
  76. None
  77. #jawsdays #jawsdays2021 #jawsdays2021_B 77 SCPが完全にはいったのに・・・ • SCPの設定を見直すが、EC2の書き込みア クションは許可していない • CloudTrailの証跡ログを確認すると、

    RunInstancesをコールしてEC2インスタン スを作成したIPアドレスとUserAgentが、 spotfleet.amazonaws.com • そして、RunInstancesのコールの直前で、 攻撃者によるRequestSpotFleetのコール
  78. #jawsdays #jawsdays2021 #jawsdays2021_B 78 スポットインスタンス /スポットフリート • スポットインスタンスは、使用されてい ないEC2キャパシティを利用して、割安 でインスタンスを立てられるサービス

    • スポットフリートは、入札制で、入札価 格が現在のスポット価格を上回っている と、スポットインスタンスとしてEC2イ ンスタンスを起動できる • RequestSpotFleetは入札するAPI
  79. #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インスタンス
  80. #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のみ許可
  81. #jawsdays #jawsdays2021 #jawsdays2021_B 81 【再掲】SCPの設定 • ReadOnlyAccess同等権限をアタッチ • 加えて、攻撃者は初手でIAMで権限確認や変更をしようとす るため、他サービスの書き込み権限さえなければIAMを触れ

    ても問題ないと判断しIAMFullAccess同等権限もアタッチ この判断が良くなかった
  82. #jawsdays #jawsdays2021 #jawsdays2021_B 82 実験 • ReadOnlyAccessとiam:PassRoleが許可されていれば、 EC2インスタンスを作成できることを確認

  83. #jawsdays #jawsdays2021 #jawsdays2021_B 83 攻撃への利用方法 • スポットフリートの入札時に、 AMI、VPC、サブネット、セキュリティグループの 指定が可能 •

    任意のプログラムを自動実行させるパブリックAMIを用意し ておくことで、以下のようなことが可能 –高性能なインスタンスを起動してマイニング –C2サーバにリバースシェルを張ってVPC内に侵入
  84. #jawsdays #jawsdays2021 #jawsdays2021_B 84 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス

    6.脆弱性レポート 7.最後に
  85. 突然の国際電話

  86. 突然のメール

  87. #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": [ "*" ] } ] }
  88. #jawsdays #jawsdays2021 #jawsdays2021_B 88 利用者側で必要な措置 ① ルートユーザーのパスワード変更 ② 全てのアクセスキーのローテーション ③

    漏洩したアクセスキーに紐づくIAMユーザの削除 ④ 全てのリージョンのリソースをチェック ①~③が完了するまでサポートから対応状況を催促される 一定期間内に対応しないとアカウント凍結されるようだ
  89. #jawsdays #jawsdays2021 #jawsdays2021_B 89 AWSCompromisedKeyQuarantine • 2020/8/12にAWS管理ポリシー 「 AWSCompromisedKeyQuarantine 」

    が追加された。 • 今は、このポリシーが、侵害された IAMユーザにアタッチされる。
  90. #jawsdays #jawsdays2021 #jawsdays2021_B 90 目次 1.はじめに 2.ハニーポットの構築 3.漏洩シナリオ 4.攻撃者の行動分析 5.インシデントレスポンス

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

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

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

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

  95. #jawsdays #jawsdays2021 #jawsdays2021_B 95 タイムライン(1/3) これ問題あると思うんだけど、どう?手順も送るよ。 ありがとう、受け付けしたよ 調査しているよ。5営業日以内にフォローアップするよ 詳細は教えられないけど対応する予定だよ、報告ありがとね 了解、対応完了したら教えてくれる?

    あとこの内容、コミュニティで共有しても良い? 問題ないよ。ただ、公開前に内容教えてくれる? 了解、できたら送るよ 2020/3/9 2020/3/16 2020/3/19 2020/3/20
  96. #jawsdays #jawsdays2021 #jawsdays2021_B 96 タイムライン(2/3) インスタンスまだ起動してる?再現手順送ってくれない? インスタンスはもう消しちゃった。 手順は最初のレポートで送ったけど、もう1回送るよ もちろん。ところで、この問題っていつ直るの? 2020/4/13

    ありがとう、現在も調査しているよ。5営業日以内に連絡するよ ドラフト版ありがとう また何か気付いたことあったら報告してね ドラフト版でも共有してくれない? ドラフト版の資料送るよ(このスライドの前半部分) 2020/4/17 2020/4/7 2020/4/4
  97. #jawsdays #jawsdays2021 #jawsdays2021_B 97 タイムライン(3/3) • いつの間にか直っていた 2020/5/23

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

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

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

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

    6.脆弱性レポート 7.最後に
  102. #jawsdays #jawsdays2021 #jawsdays2021_B 102 まとめ アクセスキーの 管理を徹底しよう インシデントの 発生に備えよう 脆弱性レポートを

    出そう ・万が一、漏洩したら即座に使用される。 ・使用しないなら、そもそも発行しない。 ・可能であればMFAを設定する。 ・最小権限の付与も。 ・CloudTrailは全アカウント、全リージョン必須。 ・ログを分析する手順やツールを予め準備する。 ・リソース監視も大事。 ・AWS管理の機能にも抜け道や穴はありうる。 ・お客様のため、自社のため、自分のため、 AWSを使用しているみんなのため。
  103. None