Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
decode-spam-headers — Скрипт, который помогает понять, почему ваше электронное письмо попало в спам. | Kitploit
Инструменты/GitHubGitHub/mgeeky/decode-spam-headers
Инструменты фишингаСбор информацииRed TeamingБезопасность Электронной ПочтыАнализ Журналов
GitHubmgeeky/decode-spam-headers

decode-spam-headers

Скрипт, который помогает понять, почему ваше электронное письмо попало в спам.

Репозиторий
69898277 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

decode-spam-headers.py

Независимо от того, пытаетесь ли вы понять, почему конкретное письмо попало в SPAM/Junk в рамках повседневных административных обязанностей или для целей Red-Team фишинг-симуляций, этот скрипт создан, чтобы помочь вам!

Идея возникла при проведении коммерческих упражнений по фишинг-симуляции против инфраструктуры MS Office365 E5, оснащённой MS Defender for Office365. Как можно представить, довольно сложный стек безопасности для работы с точки зрения фишинг-симуляции. После ручного разбора всех этих SMTP-заголовков Office365 и попыток вычленить значения SCL, пришло время написать полноценный парсер SMTP-заголовков.

Шло время, я добавлял поддержку всё новых и новых SMTP-заголовков — и вот что получилось. Инструмент, который теперь понимает десятки различных заголовков.

Информация

Этот инструмент принимает на вход файл *.EML или *.txt со всеми SMTP-заголовками. Затем он извлекает подмножество интересующих заголовков и с помощью 105+ тестов пытается максимально их декодировать.

Кроме того, скрипт извлекает все IPv4-адреса и доменные имена и выполняет их полное DNS-разрешение.

Результирующий вывод будет содержать полезную информацию о том, почему это письмо могло быть заблокировано.

Чтобы украсить ваш фишинг-HTML-код перед отправкой клиенту, вы также можете скормить его моему phishing-HTML-linter.py. Он довольно неплохо находит дурные запахи в вашем HTML, из-за которых ваше письмо получит повышенный Spam-score.

Примеры скриншотов

  • Цепочка MTA-серверов (аккуратно разобранные заголовки Received):

1.png

  • Различные заголовки, декодированные настолько, насколько это возможно, согласно публично доступной документации (здесь Office365 ForeFront Spam Report):

2.png

  • Различные пользовательские эвристики, реализованные для активной проверки и поиска признаков категоризации спама; здесь логика обнаружения Domain Impersonation:

3.png

  • Скрипт пытается восстановить и задокументировать некоторые правила Office365 Anti-Spam, а также собрать публичные знания о других непрозрачных Anti-Spam заголовках:

4.png

  • Отчёт может быть сгенерирован в виде симпатичного HTML (использование: py decode-spam-headers.py headers.txt -f html -o report.html ):

5.png

Обрабатываемые заголовки

Обрабатываемые заголовки (разбирается более 85+ заголовков):

  • X-forefront-antispam-report
  • X-exchange-antispam
  • X-exchange-antispam-mailbox-delivery
  • X-exchange-antispam-message-info
  • X-microsoft-antispam-report-cfa-test
  • Received
  • From
  • To
  • Subject
  • Thread-topic
  • Received-spf
  • X-mailer
  • X-originating-ip
  • User-agent
  • X-forefront-antispam-report
  • X-microsoft-antispam-mailbox-delivery
  • X-microsoft-antispam
  • X-exchange-antispam-report-cfa-test
  • X-spam-status
  • X-spam-level
  • X-spam-flag
  • X-spam-report
  • X-vr-spamcause
  • X-ovh-spam-reason
  • X-vr-spamscore
  • X-virus-scanned
  • X-spam-checker-version
  • X-ironport-av
  • X-ironport-anti-spam-filtered
  • X-ironport-anti-spam-result
  • X-mimecast-spam-score
  • Spamdiagnosticmetadata
  • X-ms-exchange-atpmessageproperties
  • X-msfbl
  • X-ms-exchange-transport-endtoendlatency
  • X-ms-oob-tlc-oobclassifiers
  • X-ip-spam-verdict
  • X-amp-result
  • X-ironport-remoteip
  • X-ironport-reputation
  • X-sbrs
  • X-ironport-sendergroup
  • X-policy
  • X-ironport-mailflowpolicy
  • X-remote-ip
  • X-sea-spam
  • X-fireeye
  • X-antiabuse
  • X-tmase-version
  • X-tm-as-product-ver
  • X-tm-as-result
  • X-imss-scan-details
  • X-tm-as-user-approved-sender
  • X-tm-as-user-blocked-sender
  • X-tmase-result
  • X-tmase-snap-result
  • X-imss-dkim-white-list
  • X-tm-as-result-xfilter
  • X-tm-as-smtp
  • X-scanned-by
  • X-mimecast-spam-signature
  • X-mimecast-bulk-signature
  • X-sender-ip
  • X-forefront-antispam-report-untrusted
  • X-microsoft-antispam-untrusted
  • X-sophos-senderhistory
  • X-sophos-rescan
  • X-MS-Exchange-CrossTenant-Id
  • X-OriginatorOrg
  • IronPort-Data
  • IronPort-HdrOrdr
  • X-DKIM
  • DKIM-Filter
  • X-SpamExperts-Class
  • X-SpamExperts-Evidence
  • X-Recommended-Action
  • X-AppInfo
  • X-Spam
  • X-TM-AS-MatchedID
  • X-MS-Exchange-EnableFirstContactSafetyTip
  • X-MS-Exchange-Organization-BypassFocusedInbox
  • X-MS-Exchange-SkipListedInternetSender
  • X-MS-Exchange-ExternalOriginalInternetSender
  • X-CNFS-Analysis
  • X-Authenticated-Sender
  • X-Apparently-From
  • X-Env-Sender
  • Sender

Большинство из этих заголовков не полностью документированы, поэтому скрипт не может указать все детали, но по крайней мере он собирает всё, что мне удалось о них найти.

Усилия по обратной разработке

Я прилагаю значительные усилия, чтобы выявить и понять различные правила Office365 ForeFront Anti-Spam (SFS, ENG), несмотря на то, что они не являются публично документированными.```

(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.
The process is purely manual and resorts to sending specifically designed mails to the Office365 mail servers and then manually reviewing and correlating collected rules.

Having sent more than 60 mails already, this is what I can tell by now about Microsoft's rules:```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'),

        # triggered on an empty mail with subject being: "test123 - viagra"
        '162623004' : 'Subject line contained suspicious words (like Viagra).',
Скачать инструмент