Источник: https://github.com/AnaktaCTF/CTF/blob/main — Misc/Postal_Protocols.md
Введение
Электронная почта — важный инструмент связи, который широко используется в современном мире. Однако, как и любая другая технология, протоколы, обеспечивающие её работу, могут иметь уязвимости. Эти уязвимости часто используются злоумышленниками для атак, поэтому изучение, тестирование и защита этих протоколов имеет ключевое значение, особенно в контексте информационной безопасности и CTF (Capture The Flag) задач.
1. Описание почтовых протоколов
SMTP (Simple Mail Transfer Protocol)
SMTP — это протокол, используемый для отправки электронной почты. Он работает на уровне приложения и использует TCP порт 25 (или 587 для защищённых соединений).
Ключевые особенности:
- Основной протокол для передачи почты между серверами.
- Возможность добавления расширений (например, SMTP AUTH для аутентификации).
- Использует простой текст для команд и сообщений.
Подключение
Подключение через Telnet
Telnet можно использовать для подключения к удалённому серверу с помощью команды:
telnet example.com 25
Перечисление
Определение SMTP-сервера
Для проверки наличия SMTP-сервера на целевом хосте можно использовать Nmap:
nmap -p25,465,587 -sV -Pn target.com
Перечисление пользователей
Nmap имеет скрипт для перечисления пользователей SMTP:
nmap -p25 --script smtp-enum-users.nse target.com
Перечисление записей DNS MX
Для нахождения почтовых серверов (MX) домена можно использовать утилиту dig:
dig +short mx example.com
Раскрытие информации с NTLM-аутентификацией
Некоторые SMTP-серверы с включённой NTLM-аутентификацией могут раскрывать конфиденциальную информацию, например версию Windows Server и внутренний IP:
nmap -p25 --script smtp-ntlm-info --script-args smtp-ntlm-info.fingerprint=on target.com
Вектор атак
Уязвимость Open Relay
Open Relay позволяет серверу принимать и пересылать сообщения, не предназначенные для локальных пользователей. Для проверки:
telnet target.com 25
MAIL FROM:<test@example.com>
RCPT TO:<test2@anotherexample.com>
DATA
Subject: Test open relay
Test message
.
QUIT
Постэксплуатация
Общие команды SMTP
| Команда | Описание | Пример |
|---|---|---|
| HELO | Идентифицирует клиента серверу. | HELO example.com |
| EHLO | Расширенное приветствие. | EHLO example.com |
| MAIL FROM: | Указывает адрес отправителя. | MAIL FROM:<sender@example.com> |
| RCPT TO: | Указывает адрес получателя. | RCPT TO:<recipient@example.com> |
| DATA | Начало тела сообщения. | DATA |
| RSET | Сбрасывает сессию. | RSET |
| NOOP | Без операции, используется для тестирования. | NOOP |
| QUIT | Завершает сессию. | QUIT |
POP3 (Post Office Protocol v3)
POP3 — это протокол для получения электронной почты с сервера. Работает на порту 110 (или 995 для SSL/TLS).
Ключевые особенности:
- Предназначен для загрузки писем с сервера на локальное устройство.
- Удаляет письма с сервера после загрузки (по умолчанию).
- Ограниченная функциональность (нет синхронизации между устройствами).
Подключение
Ручное подключение
Для подключения можно использовать Netcat:
nc <target-ip> 110
Подключение через OpenSSL
Для тестирования защищённого соединения POP3:
openssl s_client -connect <ip>:995
Распознавание
Сбор баннеров
Для получения баннера:
nc <target-ip> 110
Получение информации через Nmap
nmap -p 110 --script pop3-capabilities <ip>
Перечисление
Использование скрипта для сбора информации:
nmap -p 110 --script pop3-ntlm-info <ip>
Вектор атак
Брутфорс
Nmap
nmap -p 110 --script pop3-brute --script-args userdb=users.txt,passdb=pass.txt <ip>
Hydra
hydra -L <user list file> -P <password list file> -f <ip> pop3 -V
Постэксплуатация
Извлечение писем
Для чтения писем используйте команду:
RETR 1
Удаление писем
Для удаления письма:
DELE 1
Проверка на наличие учётных данных
Изучите содержимое писем на наличие логинов и паролей.
Поиск конфиденциальных данных
В письмах могут содержаться личные, финансовые или корпоративные секреты.
Примеры команд POP3:
- USER — указание имени пользователя.
- PASS — ввод пароля.
- LIST — список сообщений.
- RETR — получение сообщения.
- DELE — удаление сообщения.
IMAP (Internet Message Access Protocol)
IMAP — это протокол для доступа к электронной почте, который работает на порту 143 (или 993 для SSL/TLS).
Ключевые особенности:
- Поддержка работы с почтой на сервере без необходимости её загрузки.
- Возможность работы с папками, поиска и фильтрации сообщений.
- Синхронизация между устройствами.
Подключение
Подключение через Telnet
Для подключения к серверу IMAP используйте:
telnet <server-ip> <port>
Подключение через почтовые клиенты
Для работы с IMAP можно использовать почтовые клиенты, такие как Outlook, Thunderbird или Apple Mail.
Распознавание
Определение IMAP-сервера
Сканирование с помощью Nmap:
nmap -p 143,993 <target-ip>
Сбор баннеров
Получение баннера с помощью Telnet:
telnet <server-ip> <port>
Перечисление
Перечисление почтовых ящиков
Для получения списка почтовых ящиков:
LIST "" *
Перечисление заголовков писем
Получение заголовков письма:
FETCH 1 BODY[HEADER.FIELDS (FROM TO SUBJECT DATE)]
Вектор атак
Брутфорс
Hydra
hydra -L users.txt -P passwords.txt imap://<server-ip>
Nmap
nmap --script imap-brute -p 143,993 <target-ip>
IMAP-инъекции
Используются для эксплуатации уязвимостей серверного ПО.
Атаки «человек посередине» (MitM)
MitM-атаки на IMAP-трафик могут перехватывать и модифицировать сообщения.
Постэксплуатация
Извлечение почты
После получения доступа к аккаунту можно извлечь конфиденциальную информацию.
Манипуляции с письмами
Удаление, пересылка или изменение писем для достижения целей.
Настройка переадресации
Установка правил пересылки для отправки входящих сообщений на сторонний адрес.
Примеры команд IMAP:
- LOGIN — аутентификация пользователя.
- SELECT — выбор почтового ящика.
- FETCH — получение сообщений.
- STORE — изменение флагов сообщений.
- LOGOUT — завершение сеанса.
Другие протоколы
- MIME (Multipurpose Internet Mail Extensions) — стандарт для передачи мультимедийных сообщений.
- ESMTP (Extended SMTP) — расширение для SMTP, добавляющее поддержку дополнительных функций (например, авторизация).
- LMTP (Local Mail Transfer Protocol) — оптимизированный протокол для локальных серверов.
2. Уязвимости почтовых протоколов
Общие уязвимости
-
Проблемы с аутентификацией:
- Отсутствие обязательного использования шифрования (например, отправка паролей в открытом виде).
- Устаревшие методы авторизации (PLAIN, LOGIN).
-
Man-in-the-Middle (MITM) атаки:
- Возможность перехвата данных при отсутствии шифрования (SMTP без STARTTLS, IMAP/POP3 без SSL/TLS).
-
Ошибки в конфигурации серверов:
- Открытые релееры SMTP (Open Relay), позволяющие отправлять спам.
- Неправильное управление доступом к почтовым ящикам.
-
Атаки на протоколы:
- Командные инъекции (например, подмена команды HELO).
- Эксплуатация переполнения буфера.
-
Социальная инженерия и фишинг:
- Использование фальсифицированных заголовков в письмах.
- Отправка поддельных сообщений с легитимных серверов через плохо настроенные SMTP.
-
Подбор паролей через слабую защиту от брутфорса
Cпецифичные уязвимости протоколов
-
SMTP:
- Подмена отправителя (Email Spoofing) - Отсутствие проверки подлинности отправителя позволяет злоумышленникам отправлять письма от имени доверенных лиц.
- Открытые релееры (Open Relay) - Серверы, неправильно настроенные для проверки отправителя, позволяют пересылать почту от любого отправителя к любому получателю, что используется для спама и фишинга.
-
POP3:
- Перехват учетных данных при отсутствии SSL/TLS.
-
IMAP:
- Уязвимости в серверах IMAP, позволяющие выполнение произвольного кода.
- IMAP-инъекции - Внедрение вредоносных команд через специально сформированные запросы может привести к несанкционированному доступу или утечке данных
3. Задачи в CTF
SMTP
-
Email Spoofing:
- Найти и использовать открытую SMTP-конфигурацию для отправки поддельных писем.
- Подделать заголовки письма для обхода фильтров.
-
Анализ SMTP трафика:
- Исследовать перехваченный дамп трафика, чтобы извлечь данные (учетные записи, команды).
POP3
-
Перехват учетных данных:
- Декодировать логины и пароли, переданные в незашифрованном виде.
- Анализировать данные для восстановления писем.
-
Извлечение вложений:
- Восстановить файл, переданный через MIME.
IMAP
-
Синхронизация писем:
- Выполнить аутентификацию и получить доступ к почтовым ящикам.
-
Брутфорс:
- Найти учетные данные для доступа к серверу.
Примеры задач
- Найти пароль в заголовках письма.
- Извлечь флаг, скрытый в закодированном содержимом письма (Base64, quoted-printable).
- Перехватить и декодировать данные протоколов.
4. Как готовиться и решать задачи
Инструменты для тестирования
-
Wireshark:
- Анализ трафика SMTP, POP3, IMAP.
- Фильтрация по портам и декодирование содержимого.
-
Telnet и Netcat:
- Ручное тестирование SMTP, POP3, IMAP.
- Отправка и получение сообщений.
-
Python скрипты:
- Использование библиотек
smtplib,imaplib,poplibдля автоматизации работы.
- Использование библиотек
-
Burp Suite:
- Перехват HTTPS трафика почтовых клиентов.
-
Nmap:
- Сканирование портов и выполнение скриптов для обнаружения уязвимостей в почтовых сервисах.
-
Hydra:
- Инструмент для проведения брутфорс-атак на почтовые сервисы.
5. Pentest SMTP, IMAP, POP3
Пентест SMTP-сервера
Команда EXPN раскрывает реальные адреса псевдонимов пользователей и списков рассылки, а VRFY может подтвердить существование имён действительных пользователей.
Перечисление через SMTP можно выполнить вручную с помощью таких утилит, как telnet и netcat, или автоматически, используя различные инструменты, такие как metasploit, nmap и smtp-user-enum. На следующих двух скриншотах показано, как можно перечислять пользователей с помощью команд VRFY и RCPT через службу Telnet.
Перечисление пользователей SMTP через Telnet
Перечисление пользователей с помощью команды RCPT
Metasploit
Модуль, который может выполнять перечисление пользователей через SMTP в Metasploit Framework:
auxiliary/scanner/smtp/smtp_enum
Единственное, что требуется этому модулю, — это указать IP-адрес удалённого хоста и выполнить команду run, так как остальные параметры автоматически заполняются Metasploit.
Конфигурация модуля Metasploit для перечисления SMTP
Результаты работы Metasploit показаны на следующем изображении:
Результаты перечисления пользователей через Metasploit
smtp-user-enum
Ещё один инструмент, который можно использовать, — это smtp-user-enum, предоставляющий три метода перечисления пользователей. Команды, используемые этим инструментом для проверки имён пользователей: EXPN, VRFY и RCPT. Он также поддерживает проверку одного имени пользователя или нескольких через .txt-файл. Чтобы эффективно использовать этот инструмент, вам понадобится хороший список имён пользователей. Пример сканирования с использованием команды VRFY, который обнаружил следующие имена пользователей:
Перечисление пользователей SMTP с помощью smtp-user-enum
Инструмент также может использоваться для обнаружения действительных email-адресов вместо имён пользователей. Следующее изображение иллюстрирует это использование:
Обнаружение email-адресов через smtp-user-enum
Nmap
Перечисление SMTP также можно выполнить с помощью Nmap. В движке NSE (Nmap Scripting Engine) есть скрипт для перечисления пользователей SMTP. Основное использование скрипта выглядит так:
nmap –script smtp-enum-users.nse 172.16.212.133
Перечисление имён пользователей SMTP через Nmap
На приведённом изображении видно, что перечисление в этом случае не удалось.
Вывод
SMTP — это общая служба, которая встречается в каждой сети. Администраторам необходимо правильно настраивать почтовые серверы, запрещая выполнение команд EXPN, VRFY и RCPT, чтобы избежать утечки данных. С другой стороны, тестировщики на проникновение могут использовать имена пользователей, полученные через перечисление, для проведения дальнейших атак на другие системы.
Вот перевод и форматирование секций для IMAP и POP3:
Лучшие практики пентеста IMAP
IMAP
IMAP обычно использует порты 143 и 993.
PORT STATE SERVICE VERSION
143/tcp open imap Dovecot imapd (Ubuntu)
Пентест IMAP
Поиск с помощью Shodan:
port:143, 993
port:143 CAPABILITY
port:993 CAPABILITY
Захват баннеров:
# Захват баннеров и тест соединения
nc -nv IP 143
A1 LOGIN “root” “”
A1 LOGIN root toor
A1 LOGIN root root
Примеры команд Nmap:
nmap -p143 -sV --script=banner 192.168.x.x
nmap -p143 --script=imap-ntlm-info 192.168.x.x
msf > use auxiliary/scanner/imap/imap_version
openssl s_client -connect 192.168.x.x:993 -quiet
telnet 192.168.x.x 143
Определение возможностей сервера:
nmap -sV --script=imap-capabilities -p143 10.10.x.x
Захват трафика IMAP
msf > use auxiliary/server/capture/imap
NTLM-аутентификация — Утечка информации
Если сервер поддерживает NTLM-аутентификацию (Windows), можно получить чувствительную информацию, такую как версия ПО:
telnet example.com 143
* OK The Microsoft Exchange IMAP4 service is ready.
>> a1 AUTHENTICATE NTLM
+
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
+
TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA
Автоматизация через скрипт Nmap:
nmap --script=imap-ntlm-info.nse
Брутфорс IMAP
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f 192.168.x.x imap -V
Использование CURL
Основные команды для работы с IMAP через CURL:
# Список почтовых ящиков
curl -k 'imaps://10.10.x.x/' --user user:pass
# Список сообщений в папке (например, INBOX)
curl -k 'imaps://10.10.x.x/INBOX?ALL' --user user:pass
# Загрузка сообщения
curl -k 'imaps://10.10.x.x/INBOX;MAILINDEX=1' --user user:pass
Уязвимости IMAP
Примеры:
- Eudora Qualcomm WorldMail 3.0 [CVE-2005-4267]
msf > use exploit/windows/imap/eudora_list - IMAP Fuzzer
msf > use auxiliary/dos/windows/imap/fuzz_imap
Лучшие практики пентеста POP3
POP3
POP3 обычно использует порты 110 и 995.
Что такое POP3?
POP3 (Post Office Protocol) позволяет скачивать письма на локальное устройство, после чего они обычно удаляются с почтового сервера. Это означает, что письма привязаны к конкретному устройству и недоступны для других клиентов после загрузки.
PORT STATE SERVICE VERSION
110/tcp open pop3 Zimbra Collabration Suite pop3d
Пентест POP3
Поиск с помощью Shodan:
port:110, 995
Захват баннеров:
telnet 10.10.x.x 110
nc -nv 10.10.x.x 110
nmap -p110 --script=banner 10.10.x.x
Определение возможностей POP3:
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port 110 192.168.x.x
Перехват трафика POP3
msf > use auxiliary/server/capture/pop3
Брутфорс POP3
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
Уязвимости POP3
Примеры:
- Seattle Lab Mail 5.5 [CVE-2003-0264]
msf > use exploit/windows/pop3/seattlelab_pass - Cyrus – Gentoo 2006.0 Linux 2.6 [CVE-2006-2502]
msf > use exploit/linux/pop3/cyrus_pop3d_popsubfolders
Практика
-
Настройка тестового окружения:
- Поднять локальный SMTP, POP3, IMAP-серверы (например, с использованием Docker).
- Настроить уязвимости (открытые релееры, отсутствие SSL/TLS).
-
Решение задач:
- Начать с анализа сетевого трафика.
- Понять структуру команд протоколов.
- Использовать команды протоколов для взаимодействия с сервером (например,
EXAMINEиFETCHв IMAP).
-
Тренировка на CTF-платформах:
- Попробовать задачи на HackTheBox, TryHackMe, CTFLearn, OverTheWire.
- Решить сценарии, связанные с почтовыми протоколами.
Пример разбора задачи
- Условие: Имеется дамп трафика, перехваченного с почтового сервера. Найти флаг.
- Решение:
- Открыть дамп в Wireshark, отфильтровать трафик по порту (25, 110, 143).
- Декодировать Base64 содержимое письма.
- Найти флаг в теле или заголовках сообщения.
Заключение
Почтовые протоколы остаются важным элементом инфраструктуры, а их уязвимости — частой целью атак. Знание тонкостей работы SMTP, POP3 и IMAP, а также их уязвимостей, позволяет не только улучшить безопасность систем, но и успешно решать задачи на CTF. Постоянная практика, анализ трафика и изучение реальных уязвимостей помогут углубить знания и подготовиться к соревнованиям.
Список источников
- RFC 5321 - Simple Mail Transfer Protocol (SMTP): https://datatracker.ietf.org/doc/html/rfc5321
- RFC 1939 - Post Office Protocol - Version 3 (POP3): https://datatracker.ietf.org/doc/html/rfc1939
- RFC 3501 - Internet Message Access Protocol (IMAP): https://datatracker.ietf.org/doc/html/rfc3501
- Wireshark Documentation: https://www.wireshark.org/docs/
- HackTheBox Academy - Protocol Analysis: https://academy.hackthebox.com
- OverTheWire - Wargames: https://overthewire.org/wargames
- Practical Ethical Hacking by TCM Security: https://tcm-sec.com
- https://hackviser.com/tactics/pentesting/services/imap
- https://hackviser.com/tactics/pentesting/services/smtp
- https://hackviser.com/tactics/pentesting/services/pop3
- https://luemmelsec.github.io/Pentest-Everything-SMTP/
- https://shahmeeramir.com/penetration-testing-an-smtp-server-cf91e4846101
- https://secybr.com/posts/imap-pentesting-best-practices/
- https://secybr.com/posts/pop3-pentesting-best-practices/
- https://helladmin.gitbooks.io/pentesting-handbook/content/phase-2-scanning/service-enumeration/25-tcp-simple-mail-transfer-protocol-smtp.html
- https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/07-Input_Validation_Testing/10-Testing_for_IMAP_SMTP_Injection
- https://docs.cobalt.io/methodologies/external-network/
- https://csbygb.gitbook.io/pentips/networking-protocols-and-network-pentest/imap
- https://csbygb.gitbook.io/pentips/networking-protocols-and-network-pentest/pop3
- https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/
- https://beaglesecurity.com/blog/vulnerability/imap-smtp-injection.html