Slide 1

Slide 1 text

[読書]AWSゲームブック 〜GuardDuty魔神と インシデント対応の旅〜 臼田佳祐 クラウド事業本部サービス開発室 ハッシュタグ: #devio2025

Slide 2

Slide 2 text

イベントハッシュタグは #devio2025 Twitterでつぶやこう! 2

Slide 3

Slide 3 text

自己紹介 3 臼田佳祐(うすだけいすけ) ・クラスメソッド株式会社 / クラウド事業本部 シニアソリューションアーキテクト セキュリティチームリーダー 2021 APN Ambassador 2024 APN AWS Top Engineers (Security) AWS Security Hero (2023~) ・CISSP ・Security-JAWS運営 ・好きなサービス: Amazon GuardDuty AWS Security Hub Amazon Detective みんなのAWS (技術評論社) Amazon GuardDuty AWS Security Hub Amazon Detective

Slide 4

Slide 4 text

セッション概要 4 あなたはこのゲームの主人公であるソリューションアーキテクト。あ る日突然現れたAmazon GuardDutyの魔神から「この世界(AWS環境) を救ってくれ!」と頼まれたあなたは、セキュリティインシデントが 発生したAWS環境の調査と対応の旅に出ます。Amazon GuardDutyの 道標に従い、AWS CloudTrailログの滝を越え、アマゾンの奥地に待ち 受ける真実にたどり着けるか…!?このセッションでは往年のゲーム ブックのように聴講者参加型で選択肢を選び、AWSのインシデント対 応に挑戦するゲームセッションです。選択により辿る運命と結末が変 化します。

Slide 5

Slide 5 text

選択肢は配布したカードで、みんなで選びます 5 ● 選択肢が出たら、私の合図 で一斉に赤青どちらかのカ ードを挙げてください ● 赤が分厚く、青は薄いカー ドです ● [任意]右手に赤(分厚い)、左 手に青(薄い)を持つとみんな 揃ってわかりやすいかも ↑赤 分厚い 右推奨 ↑青 薄い 左推奨

Slide 6

Slide 6 text

ところで「ゲームブック」って知ってる? 6 知ってる (やったことある・やったこと無いけど知 ってる含む) 知らない (聞いたことがない・概念を理解していな い)

Slide 7

Slide 7 text

ゲームブックとは 7 ● ゲームブック (Gamebook) は、読者の選択によってストーリーの展開と結 末が変わるように作られ、ゲームとして遊ばれることを目的としている本 である。「アドベンチャーゲームブック」・「アドベンチャーブック」と も呼ばれる。 by Wikipedia 私は昔にゃんたんの ゲームブックにハマってました 今は電子書籍のみ ポプラ社HPより引用 ゲームブックを題材にしようと 思った時に買ったゲームブック マイクラは子供も遊べる 伝説の城は中世ヨーロッパ風で 私は5回死にました

Slide 8

Slide 8 text

このセッションの楽しみ方 8 ● みなさんは侵害されたAWS環境を救うべく異世界から召喚されたソリュー ションアーキテクトとなり、たくさん出てくる選択肢を選びながらインシ デント対応をしてください ● ゲームブックなのでいきなりゲームオーバーになったり思わぬ選択肢が成 功に導くこともありますが、ゲームとして楽しみましょう。ただしAWSの 知識は基本的に優位に働きます ● イベント会場での本セッションは1時間という時間制限があります。残り時 間がわずかとなったら強制的にバッドエンドに突入します ● 資料はアップロードされ、いつでも1人でも遊べるようになるので、気軽に リベンジしたり、見ていない分岐を選んでみてください ※この物語はフィクションです。実際の人物・組織等とは関係なく、また 実際のAWSマネジメントコンソールと異なる場合があります

Slide 9

Slide 9 text

ウインドウ説明 9 ● これはシステムメッセージです ● 「→ 10」ならスライド10ページに移動してください ● 指示がなければ次のページに移動してください 主 上 上司だ 主人公だよ アプリチームの 同僚です ア Amazon GuardDutyの 魔神だぜ!

Slide 10

Slide 10 text

エピソード0: プロローグ

Slide 11

Slide 11 text

はじまり 11 ● これはこの物語の主人公であるあなた ● あなたはとある企業のソリューションアーキテクト ● ちょっとセキュリティに興味があり、Amazon GuardDutyを眺めるのが趣味 ● 今日も相変わらず何も検出されていない 主 今日もAmazon GuardDutyを眺めるぞ〜

Slide 12

Slide 12 text

12 主 うん?なんだかいつもと少し違うような…? 右のAmazon Qチャットのアイコンが違うぞ 主

Slide 13

Slide 13 text

チャットを開いてみよう 13 G chat 呼ばれて飛び出たぜ!! 主 なんだこりゃ?G chat? 俺はAmazon GuardDutyの 魔神だ!お前に頼みがある!

Slide 14

Slide 14 text

なにやら大変なことに 14 G chat 今こっちの世界(AWS環境)が 大変なことになってるんだぜ 主 どうやって?ってうわぁ〜〜!? ソリューションアーキテクトのお前に こっちの世界を救ってほしいんだ!

