Skip to content

Esta herramienta no está afiliada a Amazon Web Services, Inc. ni a Amazon.com, Inc., ni cuenta con su respaldo o patrocinio. AWS, Amazon Web Services, CloudTrail y GuardDuty son marcas comerciales de Amazon.com, Inc. o de sus filiales. Los demás nombres son marcas comerciales de sus respectivos propietarios.

Eventos de CloudTrail que vigilar, mapeados a MITRE ATT&CK

Los eventos de CloudTrail que todo analista de respuesta en AWS debe conocer, del reconocimiento al impacto, con sus campos de evidencia y sus técnicas ATT&CK.

Publicado el 5 min de lectura

En resumen. No hace falta conocer miles de nombres de API de AWS. Una cincuentena de nombres de eventos cubren la ruta de ataque habitual en AWS: GetCallerIdentity y ráfagas de List/Describe (reconocimiento), CreateUser / CreateAccessKey / CreateLoginProfile (persistencia), AttachUserPolicy con AdministratorAccess (escalada de privilegios), StopLogging / DeleteDetector (evasión de defensas), ráfagas de GetObject / ModifySnapshotAttribute (exfiltración), RunInstances de GPU / ScheduleKeyDeletion (impacto). Las tablas siguientes indican, para cada uno, el origen del evento, los campos que contienen la evidencia y la técnica de MITRE ATT&CK correspondiente.

Cada tabla de este artículo corresponde a una regla del conjunto de reglas abierto del analizador, de modo que lo que lee aquí es exactamente lo que comprueba la herramienta. Las tablas están organizadas por táctica, en el orden en que suele desarrollarse una intrusión.

Campos que se leen en cada evento

CampoQué le indica
eventTimeHora UTC de la solicitud
eventSource / eventNameServicio y API, por ejemplo iam.amazonaws.com / CreateUser
userIdentity.typeRoot, IAMUser, AssumedRole, FederatedUser, AWSService…
userIdentity.arn, accessKeyIdQuién y con qué credencial (AKIA de larga duración, ASIA temporal)
sourceIPAddress, userAgentDesde dónde y con qué cliente
errorCode, errorMessageAusentes cuando la llamada tuvo éxito
requestParameters, responseElementsQué se pidió y qué se creó
awsRegion, recipientAccountIdDónde ocurrió

AWS documenta el esquema completo en la referencia del contenido de los registros de CloudTrail y en la del elemento userIdentity.

Acceso inicial y abuso de credenciales

EventoEvidencia que leerATT&CK
Cualquier llamada con una clave AKIA desde una IP nuevaaccessKeyId, sourceIPAddress, userAgentT1078.004, T1552.001
Cualquier llamada con userIdentity.type = RootIP de origen; el usuario raíz casi nunca debería actuarT1078.004
ConsoleLogin (signin)responseElements.ConsoleLogin = Success/Failure, additionalEventData.MFAUsedT1078.004
Fallos repetidos de ConsoleLogin desde una misma IPRecuento por IP cada 15 minT1110

Descubrimiento

EventoEvidencia que leerATT&CK
sts:GetCallerIdentity con una clave de larga duraciónPrimera llamada desde una dirección nuevaT1087.004
Muchos List* / Describe* / Get* distintos en pocos minutosRecuento de eventName distintos por claveT1580, T1526
iam:GetAccountAuthorizationDetailsVolcado completo de IAM en una sola llamadaT1087.004
Ráfaga de AccessDenied / UnauthorizedOperationerrorCode por principalT1069.003

GetCallerIdentity no requiere permisos y la propia CLI la invoca, así que por sí sola tiene una gravedad baja. Adquiere importancia cuando es el primer evento procedente de una dirección desconocida.

Persistencia

EventoEvidencia que leerATT&CK
iam:CreateUserrequestParameters.userNameT1136.003
iam:CreateAccessKey para otro usuariorequestParameters.userName ≠ quien llama; nueva clave en responseElements.accessKey.accessKeyIdT1098.001
iam:CreateLoginProfile / UpdateLoginProfileContraseña de consola en un usuarioT1098
iam:UpdateAssumeRolePolicyNuevos principales en los que confía un rolT1098
iam:CreateSAMLProvider, CreateOpenIDConnectProvider, UpdateOpenIDConnectProviderThumbprintNueva relación de confianza de federaciónT1484.002
lambda:AddPermission con principal *, CreateFunctionUrlConfig con authType: NONEFunción de puerta trasera públicaT1546, T1648
ec2:ModifyInstanceAttribute con userDataScript que se ejecuta en el siguiente arranqueT1059
ec2:CreateKeyPair / ImportKeyPairAcceso SSH a instancias nuevasT1098.004

