
Um script que ajuda você a entender por que seu E-Mail foi parar no Spam
Quer você esteja tentando entender por que um e-mail específico foi parar em SPAM/Lixo eletrônico nas suas tarefas administrativas diárias ou para fins de simulação de Phishing na sua equipe de Red Team, este script está aqui para ajudar!
A ideia surgiu durante a entrega de exercícios comerciais de simulação de Phishing contra um ambiente MS Office365 E5, equipado com MS Defender for Office365. Como se pode imaginar, uma stack de segurança bastante difícil de lidar do ponto de vista de simulação de phishing. Depois de vasculhar manualmente todos esses cabeçalhos SMTP do Office365 e tentar localizar os valores de SCL, chegou a hora de escrever um parser adequado para cabeçalhos SMTP.
Com o tempo, fui adicionando suporte para cada vez mais cabeçalhos SMTP - e aqui está. Uma ferramenta que agora compreende dezenas de cabeçalhos diferentes.
Esta ferramenta aceita como entrada um arquivo *.EML ou *.txt com todos os cabeçalhos SMTP. Em seguida, ela extrai um subconjunto de cabeçalhos interessantes e, usando 105+ testes, tenta decodificá-los o máximo possível.
Este script também extrai todos os endereços IPv4 e nomes de domínio e realiza a resolução completa de DNS para eles.
A saída resultante conterá informações úteis sobre por que esse e-mail pode ter sido bloqueado.
Para embelezar seu código HTML de Phishing antes de enviá-lo ao seu cliente, você também pode querer passá-lo pelo meu phishing-HTML-linter.py. Ele faz um trabalho bastante decente encontrando maus cheiros no seu HTML que farão seu e-mail ganhar uma pontuação de Spam maior.
Received bem analisados):



py decode-spam-headers.py headers.txt -f html -o report.html):
Cabeçalhos processados (mais de 85+ cabeçalhos são analisados):
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-SenderSenderA maioria desses cabeçalhos não é totalmente documentada, portanto, o script não consegue identificar todos os detalhes, mas pelo menos reúne tudo o que pude encontrar sobre eles.
(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.
O processo é puramente manual e recorre ao envio de e-mails especificamente concebidos para os servidores de correio do Office365, seguido de revisão manual e correlação das regras recolhidas.
Tendo já enviado mais de 60 e-mails, eis o que posso dizer até agora sobre as regras da 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'),