Security HubのInsightとFindingsを深掘りしてみた #reinvent

こんにちは、臼田です。

re:Intent2018で発表された新しいセキュリティサービスのSecurity Hubをもう少し深く理解するためにInsightとFindingsについて調査しました。

Security Hubについては下記をご参照ください。

[速報]セキュリティ情報を一括で管理できるAWS Security Hubが発表されたので使ってみました! #reinvent

Security Hubのドキュメントは下記にあります。

What Is AWS Security Hub? - AWS Security Hub

AWS Security Hub | Amazon Web Services (AWS)

Findings

FindingsはSecurity Hubで扱う検知情報の単位です。ドキュメントはこちら

一覧画面はこんな感じです。

項目が羅列されているだけでは使いづらいのでフィルター機能がついています。フィルターは各項目毎に条件を入れたり、Group byしたりできます。

Security Hubが連携できるGuardDutyやInspector等でも同じように一覧で検知内容を確認できますが、ここで利用できるようないろんなクエリを書くことはできないので、そのためだけにもSecurity Hubを利用する意味はあるでしょう。

フィルターは補完が効いて楽に設定できます。下記のように出てきて例えばResource IDを選択すると

単純なテキストだけでなくEQUALS / PREFIX / CONTAINSから選べるようになったり、

Created atの場合にはプルダウンでのレンジ選択や、

カレンダーGUIでのレンジ選択が可能です。すっごく使いやすい!

Findingsのカラムは下記の項目が存在します。

  • AwsAccountId
  • CompanyName
  • ComplianceStatus
  • GeneratorId
  • MalwareName
  • ProcessName
  • ThreatIntelIndicatorType
  • ProductArn
  • ProductName
  • RecordState
  • ResourceAwsEc2InstanceImageId
  • ResourceAwsEc2InstanceIpV4Addresses
  • ResourceAwsEc2InstanceIpV6Addresses
  • ResourceAwsEc2InstanceKeyName
  • ResourceAwsEc2InstanceSubnetId
  • ResourceAwsEc2InstanceType
  • ResourceAwsEc2InstanceVpcId
  • ResourceAwsIamAccessKeyUserName
  • ResourceAwsS3BucketOwnerName
  • ResourceContainerImageId
  • ResourceContainerImageName
  • ResourceContainerName
  • ResourceId
  • ResourceType
  • SeverityLabel
  • SourceUrl
  • Type
  • VerificationState
  • WorkflowState

マルチアカウントでの利用ではAwsAccountId、どのメーカの製品から出力されているかを絞る場合はCompanyやProductName、特定のリソースに絞る場合にResourceId、脅威レベルとしてSeverityLabelあたりがよく使うかなーという印象です。

SeverityはOriginalとNormalizeがあり、NormalizeがSecurity Hub上で共通化された値になります。

Findingsの各項目の詳細はこちらにあります。具体的なフォーマットについて記載があり、独自のFindingsを連携する場合には要チェックです。

Insight

InsightはFindingsを特定のクエリでフィルター・集計した結果の一覧です。基本的にはFindingsを直接みるというよりは、Insightから見ることが多くなると思います。ドキュメントはこちら

Insightは下記の2種類があります。

  • マネージドインサイト
  • カスタムインサイト

マネージドインサイトはデフォルトで用意されているInsightで、現状35種類存在します。

一方カスタムインサイトはユーザが自身で作成できるものです。用途に合わせて作成するといいでしょう。