Slide 15

Slide 15 text

異世界(AWS環境)を救うための旅へ 15 ● いきなりAWSマネジメントコンソール上 に現れたAmazon GuardDutyの魔神に誘 われ、画面に吸い込まれた主人公 ● これはいったい、どうなっちゃうんだ 〜!?

Slide 16

Slide 16 text

エピソード1: 始まりと終わりのマイニング

Slide 17

Slide 17 text

異世界でのはじまり 17 ● 異世界に来たあなたは「クラウドビジネス株式会社」に 中途採用されたソリューションアーキテクトとなった ● どうやら前任のAWS担当がやめてしまって、AWSに詳し いのは主人公であるあなたしか居ない模様 ● そして、早速インシデントに巻き込まれる

Slide 18

Slide 18 text

ある月初… 18 ● 異世界転移早々に、AWS環境について何もわからないま まインシデントに巻き込まれた主人公 ● とりあえず調査を開始する 主 上 先月のAWS請求がすごいことになっているぞ!? なぜだ!? (何にもわからないけど)調べてみます

Slide 19

Slide 19 text

AWS環境概要 19 AWS環境につい て何もわからな いので近くにい たアプリチーム の同僚に聞いて みた AWS環境はこんな感じでシンプルなVPC環境です ア

Slide 20

Slide 20 text

20 Amazon GuardDutyは有効化されていなかった 主 とりあえずGuardDutyを見るか…

Slide 21

Slide 21 text

無効なAmazon GuardDuty 21 G chat 主 なんで有効化されてないの? なんでだろうなぁ〜? 主 頼むから仕事してくれ!!!

Slide 22

Slide 22 text

最初の調査、なにしよう? 22 「おそらくコインマイニングされてい る!」と勝手に推測する → 43 とりあえず原因を分析しなきゃ。まず料 金明細を確認しよう → 23

Slide 23

Slide 23 text

料金明細を確認したらEC2の料金がヤバい! 23 「やっぱりコインマイニン グされている!」と推測す る → 43 AutoScalingの設定ミスで 増えているのかも?EC2の 一覧を確認しよう→ 24

Slide 24

Slide 24 text

EC2は全て名前がなく、アイルランドに乱立 24 「間違いなくコインマイニ ングだ」と推測する → 43 誰が起動したのか確認しな ければ。AWS Configから 変更履歴を確認しよう→ 25

Slide 25

Slide 25 text

AWS Configは無効だ。なんてこったい! 25 とりあえずコインマイニン グと判断して対処する → 43 AWS CloudTrailからAPI実 行履歴を調べよう→ 26

Slide 26

Slide 26 text

AWS CloudTrailのイベント履歴を開いた 26 イベント履歴のフィルター を活用 → 28 Athenaテーブルを作成ボ タンがある、やってみよう → 27

Slide 27

Slide 27 text

ログが存在しない 27 イベント履歴の フィルターを活 用 → 28 まさかTrailのログ も存在しないとは 主

Slide 28

Slide 28 text

フィルターを利用する、何で絞ろう 28 イベント名: CreateInstanceで絞る→ 29 イベント名: RunInstancesで絞る → 30

Slide 29

Slide 29 text

結果が出ない、どうしよう 29 ※CreateInstanceは OpsWorksやConnectなど で使われます イベント名: RunInstancesで絞る → 30

Slide 30

Slide 30 text

結果が出ない、他のパラメータを使う? 30 リージョンを確認する → 37 とりあえずフィルターなし にする → 31

Slide 31

Slide 31 text

色々ログがある、どうしよう? 31

Slide 32

Slide 32 text

色々ログがある、どうしよう? 32 ページを送りながらめぼし いログを探す → 33 とりあえず1つ開いて中身 を見てみる → 34

Slide 33

Slide 33 text

気がついたら100ページを越えていた… 33 最初に戻る → 22 目が疲れて 寝落ちしたorz 主

Slide 34

Slide 34 text

ログ詳細を開いてみた 34

Slide 35

Slide 35 text

ログ詳細を開いてみた - ちょっとアップ 35

Slide 36

Slide 36 text

Trailの詳細ログ、どこに注目する? 36 userIdentity → 39 userIdentity以外 → 38

Slide 37

Slide 37 text

リージョンがシドニーになっていた! 37 リージョンを変え て確認 → 40 いつの間にかシドニ ーになっているの、 たまにあるよね 主

Slide 38

Slide 38 text

リージョンがシドニーになっていた! 38 リージョンを変え て確認 → 40 いつの間にかシドニ ーになっているの、 たまにあるよね 主

Slide 39

Slide 39 text

userIdentityとにらめっこしたがなにもわからない 39 最初に戻る → 22 考えてたら 寝落ちしてたorz 主

Slide 40

Slide 40 text

リージョンを変えるとRunInstancesが大量に! 40

Slide 41

Slide 41 text

Trailログ詳細を確認し使われたアクセスキーを確認 41

Slide 42

