Перечисление доменов Windows, что это такое

Обновлено: 21.11.2024

В этом уроке я расскажу об основных настройках ПК с Windows. Позвольте мне сначала установить сцену, вы только что получили оболочку на ПК, присоединенном к домену Windows, как непривилегированный пользователь домена.

Первые шаги должны состоять в том, чтобы собрать как можно больше информации об этом исходном ПК, чтобы вы могли понять, какие другие пользователи и устройства можно найти в остальной части сети.

Это также поможет вам перемещаться по сети горизонтально и повышать свои разрешения до администратора или администратора домена. Кроме того, на этом этапе вы будете владеть всей сетью и иметь полный доступ к контроллерам домена.

Теперь я знаю, что существует множество скриптов, которые автоматизируют многие команды, которые я собираюсь показать; тем не менее, в некоторых случаях вы можете оказаться в ситуации, когда пользователь, к которому вы в настоящее время подключены, может даже не иметь возможности загрузить сценарий или безопасность строга, и вы действительно не хотите предупреждать каких-либо администраторов.

На самом деле, большинство этих команд, за исключением команд, специфичных для домена, будут работать на любом устройстве Windows, поэтому вы можете легко опробовать эти команды самостоятельно, читая это руководство.

Если вы хотите узнать, как получить начальный доступ, ознакомьтесь с моим руководством по созданию полезной нагрузки с помощью MSFvenom, чтобы узнать, как создать собственный код оболочки.

Итак, давайте начнем……….

Пользователь сети

Команда net user сама по себе отображает всех локальных пользователей в ящике.

Добавление /domain в конце команды net user отобразит всех пользователей домена.

Вы также можете получить представление о конкретном пользователе, используя net user, к которому вы также можете добавить /domain для любого пользователя домена.

Команда net user позволяет создать нового пользователя локально на ПК или в домене.

Тем не менее, вам необходимо иметь как минимум права локального администратора или администратора домена, иначе вы получите отказ в доступе.

Сетевая локальная группа

Net localgroup показывает все локальные группы пользователей ПК.

Как и в случае с командой net user, добавьте /domain в конец команды, чтобы получить все группы пользователей домена.

Чтобы узнать, кто на самом деле является членом определенной группы, добавьте имя группы в команду net localgroup.

Не забудьте добавить /domain в конце команды для любой группы домена Windows.

Сетевая группа

Команда Net Group работает точно так же, как команда net localgroup /domain. Отличие состоит в том, что команда Net group также позволяет выполнять операции с группами с глобальной областью действия в домене, а не только в локальном домене.

Команда net group сама по себе работает, только если она используется на контроллере домена.

Однако добавьте к команде /domain, и ее можно будет запустить на любом ПК, присоединенном к домену Windows.

Добавьте в эту команду имя группы, чтобы узнать, кто является членом указанной группы.

Чистое использование

Сама по себе команда net use позволяет быстро просмотреть все подключенные сетевые диски.

Аналогичным образом вы также можете использовать команду net use для подключения диска из командной строки.

Чистый старт

Net start/stop позволяет управлять службами, работающими на ПК; однако запуск команды net start сам по себе показывает все службы, запущенные в данный момент.

Нетстат

netstat означает сетевую статистику. Здесь отображается информация о сетевых соединениях TCP для прослушиваемых портов, установленных соединениях и многом другом.

Обычно я использую ключ -ano после команды netstat, так как она отображает все соединения и прослушиваемые порты (a), адреса и номера портов (n), добавляет идентификатор процесса, связанный с каждым соединением (o).

Существует множество различных параметров, которые вы можете добавить к команде netstat, которая отображает всевозможные выходные данные.

Вы можете перечислить все различные параметры, добавив /? в конце команды.

Брандмауэр Netsh

брандмауэр netsh позволяет управлять брандмауэром Windows; однако добавление к команде состояния show state выводит текущее состояние брандмауэра на терминал.

Если вам нужна более подробная информация о брандмауэре, добавьте команду show config, чтобы отобразить более подробные выходные данные.

Команда брандмауэра netsh фактически устарела из-за команды netsh advfirewall, которая, как говорится, все команды брандмауэра netsh по-прежнему работают

IP-конфиг

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

Если вы добавите /all к команде ipconfig, вы получите более подробные выходные данные, включая DHCP и DNS-сервер, к которому подключен ПК.

печать маршрута

Команда route print отображает таблицу маршрутизации текущего ПК с Windows, к которому вы подключены.

Таблица маршрутизации — это набор правил, которые используются для определения того, куда перенаправляются пакеты данных по сети. Все сетевые устройства, включая маршрутизаторы и коммутаторы, используют таблицы маршрутизации.

