CloudTrail で

ログとれ∼る
Hokuto Hoshi / COOKPAD Inc.
AWS Casual Talks #2
自己紹介
自己紹介
• 星 北斗 / Hokuto Hoshi

a.k.a. カルビ生焼け王
• @kani_b / id: kani_b
• クックパッド株式会社

インフラストラクチャー部

セキュリティ担当
• 2013年度旧卒
• 社会人13ヶ月目になりました
自己紹介
• 好きなサービス:

IAM & CloudFront & CloudTrail
• ここ1週間のマイブーム:

秘密 の交換と証明書失効
• 嫌いなもの:

パスワードリスト攻撃

行儀の悪いスクレイピング
本日のお題
…の前にちょっとだけ
Heartbleed
• OpenSSL 1.0.1 のバグ
• メモリダンプをちょっとずつリモートで

取得できる (メモリガチャ)
• 主なSレアたち
• SSL サーバが持つ秘密
• 復号後の通信内容 (Session cookie とか)
AWS と Heartbleed
• かなりのマッハ対応 :+1:
• 直接リモートで攻撃を受けるところは全部潰れた

=> これ以上メモリガチャは引かれない
• ELB
• CloudFront
• EC2 上のインスタンスは自分で OpenSSL を

アップデートしましょう
AWS と Heartbleed
• さらにやるべきこと (SSL 使ってた全サービスで!)
• 新規生成した秘密 から証明書を再度作成して

入れ替え
• ELB, CloudFront ならオンラインでさくさく!
• 元々使ってた証明書を失効 (revoke)
• なりすませる可能性がある
• 忘れがちだけど確実に
AWS と Heartbleed
• ついでに CipherSuite を見なおそう
• MD5 を落としたり
• ELB に追加された PFS (Perfect Forward
Secrecy) w/ ECDHE の様子を見たり
• 検証は必要 (ブラウザ対応やパフォーマンス)
閑話休題
ある日の悩み
ログが欲しい
• 基本的に AWS はログが残らない
• けどログは欲しい
• 監査
• バージョニング
• トラブルシューティング
• etc…
• どうロギングしたものか…
• 解 (?): HTTP プロキシをはさむ
API ログの取得
HTTP Proxy
API Endpoint
HTTP Proxy…
• Proxy が落ちる = API コールできなくなる
• クラウドとは…
• HTTP の生ログパースしたくない
• クライアントに制約がかかる
• Management Console で取るの難しい。。 
(́・ω・`)
時は流れて…
Re:Invent 2013
発表
• AWS CloudTrail !!!!!
About
• AWS アカウント内での操作ログを吐いてくれる
• ログは S3 に出力
• SNS に「ログ吐いたよー」と通知をくれる
• 他アカウントのバケットにも吐ける
• ログ出力は15分くらいおき
• ログ形式は JSON
• 色々入ってる(おトク!)
• アカウント ID, IAM のユーザ名, タイムスタンプ,
コール先リージョン, 対象 API, UA, リクエストパ
ラメータ,レスポンス, Access Key ID, etc…
About
• 勝手にパースしてよしなに扱うのが基本
• AWS 側では特に何も提供されてない
• Mongo や ElasticSearch に突っ込む
• 解析してくれるサービス使うのもあり
• SumoLogic, Splunk, Stackdriver, loggly, etc…
• ログのパース、検索、サマライズがメイン
• 色々紹介されてるので今回は特に紹介しません
How to use
何が嬉しい?
• 欲しい情報ほとんど入りでログが取れる
• しかも AWS 側で!
• HTTP Proxy のようなクライアント縛りがなくなる
• 失敗の記録も取れる (監査的には重要)
but…
つらい (1)
• まだあまり対応サービスがない。。。
つらい (2)
• まだ太平洋を越えられない
なんとか日本で使う
• リージョン関係無いサービスは日本でも使える!
• IAM, STS
• US で有効化して Include global services を
enable
ex. IAM の Policy 追加
追加対象や内容も

取得できる
もっと使いたい
できれば実践的な場所で…
2014/03/15
…の前日, 3/14
AWS Game Day
Japan 2014
About Game Day
• 4行でまとめ
• チームを作り敵味方に別れる
• お互いに AWS でシステム構築
• 相手の IAM アカウントをもらい

システムを美しく壊す
• 壊されたシステムを美しく修復する
2014 の場合 (一部)
• 相手は他の会場にいるチーム (東京 vs どこか)
• 相手に渡す IAM アカウントは Power User
• リージョンは us-east
2014 の場合 (一部)
• 相手は他の会場にいるチーム (東京 vs どこか)
• 相手に渡す IAM アカウントは Power User
• リージョンは us-east
というわけで
• Game Day で CloudTrail を使ってみる
• どんな攻撃が来てもログとれ∼る!ばっちり解析!
最高便利!!!
• というわけにはいかない
Game Day と CloudTrail
• 対象サービスが狭い
• 構築に使ったサービスは EC2, VPC, SQS,
SNS, S3
• 相手に渡す IAM アカウントは Power User
• ではここでその Policy を見てみましょう
(́;ω;`)
何をされるか
http://ijin.github.io/blog/2014/03/14/aws-game-day-
japan-2014-spring/
終了後の攻撃一覧より
防御してみる
• CloudTrail を切られるのは避けられない
• テンプレートは固定
• ログだけはなんとかしたい
• 手の届かない場所に移す
• 設定を切られるのは諦める
• ログを別アカウントのバケットに吐く

(バケット名は分かるけど触れない)
(反則だったらごめんなさい)
実運用のための学び
• IAM ユーザから CloudTrail 周りの権限を取り除く
• Power User Template から抜いてほしい。。
• ログの保持方法を固める
• ログ集約用のアカウントにまとめる
• S3 versioning + MFA delete を使う

(こちらのほうがスマート?)
攻撃タイム終了後
• CloudTrail 確認 => 生きてる!!!
• もちろん中途半端に止められてた可能性はある
• 早速ログ解析
• 相手に渡した IAM User: tokyo-evil
とれ∼る!!!
わかってくること
• … SQS と SNS メインの攻撃 (́・ω・`)
• Instance が Terminate された以外は特に被害
なさそう
実際の攻撃
VPC 周りが拾えてなかった。。。
まとめ
• CloudTrail は API リクエストを

まるっとロギングしてくれ∼る
• 運用時の IAM 権限と S3 バケットの扱いに

気をつける
• まだ対応サービスが少ないので正座して待ちましょう
• まだ太平洋を渡ってないので正座して待ちましょう
One more thing…
ex. IAM の Policy 追加
追加対象や内容も

取得できる
ex. IAM の Policy 追加
追加対象や内容も

取得できる
=> 変更履歴取得に

使えそう
作ってみた
iwas
• https://github.com/kanny/iwas
どう使うか
• CloudTrail => SNS への通知設定
• SNS => SQS へ吐き出す設定
!
• CloudTrail のログパース, 管理用ディレクトリに
書き込み, git 差分管理
Demo
もうちょっとマシにして
ちゃんと公開します。。。
EOF

CloudTrail でログとれ〜る