Escalada de privilegios

EventoEvidencia que leerATT&CK
AttachUserPolicy / AttachRolePolicy / AttachGroupPolicypolicyArn que termina en AdministratorAccess o IAMFullAccessT1098.003
PutUserPolicy / PutRolePolicy / CreatePolicyVersionDocumento de política con "Action": "*" sobre "Resource": "*"T1098.003
AddUserToGroupNombre de grupo que sugiere permisos de administradorT1098

Evasión de defensas

EventoEvidencia que leerATT&CK
cloudtrail:StopLogging, DeleteTrailNombre del trail, regiónT1562.008
cloudtrail:UpdateTrail, PutEventSelectorsDestino o selectores modificadosT1562.008
guardduty:DeleteDetector, UpdateDetector (desactivado), CreateIPSet, filtros de archivadoID del detector, regiónT1562.001
config:StopConfigurationRecorder, DeleteDeliveryChannelRegiónT1562.001
securityhub:DisableSecurityHub, macie2:DisableMacie, inspector2:Disable, detective:DeleteGraphServicioT1562.001
s3:PutBucketLogging sin destinoRegistro de acceso desactivadoT1562.008
ec2:DeleteFlowLogsRegistro de red eliminadoT1562.008
logs:DeleteLogGroup / DeleteLogStreamEvidencias destruidasT1070
ec2:AuthorizeSecurityGroupIngress con 0.0.0.0/0Cortafuegos abiertoT1562.007
Escrituras en una región no utilizada antesawsRegionT1535

El artículo sobre evasión de defensas explica cómo interpretar el hueco que deja un StopLogging.

Acceso a credenciales y exfiltración

EventoEvidencia que leerATT&CK
secretsmanager:GetSecretValue / BatchGetSecretValue sobre muchos secretossecretId distintos por principalT1555.006
Ráfagas de s3:GetObject (evento de datos)Recuento por principal y bucket; additionalEventData.bytesTransferredOutT1530
s3:PutBucketPolicy con Principal: "*", PutBucketAcl con AllUsersBucket hecho públicoT1530
DeleteBucketPublicAccessBlock / PutPublicAccessBlock debilitadoBarrera de protección eliminadaT1530
ec2:ModifySnapshotAttribute, ModifyImageAttribute, rds:ModifyDBSnapshotAttributecreateVolumePermission / restore compartido con una cuenta ajena o con allT1537

GetObject es un evento de datos: solo aparece si el trail se configuró para registrarlo. Consulte las evidencias de exfiltración de datos de S3.

Impacto

EventoEvidencia que leerATT&CK
ec2:RunInstances con tipos de instancia p* / g*instanceType, awsRegionT1496
servicequotas:RequestServiceQuotaIncreasequotaCode, regiónT1496
Muchos Delete* / Terminate* de un mismo principalRecuento cada 10 minT1485
kms:ScheduleKeyDeletion, DisableKeyID de la claveT1485, T1486

Convertir la lista en alertas

La recomendación de la propia AWS es enviar el trail a CloudWatch Logs y crear filtros de métricas y alarmas sobre eventos como estos (guía de re:Post); las reglas de EventBridge también sirven. Para una investigación a posteriori basta con filtrar las exportaciones, o bien soltarlas en el analizador, que evalúa estas reglas sobre cada registro y vincula cada hallazgo con sus técnicas de ATT&CK. La guía de análisis paso a paso muestra cómo confirmarlos.

Artículos relacionados

Artículos relacionados

Evasión de defensas en AWS: StopLogging, DeleteTrail, selectores de eventos, GuardDuty, Config y Flow Logs borrados: lo que CloudTrail registra y lo que pierde.
Cómo persisten los atacantes en AWS con IAM: usuarios de puerta trasera, claves extra, políticas de administrador, confianza de roles y su rastro en CloudTrail.
Pruebe o descarte el robo de datos en S3: eventos de datos de CloudTrail, registros de acceso de S3, buckets públicos, instantáneas compartidas y sus límites.

Esta herramienta no está afiliada a Amazon Web Services, Inc. ni a Amazon.com, Inc., ni cuenta con su respaldo o patrocinio. AWS, Amazon Web Services, CloudTrail y GuardDuty son marcas comerciales de Amazon.com, Inc. o de sus filiales. Los demás nombres son marcas comerciales de sus respectivos propietarios.