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

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

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

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

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

Категории

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

mail-security-tester

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

Репозиторий
244467 лет назадПроверено 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: Логические значения, по умолчанию . Обычно отправитель и получатели устанавливаются в сообщении, и модуль Python SMTP берет их оттуда. Иногда желательно явно задать их в библиотеке SMTP, что можно настроить, установив эти значения в .

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

Обходы (Evasion)

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

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

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

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

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

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

Использование методов обхода в тестовых случаях

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

  1. Создать базовый объект (письмо или вложение) без учета обхода.
  2. Создать экземпляр соответствующего класса обхода с помощью экземпляра фабрики обхода из self.evasions, например: evasion_items = self.evasions["evasion_identifier"].getEvasionGenerator(message)
  3. Итерировать по генератору и возвращать тестовые случаи:
root@kitploit:~
for evasion_item in evasion_items:
    yield evasion_item

Использование метода обхода Content-Disposition

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

Скачать инструмент
False
True
  • finalizeMessage(msg): По умолчанию базовый класс теста устанавливает заголовки From и To соответствующим образом. Это поведение можно переопределить, если это требуется для тестового случая.
  • MailAttachmentTestBase: Базовый класс тестов для тестовых случаев с вложениями. Он генерирует полностью валидное письмо с темой и текстовой частью и прикрепляет к нему тестовый случай. Производный от MailTestBase, поэтому методы/переменные из него также могут быть переопределены здесь.
    • generateAttachments(): Генерирует тестовые случаи в виде кортежей (описание, вложение).
    • subject: Устанавливает тему. Заполнитель {} заменяется описанием, полученным из generateAttachments().
    • generateTestCases(): уже переопределен реализацией генерации сообщений, описанной выше, но может быть дополнительно адаптирован при необходимости.