Consulta de los resultados de Amazon GuardDuty
Amazon GuardDuty
Para obtener más información sobre Amazon GuardDuty, consulte la Guía del usuario de Amazon GuardDuty.
Requisitos previos
-
Habilite la característica GuardDuty para exportar los resultados a Amazon S3. Para ver los pasos, consulte Exportación de resultados en la Guía del usuario de Amazon GuardDuty.
Creación de una tabla en Athena para los resultados de GuardDuty
Para consultar los resultados de GuardDuty desde Athena, debe crear una tabla para ellos.
Para crear una tabla en Athena para los resultados de GuardDuty
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. -
Pegue la siguiente instrucción DDL en la consola de Athena. Modifique los valores de
LOCATION 's3://amzn-s3-demo-bucket
para que apunten a los resultados de GuardDuty en 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')nota
El SerDe espera que cada documento JSON esté en una sola línea de texto sin caracteres de terminación de línea que separen los campos del registro. Si el texto JSON está en formato de impresión, puede recibir un mensaje de error como
HIVE_CURSOR_ERROR: la fila no es un objeto JSON válido
oHIVE_CURSOR_ERROR: JsonParseException: fin de entrada inesperado: marcador de cierre esperado para OBJECT
cuando intenta consultar la tabla después de crearla. Para obtener más información, consulte los Archivos de datos JSONen la documentación de OpenX SerDE en GitHub. -
Ejecute la consulta en la consola de Athena para registrar la tabla
gd_logs
. Cuando se complete la consulta, los resultados estarán listos para su consulta desde Athena.
Consultas de ejemplo
En los siguientes ejemplos se muestra cómo consultar resultados de GuardDuty desde Athena.
ejemplo – Exfiltración de datos DNS
La siguiente consulta devuelve información acerca de las instancias de Amazon EC2 que podrían estar filtrando datos a través de consultas de 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
ejemplo – Acceso no autorizado de un usuario de IAM
La siguiente consulta devuelve todos los tipos de resultados UnauthorizedAccess:IAMUser
de una entidad principal de IAM en todas las regiones.
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;
Consejos para consultar los resultados de GuardDuty
Cuando cree una consulta, tenga en cuenta lo siguiente.
-
Para extraer datos de campos JSON anidados, utilice las funciones
json_extract
ojson_extract_scalar
de Presto. Para obtener más información, consulte Extracción de datos JSON de cadenas. -
Asegúrese de que todos los caracteres de los campos JSON estén en minúsculas.
-
Para obtener información sobre la descarga de resultados de consulta, consulte Descarga de archivos de resultados de consultas mediante la consola de Athena.