Slide 42 text

利用されたIAMの情報を特定した 42 [情報]不正に利用されたIAM をゲットした

Slide 43

Slide 43 text

不正の心当たりを同僚に聞いてみた 43 主 そりゃだめだ〜 実は先月頭によくわからずアクセスキーを作って GitHubにコミットしてしまいました! ア 1時間ぐらいでダメだって気がついてGitHubから削除 したんですが… ア

Slide 44

Slide 44 text

魔神の提案 44 G chat いい方法があるぜ 主 いきなり出てきてなんだ? 実はこのGチャットは過去に干渉で きるんだぜ

Slide 45

Slide 45 text

魔神の提案 45 G chat 主 過去に干渉…だと!? 使用には色々条件はあるがな 今回は発動できるぜ! 主 条件とは?

Slide 46

Slide 46 text

魔神の提案 46 G chat インシデントの要因を特定したらお k 主 俺が…観測者…!? あとはお前という観測者がいれば 俺のこの力が発動できるぜ

Slide 47

Slide 47 text

魔神の提案 47 G chat だからお前をこの世界に呼んだのだ ぜ 主 どうやって過去に干渉できる? このGチャットから指示を出せるぜ

Slide 48

Slide 48 text

魔神の提案 48 G chat 例えば「Amazon GuardDuty を有効化しろ」とかな 主 悪は…アクセスキーだ… それで、何を変えたい?

Slide 49

Slide 49 text

魔神の提案 49 G chat ? 主 アクセスキーを撲滅する そうすればこの被害もなくなるはず つまりアクセスキー禁止令だな?

Slide 50

Slide 50 text

魔神の提案 50 G chat アクセスキー禁止令を出したら過去 が変わる 主 ああ、理解した 次の瞬間には影響を受けた世界に 移動するぜ

Slide 51

Slide 51 text

最初の重要な選択 51 G chat それじゃあやるか? [過去改変]アクセスキー禁止令を発 令する→ 53 いや、もっと他の解決策を試すべき だ → 52

Slide 52

Slide 52 text

他の解決策を探して対応が遅れ倒産した 52 1つ前に戻る → 51 過去を変えるしか 無いんだ… 主 重要なお知らせ:事業終了および破産手続き開始について 平素より弊社サービスをご利用いただき、誠にありがとうご ざいます。 2025年9月に発生したセキュリティインシデントへの対応遅 延により、お客様の重要なデータが流出し、甚大な被害を及 ぼす結果となりました。 この度、事業継続が困難と判断したため、破産手続きを開始 することとなりました。 ご利用いただいた全てのお客様に、心よりお詫び申し上げま す。

Slide 53

Slide 53 text

禁止令のその先へ 53 次のエピソードへ → 55 G chat 主 アクセスキー禁止令を過去に発行 する 受理したぜ。世界線移動に備えろ 主 どうなるんだ?うぐっ、ぁああ!

Slide 54

Slide 54 text

禁止令のその先へ 54 次のエピソードへ → 55

Slide 55

Slide 55 text

エピソード2: 不正工作のブラックアウト

Slide 56

Slide 56 text

禁止令のその先は 56 G chat 主 うぅ…世界が歪んだようで軽くめま いがした… これが世界線移動だぜ それより影響を確認してくれ 主 聞いてみよう

Slide 57

Slide 57 text

上司の反応は… 57 ● 世界線移動でどうやらコインマイニングはなくなったよ うだが、今度はアプリが動かないらしい 主 上 アプリが動かなくなっている?顧客からクレームだ! どうなっているんだ!?すぐに調査してくれ!! (何にもわからないけど)調べてみます

Slide 58

Slide 58 text

インシデントの要因 58 G chat 主 なんで違うインシデントが発生して いるの!? 過去改変は諸刃の剣 影響は俺にも読めないぜ☆ミ 主 それを先に言ってよ〜!!

Slide 59

Slide 59 text

魔神のレコメンド 59 G chat まあだから慎重にやろうぜ 主 釈然としないが仕方ないな… 次からはもっと深く調査してから 過去に干渉することを推奨するぜ

Slide 60

Slide 60 text

アクセスキーの状況 60 G chat ちなみにアクセスキーはちゃんと撲 滅できてるぜ 主 ならなんでインシデント起きてるんだ …? それは調べてクレメンス

Slide 61

Slide 61 text

アプリ概要 61 ● アプリについても近くにいたアプリチームの同僚に聞いてみた ○ アプリ名: StockGuardian ○ アプリ概要: SaaS型資産管理ツール ○ アプリターゲット: 中小企業 ○ 機能 ■ ログイン機能 ■ 資産登録・管理機能 ■ 資産画像アップロード機能 ■ 月次レポート作成機能 アプリはこんな感じのサービスです ア

Slide 62

Slide 62 text

アプリの実画面 - ダッシュボード 62 ダッシュボードは特に問題ありません ア

Slide 63

Slide 63 text

アプリの実画面 - 資産一覧 63 資産一覧は表示できるのですが 画像が表示されません。保存先はS3です。 ア

