AWS - GuardDuty Enum

Support HackTricks

GuardDuty

Según la documentación: GuardDuty combina aprendizaje automático, detección de anomalías, monitoreo de red y descubrimiento de archivos maliciosos, utilizando tanto AWS como fuentes de terceros líderes en la industria para ayudar a proteger cargas de trabajo y datos en AWS. GuardDuty es capaz de analizar decenas de miles de millones de eventos a través de múltiples fuentes de datos de AWS, como registros de eventos de AWS CloudTrail, registros de flujo de Amazon Virtual Private Cloud (VPC), registros de auditoría y de nivel de sistema de Amazon Elastic Kubernetes Service (EKS), y registros de consultas DNS.

Amazon GuardDuty identifica actividades inusuales dentro de tus cuentas, analiza la relevancia de seguridad de la actividad y proporciona el contexto en el que fue invocada. Esto permite a un respondedor determinar si debe dedicar tiempo a una investigación adicional.

Las alertas aparecen en la consola de GuardDuty (90 días) y en CloudWatch Events.

Cuando un usuario desactiva GuardDuty, dejará de monitorear tu entorno de AWS y no generará nuevos hallazgos, y los hallazgos existentes se perderán. Si solo lo detienes, los hallazgos existentes permanecerán.

Ejemplo de Hallazgos

  • Reconocimiento: Actividad que sugiere reconocimiento por parte de un atacante, como actividad inusual de API, intentos de inicio de sesión en bases de datos sospechosos, escaneo de puertos intra-VPC, patrones inusuales de solicitudes de inicio de sesión fallidas, o sondeo de puertos no bloqueados desde una IP conocida como mala.

  • Compromiso de instancia: Actividad que indica un compromiso de instancia, como minería de criptomonedas, actividad de comando y control (C&C) de puerta trasera, malware utilizando algoritmos de generación de dominios (DGA), actividad de denegación de servicio saliente, volumen de tráfico de red inusualmente alto, protocolos de red inusuales, comunicación de instancia saliente con una IP maliciosa conocida, credenciales temporales de Amazon EC2 utilizadas por una dirección IP externa, y exfiltración de datos utilizando DNS.

  • Compromiso de cuenta: Patrones comunes indicativos de compromiso de cuenta incluyen llamadas a la API desde una geolocalización inusual o proxy de anonimización, intentos de desactivar el registro de AWS CloudTrail, cambios que debilitan la política de contraseñas de la cuenta, lanzamientos inusuales de instancias o infraestructura, despliegues de infraestructura en una región inusual, robo de credenciales, actividad sospechosa de inicio de sesión en bases de datos, y llamadas a la API desde direcciones IP maliciosas conocidas.

  • Compromiso de bucket: Actividad que indica un compromiso de bucket, como patrones de acceso a datos sospechosos que indican uso indebido de credenciales, actividad inusual de API de Amazon S3 desde un host remoto, acceso no autorizado a S3 desde direcciones IP maliciosas conocidas, y llamadas a la API para recuperar datos en buckets de S3 desde un usuario sin historial previo de acceso al bucket o invocadas desde una ubicación inusual. Amazon GuardDuty monitorea y analiza continuamente los eventos de datos de S3 de AWS CloudTrail (por ejemplo, GetObject, ListObjects, DeleteObject) para detectar actividad sospechosa en todos tus buckets de Amazon S3.

Información de Hallazgos

Resumen del hallazgo:

  • Tipo de hallazgo

  • Severidad: 7-8.9 Alto, 4-6.9 Medio, 01-3.9 Bajo

  • Región

  • ID de cuenta

  • ID de recurso

  • Hora de detección

  • Qué lista de amenazas se utilizó

El cuerpo tiene esta información:

  • Recurso afectado

  • Acción

  • Actor: Dirección IP, puerto y dominio

  • Información adicional

Todos los Hallazgos

Accede a una lista de todos los hallazgos de GuardDuty en: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

Múltiples Cuentas

Por Invitación

Puedes invitar a otras cuentas a una cuenta diferente de AWS GuardDuty para que todas las cuentas sean monitoreadas desde el mismo GuardDuty. La cuenta maestra debe invitar a las cuentas miembros y luego el representante de la cuenta miembro debe aceptar la invitación.

A través de la Organización

Puedes designar cualquier cuenta dentro de la organización como el administrador delegado de GuardDuty. Solo la cuenta de gestión de la organización puede designar un administrador delegado.

Una cuenta que se designa como administrador delegado se convierte en una cuenta de administrador de GuardDuty, tiene GuardDuty habilitado automáticamente en la región de AWS designada, y también tiene la permiso para habilitar y gestionar GuardDuty para todas las cuentas en la organización dentro de esa región. Las otras cuentas en la organización pueden ser vistas y añadidas como cuentas miembros de GuardDuty asociadas con esta cuenta de administrador delegado.

Enumeración

# Get Org config
aws guardduty list-organization-admin-accounts #Get Delegated Administrator
aws guardduty describe-organization-configuration --detector-id <id>

# Check external invitations
aws guardduty list-invitations
aws guardduty get-invitations-count

# Detector Information
aws guardduty list-detectors # 1 detector per account with GuardDuty
aws guardduty get-detector --detector-id <id> # Get detector info
aws guardduty get-master-account --detector-id <id>

# Get filters
aws guardduty list-filters --detector-id <id> # Check filters
aws guardduty get-filter --detector-id <id> --filter-name <name>

# Findings
aws guardduty list-findings --detector-id <id> # List findings
aws guardduty get-findings --detector-id <id> --finding-ids <id> # Get details about the finding
aws guardduty get-findings-statistics --detector-id <id> --finding-statistic-types <types>

# Get trusted IP addresses
aws guardduty list-ip-sets --detector-id <id>
aws guardduty get-ip-set --detector-id <id>

# Member accounts of the current AWS GuardDuty master account
aws guardduty list-members --detector-id <id>
aws guardduty get-members --detector-id <id> --account-ids <id>
aws guardduty get-member-detectors --detector-id <id> --account-ids <id>

# Continuously export its findings to an Amazon S3 bucket
aws guardduty list-publishing-destinations --detector-id <id>

# Intelligence sets that you have uploaded to GuardDuty
aws guardduty list-threat-intel-sets --detector-id <id>
aws guardduty get-threat-intel-set --detector-id <id> --threat-intel-set-id <id>

Bypass de GuardDuty

Orientación General

Intenta averiguar tanto como sea posible sobre el comportamiento de las credenciales que vas a utilizar:

  • Tiempos en que se utiliza

  • Ubicaciones

  • Agentes de usuario / Servicios (Podría ser utilizado desde awscli, webconsole, lambda...)

  • Permisos utilizados regularmente

Con esta información, recrea tanto como sea posible el mismo escenario para usar el acceso:

  • Si es un usuario o un rol accedido por un usuario, intenta usarlo en las mismas horas, desde la misma geolocalización (incluso el mismo ISP y IP si es posible)

  • Si es un rol utilizado por un servicio, crea el mismo servicio en la misma región y úsalo desde allí en los mismos rangos de tiempo

  • Siempre intenta usar los mismos permisos que este principal ha utilizado

  • Si necesitas usar otros permisos o abusar de un permiso (por ejemplo, descargar 1.000.000 de archivos de registro de cloudtrail) hazlo lentamente y con la mínima cantidad de interacciones con AWS (awscli a veces llama a varias APIs de lectura antes de la de escritura)

Rompiendo GuardDuty

guardduty:UpdateDetector

Con este permiso podrías desactivar GuardDuty para evitar activar alertas.

aws guardduty update-detector --detector-id <detector-id> --no-enable
aws guardduty update-detector --detector-id <detector-id> --data-sources S3Logs={Enable=false}

guardduty:CreateFilter

Los atacantes con este permiso tienen la capacidad de emplear filtros para la archivación automática de hallazgos:

aws guardduty create-filter  --detector-id <detector-id> --name <filter-name> --finding-criteria file:///tmp/criteria.json --action ARCHIVE

iam:PutRolePolicy, (guardduty:CreateIPSet|guardduty:UpdateIPSet)

Los atacantes con los privilegios anteriores podrían modificar la Lista de IPs de confianza de GuardDuty añadiendo su dirección IP y evitar generar alertas.

aws guardduty update-ip-set --detector-id <detector-id> --activate --ip-set-id <ip-set-id> --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv

guardduty:DeletePublishingDestination

Los atacantes podrían eliminar el destino para evitar alertas:

aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>

Eliminar este destino de publicación no afectará la generación o visibilidad de los hallazgos dentro de la consola de GuardDuty. GuardDuty continuará analizando eventos en su entorno de AWS, identificando comportamientos sospechosos o inesperados, y generando hallazgos.

Ejemplos Específicos de Bypass de Hallazgos

Tenga en cuenta que hay decenas de hallazgos de GuardDuty, sin embargo, como Red Teamer, no todos ellos te afectarán, y lo que es mejor, tienes la documentación completa de cada uno de ellos en https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html así que échale un vistazo antes de realizar cualquier acción para no ser atrapado.

Aquí tienes un par de ejemplos de bypass de hallazgos específicos de GuardDuty:

GuardDuty detecta solicitudes de API de AWS de herramientas comunes de pruebas de penetración y activa un Hallazgo de PenTest. Se detecta por el nombre del agente de usuario que se pasa en la solicitud de API. Por lo tanto, modificar el agente de usuario es posible para evitar que GuardDuty detecte el ataque.

Para prevenir esto, puedes buscar en el script session.py en el paquete botocore y modificar el agente de usuario, o configurar Burp Suite como el proxy de AWS CLI y cambiar el agente de usuario con MitM o simplemente usar un sistema operativo como Ubuntu, Mac o Windows evitará que se active esta alerta.

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Extraer credenciales de EC2 del servicio de metadatos y utilizarlas fuera del entorno de AWS activa la alerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS. Por el contrario, emplear estas credenciales desde tu instancia de EC2 activa la alerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS. Sin embargo, usar las credenciales en otra instancia de EC2 comprometida dentro de la misma cuenta no se detecta, sin generar ninguna alerta.

Por lo tanto, usa las credenciales exfiltradas desde dentro de la máquina donde las encontraste para no activar esta alerta.

Referencias

Apoya a HackTricks

Last updated