Consulta de los resultados de Amazon GuardDuty - Amazon Athena

Consulta de los resultados de Amazon GuardDuty

Amazon GuardDuty es un servicio de monitoreo de seguridad que ayuda a identificar actividades inesperadas y potencialmente no autorizadas o malintencionadas en su entorno de AWS. Cuando detecta alguna actividad inesperada y potencialmente malintencionada, GuardDuty genera resultados de seguridad que puede exportar a Amazon S3 para su almacenamiento y análisis. Después de exportar los resultados a Amazon S3, puede utilizar Athena para consultarlos. En este artículo se muestra cómo crear una tabla en Athena para obtener resultados en GuardDuty y consultarlos.

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
  1. Abra la consola de Athena en https://console.aws.amazon.com/athena/.

  2. Pegue la siguiente instrucción DDL en la consola de Athena. Modifique los valores de LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/' para que apunten a los resultados de GuardDuty en Amazon S3.

    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 o HIVE_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 JSON en la documentación de OpenX SerDE en GitHub.

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