Interrogation des résultats Amazon GuardDuty
Amazon GuardDuty
Pour plus d'informations sur Amazon GuardDuty, consultez le Guide de l'utilisateur Amazon GuardDuty.
Prérequis
-
Activez la fonction GuardDuty d'exportation des résultats vers Simple Storage Service (Amazon S3). Pour les étapes à suivre, consultez la rubrique Exportation des résultats du Guide de l'utilisateur Amazon GuardDuty.
Création d’une table dans Athena pour les résultats GuardDuty
Pour interroger vos résultats GuardDuty à partir d'Athena, vous devez créer une table pour eux.
Créer une table dans Athena pour les résultats GuardDuty
Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/
. -
Collez l'instruction DDL suivante dans la console Athena. Modifiez les valeurs dans
LOCATION 's3://amzn-s3-demo-bucketpour pointer vers vos résultats GuardDuty dans Simple Storage Service (Amazon S3)./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')Note
Le SerDe s'attend à ce que chaque document JSON soit sur une seule ligne de texte, sans caractères de fin de ligne pour séparer les champs de l'enregistrement. Si le texte JSON est au format d'impression, vous pouvez recevoir un message d'erreur similaire à
HIVE_CURSOR_ERROR : Row is not a valid JSON Object (La ligne n'est pas un JSON valide)ouHIVE_CURSOR_ERROR : JSONParseException : Unexpected end-of-input: expected close marker for OBJECT (Fin d'entrée inattendue : marqueur de fermeture attendu pour OBJECT)lorsque vous tentez d'interroger la table après l'avoir créée. Pour de plus amples informations, consultez la section Fichiers de données JSONdans la documentation OpenX SerDe sur GitHub. -
Exécutez la requête dans la console Athena pour enregistrer la table
gd_logs. Une fois la requête terminée, vous pouvez interroger les résultats à partir d'Athena.
Exemples de requêtes
Les exemples suivants montrent comment interroger les résultats GuardDuty à partir d'Athena.
Exemple – Exfiltration de données DNS
La requête suivante renvoie des informations sur les instances Amazon EC2 qui peuvent exfiltrer des données via des requêtes DNS.
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
Exemple – Accès utilisateur IAM non autorisé
La requête suivante renvoie tous les types de résultat UnauthorizedAccess:IAMUser pour un principal IAM à partir de toutes les régions.
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;
Conseils pour interroger les résultats GuardDuty
Lorsque vous créez votre requête, gardez les points suivants à l'esprit.
-
Pour extraire des données à partir de champs JSON imbriqués, utilisez les fonctions Presto
json_extractoujson_extract_scalar. Pour de plus amples informations, consultez Extraction de données JSON à partir de chaînes. -
Assurez-vous que tous les caractères des champs JSON sont en minuscules.
-
Pour plus d'informations sur le téléchargement des résultats de requête, veuillez consulter Téléchargement des fichiers de résultats des requêtes à l’aide de la console Athena.