При проведении тестирования на проникновение, часто приходится использовать социальную инженерию. Один из методов социальной инженерии – почтовый фишинг (например с помощью фреймворка Gophish, который описывается в статье: Gophish Framework. Установка фреймворка для фишинга), но для этого нужно знать почтовые адреса. Один из способов получения адресов – перечисление.
Для перечисления SMTP пользователей существует утилита smtp-user-enum с сайта pentestmonkey.net, так же эта утилита присутствует в сборке Kali Linux.
Словарь для перечисления учетных записей можно взять где-либо готовый, либо создать самостоятельно, например с помощью инструмента, описанного в статье: Генерация сложных имен для перебора учетных записей и паролей.
Список параметров smtp-user-enum:
-m – количество потоков, для перебора почтовых адресов;
-M – метод проверки почтовых адресов (поддерживаются методы: EXPN, VRFY или RCPT);
-u – имя пользователя для проверки;
-f – адрес, который будет указан в поле MAIL FROM используется только в режиме RCPT (если не указан, то будет использоваться user@example.com);
-D – домен для добавления после знака @. Имеет смысл использовать, если в словаре для перебора указана только первая часть E-mail;
-U – файл со словарем учетных записей для перебора;
-t – адрес почтового сервера для перебора учетных записей;
-T – файл со списком почтовых серверов для перебора;
-p – порт, на котором работает SMTP сервер (по умолчанию: 25);
-v – подробный вывод процесса работы.
Методы проверки:
EXPN – используется для групп рассылки. Если не запрещено перечисление, то будет получен список всех, кто входит в группу рассылки;
VRFY – проверка наличия пользователя с помощью команды VRFY;
RCPT – проверить наличия пользователя с помощью команды RCPT.
На разных почтовых серверах могут сработать разные проверки.
Для выяснения какая именно проверка работает, берем заведомо рабочий адрес почты из тестируемого домена и пробуем на нем. Если будет ответ exists – то с помощью данного метода можно провести перечисление пользователей.
Примеры запуска:
smtp-user-enum -M RCPT -u admin1 -D example.ru -t smtp.example.com
Методом RCPT проверяем наличие почтового адреса admin1@example.ru на сервере smtp.example.com.
smtp-user-enum -M RCPT -U users.txt -t smtp.example.com -D example.ru -v
Методом RCPT проверяем наличие почтового адресов из файла users.txt на сервере smtp.example.com, при этом добавляя к имени пользователя домен example.ru.
Все словари и списки должны иметь формат: одна запись на одну строку. Перевод строки в UNIX формате (LR).
Программа не умеет писать лог в файл, поэтому лучше всего ее запускать с перенаправлением вывода в консоль:
smtp-user-enum -M RCPT -U users.txt -t smtp.example.com -D example.ru -v > maillog.txt
Далее вывод текущего состояния можно посмотреть из соседнего эмулятора терминала с помощью команды:
tail -f maillog.txt
Параметр -f говорит о том, что выводить данные по мере их поступления в файл.
После окончания процесса, остается только отсортировать существующие адреса из файла maillog.txt. Это можно сделать командой:
grep 'exists' maillog.txt | awk '{a=$2; print $2}' > validmails.txt
Ну и далее переходить уже к какой-либо форме фишинговых писем, для продолжения теста на проникновение.
Заказать Аудит Безопасности или Пентест Вашей IT-инфраструктурыБыть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне. Для того, чтобы сделать заказ:
|