Slide 64

Slide 64 text

アプリの実画面 - その他の機能 64 ログイン・資産登録・レポート一覧など その他の機能も特に問題ありません ア

Slide 65

Slide 65 text

AWSアーキテクチャ上での問題箇所 65 問題になっているのはこのS3バケットですね ア

Slide 66

Slide 66 text

役割分担を決める 66 主 わかったよ〜 実はAWS関連はあんまりわかってなくて、 前任のAWS担当に結構丸投げしてました… ア とりあえず私はアプリの調査をしますが、S3周りの調 査をお願いしていいですか? ア

Slide 67

Slide 67 text

世界線変動後最初の調査、なにしよう? 67 AWS側を見る前にアプリのログから当た りをつけよう → 68 一旦AWS側の状態を確認しよう → 72

Slide 68

Slide 68 text

アプリのどこを確認しよう? 68 サーバー側のエラーを確認 → 69 クライアント側を操作して確認 → 70

Slide 69

Slide 69 text

アプリの該当箇所ログを教えてもらった 69 CloudWatchで確認し てもそれらしいログは なかった クライアント側を確認 → 70

Slide 70

Slide 70 text

クライアント側の動作確認 70 S3の静的ウェブサイトホスティングで 400 Bad Requestとなっている [情報] 画像は400エラー をゲット

Slide 71

Slide 71 text

クライアント側のログ 71 主 なるほど RUMってなんですか…? ア 主 RUMとか顧客側で実際に発生しているエラ ーログとか見れたりする? AWS側を確認しよう → 72

Slide 72

Slide 72 text

AWSのどこを確認しよう? 72 AWS CloudTrailログからS3のエラーを確 認する → 73 S3バケットの状態を見に行く → 80

Slide 73

Slide 73 text

AWS CloudTrailでどうログを確認しよう? 73 イベント履歴のフィルター を活用 → 74 証跡設定を確認する → 79

Slide 74

Slide 74 text

フィルターをどう絞ろう? 74 イベント名: GetObjects → 75 イベントソース: s3 → 78

Slide 75

Slide 75 text

GetObjectsは何も出なかった 75 他のイベント名で調べる → 76 CloudTrailログの確認を諦 める → 77

Slide 76

Slide 76 text

他のイベント名も調べたがログはない 76 エピソード2の最初に戻る → 67 PutObject/ListObject、いろんなS3のアクショ ンを試してみたけど全然でてこないし候補もでない 気がついたら寝落ちしたorz 主

Slide 77

Slide 77 text

ログの確認を諦めてS3のログについて調べてみた 77 S3バケットの状態を確認しよう → 80 S3オブジェクト操作など はデータイベントと言うら しい 明示的に出力設定しな いと記録されないのか そして設定は無かった 主

Slide 78

Slide 78 text

s3.amazonaws.comでいろんなログが出た 78 エピソード2の最初に戻る → 67 いっぱいあるけど 有用なログは見当 たらない 気がついたら寝落 ちしたorz 主

Slide 79

Slide 79 text

証跡設定でデータイベントの状態を確認 79 S3バケットの状態を確認しよう → 80 S3オブジェクト操作などのデータイベントは明示的に 出力設定しないと記録されない 主

Slide 80

Slide 80 text

S3バケットで何を確認しよう 80 オブジェクトの一覧を確認 する → 81 バケットの設定を確認する → 96

Slide 81

Slide 81 text

オブジェクトはたくさんあるがどうしよう 81 適当に1ファイル開く → 82 最終更新日時でソートして 新しいファイルを開く → 86

Slide 82

Slide 82 text

適当に開いたらInvalidRequestエラーになった 82 どうやらSSE(Server Side Encryption)の問 題らしい 主

Slide 83

Slide 83 text

SSEのエラーが出たので何を確認しよう 83 S3バケットの設定を確認する → 96 オブジェクトのプロパティの詳細を確認 する → 84

Slide 84

Slide 84 text

オブジェクトのプロパティの詳細でエラーが 84 SSE-Cってなんだ? 主

Slide 85

Slide 85 text

SSE-Cを調べてみた 85 [情報]SSE-Cで暗号化された オブジェクト をゲット アプリ担当に確認しよう → 117 クライアントの鍵で暗号化するの か 鍵は保存されないので自分たちで 持っておく必要があるらしい 主

Slide 86

Slide 86 text

最新のファイルを開いたら正常に画像が確認できた 86 次のオブジェクトを開く → 87 S3バケットの権限を確認す る → 97 障害は部分的なのかな? 主

Slide 87

Slide 87 text

次のオブジェクトも正常に画像が確認できた 87 さらに次のオブジェクトを 開く → 88 S3バケットの権限を確認す る → 97 これも正常だな 主

Slide 88

Slide 88 text

さらに次のオブジェクトも正常 88 10個ぐらい順番にオブジェ クトを開く → 89 S3バケットの権限を確認す る → 97 こっちも正常だな 主

Slide 89

Slide 89 text