Список задач

Список задач отображает список запущенных в данный момент процессов на ПК.

Добавление параметра /svc к команде показывает, какие службы размещены в каждом процессе.

арп -а

Команда arp -a отображает преобразование IP-адреса в физический, используемое протоколом разрешения адресов.

Это в основном отображает все другие устройства, которые компьютер, к которому вы подключены, ранее видел в сети, включая связанный с ними MAC-адрес.

Запрос драйвера

Driverquery быстро отображает все драйверы устройств ПК, к которому вы подключены.

Это дает вам имя драйвера устройства и информацию о версии, что в конечном итоге помогает найти эксплойты и, в свою очередь, повысить привилегии.

Имя хоста

Hostname печатает имя ПК, к которому вы в данный момент подключены.

wmic qfe

Команда "Инструментарий управления Windows" позволяет вам получать огромное количество информации о локальных или удаленных компьютерах и, вероятно, может обойтись собственным учебным пособием.

Если вы добавите qfe к команде wmic, вы получите список всех установленных исправлений, установленных на ПК с Windows.

Это позволяет быстро увидеть уровень исправления для ПК и определить, есть ли какие-либо области для эксплуатации.

Команда Set сама по себе показывает все переменные среды ПК, к которому вы подключены.

Это позволяет быстро просматривать информацию об окружающей среде. Например, как называется контроллер домена или где хранится профиль пользователя.

Информация о системе

Команда systeminfo сама по себе может предоставить вам много информации о текущем компьютере, к которому вы подключены.

Единственная проблема заключается в том, что сбор всей информации об исправлениях может занять много времени.

Однако вы можете направить (|) вывод в команду поиска строки (findstr), выводя только ту информацию, которая вам нужна.

В приведенной ниже команде я просто показываю имя и версию ОС, включая номер сборки Windows.

Задачи

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

Мне нравится использовать /query для запроса всех запланированных задач, которые в настоящее время выполняются на ПК с Windows, и выводить формат /fo в список, чтобы его было легче читать.

/v в конце команды предназначен для подробного вывода и позволяет вам увидеть, какой пользователь запускает запланированное задание, поскольку это важно в будущем для таких вещей, как повышение привилегий.

Кто

Whoami сама по себе быстро сообщает вам домен и имя пользователя, который в данный момент подключен как.

Более того, добавив /all к команде, вы получите более подробные выходные данные, включая SID, группу и информацию о привилегиях

Эхо %logonserver%

Эту команду я предпочитаю запускать прямо с места в карьер. При выводе %logonserver% отображается имя контроллера домена

эхо %username%

Эта команда выводит имя пользователя, под которым вы подключены.

Простой поиск файлов

Команды, перечисленные ниже, позволят вам быстро сканировать компьютер на наличие документов, названных или содержащих определенные слова, например пароль.

Улучшение

Мы не можем говорить о ситуационной осведомленности и повышении привилегий, не уделив несколько минут изучению Powerup.

PowerUp — это один из модулей PowerShell от PowerSploit, который представляет собой среду пост-эксплуатации PowerShell.

PowerUp быстро проверяет ПК на наличие распространенных векторов эскалации привилегий Windows. Это может запустить любой пользователь, даже если он не имеет привилегий.

Загрузите необработанный скрипт из репозитория HarmJoys GitHub (выше).

В командной строке введите:

Импортируйте модуль PowerUp:

Запустите функцию Inovke-AllChecks, которая выполняет все необходимые проверки для ПК и выводит отчет о состоянии:

Вы даже можете запустить PowerUp из github, даже не касаясь диска, введя команду ниже.

Заключение

Вот некоторые из команд, которые я запускаю, когда впервые закрепился на ПК с Windows. Тем не менее, давайте проясним, что ни у кого нет времени запоминать все эти команды.

К счастью, компания Leostat создала быстрый скрипт на Python, в котором есть множество этих удобных команд, которые легко найти в инструменте под названием rtfm.py

Этот инструмент основан на книге RTFM Red Team Field Manual, которая сама по себе является отличным источником, а версию в мягкой обложке можно приобрести на Amazon примерно за 5 фунтов стерлингов

Если вы считаете, что я пропустил какие-либо команды здесь, или хотели бы сообщить мне, какие команды вы используете, сообщите мне об этом в комментариях ниже.

Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован не так, как показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Подробнее о двунаправленных символах Юникода

