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

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

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

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

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

Категории

Все категории
Loading categories
mail-security-tester — Фреймворк для тестирования решений по безопасности и фильтрации почты. | Kitploit
Инструменты/GitHubGitHub/tkcert/mail-security-tester
Инструменты фишингаСканеры уязвимостейОбход IDS/IPSТестирование на ПроникновениеБезопасность Электронной Почты
GitHubtkcert/mail-security-tester

mail-security-tester

Фреймворк для тестирования решений по безопасности и фильтрации почты.

Репозиторий
24446188 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Build Status

Фреймворк для тестирования безопасности почты

Тестовый фреймворк для решений по безопасности и фильтрации почты.

ВАЖНО: Не делайте ничего злого с этим! Тестирование облачных или иных хостинговых решений всегда должно быть одобрено тестируемым провайдером. Используйте только свои собственные тестовые аккаунты и не досаждайте никому кучей тестовых писем.

Установка

Фреймворк для тестирования безопасности почты работает с Python >=3.5. Просто клонируйте этот репозиторий и приступайте. Никаких дополнительных зависимостей не требуется.

Использование

Скрипт mail-tester.py запускает тесты. Прочитайте справку с помощью ./mail-tester.py --help и проверьте список тестов и модулей обхода с помощью ./mail-tester.py -l, чтобы получить обзор возможностей и использования скрипта. Несколько советов:

  • Для минимального запуска теста следует указать как минимум параметры --smtp-server и --to.
  • Все параметры также можно сохранять в конфигурационных файлах без префикса --. Эти конфигурационные файлы можно использовать, вызвав ./mail-tester.py @tester.conf (конфигурация содержится в tester.conf).
  • Несколько получателей можно настроить с помощью --to для тестирования различных конфигураций фильтров.
  • Некоторые решения по фильтрации почты могут отклонять сообщения через некоторое время. Используйте --auto-delay для автоматического ограничения скорости отправки писем. Это можно тонко настроить с помощью --delay-step, --delay-max и --delay.
  • Некоторые тесты (Спам и Вредоносное ПО) требуют образцы. Поместите их в каталоги и настройте эти каталоги с помощью параметров --spam-folder и --malware-folder. Образцы не включены в этот репозиторий (и не будут). Хорошие места для получения вредоносного ПО — theZoo, Das Malwerk или другие коллекции. Спам можно экспортировать прямо из вашей папки со спамом, но он должен быть в формате EML.
  • Черные списки можно задать с помощью параметра --blacklist; они используются в качестве адресов отправителей.
  • Тестовые случаи Shellshock и Subject XSS должны иметь действительный домен для обратного соединения, где вы сможете видеть любые обратные соединения (особенно DNS-запросы). Для этой цели можно использовать бесплатный сервис Canary Tokens. Спасибо Thinkst за предоставление этого замечательного сервиса!
  • Некоторые хитрые трюки для обхода распознавания вложений можно включить с помощью --evasion content-disposition. Они использовались в прошлом для запутывания решений AV/песочниц и пропуска вредоносных писем.
  • Не забудьте записать результаты теста с помощью --log. Поставщики фильтрации почты часто отклоняют письма в диалоге SMTP, что отражается в сгенерированном логе.
  • Тестовые случаи можно выгрузить с помощью --output в виде обычных файлов в каталог, в формате MBox (--mbox) или MailDir (--maildir). Это полезно для тестирования почтовых клиентов без отправки писем, для документирования или проверки сгенерированных тестовых случаев.

Разработка и расширение

Тесты

Собственные тесты можно реализовать с помощью класса в одном из существующих или вновь созданных файлов Python в каталоге tests/. Класс должен быть подклассом MailTestBase, расположенного в модуле tests.base этого проекта. Вновь реализованные тесты обнаруживаются автоматически, когда переменная класса active установлена в True. Кроме того (если вы планируете вернуть тесты обратно в основной репозиторий), переменные класса identifier, name и description должны быть установлены соответствующим образом.

Существуют следующие базовые классы с методами или переменными класса, предназначенными для переопределения:

  • MailTestBase: Базовый класс тестов для общих тестов.
    • generateTestCases(): Генерирует тестовые сообщения. Они должны создаваться с помощью классов MIME* из пакетов Python email.mime.* или с помощью класса Message из email.message, чтобы обеспечить корректные почтовые сообщения.
    • active: Логическое значение, указывающее, должен ли тест быть активным.
    • identifier: Краткий идентификатор теста. Он используется для включения или отключения тестов в параметрах.
    • name: Краткое название теста.
    • description: Более длинное описание теста, должно укладываться примерно в 100 символов.
    • delivery_sender и delivery_recipient: Логические значения, по умолчанию False. Обычно отправитель и получатели устанавливаются в сообщении, и модуль Python SMTP берет их оттуда. Иногда желательно явно задать их в библиотеке SMTP, что можно настроить, установив эти значения в True.
    • finalizeMessage(msg): По умолчанию базовый класс теста устанавливает заголовки From и To соответствующим образом. Это поведение можно переопределить, если это требуется для тестового случая.
  • MailAttachmentTestBase: Базовый класс тестов для тестовых случаев с вложениями. Он генерирует полностью валидное письмо с темой и текстовой частью и прикрепляет к нему тестовый случай. Производный от MailTestBase, поэтому методы/переменные из него также могут быть переопределены здесь.
    • generateAttachments(): Генерирует тестовые случаи в виде кортежей (описание, вложение).
    • subject: Устанавливает тему. Заполнитель {} заменяется описанием, полученным из generateAttachments().
    • generateTestCases(): уже переопределен реализацией генерации сообщений, описанной выше, но может быть дополнительно адаптирован при необходимости.

Настоятельно рекомендуется устанавливать темы создаваемых сообщений, чтобы можно было распознавать тесты во входящих письмах получателя.

Обходы (Evasion)

Классы обхода реализуют методы для обхода распознавания определенных свойств писем решениями безопасности почты. В настоящее время реализован метод обхода, который пытается скрыть вложения от таких решений с помощью намеренно сломанных заголовков Content-Disposition.

Реализация новых обходов

Обходы реализуются с помощью паттерна фабричных классов. Класс DeliveryBase создает экземпляр фабричного класса, производного от класса BaseEvasionFactory. Конструктор фабрики получает флаг, указывающий, активирован ли обход. Экземпляр фабрики обхода затем передается классу теста и сохраняется в его атрибуте evasions, который содержит словарь с идентификаторами обходов в качестве ключей. Внутри теста класс обхода (на основе EvasionBase) создается с помощью `getEvasionGenerator()». Параметры конструктора определяются индивидуально для каждого метода обхода.

Для реализации обходов используются следующие базовые классы:

  • BaseEvasionFactory: Фабрики обходов должны быть основаны на этом классе. Обычно следует устанавливать только следующие переменные класса:
    • active: Установите в True, если обход должен быть активным.
    • identifier: Краткий идентификатор модуля обхода, используемый для его включения в конфигурации тестов.
    • name: Краткое название метода обхода.
    • description: Более длинное описание метода обхода. Должно укладываться примерно в 100 символов.
    • generator_evasion: Класс обхода, который создается, если обход включен.
    • generator_default: Класс обхода, который создается, если обход отключен.
  • BaseEvasion: Реализация обходов должна быть подклассом этого базового класса. Следующий метод должен быть переопределен:
    • __init__(): Должен создавать экземпляр класса с базовым сообщением или вложением, которое должно быть обработано методами обхода.
    • generate(): Применить метод обхода к объекту, переданному конструктору, и передать его вызывающему коду в виде кортежа (описание, объект с примененным обходом).
Скачать инструмент