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

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

graneed
March 20, 2021

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

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

graneed

March 20, 2021
Tweet

More Decks by graneed

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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コマンドでアクセスした例

    View Slide

  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/

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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インスタンスの削除

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  76. View Slide

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

    View Slide

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

    View Slide

  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インスタンス

    View Slide

  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のみ許可

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  85. 突然の国際電話

    View Slide

  86. 突然のメール

    View Slide

  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": [
    "*"
    ]
    }
    ]
    }

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  103. View Slide