< td >net user [имя пользователя] /domain < tr> < tr> < tr>
Домен: TEST .local
Перечисление пользователей:
Windows:
net пользователь
net user /domain
net user [имя пользователя]
wmic useraccount
Mac:
dscl . ls /Пользователи
dscl . read /Users/[имя пользователя]
dscl "/Active Directory/TEST/All Domains" ls /Users
dscl "/Active Directory/TEST/All Domains" читать /Users/[имя пользователя]
dscacheutil -q user
LDAP :
ldapsearch -H ldap://test.local -b DC=test,DC=local "(objectclass=user)"
ldapsearch -H ldap://test.local -b DC=test,DC=local "(&(objectclass=user)(name=[username]))"
Перечисление компьютеров:
Windows:
net group «Компьютеры домена» /domain
net group "Контроллеры домена" /domain
Mac:
dscl " /Active Directory/TEST/All Domains" ls /Computers
dscl "/Active Directory/TEST/All Domains" read "/Computers/[compname]$"
LDAP:
ldapsearch -H ldap://test.local -b DC=test,DC=local "(objectclass= компьютер)"
ldapsearch -H ldap://test.local -b DC=test,DC=local "(&(objectclass=computer)(name=[computername]))"
Группа Перечисление:
Windows:
net localgroup
net group /domain
net localgroup [имя группы]
net group [имя группы] /domain
группа wmic
Mac:
dscl . ls /Groups
dscl . read "/Groups/[имя группы]"
dscl "/Active Directory/TEST/All Domains" ls /Groups
dscl "/Active Directory/TEST/All Domains" читать "/Groups/[имя группы]"
LDAP:
ldapsearch -H ldap://test.local -b DC=test,DC=local "(objectclass=group)"
ldapsearch -H ldap://test. local -b DC=test,DC=local "(&(objectclass=group)(name=[groupname]))"
ldapsearch -H ldap://test. local -b DC=test,DC=local "(&(objectclass=group)(name=*admin*))"
Информация о домене:
Windows:
wmic ntdomain
ipconfig /all
Mac:
dsconfigad -show
LDAP:
ldapsearch -H ldap://test.local -b DC=test,DC=local "(objectclass=trusteddomain)"

Вы не можете выполнить это действие в данный момент.

Вы вошли в другую вкладку или окно. Перезагрузите, чтобы обновить сеанс. Вы вышли на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс.

Группы можно размещать в любом контейнере или организационном подразделении (OU) в домене, а также в корне домена. Это означает, что группы могут находиться в различных местах иерархии каталогов. Поэтому у вас есть два варианта перечисления групп:

Перечисление групп, непосредственно содержащихся в контейнере, организационной единице или в корне домена.

Явно привяжите объект-контейнер, содержащий группы для перечисления, установите фильтр, содержащий «группы», в качестве класса с помощью свойства IADsContainer.Filter и используйте метод IADsContainer::get__NewEnum для перечисления объектов группы.

Этот метод перечисляет группы, содержащиеся непосредственно в контейнере или объекте OU. Если контейнер содержит другие контейнеры, которые потенциально могут содержать другие группы, вы должны выполнить привязку к этим контейнерам и рекурсивно перечислить группы в этих контейнерах. Чтобы управлять объектами группы и читать только определенные свойства, используйте глубокий поиск, описанный в Варианте 2.

Поскольку перечисление возвращает указатели на COM-объекты ADSI, представляющие каждый объект группы, можно вызвать QueryInterface, чтобы получить указатели интерфейса IAD, IADsGroup и IADsPropertyList на объект группы; то есть вы можете получить указатели интерфейса на каждый перечисленный групповой объект в контейнере без необходимости явно привязываться к каждому групповому объекту. Чтобы выполнять операции со всеми группами непосредственно внутри контейнера, перечисление не требует привязки к каждой группе для вызова методов IAD или IADsGroup. Чтобы получить определенные свойства из групп, используйте IDirectorySearch, как описано во втором варианте.

Исключение возникает, когда вы пытаетесь перечислить группу, содержащую членов, которые являются общеизвестными участниками безопасности, такими как «Все», «Прошедшие проверку», «ПАРТИЯ» и т. д. Поскольку вы не можете привязываться к этим типам объектов, они не отображаются в списке при перечислении групп в области WinNT, даже если может показаться, что они связаны, поскольку некоторые методы IAD, такие как Class, ADsPath и Name, возвращают правильные результаты при вызове для перечисляемых групп. участники.

Выполните глубокий поиск по запросу "objectCategory=group", чтобы найти все группы в дереве.

Сначала привяжите объект-контейнер, с которого начнется поиск. Например, чтобы найти все группы в домене, выполните привязку к корню домена; чтобы найти все группы в лесу, привяжите к глобальному каталогу и выполните поиск из корня GC.

