課題
AmazonGuardDuty で擬似アラートを作成する際、AWS CloudShell で都度コマンドを調べて叩くのが面倒くさい。
作成した自動スクリプトの仕組み
AWS CloudShell でスクリプトを叩きます。
内容は発生させたい検出結果タイプのリストをランダムに呼び出し、それを引数に AmazonGuardDuty のコマンドを叩く形にしました。
発生させたい検出結果タイプのリストを作成しておく
AWS CloudShell $ vim finding-list
AWS CloudShell $ cat finding-list
Backdoor:EC2/C&CActivity.B
Backdoor:EC2/C&CActivity.B!DNS
Backdoor:EC2/DenialOfService.Dns
Backdoor:EC2/DenialOfService.Tcp
<長いので省略>
UnauthorizedAccess:S3/MaliciousIPCaller.Custom
UnauthorizedAccess:S3/TorIPCaller
AmazonGuardDuty の擬似アラートを作成するコマンドを含んだスクリプトを作成する
AWS CloudShell $ vim Random_GuardDuty.sh
AWS CloudShell $ cat Random_GuardDuty.sh
#!/bin/bash
DATE=`date`
RANDOM_LINE=$(shuf finding-list | head -n 1)
echo $DATE = $RANDOM_LINE
aws guardduty create-sample-findings --detector-id $(aws guardduty list-detectors --query 'DetectorIds' --output text) --finding-types "$RANDOM_LINE"
スクリプトを実行してみる
echo で $
DATE(dateの時刻表示) と $
RANDOM_LINE(リストでランダムで拾ってきた検出結果) を表示しています。
AWS CloudShell $ sh Random_GuardDuty.sh
Wed May 24 16:47:32 JST 2023 = Policy:S3/BucketAnonymousAccessGranted
AmazonGuardDuty のコマンド実施内容の説明
(参考) CLIリファレンス https://docs.aws.amazon.com/cli/latest/reference/guardduty/index.html
不定期に実施したい
ランダム時間(1秒~900秒) に動いていて欲しいとかであれば以下コマンドで実施できます。
AWS CloudShell $ while true; do sh Random_GuardDuty.sh; sleep $(shuf -i 1-900 -n 1);done