GuardDutyに「PenTest:S3/KaliLinux」を検知させるPythonスクリプト作った

GuardDutyでPenTest:S3/KaliLinuxを発生させる手法についてまとめました。
2021.07.07

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

こんにちは、臼田です。

みなさん、AWSの脅威検知してますか?(挨拶

今回は特定のFindingsを出そうシリーズです。

PenTest:S3/KaliLinuxとは

PenTest:S3/KaliLinuxはS3のデータアクセスAPIなどについてKali Linuxによるアクセスがあった場合に検知されるGuardDuty Findingsです。Kali Linuxはペネトレーションテストに使われるOSであり、通常そのようなOSからのアクセスはありません。

このFindingsは動作を見ている限り、CloudTrailのAPIイベントに記録されたUser-Agentを識別していると思われるため、ただ検知させることが目的であればこれを逆手に取り、Kali Linuxを実際に使わなくてもヘッダを書き換えるだけで目的を達成できます。

ただこれはあくまで検証結果と推測に基づくものではありませんので自己責任でご利用ください。

やってみた

一番手っ取り早いのはCloudShellでPythonのインタラクティブモードから以下を実行することだと思います。

import boto3
import botocore
session_config = botocore.config.Config(user_agent='aws-cli/1.19.1 Python/3.9.2 Linux/5.10.0-kali7-cloud-amd64 botocore/1.20.0')
s3 = boto3.client('s3',config=session_config)
buckets = s3.list_buckets()
s3.list_objects_v2(Bucket=buckets['Buckets'][0]['Name'])

これだけだとどういうやり取りが発生しているか分かりづらいので、必要であれば以下を事前に実行してデバッグログを出力すると、やり取りしているヘッダも含めた内容を確認することが可能です。

botocore.session.Session().set_debug_logger()

実行している中身はバケット一覧を取得して、特定のバケットに対してList Objectを実行しています。List BucketのみではPenTest:S3/KaliLinuxではなくPenTest:IAMUser/KaliLinuxが検知されます。

User-Agentの書き換え方法はこちらを参考にしました。

まとめ

GuardDutyを検知させて実際のFindingsを発生させるのは、仕様も公開されていないので簡単ではないです。

是非参考にしてください。