Затем используйте IDirectorySearch для запроса с использованием фильтра поиска, который содержит (objectCategory=group) и параметр поиска ADS_SCOPE_SUBTREE.

Вы можете выполнить поиск с параметром поиска ADS_SCOPE_ONELEVEL, чтобы ограничить поиск непосредственным содержимым объекта-контейнера, к которому вы привязаны.

IDirectorySearch извлекает только значения определенных свойств из групп. Чтобы получить значения, используйте IDirectorySearch. Чтобы манипулировать групповыми объектами, возвращаемыми в результате поиска, то есть использовать методы IAD или IADsGroup, выполните явную привязку к ним. Для этого укажите в качестве одного из свойств, возвращаемых при поиске, различающиеся имена и используйте возвращенные различающиеся имена для привязки к каждой группе, возвращаемой при поиске.

Получаются только определенные свойства. Вы не можете получить все атрибуты без явного указания всех возможных атрибутов группового класса.

В более ранних версиях Windows приложение могло получить только один контроллер домена в домене, вызвав DsGetDcName. Невозможно было предсказать, какой контроллер домена будет получен, или получить список контроллеров домена. Windows позволяет приложению перечислять контроллеры домена в домене с помощью функций DsGetDcOpen, DsGetDcNext и DsGetDcClose.

Чтобы перечислить контроллер домена, вызовите DsGetDcOpen. Эта функция принимает параметры, определяющие домен для перечисления, и другие параметры перечисления. DsGetDcOpen предоставляет дескриптор контекста перечисления домена, который используется для идентификации операции перечисления при вызове DsGetDcNext и DsGetDcClose.

Функция DsGetDcNext вызывается с дескриптором контекста перечисления домена для получения следующего контроллера домена в перечислении. При первом вызове этой функции извлекается первый контроллер домена в перечислении. При втором вызове этой функции извлекается второй контроллер домена в перечислении. Этот процесс повторяется до тех пор, пока DsGetDcNext не вернет ERROR_NO_MORE_ITEMS, что указывает на конец перечисления.

Функция DsGetDcNext будет перечислять контроллеры домена в двух группах. Первая группа содержит контроллеры домена, которые охватывают сайт компьютера, на котором выполняется функция, а вторая группа содержит контроллеры домена, которые не охватывают сайт компьютера, на котором выполняется функция. Если в параметре OptionFlags в DsGetDcOpen указан флаг DS_NOTIFY_AFTER_SITE_RECORDS, функция DsGetDcNext вернет ERROR_FILEMARK_DETECTED после того, как все контроллеры домена для конкретного сайта будут получены. Затем DsGetDcNext начнет перечисление второй группы, которая содержит все контроллеры домена в домене, включая контроллеры домена для конкретных сайтов, содержащиеся в первой группе.

Контроллеры домена, которые управляют сайтом компьютера, на котором выполняется функция, перечисляются первыми, за которыми следуют контроллеры домена, которые не охватывают сайт компьютера, на котором выполняется функция. Говорят, что контроллер домена охватывает сайт, если контроллер домена настроен для размещения на этом сайте или если контроллер домена находится на сайте, ближайшем к рассматриваемому сайту с точки зрения настроенной стоимости межсайтовой связи. Если есть какие-либо контроллеры домена как в группе контроллеров домена, которые охватывают, так и в группе контроллеров домена, которые не охватывают сайт компьютера, контроллеры домена возвращаются в группе в порядке их настроенных приоритетов и весов, указанных в DNS.Контроллеры домена с более низким числовым приоритетом возвращаются в группе первыми. Если в группе, связанной с сайтом, есть подгруппа из нескольких контроллеров домена с одинаковым приоритетом, контроллеры домена возвращаются в взвешенном случайном порядке, где контроллеры домена с более высоким весом имеют большую вероятность быть возвращенными первыми. Сайты, приоритеты и веса настраиваются администратором домена для достижения эффективной производительности и балансировки нагрузки между несколькими контроллерами домена, доступными в домене. По этой причине приложения, использующие функции DsGetDcOpen/DsGetDcNext/DsGetDcClose, автоматически используют эти оптимизации.

Когда перечисление завершено или больше не требуется, перечисление необходимо закрыть, вызвав DsGetDcClose с дескриптором контекста перечисления домена.

Чтобы сбросить перечисление, необходимо закрыть текущее перечисление, вызвав DsGetDcClose, а затем снова открыть перечисление, снова вызвав DsGetDcOpen.

Пример

В следующем примере кода показано, как использовать эти функции для перечисления контроллеров домена в локальном домене.

Читайте также: