В этой статье рассмотрим способы перечисление SMTP при пентесте. Я покажу, как используя команды VRFY и EXPN определить существования учетной записи Windows.
Еще по теме: Перечисление и обнаружение SMB
Перечисление SMTP при пентесте
SMTP (Simple Mail Transfer Protocol) — сетевой протокол, используемый для отправки и получения электронной почты. Он также может быть полезной целью для тестирования на проникновение, так как часто содержит много конфиденциальной информации.
Вот несколько способов перечисления SMTP во время пентеста:
- Banner Grabbing — получение баннера SMTP сервера путем установки соединения на порт 25. Баннер часто содержит информацию о версии ПО SMTP сервера, что может помочь при поиске уязвимостей.
- VRFY — отправка команды VRFY и имени пользователя, чтобы проверить существование учетной записи. Ответ 550 означает, что пользователь не найден.
- EXPN — раскрывает списки рассылки, если SMTP сервер их поддерживает.
- RCPT TO — попытка отправки почты несуществующим получателям, чтобы собрать валидные адреса из ответов сервера.
Например, можно собрать информацию о хосте. Запрос VRFY просит сервер проверить адрес электронной почты, а EXPN запрашивает у сервера членство в рассылке. Их часто используют для проверки существующих пользователей на почтовом сервере, что может быть полезно во время тестирования на проникновение.
1 2 3 4 5 6 7 8 9 |
kali@kali:~$ nc -nv 192.168.50.8 25 (UNKNOWN) [192.168.50.8] 25 (smtp) open 220 mail ESMTP Postfix (Ubuntu) VRFY root 252 2.0.0 root VRFY idontexist 550 5.1.1 : Recipient address rejected: User unknown in local recipient table ^C |
Мы видим, как отличаются сообщения об успехе и ошибке. Сервер SMTP подтверждает, что пользователь существует. Эту операцию можно использовать, чтобы определить действительные ли имена пользователей.
Статья в образовательных целях, для обучения этичных хакеров. Несанкционированный взлом компьютеров локальной сети является незаконным и рассматривается как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.
Давайте рассмотрим Python-скрипт, который открывает сокет TCP, подключается к SMTP-серверу и выполняет команду VRFY для заданного имени пользователя:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#!/usr/bin/python import socket import sys if len(sys.argv) != 3: print("Usage: vrfy.py ") sys.exit(0) # Create a Socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Connect to the Server ip = sys.argv[2] connect = s.connect((ip, 25)) # Receive the banner banner = s.recv(1024) print(banner) # VRFY a user user = (sys.argv[1]).encode() s.send(b'VRFY ' + user + b'\r\n') result = s.recv(1024) print(result) # Close the socket s.close() |
Запускаем скрипт, предоставив проверяемое имя пользователя в качестве первого аргумента, а целевой IP в качестве второго аргумента.
1 2 3 4 5 6 7 8 |
kali@kali:~/Desktop$ python3 smtp.py root 192.168.50.8 b'220 mail ESMTP Postfix (Ubuntu)\r\n' b'252 2.0.0 root\r\n' kali@kali:~/Desktop$ python3 smtp.py johndoe 192.168.50.8 b'220 mail ESMTP Postfix (Ubuntu)\r\n' b'550 5.1.1 : Recipient address rejected: User unknown in local recipient table\r\n' |
Аналогичным образом можно получить информацию SMTP о цели с клиента Windows 11:
1 2 3 4 5 6 7 8 |
PS C:\Users\student> Test-NetConnection -Port 25 192.168.50.8 ComputerName : 192.168.50.8 RemoteAddress : 192.168.50.8 RemotePort : 25 InterfaceAlias : Ethernet0 SourceAddress : 192.168.50.152 TcpTestSucceeded : True |
К сожалению, нам запрещено полноценно взаимодействовать с сервисом SMTP через Test-NetConnection. Тем не менее, мы можем попробовать установить клиент Telnet от Microsoft:
1 2 |
PS C:\Windows\system32> dism /online /Enable-Feature /FeatureName:TelnetClient ... |
Стоит отметить, что для установки Telnet требуются права администратора, что может создать проблемы, если мы работаем с ограниченными привилегиями пользователя. Но можно скопировать екзешник Telnet, расположенный на другой нашей машине по адресу c:\windows\system32\telnet.exe, и передать его на целевую Windows-машину.
Как только включим Telnet на тестовой машине, сможем подключиться к целевой машине и выполнить перечисление, как это делали из Kali Linux.
1 2 3 4 5 6 |
C:\Windows\system32>telnet 192.168.50.8 25 220 mail ESMTP Postfix (Ubuntu) VRFY goofy 550 5.1.1 : Recipient address rejected: User unknown in local recipient table VRFY root 252 2.0.0 root |
Приведенный выше вывод демонстрирует еще один пример перечисления, которое можно выполнить со скомпрометированного хоста Windows, когда Kali Linux недоступен.
В целом, перечисление SMTP может выявить уязвимые версии ПО, валидные учетные записи, списки рассылки и другую полезную информацию для дальнейшего проникновения в инфраструктуру.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Перехват трафика в локальной сети по проводу
- Обнаружение компьютеров в сети при пентесте на Kali Linux
- Перечисление и получение информации об SSH при пентесте