[レポート]SEC405: Amazon GuardDutyおよびSageMakerによるスケーラブルで自動化された異常検出 #reinvent

re:Invent2018 SEC406のセッションレポートです。GuardDutyの検知結果をさらにSageMakerで絞り込みます。たくさん検知結果が出るような環境に有効なアプローチです。具体的な手法も紹介しています。
2018.11.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

本記事はAWSの一大イベントであるre:Inventの下記セッションについてのレポートです。

SEC 405: Scalable, Automated Anomaly Detection with Amazon GuardDuty and SageMaker

This workshop gives attendees an opportunity to develop a solution that can continuously monitor for and detect a realistic threat using Amazon GuardDuty in combination with machine learning-based AWS CloudTrail log analysis in Amazon SageMaker. Attendees learn how to perform serverless analysis of the Amazon CloudWatch Events for GuardDuty findings in AWS Lambda, load them into an ML model in Amazon SageMaker, and produce predictive alerts.

Jeff Puchalski - Senior Security Engineer Neal Rothleder - Sr. Security Architect, AWS

GuardDutyの検知結果をSageMakerを利用していい感じに異常検知する手法を紹介し、実際にワークショップとして実装するセッションでした。

レポート

このワークショップでは何をするのか

  • CloudTrailとGuardDutyのサンプルログをダウンロード
  • GuardDutyの検知内容を理解するためのデータ構造を学ぶ
  • AWSアカウントのユーザが不審なIPからアクセスが来ていることをSageMakerで確認する
  • 疑わしいアクティビティのリストを作成するために既存と新しいGuardDutyの検知結果を合わせます

登壇者から参加者への質問

  • CloudTrail使っている人 -> ほとんど
  • GuardDuty使っている人 -> ほとんど
  • SageMaker使っている人 -> 少し

構造としては次のようになります

先立ってCloudTrailについて説明します

CloudTrailはAWSサービスへの操作を記録しています。

CloudTrailのイベントには様々な情報があり、今回特に重要なのはソースIPとUser Identityです。

続いてGuardDutyについて説明します

GuardDutyはAWSアカウントに対する脅威検知のサービスです。

GuardDutyはCloudTrail、VPCフローログ、DNSログを利用してAWSアカウントで異常な動作がないか確認します。

GuardDutyで利用する脅威情報にはCrowdStrike社とProofpoint社の脅威情報も利用されています。

このワークショップでは下記のGuardDuty検知項目を利用します

UnauthorizedAccessの一つの項目を掘り下げて説明します

GuardDutyは同じ検知結果の項目の場合は優先度が同じになるため、沢山のUnauthorizedAccessがある場合には、さらにそのUser + IPがどれくらい珍しいものなのかを判断する必要があり、そういった場合にはGuardDuty + 追加のマシンラーニングが有効です

SageMakerは機械学習モデルを短期間で簡単に構築、トレーニング、デプロイできるマネージドサービスです。

IP Insights Modelは、IPv4アドレスの使用パターンを学習する教師なし学習アルゴリズムです。IPv4アドレスとユーザーIDやアカウント番号などのさまざまなエンティティ間の関連付けを取得するように設計されています。たとえば、異常なIPアドレスからアクセスしているユーザーを識別できます。

GuardDutyの検知結果と不審なIPのスコアをあわせます。

実際のワークショップに入ります。

リポジトリは下記のとおりです

やることは次のとおりです

このあと実際に上記のリポジトリに基づいて手を動かしました。

まとめ

 

GuardDutyの検知結果をさらに絞り込むワークショップでした。

GuardDutyの検知結果がいい感じになるか、オオカミ少年のようにたくさん出てしまうかはアカウントによりかなりさがありますが、後者のような環境にはこのような追加の機械学習アプローチがあると管理が楽になりそうですね。