Abfragen von Amazon-GuardDuty-Erkenntnissen
Amazon GuardDuty
Weitere Informationen über Amazon GuardDuty finden Sie im Amazon-GuardDuty-Benutzerhandbuch.
Voraussetzungen
-
Aktivieren Sie die GuardDuty-Funktion zum Exportieren von Ergebnissen in Amazon S3. Schritte dazu finden Sie unter Ergebnisse exportieren im Amazon-GuardDuty-Benutzerhandbuch.
Erstellen einer Tabelle in Athena für GuardDuty-Ergebnisse
Um Ihre GuardDuty-Ergebnisse aus Athena abzufragen, müssen Sie eine Tabelle dafür erstellen.
So erstellen Sie eine Tabelle in Athena für GuardDuty-Ergebnisse
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. -
Fügen Sie die folgende DDL-Anweisung in die Athena-Konsole ein. Ändern Sie die Werte in
LOCATION 's3://amzn-s3-demo-bucket, um in Amazon S3 auf Ihre GuardDuty-Ergebnisse zu zeigen./AWSLogs/account-id/GuardDuty/'CREATE EXTERNAL TABLE `gd_logs` ( `schemaversion` string, `accountid` string, `region` string, `partition` string, `id` string, `arn` string, `type` string, `resource` string, `service` string, `severity` string, `createdat` string, `updatedat` string, `title` string, `description` string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/' TBLPROPERTIES ('has_encrypted_data'='true')Anmerkung
Das SerDe erwartet, dass sich jedes JSON-Dokument auf einer einzigen Textzeile befindet, ohne Zeilenabschlusszeichen, die die Felder im Datensatz trennen. Wenn der JSON-Text im hübschen Druckformat vorliegt, erhalten Sie möglicherweise eine Fehlermeldung wie
HIVE_CURSOR_ERROR: Zeile ist kein gültiges JSON-ObjektoderHIVE_CURSOR_ERROR: JsonParseException: Unerwartetes Ende der Eingabe: Erwartete Schließmarkierung für OBJEKT, wenn Sie versuchen, die Tabelle abzufragen, nachdem Sie dies erstellt haben. Weitere Informationen finden Sie unter JSON-Datendateiin der OpenX-SerDe-Dokumentation auf GitHub. -
Führen Sie die Abfrage in der Athena-Konsole aus, um die
gd_logs-Tabelle zu registrieren. Wenn die Abfrage abgeschlossen ist, können Sie die Ergebnisse aus Athena abfragen.
Beispielabfragen
In den folgenden Beispielen wird gezeigt, wie GuardDuty-Ergebnisse aus Athena abgefragt werden.
Beispiel – DNS-Datenexfiltration
Die folgende Abfrage gibt Informationen zu Amazon-EC2-Instances zurück, die Daten möglicherweise über DNS-Abfragen exfiltrieren.
SELECT title, severity, type, id AS FindingID, accountid, region, createdat, updatedat, json_extract_scalar(service, '$.count') AS Count, json_extract_scalar(resource, '$.instancedetails.instanceid') AS InstanceID, json_extract_scalar(service, '$.action.actiontype') AS DNS_ActionType, json_extract_scalar(service, '$.action.dnsrequestaction.domain') AS DomainName, json_extract_scalar(service, '$.action.dnsrequestaction.protocol') AS protocol, json_extract_scalar(service, '$.action.dnsrequestaction.blocked') AS blocked FROM gd_logs WHERE type = 'Trojan:EC2/DNSDataExfiltration' ORDER BY severity DESC
Beispiel – Unberechtigter IAM-Benutzerzugriff
Die folgende Abfrage gibt alle UnauthorizedAccess:IAMUser-Suchtypen für einen IAM-Prinzipal aus allen Regionen zurück.
SELECT title, severity, type, id, accountid, region, createdat, updatedat, json_extract_scalar(service, '$.count') AS Count, json_extract_scalar(resource, '$.accesskeydetails.username') AS IAMPrincipal, json_extract_scalar(service,'$.action.awsapicallaction.api') AS APIActionCalled FROM gd_logs WHERE type LIKE '%UnauthorizedAccess:IAMUser%' ORDER BY severity desc;
Tipps zum Abfragen von GuardDuty Ergebnissen
Beachten Sie beim Erstellen der Abfrage die folgenden Punkte.
-
Um Daten aus verschachtelten JSON-Feldern zu extrahieren, verwenden Sie die
json_extract- oderjson_extract_scalar-Funktionen von Presto. Weitere Informationen finden Sie unter Extrahieren Sie JSON-Daten aus Zeichenfolgen. -
Stellen Sie sicher, dass alle Zeichen in den JSON-Feldern Kleinbuchstaben sind.
-
Hinweise zum Herunterladen von Abfrageergebnissen finden Sie unter Herunterladen von Abfrageergebnisdateien mithilfe der Athena-Konsole.