AWS - GuardDuty Enum

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a 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 fuentes tanto de AWS como 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 en múltiples fuentes de datos de AWS, como registros de eventos de AWS CloudTrail, registros de flujo de Amazon Virtual Private Cloud (VPC), auditoría de Amazon Elastic Kubernetes Service (EKS) y registros de nivel de sistema, y registros de consultas DNS.

Amazon GuardDuty identifica actividad inusual 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 respondiente 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 en absoluto, y los hallazgos existentes se perderán. Si simplemente lo detienes, los hallazgos existentes permanecerán.

Ejemplo de Hallazgos

  • Reconocimiento: Actividad que sugiere reconocimiento por parte de un atacante, como actividad de API inusual, intentos de inicio de sesión sospechosos en la base de datos, 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 maliciosa.

  • Compromiso de instancia: Actividad que indica un compromiso de instancia, como minería de criptomonedas, actividad de comando y control de puerta trasera (C&C), malware que utiliza 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 de API desde una geolocalización inusual o un proxy de anonimización, intentos de deshabilitar el registro de AWS CloudTrail, cambios que debilitan la política de contraseñas de la cuenta, lanzamientos de instancias o infraestructuras inusuales, implementaciones de infraestructura en una región inusual, robo de credenciales, actividad de inicio de sesión sospechosa en la base de datos y llamadas de 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 de API para recuperar datos en buckets de S3 de un usuario sin historial previo de acceso al bucket o invocado desde una ubicación inusual. Amazon GuardDuty monitorea y analiza continuamente los eventos de datos de AWS CloudTrail S3 (por ejemplo, GetObject, ListObjects, DeleteObject) para detectar actividad sospechosa en todos tus buckets de Amazon S3.

Información del Hallazgo

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

  • Lista de amenazas utilizada

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 de AWS GuardDuty diferente para que cada cuenta sea monitoreada desde el mismo GuardDuty. La cuenta maestra debe invitar a las cuentas miembro 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 administración de la organización puede designar un administrador delegado.

Una cuenta designada 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 el permiso para habilitar y administrar 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 agregadas como cuentas miembro 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:

  • Veces que se utilizan

  • Ubicaciones

  • Agentes de usuario / Servicios (podría ser utilizado desde awscli, consola web, lambda...)

  • Permisos utilizados regularmente

Con esta información, recrea tanto como sea posible el mismo escenario para utilizar 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 e 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 utilizar otros permisos o abusar de un permiso (por ejemplo, descargar 1.000.000 de archivos de registro de CloudTrail) hazlo lentamente y con la cantidad mínima de interacciones con AWS (awscli a veces llama a varias API 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 utilizar filtros para el archivado automático 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 IP confiables de GuardDuty agregando su dirección IP y evitando así 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 la generación de 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 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 de Bypass de Hallazgos Específicos

Tenga en cuenta que hay decenas de hallazgos de GuardDuty, sin embargo, como Red Teamer no todos 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 echa un vistazo antes de tomar cualquier acción para no ser descubierto.

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

GuardDuty detecta solicitudes de API de AWS desde 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, modificando el agente de usuario es posible evitar que GuardDuty detecte el ataque.

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

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, utilizar estas credenciales desde su instancia EC2 activa la alerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS. Sin embargo, utilizar las credenciales en otra instancia EC2 comprometida dentro de la misma cuenta no se detecta, no generando ninguna alerta.

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

Referencias

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización