PowerShell для хакеров – Выживание, часть 2: Расширенная разведка

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
153
Депозит
-8.95$
Добро пожаловать обратно, начинающие хакеры!

Сегодня мы продолжим серию уроков по выживанию и подробнее рассмотрим PowerShell как ваш главный инструмент. Прелесть PowerShell в том, что вам не нужно запоминать длинный список команд: это одновременно и набор инструментов, и руководство. Он разработан, чтобы помочь вам разобраться во всём по ходу дела, поэтому вместо того, чтобы тратить время на поиски в интернете, вы можете экспериментировать и учиться прямо в оболочке. Доверив PowerShell всю сложную работу, вы будете работать быстрее и оставаться незамеченными. Интегрированный набор для выживания, который не только содержит необходимые инструменты, но и показывает, как их использовать шаг за шагом.

Мы также рассмотрим модули Active Directory и dsquery, которые невероятно полезны во время пентестов. Вы узнаете, что нужно запускать, почему это важно и на что обращать внимание, если ваша цель — оставаться незамеченным и сохранять доступ.

Помните: сначала разведка, а потом действия. Тщательное картографирование местности минимизирует неожиданности и снижает риск выдворения. Вперёд!

Dsquery

dsquery — классический инструмент Windows, простой и быстрый, доступный как на компьютерах, управляющих доменом, так и на рабочих станциях администраторов. На высоком уровне dsquery взаимодействует с AD по протоколу LDAP, применяет фильтры и возвращает списки объектов, таких как пользователи, компьютеры, подразделения, группы и т.д.

На правильно настроенных доменах dsquery работает быстро и выдаёт структурированный вывод, который легко анализировать. Это также удобно, когда вы не хотите загружать или использовать громоздкие модули или инструменты.

Это системный двоичный файл, то есть он входит в набор инструментов Windows AD, поэтому он легален для мониторинга конечных точек. Защитники могут не сразу заметить вызов dsquery, но обширные или повторяющиеся запросы к AD всё равно могут создавать журналы и привлекать внимание. Обширные перечисления доменов, подстановочные запросы, возвращающие тысячи объектов, или многократное использование с необычного хоста — всё это можно обнаружить. Поскольку целью является скрытность, отдавайте предпочтение целевым запросам и избегайте переполнения каталога исчерпывающими запросами. Также обратите внимание, что dsquery установлен не на каждой машине, но часто присутствует на контроллерах домена и рабочих станциях администраторов. На заблокированных хостах он может отсутствовать.

Найти пользователей

Возвращает как активные, так и неактивные учётные записи пользователей. Полезно для получения начального списка идентификационных данных для исследования. В основном мы отдаём приоритет сервисным и администраторским учётным записям. Распространенные шаблоны имён, такие как svc, adm и другие, могут их выдать.

PS > dsquery user

поиск пользователей с помощью dsquery

Найти компьютеры

Объекты «Компьютер» раскрывают имена серверов, хосты DEV, резервные копии, SQL, EXCH и т. д. Это разнообразие создаёт потенциальные векторы компрометации. В хорошо управляемых средах серверы размещаются в организационных подразделениях (OU), что позволяет определить, где находится критически важная инфраструктура, и быстро уточнить область действия.

PS > dsquery computer

поиск компьютеров с помощью dsquery

Найти группы

Проверьте такие группы, как «Администраторы домена», «Администраторы предприятия», «Операторы резервного копирования» и другие потенциально ценные. Они помогут вам найти высокоприоритетные цели и важных сотрудников организации.

PS > dsquery * "CN=Users,DC=DOMAIN,DC=LOCAL"

поиск групп с помощью dsquery

Учетные записи, не требующие пароля

Поиск пользователей с флагом PASSWORD_NOT_REQUIRED. Это редко встречается в привилегированных учётных записях, но время от времени встречаются устаревшие или неправильно настроенные учётные записи, которые стоит проверить.

PS > dsquery * -filter "(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=32))" -attr distinguishedName userAccountControl

поиск учетных записей, не требующих пароля, с помощью dsquery

Учётная запись, которая на первый взгляд кажется непривилегированной, всё равно может владеть или получать права, которые делают её точкой опоры для более интересных объектов. Незаметные пути получения привилегий, которые можно эксплуатировать латерально. Такие инструменты, как BloodHound, помогают визуализировать эти связи, если вы собираете данные для последующего анализа.

Контроллеры домена

Знание имён контроллеров домена и их IP-адресов крайне важно. Они выполняют роль контролёров. Именно от них исходит информация о LDAP, Kerberos и репликации, а также они являются важнейшими элементами аутентификации доменов.

PS > dsquery * -filter "(userAccountControl:1.2.840.113556.1.4.804:=8192)" -limit 5 -attr sAMAccountName

поиск контроллеров домена с помощью dsquery

Данные, связанные с пользователем

Мы не будем здесь пересказывать исследования реестра или истории пользователей, поскольку они подробно описаны в статье «PowerShell для хакеров: Основы» . Эта глава посвящена исследованиям на основе каталогов и модулей. Если вам нужны подробные методы анализа артефактов пользователей, обратитесь к этой статье.

Удаленное выполнение команд с помощью PowerShell

Существует множество способов удалённого выполнения команд. Некоторые требуют установки сторонних исполняемых файлов, другие используют собственные возможности. Вредоносные сторонние инструменты шумные и имеют сигнатуры, в то время как собственное выполнение может быть более тихим. Вот канонический шаблон удалённого выполнения PowerShell:

PS > Invoke-Command -ComputerName DC -ScriptBlock { hostname }

удаленное выполнение команды с помощью Invoke-Command одной команды

Вы также можете выполнить несколько команд одновременно. Вот как импортировать модуль и выполнить запрос AD:

PS > Invoke-Command -ComputerName DC -ScriptBlock { Import-Module ActiveDirectory; Get-ADUser -Filter * }

удаленное выполнение команд с помощью Invoke-Command нескольких команд

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

Модули и документация Active Directory

Модули Active Directory невероятно удобны как для защитников, так и для пентестеров. Они предоставляют команды запросов и управления AD в удобном для чтения и написания скриптов виде. Импорт модуля — это законное действие, что снижает подозрения. Многие команды не отслеживают активно каждую загрузку модуля. Тем не менее, использование модуля регистрируется, и закономерности его использования имеют значение. Если вы импортируете Active Directory и сразу же запустите большой список с рабочей станции, которая никогда не выполняет эти команды, защитники могут это заметить.

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

Доступные модули

Перед импортом чего-либо выведите список того, что есть в системе:

PS > Get-Module -ListAvailable

список доступных модулей PowerShell

Проверьте наличие модуля Active Directory:

PS > Get-Module ActiveDirectory

Если он доступен, импортируйте его:

PS > Import-Module ActiveDirectory

проверка доступности модуля PowerShell и его импорт

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

PS > Get-Command -Module ActiveDirectory

вывод списка команд модуля PowerShell

Get-Help — один из полезных инструментов для выживания в офлайн-режиме. Он показывает синтаксис команд, параметры, примеры и подробные заметки об использовании прямо в текущем сеансе. Мы обычно используем два флага: -Examplesи -Full:

Смотрите примеры:

PS > Get-Help Enable-ADAccount -Example

использование get-help для получения справки по команде в PowerShell для показа примеров использования

См. полную документацию:

PS > Get-Help Enable-ADAccount -Full

использование get-help для получения справки по команде в PowerShell для отображения полной информации о команде

Справку также можно обновить, когда компьютер подключен к Интернету:

PS > Update-Help

Уделите немного времени изучению других команд PowerShell в модуле Active Directory. Это подготовит вас к разнообразным средам, с которыми вам предстоит столкнуться во время пентестов.

Краткое содержание

PowerShell — это одновременно ваш инструмент и проводник. Он позволяет вам изучать среду в оболочке, поскольку вы можете получать информацию, не полагаясь на внешние ресурсы. Такие инструменты, как dsquery и модуль Active Directory, помогают вам сопоставлять пользователей, компьютеры и группы. Эти встроенные двоичные файлы позволяют работать непосредственно с хоста, даже без доступа к Интернету, что хорошо для сохранения незаметности. Тщательная и целенаправленная разведка снижает риск обнаружения. Хотя обнаружить можно всё, многое зависит от того, куда смотрит защитник. Обычно обнаружить все возможные действия хакера нереально. Используя инструменты, которые защитники и системные администраторы используют в законных целях, вы отлично вписываетесь в окружающую среду.

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