いくら確認しても正常なオブジェクトが並んでいた 89 すべてのオブジェクトを確 認するんだ! → 90 ソートを変えて確認してみ よう → 91 AWS側は正常なのかな? 主

Slide 90

Slide 90 text

すべてのオブジェクトを確認した 90 エピソード2の最初に戻る → 67 すべてを確認できたが 何回朝を迎えたかわからない… そして会社は倒産してた 主

Slide 91

Slide 91 text

ソートを名前順にしてみる 91 Aから調べる → 90 Zから調べる → 92 どうやら命名は顧客の組織名 -資産名となっているようだ 主

Slide 92

Slide 92 text

ソートを逆順にしてみた 92 主 1つだけtxtファイルがある 「warning.txt」? 怪しいな

Slide 93

Slide 93 text

怪しいファイル、どうする? 93 開く→ 94 開かない → 95

Slide 94

Slide 94 text

開いてみた 94 主 脅迫文だ!! [情報] warning.txtが置 かれていた をゲット アプリ担当に確認しよう → 120

Slide 95

Slide 95 text

開かないことにした 95 オブジェクトは埒が明かなそうなので S3バケットの設定を確認 → 96 主 まあ間違えてファイル置いちゃうこともあるよね

Slide 96

Slide 96 text

S3バケットの設定を見ていこう 96 プロパティタブを開く → 97 アクセス許可タブを開く → 113

Slide 97

Slide 97 text

プロパティタブを順に見ていく 97 主 バージョニング デフォルトの暗号化 サーバーアクセスログ 静的ウェブサイトホスティング の4設定を順に見ていく

Slide 98

Slide 98 text

バージョニング設定 98 主 バージョニングは有効だ

Slide 99

Slide 99 text

デフォルトの暗号化設定 99 主 SSE-S3になっている

Slide 100

Slide 100 text

サーバーアクセスのログ記録設定 100 主 無効か…

Slide 101

Slide 101 text

静的ウェブサイトホスティング設定 101 主 静的ウェブサイトホスティングで 画像を配信していると

Slide 102

Slide 102 text

プロパティタブで追加調査は必要? 102 必要 → 103 いらない → 80

Slide 103

Slide 103 text

プロパティタブの追加調査、どこみる? 103 前半(バージョニング・デフォルトの暗号 化) → 104 後半(サーバーアクセスログ・静的ウェブ サイトホスティング) → 108

Slide 104

Slide 104 text

前半のどこみる? 104 バージョニング→ 105 デフォルトの暗号化 → 107

Slide 105

Slide 105 text

バージョニング設定に注目 105 主 バージョニングがあるので データを復旧できるかも? オブジェクトのバージョンを確認 → 106 確認しない → 102

Slide 106

Slide 106 text

過去バージョンがあるので復旧できそう 106 [情報]オブジェクトの過去バージョンあり をゲット オブジェクト側を調査してみよう → 81 主 復旧手法候補と して覚えておこう

Slide 107

Slide 107 text

デフォルトの暗号化設定に注目 107 主 これは意図した設定? はい。デフォルトのままですね SSE-KMSなどは使っていません。 ア 他の追加調査をする?→ 102

Slide 108

Slide 108 text

後半のどこみる? 108 サーバーアクセスログ → 109 静的ウェブサイトホスティング → 110

Slide 109

Slide 109 text

サーバーアクセスのログ記録設定に注目 109 主 有効化されてないねぇ 有効化されてたらいろいろわかったのになー 他の追加調査をする?→ 102

Slide 110

Slide 110 text

静的ウェブサイトホスティング設定に注目 110 主 顧客ごと資産の画像データが 公開されているのね

Slide 111

Slide 111 text

静的ウェブサイトホスティング設定に注目 111 主 そもそも顧客ごとプライベートな データなのにこの設定は良くな いのでは…? 危険なので無効化する → 112 流石に今変更はまずいので保留する → 102

Slide 112

Slide 112 text

静的ウェブサイトホスティングを無効化した 112 しかしアプリはより破壊さ れた エピソード2の最初に戻る → 67 危険な設定は禁止だ!! 主

Slide 113

Slide 113 text

アクセス許可タブを順に見ていく 113 主 ブロックパブリックアクセス バケットポリシー の2設定を順に見ていく

Slide 114

Slide 114 text

ブロックパブリックアクセス設定 114 主 ブロックパブリックアクセスはオフだ

Slide 115

Slide 115 text

バケットポリシー設定 115 主 バケットポリシーは 静的ウェブサイトホスティン グのための公開設定だ

Slide 116

Slide 116 text

アクセス許可タブを見た 116 主 特に気になる設定は無かったな 他の調査をする→ 72

Slide 117

Slide 117 text

SSE-Cの設定をアプリ担当に聞いてみた 117 主 ならなんでや? それは全く知りませんね。アプリではやってないはず ア 主 S3のオブジェクトがSSE-Cで暗号化されて たけどなんで?

Slide 118

Slide 118 text

