
Uno script che ti aiuta a capire perché la tua E-Mail è finita nello Spam
Che tu stia cercando di capire perché una specifica e-mail è finita in SPAM/Junk per le tue attività amministrative quotidiane o per i tuoi scopi di simulazione di Phishing Red-Team, questo script è qui per aiutarti!
L'idea è nata durante la consegna di esercizi commerciali di simulazione di phishing contro un'infrastruttura MS Office365 E5, dotata di MS Defender per Office365. Come puoi immaginare, uno stack di sicurezza piuttosto ostico con cui lavorare dal punto di vista della simulazione di phishing.
Dopo aver scavato manualmente tra tutte queste intestazioni SMTP di Office365 e aver cercato di selezionare i valori SCL, è giunto il momento di scrivere un parser appropriato per le intestazioni SMTP.
Il tempo è passato, ho aggiunto supporto per sempre più intestazioni SMTP - ed eccolo qui. Uno strumento che ora comprende decine di intestazioni diverse.
Questo strumento accetta in input un file *.EML o *.txt con tutte le intestazioni SMTP. Estrae quindi un sottoinsieme di intestazioni interessanti e, usando 105+ test, tenta di decodificarle il più possibile.
Questo script estrae anche tutti gli indirizzi IPv4 e i nomi di dominio e ne esegue la risoluzione DNS completa.
L'output risultante conterrà informazioni utili sul motivo per cui questa e-mail potrebbe essere stata bloccata.
Per abbellire il tuo codice HTML di phishing prima di inviarlo al tuo cliente, potresti anche volerlo passare al mio phishing-HTML-linter.py. Fa un lavoro abbastanza decente nel trovare bad smells nel tuo HTML che faranno aumentare il punteggio di spam della tua e-mail.
Received ben analizzate):



py decode-spam-headers.py headers.txt -f html -o report.html ):
Intestazioni elaborate (vengono analizzate più di 85+ intestazioni):
X-forefront-antispam-reportX-exchange-antispamX-exchange-antispam-mailbox-deliveryX-exchange-antispam-message-infoX-microsoft-antispam-report-cfa-testReceivedFromToSubjectThread-topicReceived-spfX-mailerX-originating-ipUser-agentX-forefront-antispam-reportX-microsoft-antispam-mailbox-deliveryX-microsoft-antispamX-exchange-antispam-report-cfa-testX-spam-statusX-spam-levelX-spam-flagX-spam-reportX-vr-spamcauseX-ovh-spam-reasonX-vr-spamscoreX-virus-scannedX-spam-checker-versionX-ironport-avX-ironport-anti-spam-filteredX-ironport-anti-spam-resultX-mimecast-spam-scoreSpamdiagnosticmetadataX-ms-exchange-atpmessagepropertiesX-msfblX-ms-exchange-transport-endtoendlatencyX-ms-oob-tlc-oobclassifiersX-ip-spam-verdictX-amp-resultX-ironport-remoteipX-ironport-reputationX-sbrsX-ironport-sendergroupX-policyX-ironport-mailflowpolicyX-remote-ipX-sea-spamX-fireeyeX-antiabuseX-tmase-versionX-tm-as-product-verX-tm-as-resultX-imss-scan-detailsX-tm-as-user-approved-senderX-tm-as-user-blocked-senderX-tmase-resultX-tmase-snap-resultX-imss-dkim-white-listX-tm-as-result-xfilterX-tm-as-smtpX-scanned-byX-mimecast-spam-signatureX-mimecast-bulk-signatureX-sender-ipX-forefront-antispam-report-untrustedX-microsoft-antispam-untrustedX-sophos-senderhistoryX-sophos-rescanX-MS-Exchange-CrossTenant-IdX-OriginatorOrgIronPort-DataIronPort-HdrOrdrX-DKIMDKIM-FilterX-SpamExperts-ClassX-SpamExperts-EvidenceX-Recommended-ActionX-AppInfoX-SpamX-TM-AS-MatchedIDX-MS-Exchange-EnableFirstContactSafetyTipX-MS-Exchange-Organization-BypassFocusedInboxX-MS-Exchange-SkipListedInternetSenderX-MS-Exchange-ExternalOriginalInternetSenderX-CNFS-AnalysisX-Authenticated-SenderX-Apparently-FromX-Env-SenderSenderLa maggior parte di queste intestazioni non è completamente documentata, quindi lo script non è in grado di individuare tutti i dettagli, ma almeno raccoglie tutto ciò che sono riuscito a trovare su di esse.
(5) Test: X-Forefront-Antispam-Report
HEADER: X-Forefront-Antispam-Report
VALUE: CIP:209.85.167.100;CTRY:US;LANG:de;SCL:5;SRV:;IPV:NLI;SFV:SPM;H:mail-lf1-f100.google.com;PTR:mail-l f1-f100.google.com;CAT:DIMP;SFTY:9.19;SFS:(4636009)(956004)(166002)(6916009)(356005)(336012)(19 625305002)(22186003)(5660300002)(4744005)(6666004)(35100500006)(82960400001)(26005)(7596003)(7636003)(554460 02)(224303003)(1096003)(58800400005)(86362001)(9686003)(43540500002);DIR:INB;SFTY:9.19;
[...]
- Message matched 24 Anti-Spam rules (SFS): <============ opaque anti-spam rules
- (1096003)
- (166002)
- (19625305002)
- (22186003)
- (224303003)
- (26005)
- (336012)
- (356005)
- (35100500006) - (SPAM) Message contained embedded image.
Il processo è puramente manuale e ricorre all'invio di email appositamente progettate ai server di posta di Office365, per poi esaminare e correlare manualmente le regole raccolte.
Avendo già inviato più di 60 email, ecco cosa posso dire finora sulle regole di Microsoft:```py
#
# Below rules were collected solely in a trial-and-error manner or by scraping any
# pieces of information from all around the Internet.
#
# They do not represent the actual Anti-Spam rule name or context and surely represent
# something close to what is understood (or they may have totally different meaning).
#
# Until we'll be able to review anti-spam rules documention, there is no viable mean to map
# rule ID to its meaning.
#
Anti_Spam_Rules_ReverseEngineered = \
{
'35100500006' : logger.colored('(SPAM) Message contained embedded image.', 'red'),
# https://docs.microsoft.com/en-us/answers/questions/416100/what-is-meanings-of-39x-microsoft-antispam-mailbox.html
'520007050' : logger.colored('(SPAM) Moved message to Spam and created Email Rule to move messages from this particular sender to Junk.', 'red'),