«Основной вектор атак через почту — не хакерские атаки в чистом виде, а эксплуатация доверия к самому протоколу. Злоумышленник не ломает шифрование, а использует SMTP так, как он был задуман десятилетия назад, когда вопросам безопасности не уделялось такого внимания. Результат — спам, фишинг и компрометация доменной репутации, которые могут дорого обойтись организации».
Почему SMTP остаётся целью
SMTP — это протокол для передачи почты между серверами, а не для работы клиентов, как POP3 или IMAP. Его изначальная открытость и доверительная модель, необходимая для маршрутизации писем по всему миру, создают широкое поле для злоупотреблений. Атаки редко направлены на кражу данных самого сервера; чаще целью становится использование его ресурсов для рассылки спама, фишинга или маскировки другой вредоносной активности.
Ключевые порты и их назначение
Понимание роли портов критично для настройки безопасной инфраструктуры и анализа сетевого трафика.
| Порт | Протокол / Назначение | Статус |
|---|---|---|
| TCP 25 | SMTP (стандартный, без шифрования). Используется для передачи почты между серверами (MTA-to-MTA). | Основной. На нём же может работать STARTTLS. |
| TCP 587 | SMTP Submission (с шифрованием, обычно STARTTLS). Предназначен для отправки почты от клиентов (MUA) к серверу. | Рекомендуемый порт для почтовых клиентов. |
| TCP 465 | SMTPS (SMTP over SSL). Исторический порт для немедленного SSL/TLS-соединения. | Устарел (deprecated), но до сих пор поддерживается некоторым ПО. |
| TCP 110 (POP3), 995 (POP3S) TCP 143 (IMAP), 993 (IMAPS) |
Порты для получения почты клиентами. Атаки на них — отдельная тема, но они часть единой почтовой экосистемы. | Важно разграничивать: SMTP — для отправки, POP3/IMAP — для получения. |
Ошибка в конфигурации, когда сервер принимает письма для ретрансляции с любых адресов на порту 25, создаёт главную уязвимость — открытый релей.
Открытый релей (Open Relay)
Сервер с открытым релеем принимает и пересылает письма от любого отправителя к любому получателю, не проводя авторизацию. Это превращает его в анонимный инструмент для рассылки спама. Современные почтовые системы быстро внесут IP-адрес такого сервера в чёрные списки (DNSBL), что приведёт к блокировке всей исходящей почты организации.
Проверить сервер на наличие открытого релея можно с помощью Nmap и скрипта smtp-open-relay.nse:
nmap --script smtp-open-relay.nse 10.1.2.14
Если в выводе есть строка Server is an open relay, конфигурация уязвима.
Сбор информации через SMTP-команды
Перед прямой атакой злоумышленник попытается получить информацию о сервере и пользователях. SMTP предоставляет для этого встроенные, часто излишне откровенные команды.
Наиболее полезные с точки зрения разведки команды:
- VRFY (Verify) — подтверждает существование почтового ящика на сервере.
- EXPN (Expand) — раскрывает участников рассылочного списка.
- RCPT TO — в рамках транзакции также может использоваться для подбора учётных записей.
Пример ручной проверки через telnet на порт 25:
$ telnet 192.168.78.8 25
220 mail.example.com ESMTP
VRFY omar
252 2.0.0 omar <omar@example.com> # Пользователь существует
VRFY unknown
550 5.1.1 User unknown # Пользователь не найден
Ответ 252 или 250 указывает на успешную проверку, 550 — на ошибку. Автоматизировать перебор можно утилитой smtp-user-enum:
smtp-user-enum -M VRFY -U users.txt -t 192.168.78.8
Важный момент: в современных почтовых серверах команды VRFY и EXPN по умолчанию отключены (в Postfix, Exim, Microsoft Exchange). Их наличие — признак устаревшей или небрежной настройки. Включение этих команд напрямую противоречит рекомендациям по безопасной конфигурации в духе ФСТЭК и 152-ФЗ, так как раскрывает структуру учётных запистий.
Известные уязвимости и эксплойты
Помимо ошибок конфигурации, существуют программные уязвимости в конкретных реализациях SMTP-серверов. Их спектр широк: от переполнений буфера в старом ПО до логических уязвимостей, позволяющих обойти аутентификацию.
Базовый поиск в базах эксплойтов (например, с помощью searchsploit в Kali Linux) показывает сотни записей для различных продуктов: от Alt-N MDaemon и Apache James до Exim и Sendmail.
root@kali:~# searchsploit smtp
... (список уязвимостей) ...
Exim ESMTP 4.80 - glibc gethostbyname Denial of Service | linux/dos/35951.py
DeepOfix SMTP Server 3.3 - Authentication Bypass | linux/remote/29706.txt
...
Критически важно: многие из этих уязвимостей относятся к старым, не поддерживаемым версиям. Однако в корпоративных сетях нередко можно встретить устаревшее ПО, которое не обновлялось годами из-за совместимости со внутренними системами. Регулярное обновление почтового сервера и смежных компонентов — базовое, но часто игнорируемое требование.
Меры защиты и аудита
Защита SM-инфраструктуры — многоуровневая задача.
- Конфигурация сервера: Безусловное отключение
VRFYиEXPN. Настройка строгой политики релейности: сервер должен пересылать почту только для своих доменов и/или только после успешной аутентификации. Принудительное использование шифрования (TLS) для соединений между серверами (MTA) и для клиентов (порт 587 с STARTTLS). - Сетевое разграничение: Ограничение доступа к порту 25 (MTA) только с доверенных IP-адресов других почтовых серверов, если это возможно. Порт 587 для клиентов должен быть защищён корпоративным VPN или доступен только из внутренней сети.
- Мониторинг и аудит: Регулярная проверка логов SMTP-сервера на предмет попыток подбора учётных записей (
VRFY,RCPT TOдля несуществующих пользователей) и использования открытого релея. Внешний аудит — тестирование собственного сервера теми же методами, что использует злоумышленник (например, скриптом проверки релея). - Репутационные механизмы: Контроль IP-адреса сервера в публичных чёрных списках (DNSBL). Настройка SPF, DKIM и DMARC для защиты от спуфинга и подтверждения легитимности исходящей почты.
Главный вывод: уязвимости SMTP редко бывают «зрелищными» утечками данных. Их опасность — в долгосрочной компрометации репутации и ресурсов компании, превращении её инфраструктуры в плацдарм для атак на других. Проверка почтового шлюза на базовые ошибки конфигурации должна быть таким же обязательным элементом аудита, как и анализ веб-приложений.