SSE-Cの設定をアプリ担当に聞いてみた 118 確かに、SSE-Cが設定されたオブジェクトは開けない ですね アップロードし直したオブジェクトは開けるので、時間 制限的なバグがあるのかと調査していました ア でもどうしてSSE-Cが設定されているんでしょうね? あれ?バケットになんだか見覚えのない warning.txtなるファイルがあります ア

Slide 119

Slide 119 text

開いてみた 119 主 脅迫文だ!! ランサムウェアについて調査 → 122 ランサムウェアと いうやつですか? ア

Slide 120

Slide 120 text

warning.txtについて担当に聞いてみた 120 主 流石にそうか それは全く知りませんね。私はやっていません! ア 主 なんだかS3バケットに脅迫文が置いてあっ たけど、やった?

Slide 121

Slide 121 text

warning.txtについて担当に聞いてみた 121 SSE-Cで暗号化したって書いてありますね 確かに、S3でオブジェクトの詳細を見るとSSE-Cに 関するエラーが出ますね ランサムウェアというやつですか? ア ランサムウェアについて調査 → 122

Slide 122

Slide 122 text

ランサムウェアについて調べた 122 S3ランサムウェア というらしい AWSブログでも 解説と注意喚起 が出ていた 主

Slide 123

Slide 123 text

S3ランサムウェアの侵入経路 123 しかし攻撃 にはIAM権 限が必要だ どこから侵 入したん だ? 主 こんな時頼りたいのは…

Slide 124

Slide 124 text

頼りたい、Amazon GuardDuty 124 G chat 主 お〜い! もしかして、呼んだ? 主 いま一番頼りたいよ!

Slide 125

Slide 125 text

頼りたい、Amazon GuardDuty 125 G chat なるほど、事情はわかった 主 過去に干渉してAmazon GuardDutyを有効化してよ! おけまる水産

Slide 126

Slide 126 text

頼りたい、Amazon GuardDuty 126 G chat 今回は条件を満たしているぜ 主 なんとかなりそうだな S3ランサムウェアによる攻撃を受け たという要因が判明しているからな

Slide 127

Slide 127 text

来い、Amazon GuardDuty 127 G chat それじゃあやるか? [過去改変]Amazon GuardDutyを 有効化する → 129 いや、まだ他にいいアプローチがあ るはず → 128

Slide 128

Slide 128 text

他のアプローチを探して対応が遅れ倒産した 128 1つ前に戻る → 127 Amazon GuardDutyの無 い世界なんて考え られない 主 重要なお知らせ:事業終了および破産手続き開始について 平素より弊社サービスをご利用いただき、誠にありがとうご ざいます。 2025年9月に発生したセキュリティインシデントへの対応遅 延により、お客様の重要なデータが流出し、甚大な被害を及 ぼす結果となりました。 この度、事業継続が困難と判断したため、破産手続きを開始 することとなりました。 ご利用いただいた全てのお客様に、心よりお詫び申し上げま す。

Slide 129

Slide 129 text

来い、Amazon GuardDuty 129 次のエピソードへ → 131 G chat 主 Amazon GuardDutyを過去で 有効化する 受理したぜ。世界線移動に備えろ 主 またあれか!?うぐっ、ぁああ!

Slide 130

Slide 130 text

来い、Amazon GuardDuty 130 次のエピソードへ → 131

Slide 131

Slide 131 text

エピソード3: 不正工作のイントルージョン

Slide 132

Slide 132 text

来てくれたのか…? 132 G chat 主 うぅ…この世界が歪む感覚は慣れ ないな… ちゃんと世界線移動したぜ 影響を確認してくれ 主 よし、確認しよう

Slide 133

Slide 133 text

完 全 勝 利 133 主 やった〜!!!

Slide 134

Slide 134 text

いくつか検出があるが一番大事そうなやつを確認 134 Unauthoriz edAccess:I AMUser/Ins tanceCrede ntialExfiltra tion.Outside AWSだ 主

Slide 135

Slide 135 text

InstanceCredentialExfiltration.OutsideAWSとは 135 EC2のIAM Roleで利用し ているクレデンシ ャルがなぜか AWSの外側か ら利用されてい る 主

Slide 136

Slide 136 text

InstanceCredentialExfiltration.OutsideAWSとは 136 つまりEC2の中 の権限を取得 されている 問題はその攻 撃の経路はどこ にあるのだろ う? 主

Slide 137

Slide 137 text

まずGuardDuty Findingsからわかること 137 送信元IPは 98.xxx.xxx. xxx 攻撃タイミング は10/06の2 時頃 主

Slide 138

Slide 138 text

まずGuardDuty Findingsからわかること 138 IAM Roleやイン スタンスも特定 Amazon Linux のEC2だな 主

Slide 139

Slide 139 text

まずGuardDuty Findingsからわかること 139 S3の GetObject などの操作 がされていて 送信元は メキシコね 主

Slide 140

Slide 140 text

魔神の気遣い 140 G chat そういえば、過去改変ついでにS3 のデータログも設定しといたぜ 主 まじかよ!ネ申だな 魔神だがな

Slide 141

Slide 141 text

