Abfragen von Amazon-GuardDuty-Erkenntnissen - Amazon Athena

Abfragen von Amazon-GuardDuty-Erkenntnissen

Amazon GuardDuty ist ein Sicherheitsüberwachungsservice, mit dem Sie unerwartete und potenziell unbefugte oder bösartige Aktivitäten in Ihrer AWS-Umgebung erkennen können. Bei Erkennung von unerwarteten und potenziell bösartigen Aktivitäten generiert GuardDuty Sicherheitsergebnisse, die Sie zur Speicherung und Analyse in Amazon S3 exportieren können. Nachdem Sie Ihre Ergebnisse in Amazon S3 exportiert haben, können Sie diese mit Athena abfragen. Dieser Artikel zeigt, wie Sie eine Tabelle in Athena für Ihre GuardDuty-Ergebnisse erstellen und diese abfragen.

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
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Fügen Sie die folgende DDL-Anweisung in die Athena-Konsole ein. Ändern Sie die Werte in LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/', um in Amazon S3 auf Ihre GuardDuty-Ergebnisse zu zeigen.

    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-Objekt oder HIVE_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-Datendatei in der OpenX-SerDe-Dokumentation auf GitHub.

  3. 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.