マネージドインサイトの種類は下記のようになっています。(翻訳も載せておきます)

  • 1. AWS resources with the most findings
    • 1.ほとんどの調査結果を持つAWSリソース
  • 2. S3 buckets with sensitive data and public read permissions
    • 2.機密データとパブリック読み取り権限を持つS3バケット
  • 3. Resources that have a vulnerability or configuration issue and are involved in potential malicious behavior
    • 3.脆弱性または構成上の問題があり、潜在的な悪意のある行為に関与しているリソース
  • 4. EC2 instances with vulnerabilities and open to the internet
    • 4.脆弱性を持ち、インターネットに公開されているEC2インスタンス
  • 5. AMIs that are generating the most findings
    • 5.ほとんどの調査結果を生成しているAMI
  • 6. AWS resources instances that don't meet security standards / best practices
    • 6.セキュリティ標準/ベストプラクティスに適合しないAWSリソースインスタンス
  • 7. AWS resources associated with potential data exfiltration
    • 7.潜在的なデータエクスポージャーに関連するAWSリソース
  • 8. AWS resources associated with unauthorized resource consumption
    • 8.無許可のリソース消費に関連するAWSリソース
  • 9. AWS users with the most suspicious activity
    • 9.最も疑わしい活動をしているAWSユーザー
  • 10. S3 buckets with public write or read permissions
    • 10.パブリック書き込み権限または読み取り権限を持つS3バケット
  • 11. S3 buckets that don't meet security standards / best practice
    • 11.セキュリティ基準/ベストプラクティスに合致しないS3バケット
  • 12. S3 buckets with sensitive data
    • 12.機密データを含むS3バケット
  • 13. Credentials that may have leaked
    • 13.漏洩した資格情報
  • 14. EC2 instances that allow password authentication on SSH and SSH port and are open to the internet
    • 14. SSHおよびSSHポートでパスワード認証を許可し、インターネットに公開されているEC2インスタンス
  • 15. EC2 instances involved in known Tactics, Techniques, and Procedures (TTPs)
    • 15. 既知のTactics、Techniques、and Procedures(TTPs)に関わるEC2インスタンス
  • 16. EC2 instances that have missing security patches for important vulnerabilities
    • 16.重要な脆弱性に対するセキュリティパッチが不足しているEC2インスタンス
  • 17. EC2 instances with general unusual behavior
    • 17.一般的で異常な行動を伴うEC2インスタンス
  • 18. EC2 instances that have ports accessible from the Internet
    • 18.インターネットからアクセス可能なポートを持つEC2インスタンス
  • 19. EC2 instances that don't meet security standards / best practices
    • 19.セキュリティ標準/ベストプラクティスに適合しないEC2インスタンス
  • 20. EC2 instances with anonymized connections
    • 20.匿名接続を持つEC2インスタンス
  • 21. EC2 instances that are open to the internet
    • 21.インターネットに公開されているEC2インスタンス
  • 22. EC2 instances associated with adversary reconnaissance
    • 22.敵対偵察に関連するEC2インスタンス
  • 23. AWS resources that are associated with malware
    • 23.マルウェアに関連するAWSリソース
  • 24. AWS resources associated with cryptocurrency issues
    • 24.暗号化の問題に関連するAWSリソース
  • 25. AWS resources with unauthorized access attempts
    • 25.不正アクセス試行のあるAWSリソース
  • 26. Threat Intel indicators with the most hits in the last week
    • 26.先週最もヒットしたインテル指標を脅かす
  • 27. Top accounts by counts of findings
    • 27.調査結果の上位のアカウント
  • 28. Top products by counts of findings
    • 28.調査結果の上位製品
  • 29. Severity by counts of findings
    • 29.調査結果の重大度
  • 30. Top S3 buckets by counts of findings
    • 30.調査結果の上位S3バケット
  • 31. Top EC2 instances by counts of findings
    • 31.所見の数による上位EC2インスタンス
  • 32. Top AMIs by counts of findings
    • 32.結果の数による上位AMI
  • 33. Top IAM users by counts of findings
    • 33.調査結果の数による上位IAMユーザー
  • 34. Top resources by counts of failed CIS checks
    • 34.失敗したCISチェックの数量による上位リソース
  • 35. Top Providers by counts of findings
    • 35.調査結果のトップによるトッププロバイダー

どれも重要なInsightなので積極的に活用していきたいですね。

InsightはInsight画面から確認すると時間ごとのFindingsの遷移が見られますが

Summaryで確認できる一部のInsightのグラフがもう少し見やすい感じです。Summaryから傾向を確認するのもいいでしょう。

カスタムインサイトを作る

カスタムインサイトは自由に作成できるので、上記のマネージドインサイトよりも業務に直結するフィルターを適用したものを作成すると効率的にSecurity Hubを利用できます。

まずInsightsからCreate Insightを押します。もしくはFindingsからすでに絞り込み済みの状態でCreateが可能です。

利用したいフィルターを入力します。今回はProduct nameGuardDutyと同じで、ResourceIdで集約したものを作成しています。Record State=ACTIVEがデフォルトで入っていて、これは通常そのまま利用するでしょう。適切な結果が得られたらCreate insightを押します。

Insightの名前を入力してOKを押します。

作成が完了しました。他のInsight同様右カラムにいくつかの項目でグラフを出してくれるのはありがたいですね。

Insight一覧では一番うしろにカスタムインサイトが表示されます。おそらく、検索から出したほうが早いでしょう。

まとめ

FindingsとInsightsについて情報をまとめて、カスタムインサイトを作ってみました。データを集約してくるとInsightsが非常に役に立ってくると思います。

また、Insightsでまとめている状態でカスタムスクリプトが適用できると、より捗ると思うので積極的に利用していきましょう!