
Un script que te ayuda a entender por qué tu correo electrónico terminó en Spam
Ya sea que estés tratando de entender por qué un correo electrónico específico terminó en SPAM/Correo no deseado para tus tareas administrativas diarias o para tus propósitos de simulación de phishing Red-Team, ¡este script está ahí para ayudarte!
La idea surgió al realizar ejercicios comerciales de simulación de phishing contra un entorno MS Office365 E5, equipado con MS Defender for Office365. Como uno puede imaginar, un stack de seguridad bastante difícil de manejar desde una perspectiva de simulación de phishing. Después de revisar manualmente todos estos encabezados SMTP de Office365 e intentar seleccionar los valores SCL, llegó el momento de escribir un parser adecuado para encabezados SMTP.
El tiempo pasó y fui añadiendo soporte para más y más encabezados SMTP - y aquí lo tenemos. Una herramienta que ahora comprende decenas de encabezados diferentes.
Esta herramienta acepta como entrada un archivo *.EML o *.txt con todos los encabezados SMTP. Luego extraerá un subconjunto de encabezados interesantes y, mediante 105+ pruebas, intentará decodificarlos tanto como sea posible.
Este script también extrae todas las direcciones IPv4 y nombres de dominio, y realiza una resolución DNS completa de los mismos.
La salida resultante contendrá información útil sobre por qué este correo electrónico podría haber sido bloqueado.
Para embellecer tu código HTML de phishing antes de enviarlo a tu cliente, es posible que también quieras pasárselo a mi phishing-HTML-linter.py. Hace un trabajo bastante decente encontrando malos olores en tu HTML que harán que tu correo tenga un aumento en la puntuación de spam.
Received correctamente analizados):



py decode-spam-headers.py headers.txt -f html -o report.html ):
Encabezados procesados (se analizan más de 85+ encabezados):
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 mayoría de estos encabezados no están completamente documentados, por lo que el script no puede precisar todos los detalles, pero al menos recopila todo lo que pude encontrar sobre ellos.
(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.
El proceso es puramente manual y recurre al envío de correos diseñados específicamente a los servidores de correo de Office365, y luego a la revisión y correlación manual de las reglas recopiladas.
Habiendo enviado ya más de 60 correos, esto es lo que puedo decir hasta ahora sobre las reglas de 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'),