【レポート】自動セキュリティ分析サービスGuardDutyのよくわかる解説 #reinvent # SID218
こんにちは、臼田です。
今回はre:Invent 2017で行われたSID218 - Introduction to Amazon GuardDutyについてレポートします。
自動セキュリティ分析サービスであるGuardDutyのデモや原理、具体的な活用方法について説明があり大変いい内容でした。
GuardDutyをきっちり理解したい人向けです。
レポート
- GuardDutyとは
- クラウドのために再考された脅威検知サービス
- AWSアカウントと、その内部で動作するアプリケーション・サービスを継続的に監視・保護する
- 既知・未知(ゼロデイ)の脅威を検出する
- AIとML(機械学習)を利用する
- 脅威情報(インテリジェンス)の統合
- CloudTrail、VPC Flow Logs & DNSでの動作
- 詳細で対応可能な調査結果
- 筆者コメント: 簡単に表現すると、「ログを機械学習に突っ込んで役に立つ脅威情報を使える状態で出すよ」って感じですね、たのもしい!
- クラウドのために再考された脅威検知サービス
デモ
- デモの内容
- GuardDutyの有効化
- 疑似攻撃
- 検出結果の確認
- 疑似攻撃の環境
- 踏み台を経由してRedTeam(攻撃を行う側)のKali(攻撃用のLinux OS)へアクセス
- KaliからWindowsやLinuxのインスタンスに攻撃を行う
- GuardDutyの有効化(画像は日本語で見せるため別途取得しています)
- シンプルな画面でデモすることはほとんどない
- 「GuardDutyの有効化」を押すだけ!
- 自動的にIAM Roleが作成される
- 攻撃開始
- Bastion(踏み台)を経由してKaliにssh
- デモ用のスクリプトを実行
- まずはNmapから
- ssh, http, mmccがみつかる
- 続いてSSHのブルートフォース
- HydraでWindowsにRDP
- ビットコインのマイニングを開始したり
- DNSのトンネルを利用したdataの抜き出しや
- Torを介してAWS APIをスキャンするツールをいれたり
- やりたい放題しました
- 結果確認
- まずは4つ
- 左のアイコンの色で脅威のレベルがわかる
- 赤・黄・青がそれぞれHigh, Medium, Lowとなる
- HighのリスクのものはEC2に対するSSHのブルートフォースの検知
- MediumはEC2に対するポートスキャン
- どの要素で検知したかや、スキャンされているポートなどが確認できる
- 各検知情報をJSONで出すことが可能
- 検知のイベントをトリガーにしてSlackに通知することも可能!
- 設定から「Generate sample findings」でサンプルの検出結果を出力することが可能
- 今回は時間がないのでこれを見てみる
- サンプルを確認してみる
- Torと通信したりするとこのように出てくる
動作の仕組みなどの解説
- 既知の脅威の検知
- GuardDutyは様々なソースの情報を利用する
- AWSセキュリティ
- 商用・オープンソースのフィード
- 顧客提供の脅威情報(STIX)
- 既知のマルウェア感染ホスト
- 匿名化プロキシ
- マルウェアをホストするサイトやハッカーのツール
- 暗号通貨のマイニングプールとウォレット
- 不審な悪意のある行為のキャッチオール
- GuardDutyは様々なソースの情報を利用する
- 未知の脅威の検知
- アノマリ検知
- 異常を検知するアルゴリズム
- シグネチャのシグナルを検知
- 正常値との偏差をプロファイリング
- 機械学習分析
- 大きな研究開発
- 高い技術のデータサイエンティスト
- 検出モデルを学習
- 実装の試行
- テスト・チューニング・検証
- なぜGuardDutyで検知できるのか
- AWS上の環境への攻撃フローを熟知しているから
- インスタンスのポートスキャンなどから始まり、一連の挙動がある
- これらの挙動はネットワークなどのログから確認できるため、GuardDutyで検出可能
- 検知するカテゴリタイプ
- Recon: ポートスキャンなどの偵察行動
- Unauthorized Access: ブルートフォースなどの非正規なアクセス
- Backdoor: C&Cサーバへの通信やDNSを利用したトンネルなど
- Stealth: パスワード変更やCloudTrailの無効化など
- Trojan: DGA(Domain generation algorithm: 機械的に生成されたドメイン名、ランダムな文字の長いドメイン名などは主に不正な通信を行うために利用される)へのドメインリクエストやバックドアなど
- CryptoCurrency: Bitcoin等の暗号通貨関連のDNSやマイニングプールとの通信
- どんどん検知パターンは増えている
GuardDutyの機能と活用方法
- CloudWatchイベントでトリガー生成
- CloudWatchイベントにより見つけた脅威情報をLambda経由でSlackなどに通知できる
- 先程のデモでもこれを利用している
- マルチアカウント対応
- 複数のアカウントのGuardDutyを一元管理できる
- 「アカウント 」画面の「アカウントの追加」から追加可能
- 管理したいAWSアカウントとメールアドレスを入力すると、承認メールが届く
- URLをクリックしてアカウントの追加を完了する
- AWS CLIやCloudFormationから利用可能
- APIの詳細などは上記や公式ドキュメントを参照
- 価格
- 2種類の料金が発生する
- VPC Flow Log and DNS Log Analysis
- First 500 GB / month $1.10 per GB
- Next 2000 GB / month $0.55 per GB
- Over 2500 GB / month $0.28 per GB
- AWS CloudTrail Event Analysis
- Per 1,000,000 events / month $4.40 per 1,000,000 events
- 30日間フリートライアル
- 対応範囲
- 14のリージョン(東京リージョン含む)
- 8つの言語(日本語含む)
- テクノロジーパートナー
- 検知した脅威情報を連携して、各社のソリューションと統合することができる
- シームレスに既存SIEMや監視システムで利用できる
- パートナーごとの情報詳細はこちら
実際の構成例
- 既に先行導入しているお客様での事例
- マルチアカウントのGuardDutyを一元管理
- CloudWatch イベントバスにより検出した情報をLambdaからSNSトピックとKinesis Firehoseを経由してElastic Searchに入れて、セキュリティアナリストが診断を行う
- 持ち帰って欲しいもの
- 適切な価格で利用でき、30日間無料でトライアルできる
- 単にVPCフローログを利用したIDSではなく、CloudTrail、DNS Logs、脅威情報、機械学習により優れた情報が手に入る
- これからもGuardDutyは進化していく
まとめ
GuardDutyは、例えば以下のような状況で役立ちます。
- セキュリティグループの設定が甘くて攻撃された時
- Webサイトの脆弱性を付かれてサーバを乗っ取られた時
- IAMユーザのアクセスキーが漏洩して不正に利用された時
- 上記が問題なく対策できていても、攻撃の兆候があった時
これらは、AWS ShieldやWAFよりも後ろの層の実際に侵入が起きそう・起きた後でのソリューションとなります。昨今の脅威は1層のソリューションでは完璧に防御できるとは言えないので多層防御が基本になります。
これまでは、このような状態であることを認識するためには、個別にVPCフローログやCloudTrailのログを分析したりするか、別でSIEM製品やSOCサービス等の利用する必要があり、前者は現実的ではありませんでした。
今回GuardDutyがリリースされたことで、以下のようなメリットがあります。
- SIEMやSOCの仕組みを持つことが難しい規模のサービスの場合
- 環境内部での脅威検知を行うことが可能になる
- SIEMやSOCを利用できる環境の場合
- AWS純正で、AWSに最適化されたログ検知が可能となり、SIEM、SOCとの連係コストの削減と検知率の向上
私は特に、これまでこのような脅威を検知することが難しかった環境で簡単に利用できる所が素晴らしいと感じました。
ぜひこの機能を使っていきましょう!