Добро пожаловать обратно, мои начинающие кибервоины!
В этой серии статей «Основы сетевых технологий для хакеров » мы рассмотрим структуру, принцип работы и уязвимости основных сетевых протоколов. Таким образом, начинающий хакер/пентестер/кибервоин, как мы надеемся, получит представление не только об их работе, но и об их уязвимостях.
В этой части серии мы рассмотрим простой протокол передачи электронной почты (SMTP), протокол, без которого большинство из нас не смогли бы жить!
Как показано на схеме выше, клиент Ana@maildomain-abc.com отправляет электронное письмо на сервер MTU по протоколу SMTP и получает его по протоколу POP3 или IMAP. То же самое верно и для другого клиента, Lav@maildomain-xyz.com. Взаимодействие между почтовыми серверами или MTU осуществляется исключительно по протоколу SMTP через порт 25. POP3 использует порт 110, а IMAP — порт 143.
Граничный MTA использует DNS для поиска записи MX домена получателя (см. DNS ). Эта запись включает имя целевого MTA. Мы можем продемонстрировать это с помощью команды dig .
Затем MTA выбирает целевой хост, подключается к нему и отправляет сообщение.
Получив входящее сообщение, сервер передаёт его агенту доставки почты (MDA) для доставки локальному получателю. После доставки сообщения на локальный почтовый сервер оно сохраняется для извлечения аутентифицированным агентом доставки почты (MUA).
Обратите внимание, что в пакетах 1–3 внешний клиент завершает трёхстороннее TCP-рукопожатие. В пакете 4 SMTP-сервер идентифицирует себя как «mail01» и сервер Postfix на Ubuntu и начинает использовать протокол SMTP для связи. В пакете 5 клиент отправляет команду EHLO, инициируя связь. В пакете 8 клиент идентифицирует отправителя электронной почты, а в пакете 10 — получателя.
Мы можем загрузить exim4 из репозитория Kali.
kali > sudo apt install exim4
Далее нам необходимо запустить мастер настройки, который проведет нас через настройку сервера exim4.
kali > sudo dpkg-reconfigure exim4-config
Это запустит мастер настройки, который запрашивает у нас информацию для настройки почтового сервера.
Первый вопрос — тип почтового сервера. Если вы хотите настроить сервер для отправки и получения электронной почты через Интернет, выберите первый вариант.
Далее вам необходимо указать доменное имя, которым вы владеете. В моём случае я использовал www.hackers-arise.com.
Далее нам необходимо указать IP-адрес, который будет прослушивать сервер.
Здесь нам нужно указать список доменов-получателей или локальных доменов. По умолчанию используется Kali, и я оставил его как есть.
Далее нам нужно предоставить список доменов-получателей, которым система будет передавать почту. Можно оставить это поле пустым.
Далее нам нужно выбрать способ доставки локальной почты. Мы можем выбрать формат mbox (/var/mail) или домашний каталог.
Далее нас спрашивают о DNS-запросах. Если мы хотим минимизировать количество DNS-запросов, выберите «ДА».
Затем выберите домены, для которых будет осуществляться ретрансляция почты. Вы можете оставить это поле пустым.
Наконец, нам нужно выбрать, нужно ли разделять файл конфигурации для exim4. Вариант «Unsplit» более стабилен, а вариант «split» упрощает внесение изменений. Я выбрал «unsplit» или «NO».
Теперь нам осталось только запустить наш сервер exim4, и наш почтовый сервер активирован и готов отправлять и получать электронную почту!
Уязвимости вы можете увидеть ниже.
Кроме того, в 2020 году на почтовых серверах exim были обнаружены две серьезные уязвимости, которые позволяли осуществлять несанкционированный доступ к электронной почте, хранящейся на этих серверах.
Мы можем выполнить TCP-сканирование на порту 25 (порт SMTP по умолчанию) с помощью nmap и включить параметр -A, чтобы попытаться определить службу, работающую на этом порту, например:
кали > nmap -sT -A 192.168.56.103 -p25
Как вы можете видеть выше, nmap обнаружил открытый порт 25 и работающий Exim 4.68.
Чтобы определить потенциальные уязвимости на этом SMTP-сервере, можно использовать скрипты nmap. Чтобы запустить все скрипты nmap для SMTP, можно использовать параметр –script=smtp-* , где подстановочный знак (*) означает запуск всех скриптов в категории smtp.
nmap –script=smtp-* 192.168.56.103 -p 25
Как вы можете видеть выше, скрипты smtp nmap смогли перечислить нескольких пользователей (эти пользователи затем могут быть целью атак социальной инженерии) и обнаружить, что сервер уязвим для эксплойтов cve-2010-4344 и CVE-2010-4345 .
Давайте посмотрим, сможем ли мы найти эти эксплойты в Metasploit. Запустите Metasploit, введя:
kali > msfconsole
Теперь давайте поищем эксплойты Exam, используя функцию поиска.
msf5 > тип поиска:эксплоиты exim
Как видно на скриншоте выше, в Metasploit есть несколько эксплойтов Exim. Давайте попробуем эксплойт exploit/unix/smtp/exim4_string_format .
Сначала загрузим эксплойт с помощью команды use.
msf5> использовать exploit/unix/smtp/exim4_string_format
Прежде чем двигаться дальше, давайте узнаем больше об этой уязвимости, введя ïinfo».
кали > информация
Как вы могли заметить выше, этот модуль эксплуатирует переполнение буфера кучи. Кроме того, при обнаружении интерпретатора Perl он автоматически повышает привилегии с обычного пользователя до root.
Затем установим параметр RHOSTS с IP-адресом целевой системы. После установки RHOSTS зададим полезную нагрузку (PAYLOAD). В данном случае используем cmd/unix/reverse_perl . Эта полезная нагрузка откроет командную оболочку на целевой машине, использующую Perl (в большинстве Unix-подобных систем Perl установлен по умолчанию), которая в случае успеха обратится к нашей атакующей системе.
Наконец, нам нужно только настроить LHOST и LPORT. Давайте настроим LPORT 443 так, чтобы он использовал стандартный открытый порт для HTTPS-трафика. Использование этого порта часто позволяет избежать утечки данных.
Остался последний шаг — запустить эксплойт
msf5> эксплойт
Как вы можете видеть выше, эксплойт сработал и предоставил нам командную оболочку в сеансе 1!
В отличие от систем Windows, при использовании командной оболочки в Linux мы получаем не командную строку, а пустую строку. Чтобы проверить, действительно ли мы находимся на SMTP-сервере Linux, можно ввести команды Linux и посмотреть ответ. В данном случае давайте выполним несколько распространённых команд Linux, таких как id, whoami, pwd, uname -a.
Как вы можете видеть выше, система отвечает, сообщая нам, что пользователь — uid=0 или root, текущий рабочий каталог — /var/spool/exim4, а uname — Linux mailserver01.
В этой серии статей «Основы сетевых технологий для хакеров » мы рассмотрим структуру, принцип работы и уязвимости основных сетевых протоколов. Таким образом, начинающий хакер/пентестер/кибервоин, как мы надеемся, получит представление не только об их работе, но и об их уязвимостях.
В этой части серии мы рассмотрим простой протокол передачи электронной почты (SMTP), протокол, без которого большинство из нас не смогли бы жить!
Что такое SMTP?
Протокол Simple Mail Transport, или SMTP, как его обычно называют, является одним из важнейших протоколов в нашу цифровую эпоху. Он используется для передачи электронной почты от одного пользователя к другому. Хотя SMTP был впервые утверждён в 1983 году, это всё тот же протокол, который передаёт практически все электронные письма, но с некоторыми улучшениями.
Как показано на схеме выше, клиент Ana@maildomain-abc.com отправляет электронное письмо на сервер MTU по протоколу SMTP и получает его по протоколу POP3 или IMAP. То же самое верно и для другого клиента, Lav@maildomain-xyz.com. Взаимодействие между почтовыми серверами или MTU осуществляется исключительно по протоколу SMTP через порт 25. POP3 использует порт 110, а IMAP — порт 143.
Модель обработки электронной почты
Сначала электронное письмо отправляется почтовым клиентом или почтовым агентом пользователя (MUA), таким как Microsoft Outlook, Mozilla и т. д., на почтовый сервер (почтовый агент или MSA) по протоколу SMTP через порт 587. Затем это письмо передается в MTU. Чаще всего эти два агента (MUA и MTU) представляют собой одну и ту же систему, управляемую одним программным обеспечением.Граничный MTA использует DNS для поиска записи MX домена получателя (см. DNS ). Эта запись включает имя целевого MTA. Мы можем продемонстрировать это с помощью команды dig .
Затем MTA выбирает целевой хост, подключается к нему и отправляет сообщение.
Получив входящее сообщение, сервер передаёт его агенту доставки почты (MDA) для доставки локальному получателю. После доставки сообщения на локальный почтовый сервер оно сохраняется для извлечения аутентифицированным агентом доставки почты (MUA).
Типы МТУ
В различных системах используется множество почтовых модулей. В Linux основными являются sendmail, EXIM и Postfix. В операционной системе Microsoft основным является Exchange Server.Анализ на уровне пакетов с помощью Wireshark
Когда мы перехватываем пакеты, идущие на SMTP-сервер, это выглядит примерно так, как показано ниже .
Обратите внимание, что в пакетах 1–3 внешний клиент завершает трёхстороннее TCP-рукопожатие. В пакете 4 SMTP-сервер идентифицирует себя как «mail01» и сервер Postfix на Ubuntu и начинает использовать протокол SMTP для связи. В пакете 5 клиент отправляет команду EHLO, инициируя связь. В пакете 8 клиент идентифицирует отправителя электронной почты, а в пакете 10 — получателя.
Настройка SMTP-сервера (EXIM4) в Linux
Теперь настроим SMTP-сервер в Kali Linux. В данном случае мы установим exim4 — самый распространённый почтовый сервер в системах Linux.Мы можем загрузить exim4 из репозитория Kali.
kali > sudo apt install exim4
Далее нам необходимо запустить мастер настройки, который проведет нас через настройку сервера exim4.
kali > sudo dpkg-reconfigure exim4-config
Это запустит мастер настройки, который запрашивает у нас информацию для настройки почтового сервера.
Первый вопрос — тип почтового сервера. Если вы хотите настроить сервер для отправки и получения электронной почты через Интернет, выберите первый вариант.
Далее вам необходимо указать доменное имя, которым вы владеете. В моём случае я использовал www.hackers-arise.com.
Далее нам необходимо указать IP-адрес, который будет прослушивать сервер.
Здесь нам нужно указать список доменов-получателей или локальных доменов. По умолчанию используется Kali, и я оставил его как есть.
Далее нам нужно предоставить список доменов-получателей, которым система будет передавать почту. Можно оставить это поле пустым.
Далее нам нужно выбрать способ доставки локальной почты. Мы можем выбрать формат mbox (/var/mail) или домашний каталог.
Далее нас спрашивают о DNS-запросах. Если мы хотим минимизировать количество DNS-запросов, выберите «ДА».
Затем выберите домены, для которых будет осуществляться ретрансляция почты. Вы можете оставить это поле пустым.
Наконец, нам нужно выбрать, нужно ли разделять файл конфигурации для exim4. Вариант «Unsplit» более стабилен, а вариант «split» упрощает внесение изменений. Я выбрал «unsplit» или «NO».
Теперь нам осталось только запустить наш сервер exim4, и наш почтовый сервер активирован и готов отправлять и получать электронную почту!
Уязвимости в SMTP
Прошлый год ознаменовался серьёзной уязвимостью в Microsoft Exchange Server, обнаруженной, предположительно, китайскими хакерами. Эти уязвимости позволили хакерам получить доступ к записям электронной почты многих крупных корпораций и учреждений. Последствия этого взлома были настолько масштабными и серьёзными, что ФБР было дано разрешение на исправление систем Exchange Server по всей территории США.Уязвимости вы можете увидеть ниже.
Кроме того, в 2020 году на почтовых серверах exim были обнаружены две серьезные уязвимости, которые позволяли осуществлять несанкционированный доступ к электронной почте, хранящейся на этих серверах.
Разведка и взлом SMTP
Прежде чем приступать к эксплуатации уязвимости, первым шагом является проведение надлежащей разведки. Nmap — это предпочтительный инструмент для сканирования портов. Давайте просканируем нашу службу SMTP, чтобы увидеть, какие порты и службы запущены.Мы можем выполнить TCP-сканирование на порту 25 (порт SMTP по умолчанию) с помощью nmap и включить параметр -A, чтобы попытаться определить службу, работающую на этом порту, например:
кали > nmap -sT -A 192.168.56.103 -p25
Как вы можете видеть выше, nmap обнаружил открытый порт 25 и работающий Exim 4.68.
Чтобы определить потенциальные уязвимости на этом SMTP-сервере, можно использовать скрипты nmap. Чтобы запустить все скрипты nmap для SMTP, можно использовать параметр –script=smtp-* , где подстановочный знак (*) означает запуск всех скриптов в категории smtp.
nmap –script=smtp-* 192.168.56.103 -p 25
Как вы можете видеть выше, скрипты smtp nmap смогли перечислить нескольких пользователей (эти пользователи затем могут быть целью атак социальной инженерии) и обнаружить, что сервер уязвим для эксплойтов cve-2010-4344 и CVE-2010-4345 .
Давайте посмотрим, сможем ли мы найти эти эксплойты в Metasploit. Запустите Metasploit, введя:
kali > msfconsole
Теперь давайте поищем эксплойты Exam, используя функцию поиска.
msf5 > тип поиска:эксплоиты exim
Как видно на скриншоте выше, в Metasploit есть несколько эксплойтов Exim. Давайте попробуем эксплойт exploit/unix/smtp/exim4_string_format .
Сначала загрузим эксплойт с помощью команды use.
msf5> использовать exploit/unix/smtp/exim4_string_format
Прежде чем двигаться дальше, давайте узнаем больше об этой уязвимости, введя ïinfo».
кали > информация
Как вы могли заметить выше, этот модуль эксплуатирует переполнение буфера кучи. Кроме того, при обнаружении интерпретатора Perl он автоматически повышает привилегии с обычного пользователя до root.
Затем установим параметр RHOSTS с IP-адресом целевой системы. После установки RHOSTS зададим полезную нагрузку (PAYLOAD). В данном случае используем cmd/unix/reverse_perl . Эта полезная нагрузка откроет командную оболочку на целевой машине, использующую Perl (в большинстве Unix-подобных систем Perl установлен по умолчанию), которая в случае успеха обратится к нашей атакующей системе.
Наконец, нам нужно только настроить LHOST и LPORT. Давайте настроим LPORT 443 так, чтобы он использовал стандартный открытый порт для HTTPS-трафика. Использование этого порта часто позволяет избежать утечки данных.
Остался последний шаг — запустить эксплойт
msf5> эксплойт
Как вы можете видеть выше, эксплойт сработал и предоставил нам командную оболочку в сеансе 1!
В отличие от систем Windows, при использовании командной оболочки в Linux мы получаем не командную строку, а пустую строку. Чтобы проверить, действительно ли мы находимся на SMTP-сервере Linux, можно ввести команды Linux и посмотреть ответ. В данном случае давайте выполним несколько распространённых команд Linux, таких как id, whoami, pwd, uname -a.
Как вы можете видеть выше, система отвечает, сообщая нам, что пользователь — uid=0 или root, текущий рабочий каталог — /var/spool/exim4, а uname — Linux mailserver01.