調査方針を立てる 141 最低限確認したいのは • 利用された攻撃(アプリの脆弱性等) • 攻撃に対する対策方法 追加で確認したいのは • 確認できていない他の影響があるか • 他の問題になりそうな脆弱性があるか 主

Slide 142

Slide 142 text

攻撃の調査、なにしよう? 142 GuardDutyの情報を元にアプリのログを 確認しよう → 143 AWS側のログを確認しよう → 166

Slide 143

Slide 143 text

アプリログ、何で絞ろう 143 GuardDutyで検出した攻撃の送信元IP → 144 その他のIP → 158

Slide 144

Slide 144 text

送信元IPで絞ったけどいろんなアクセスがある 144 パスで絞る → 145 その他のIPを検討する→ 158 色々試行錯誤しているな 主

Slide 145

Slide 145 text

パスを理解するためにアプリの機能説明 145 ログイン・資産登録はユーザー入力があるので攻撃さ れる場所かも ア

Slide 146

Slide 146 text

どのパスのログを確認しよう 146 ログインページのログ → 147 資産登録ページのログ → 152

Slide 147

Slide 147 text

アプリのログイン機能 147 ログインページは 組織ID・ユーザー名・パスワード が入力されます サービス拡大のため無料トライアル の登録フォームもあります ア

Slide 148

Slide 148 text

ログインページのログを確認する? 148 ログインページのログ → 149 無料トライアルが気になる → 150

Slide 149

Slide 149 text

ログインページのログにも試行錯誤の跡が 149 他のログを確認しよう→ 142 とはいえ不正なログインなど は成功していなさそう 主

Slide 150

Slide 150 text

無料トライアル機能 150 無料トライアルは 組織ID・組織名・氏名・ メールアドレス・パスワー ドが入力されます 組織IDはユーザーが指 定可能です ア

Slide 151

Slide 151 text

無料トライアルのログにも試行錯誤の跡が 151 他のログを確認しよう→ 142 存在している組織IDを調べ たりしている そもそも資産管理のサービス をパブリックなユーザー登録 するのはリスクでは? 主

Slide 152

Slide 152 text

アプリの資産登録機能 152 資産登録は資産ID・カテゴリ・名称・型番・シリアル 番号・メーカーなど資産自体の情報や管理者の情報 などが入ります ア

Slide 153

Slide 153 text

アプリの資産登録機能 153 資産の画像をアップロードする機能と、アップ ロードの代わりにURLを指定して取得する機 能があります ア

Slide 154

Slide 154 text

URL指定機能が悪用されている 154 ここにインスタンスメタデータを入力してサーバー サイドリクエストフォージェリー(SSRF)攻撃がさ れている 主

Slide 155

Slide 155 text

実際にやってみた 155 ここにインスタンスメタデータを入力してサーバーサイドリ クエストフォージェリー(SSRF)攻撃がされている 主

Slide 156

Slide 156 text

クレデンシャル取れちゃった 156 これはあかんやつでした 主

Slide 157

Slide 157 text

脆弱性の特定 157 [情報]アプリのSSRF脆弱性 をゲットした 調査完了確認 → 170

Slide 158

Slide 158 text

その他のIP、何を見る? 158 127からはじまるIP → 159 169からはじまるIP → 162

Slide 159

Slide 159 text

127からはじまるIP 159 127.0.0.1 → 160 127.0.0.53 → 161

Slide 160

Slide 160 text

127.0.0.1 160 127.0.0.1は何も見つからなかった エピソード3の最初へ → 142

Slide 161

Slide 161 text

127.0.0.53 161 127.0.0.53は何も見つからなかった エピソード3の最初へ → 142

Slide 162

Slide 162 text

169からはじまるIP 162 169.254.169.253 → 163 169.254.169.254 → 164

Slide 163

Slide 163 text

169.254.169.253 163 169.254.169.253は何も見つからなかっ た エピソード3の最初へ → 142

Slide 164

Slide 164 text

169.254.169.254 164 メタデータに対してアクセスされている これはEC2上のクレデンシャルが抜かれている 主

Slide 165

Slide 165 text

アプリの資産登録機能 165 そのログの機能は、画像のアップロードの代わ りにURLを指定して取得する機能です ア 動作を確認する → 154

Slide 166

Slide 166 text

AWS環境、何を確認しよう 166 S3データログ → 167 EC2の設定 → 169

Slide 167

Slide 167 text

AthenaでS3データログを見ていく 167 主 見える… 見えるぞ! 攻撃者が実 行したAPI 全数もわか る

Slide 168

Slide 168 text

SSE-Cで上書きされた回数 168 主 SSE-Cで暗号化さ れた回数が特定で きた [情報]影響のあった範囲 をゲットした 他の調査を継続する → 142

Slide 169

Slide 169 text

EC2のIMDS設定 169 主 IMDS設定がv1 も許可されている [情報]IMDSv1が有効 をゲットした 調査完了確認 → 170

Slide 170

Slide 170 text

調査完了確認 170 下記2つは見つかった? ● アプリの脆弱性 ● AWS上での対策方法 見つかっている → 171 見つかっていないので調査再開 → 142

