本記事は、BIPROGY / ユニアデックス社内AWSコミュニティ「BIPROGY AWS SPARK」の定期投稿企画第13回目の記事です。他の定期投稿企画の記事は、#BIPROGY_AWS_SPARKタグ または Organizationページ をご覧ください。
背景
AWS GuardDutyにはコンソール上からワンクリックで生成できる「疑似攻撃サンプル」が用意されていますが、Malware Protectionには公式のテスト用サンプルがありません。
そこで今回は、EICARテストファイルを利用してMalware Protectionでマルウェア検知を実際に試した手順をまとめました。
スキャン対象はEC2とし、OSはRHEL9.6 で検証しました。
AWS GuardDuty Malware Protectionとは
EC2インスタンスやコンテナにアタッチされたEBSボリュームをスキャンし、マルウェアの潜在的な存在を検出する機能です。
AWS GuardDuty Malware Protection公式ドキュメント
手順
① テスト用インスタンスへの接続
- 対象インスタンスに TeraTermでSSH接続
※今回はSSMでの接続ではなく、TeraTermのSSH接続でコマンドを実行しました。
AWS Systems Manager公式ドキュメント
② EICARテストファイルの作成
- 下記のコマンドでEICARテストファイルをダウンロード
curl -O https://secure.eicar.org/eicar.com
下記のステータスが表示されれば、問題なく実行できています。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0100 68 100 68 0 0 67 0 0:00:01 0:00:01 --:--:-- 67
- pwdで絶対パスを確認+lsコマンドでファイルが保存されたことを確認
pwd
/home/ec2-user
ls -l
-rw-r--r--. 1 ec2-user ec2-user 68 Nov dd hh:mm eicar.com
③オンデマンドスキャンの実行
- AWSコンソールで「GuardDuty」 → 「Malware Protection」 → 「EC2」を選択
- 「オンデマンドのマルウェアスキャン」欄に対象EC2のARNを入力
- 「スキャンを開始」を選択
※CLIでマルウェアスキャンを開始する場合は、以下のコマンドを実行します。
ls -l
aws guardduty start-malware-scan --resource-arn "arn:aws:ec2:ap-northeast-1:<アカウントID>:instance/<インスタンスID>"
※アカウントIDとインスタンスIDは対象EC2のものを指定
④ スキャン結果の確認
※CLIでマルウェアスキャンを結果を確認する場合は、以下のコマンドを実行します。
- 下記コマンドでDetector IDを取得
aws guardduty list-detectors
Detector IDが出力されます。
{
"DetectorIds": [
"XXXXXXXXXXXXXXXX"
]
}
- 下記コマンドでスキャン結果を確認
※先ほど取得したDetector IDを指定
aws guardduty describe-malware-scans --detector-id XXXXXXXXXXXXXXXX
コマンドでは下記の表記でスキャン結果が表示されます。
"ScanResult": "INFECTED"
⑤ スキャン結果(詳細)の確認
AWS GuardDuty Malware Protectionでは、スキャン結果に 「INFECTED」 や 「CLEAN」 は表示されますが、感染ファイルのパスや場所はコンソール上では直接表示されません。
そのため、ファイル名やパスを取得するには、GuardDutyの検出結果(Finding)を確認する必要があります。 下記の手順で確認します。
- 下記コマンドでファインディングIDを取得
※先ほど取得したDetector IDを指定
aws guardduty list-findings --detector-id XXXXXXXXXXXXXXXX
実行するとFinding IDが出力されます。
{
"FindingIds": [
"YYYYYYYYYYYYYYY"
]
}
- 下記コマンドで感染ファイルの詳細を確認(整形表示)
※先ほど取得したDetector IDとFinding IDを指定
aws guardduty get-findings \
--detector-id XXXXXXXXXXXXXXXX \
--finding-ids YYYYYYYYYYYYYYYY \
--query "Findings[0].{Threat:Service.EbsVolumeScanDetails.ScanDetections.HighestSeverityThreatDetails.ThreatName,File:Service.EbsVolumeScanDetails.ScanDetections.ThreatDetectedByName.ThreatNames[0].FilePaths[0].FilePath,Severity:Severity}" \
--output table
実行すると感染したファイル場所が表示されます
-----------------------------------------------
| GetFindings |
+-----------+--------------------------------+
| Threat | EICAR-Test-File |
| File | /home/ec2-user/eicar.com |
| Severity | 5 |
+-----------+--------------------------------+
⑥EICARテストファイルの削除
- 下記コマンドでファイルを削除
rm -i /home/ec2-user/eicar.com
- lsコマンドで削除確認→ファイルが一覧になければOK!
ls -l
まとめ
今回の検証では、EICARテストファイルを使ってAWS GuardDuty Malware Protectionの検知動作を確認しました。
公式のテストサンプルがない中で、EICARファイルは安全に検証できる有効な方法ですのでセキュリティ検証や運用確認の参考にしていただけると嬉しいです。
We Are Hiring!