Slide 171

Slide 171 text

調査結果 171 アプリにSSRF の脆弱性があり、 IMDSv1が許 可されていたの が攻撃が成功 した要因 主 SSRFの 脆弱性 IMDSv1有効

Slide 172

Slide 172 text

対応をしていく 172 主 わかったよ〜 わかりました!IMDSの設定変更お願いします ア 主 SSRFの脆弱性の対応おねがいね

Slide 173

Slide 173 text

脆弱性の要因 173 主 ん? そもそも開発スケジュールが多く遅れて対応しきれない ことが多くなったんですよね しばらく前にAWSのアクセスキーが使えなくなって開 発速度が大幅に落ちちゃったので ア 主 しかし、どうしてこんな脆弱性を作り込んでし まったのか

Slide 174

Slide 174 text

まさに諸刃の剣 174 G chat どうやらアクセスキー禁止令が裏目 に出たようだぜ 主 アクセスキーを撲滅するのは大事だ が撲滅するだけはだめか… 現場を犠牲にしてはならない

Slide 175

Slide 175 text

前の世界線を目指すか 175 G chat アクセスキー禁止令を取り消すか? 主 今ならGuardDutyを有効化した 状態で戻れるか? それはおそらく大丈夫だぜ

Slide 176

Slide 176 text

両方やらなきゃいけない 176 G chat 主 アプリ側の開発を強化した上でセキ ュリティも強化する アクセスキーは諦めるのか? 主 ついでに別のアクセスキー撲滅方 法も模索しよう

Slide 177

Slide 177 text

前の世界線へ 177 G chat それじゃあやるか? [過去改変]アクセスキー禁止令を取 り消す → 179 どんな事があってもこのアクセスキ ー禁止令は解かない → 178

Slide 178

Slide 178 text

アプリの対応速度があがらず倒産した 178 1つ前に戻る → 177 過去を取り消すし か無いんだ… 主 重要なお知らせ:事業終了および破産手続き開始について 平素より弊社サービスをご利用いただき、誠にありがとうご ざいます。 2025年9月に発生したセキュリティインシデントへの対応遅 延により、お客様の重要なデータが流出し、甚大な被害を及 ぼす結果となりました。 この度、事業継続が困難と判断したため、破産手続きを開始 することとなりました。 ご利用いただいた全てのお客様に、心よりお詫び申し上げま す。

Slide 179

Slide 179 text

前の世界線へ 179 次のエピソードへ → 55 G chat 主 過去のアクセスキー禁止令を取り 消す 受理したぜ。世界線移動に備えろ 主 これで最後かな。うぐっ、ぁああ!

Slide 180

Slide 180 text

体験版終了のお知らせ 180 ● 体験版のお話はここまでです。 ● つづきは製品版でお楽しみください。 制作が間に合わなかった作者のせいだぜ 正直すまんかった エンディングへ → 182

Slide 181

Slide 181 text

[タイムアップ]体験版終了のお知らせ 181 ● 体験版のお話はここまでです。 ● つづきは製品版でお楽しみください。 時間切れだぜ 製品版を遊びたければアンケート回答にす るんだぜ エンディングへ → 182

Slide 182

Slide 182 text

バッドエンド: 時間閉鎖のウロボロス

Slide 183

Slide 183 text

準備が何も無い苦行 183 ● 実際のインシデント対応でも、事前の準備が されていなくて対応が難しいことが多い ● ログの保存、セキュリティサービスの有効化、 セキュアな設定などなど、今すぐやる必要が あるし継続する必要がある リアルな過去は変えられないんだぜ

Slide 184

Slide 184 text

AWSセキュリティを学ぼう 184 常にAWSのセキュリティを学び AWS以外のセキュリティも学び 時間やコストの制約に負けずに がんばろう

Slide 185

Slide 185 text

シナリオ解説

Slide 186

Slide 186 text

アルファ世界線 186 ● 最初の世界線移動を経てたどり着いたアルファ世界線では、S3ランサムウ ェアの被害を受ける ● これはアクセスキー禁止令により開発速度が大幅に低下した反動で、アプ リの脆弱性がたくさん生まれている状況だ(ホントは他にも色々隠れている) ● 今回はSSRFの脆弱性がアプリにあることによりS3ランサムウェアの被害に あったが、実際にはアクセスキーの漏洩でも同様にS3ランサムウェアの被 害に合う ● S3にある資産に価値があればあるほど、単純な漏洩ではなくS3ランサムウ ェアの被害影響は大きくなる ● 最小権限の原則を意識しつつ、アプリ等権限を利用できるものもしっかり 守る必要がある

Slide 187

Slide 187 text

ベータ世界線 187 ● 主人公が召喚された世界線及び、アクセスキー禁止令を取り消して戻って いく世界線では、コインマイニングの被害を受けている ● 本当はもっといろんな展開をしていく予定だったが、体験版ではここまで ● 熱量があれば、ちゃんと続きが出るかも? ● ハッピーエンドはそれまでお預け

Slide 188

Slide 188 text

No content