Добро пожаловать обратно, начинающие хакеры!
Сегодня мы продолжим серию уроков по выживанию и подробнее рассмотрим PowerShell как ваш главный инструмент. Прелесть PowerShell в том, что вам не нужно запоминать длинный список команд: это одновременно и набор инструментов, и руководство. Он разработан, чтобы помочь вам разобраться во всём по ходу дела, поэтому вместо того, чтобы тратить время на поиски в интернете, вы можете экспериментировать и учиться прямо в оболочке. Доверив PowerShell всю сложную работу, вы будете работать быстрее и оставаться незамеченными. Интегрированный набор для выживания, который не только содержит необходимые инструменты, но и показывает, как их использовать шаг за шагом.
Мы также рассмотрим модули Active Directory и dsquery, которые невероятно полезны во время пентестов. Вы узнаете, что нужно запускать, почему это важно и на что обращать внимание, если ваша цель — оставаться незамеченным и сохранять доступ.
Помните: сначала разведка, а потом действия. Тщательное картографирование местности минимизирует неожиданности и снижает риск выдворения. Вперёд!
На правильно настроенных доменах dsquery работает быстро и выдаёт структурированный вывод, который легко анализировать. Это также удобно, когда вы не хотите загружать или использовать громоздкие модули или инструменты.
Это системный двоичный файл, то есть он входит в набор инструментов Windows AD, поэтому он легален для мониторинга конечных точек. Защитники могут не сразу заметить вызов dsquery, но обширные или повторяющиеся запросы к AD всё равно могут создавать журналы и привлекать внимание. Обширные перечисления доменов, подстановочные запросы, возвращающие тысячи объектов, или многократное использование с необычного хоста — всё это можно обнаружить. Поскольку целью является скрытность, отдавайте предпочтение целевым запросам и избегайте переполнения каталога исчерпывающими запросами. Также обратите внимание, что dsquery установлен не на каждой машине, но часто присутствует на контроллерах домена и рабочих станциях администраторов. На заблокированных хостах он может отсутствовать.
PS > dsquery user
PS > dsquery computer
PS > dsquery * "CN=Users,DC=DOMAIN,DC=LOCAL"
PS > dsquery * -filter "(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=32))" -attr distinguishedName userAccountControl
Учётная запись, которая на первый взгляд кажется непривилегированной, всё равно может владеть или получать права, которые делают её точкой опоры для более интересных объектов. Незаметные пути получения привилегий, которые можно эксплуатировать латерально. Такие инструменты, как BloodHound, помогают визуализировать эти связи, если вы собираете данные для последующего анализа.
PS > dsquery * -filter "(userAccountControl:1.2.840.113556.1.4.804:=8192)" -limit 5 -attr sAMAccountName
PS > Invoke-Command -ComputerName DC -ScriptBlock { hostname }
Вы также можете выполнить несколько команд одновременно. Вот как импортировать модуль и выполнить запрос AD:
PS > Invoke-Command -ComputerName DC -ScriptBlock { Import-Module ActiveDirectory; Get-ADUser -Filter * }
Теперь вы можете запускать модули на удаленных хостах и получать результаты, не оставляя больших следов.
Представьте, что вы проводите физический пентест и обнаруживаете машину с PowerShell, но без доступа в интернет. Запоминание каждой команды помогает, но в разных операционных системах их слишком много, чтобы полагаться только на память. В этом случае вам помогут встроенная справка PowerShell и документация модуля. Microsoft предоставила надежную справочную систему, с которой вы можете учиться.
PS > Get-Module -ListAvailable
Проверьте наличие модуля Active Directory:
PS > Get-Module ActiveDirectory
Если он доступен, импортируйте его:
PS > Import-Module ActiveDirectory
После импорта перечислите команды, доступные в модуле. Их много. Не пытайтесь запомнить их все, но сосредоточьтесь на тех, которые возвращают информацию об идентификаторах, группах и компьютерах, а также на тех, которые позволяют эффективно определять область действия запросов.
PS > Get-Command -Module ActiveDirectory
Get-Help — один из полезных инструментов для выживания в офлайн-режиме. Он показывает синтаксис команд, параметры, примеры и подробные заметки об использовании прямо в текущем сеансе. Мы обычно используем два флага: -Examplesи -Full:
Смотрите примеры:
PS > Get-Help Enable-ADAccount -Example
См. полную документацию:
PS > Get-Help Enable-ADAccount -Full
Справку также можно обновить, когда компьютер подключен к Интернету:
PS > Update-Help
Уделите немного времени изучению других команд PowerShell в модуле Active Directory. Это подготовит вас к разнообразным средам, с которыми вам предстоит столкнуться во время пентестов.
В следующей главе мы расскажем, как защитники выявляют подозрительную активность, и предложим общие рекомендации по поддержанию безопасности операций и минимизации ненужного шума.
Сегодня мы продолжим серию уроков по выживанию и подробнее рассмотрим PowerShell как ваш главный инструмент. Прелесть PowerShell в том, что вам не нужно запоминать длинный список команд: это одновременно и набор инструментов, и руководство. Он разработан, чтобы помочь вам разобраться во всём по ходу дела, поэтому вместо того, чтобы тратить время на поиски в интернете, вы можете экспериментировать и учиться прямо в оболочке. Доверив PowerShell всю сложную работу, вы будете работать быстрее и оставаться незамеченными. Интегрированный набор для выживания, который не только содержит необходимые инструменты, но и показывает, как их использовать шаг за шагом.
Мы также рассмотрим модули Active Directory и dsquery, которые невероятно полезны во время пентестов. Вы узнаете, что нужно запускать, почему это важно и на что обращать внимание, если ваша цель — оставаться незамеченным и сохранять доступ.
Помните: сначала разведка, а потом действия. Тщательное картографирование местности минимизирует неожиданности и снижает риск выдворения. Вперёд!
Dsquery
dsquery — классический инструмент Windows, простой и быстрый, доступный как на компьютерах, управляющих доменом, так и на рабочих станциях администраторов. На высоком уровне dsquery взаимодействует с AD по протоколу LDAP, применяет фильтры и возвращает списки объектов, таких как пользователи, компьютеры, подразделения, группы и т.д.На правильно настроенных доменах dsquery работает быстро и выдаёт структурированный вывод, который легко анализировать. Это также удобно, когда вы не хотите загружать или использовать громоздкие модули или инструменты.
Это системный двоичный файл, то есть он входит в набор инструментов Windows AD, поэтому он легален для мониторинга конечных точек. Защитники могут не сразу заметить вызов dsquery, но обширные или повторяющиеся запросы к AD всё равно могут создавать журналы и привлекать внимание. Обширные перечисления доменов, подстановочные запросы, возвращающие тысячи объектов, или многократное использование с необычного хоста — всё это можно обнаружить. Поскольку целью является скрытность, отдавайте предпочтение целевым запросам и избегайте переполнения каталога исчерпывающими запросами. Также обратите внимание, что dsquery установлен не на каждой машине, но часто присутствует на контроллерах домена и рабочих станциях администраторов. На заблокированных хостах он может отсутствовать.
Найти пользователей
Возвращает как активные, так и неактивные учётные записи пользователей. Полезно для получения начального списка идентификационных данных для исследования. В основном мы отдаём приоритет сервисным и администраторским учётным записям. Распространенные шаблоны имён, такие как svc, adm и другие, могут их выдать.PS > dsquery user
Найти компьютеры
Объекты «Компьютер» раскрывают имена серверов, хосты DEV, резервные копии, SQL, EXCH и т. д. Это разнообразие создаёт потенциальные векторы компрометации. В хорошо управляемых средах серверы размещаются в организационных подразделениях (OU), что позволяет определить, где находится критически важная инфраструктура, и быстро уточнить область действия.PS > dsquery computer
Найти группы
Проверьте такие группы, как «Администраторы домена», «Администраторы предприятия», «Операторы резервного копирования» и другие потенциально ценные. Они помогут вам найти высокоприоритетные цели и важных сотрудников организации.PS > dsquery * "CN=Users,DC=DOMAIN,DC=LOCAL"
Учетные записи, не требующие пароля
Поиск пользователей с флагом PASSWORD_NOT_REQUIRED. Это редко встречается в привилегированных учётных записях, но время от времени встречаются устаревшие или неправильно настроенные учётные записи, которые стоит проверить.PS > dsquery * -filter "(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=32))" -attr distinguishedName userAccountControl
Учётная запись, которая на первый взгляд кажется непривилегированной, всё равно может владеть или получать права, которые делают её точкой опоры для более интересных объектов. Незаметные пути получения привилегий, которые можно эксплуатировать латерально. Такие инструменты, как BloodHound, помогают визуализировать эти связи, если вы собираете данные для последующего анализа.
Контроллеры домена
Знание имён контроллеров домена и их IP-адресов крайне важно. Они выполняют роль контролёров. Именно от них исходит информация о LDAP, Kerberos и репликации, а также они являются важнейшими элементами аутентификации доменов.PS > dsquery * -filter "(userAccountControl:1.2.840.113556.1.4.804:=8192)" -limit 5 -attr sAMAccountName
Данные, связанные с пользователем
Мы не будем здесь пересказывать исследования реестра или истории пользователей, поскольку они подробно описаны в статье «PowerShell для хакеров: Основы» . Эта глава посвящена исследованиям на основе каталогов и модулей. Если вам нужны подробные методы анализа артефактов пользователей, обратитесь к этой статье.Удаленное выполнение команд с помощью PowerShell
Существует множество способов удалённого выполнения команд. Некоторые требуют установки сторонних исполняемых файлов, другие используют собственные возможности. Вредоносные сторонние инструменты шумные и имеют сигнатуры, в то время как собственное выполнение может быть более тихим. Вот канонический шаблон удалённого выполнения PowerShell:PS > Invoke-Command -ComputerName DC -ScriptBlock { hostname }
Вы также можете выполнить несколько команд одновременно. Вот как импортировать модуль и выполнить запрос AD:
PS > Invoke-Command -ComputerName DC -ScriptBlock { Import-Module ActiveDirectory; Get-ADUser -Filter * }
Теперь вы можете запускать модули на удаленных хостах и получать результаты, не оставляя больших следов.
Модули и документация Active Directory
Модули Active Directory невероятно удобны как для защитников, так и для пентестеров. Они предоставляют команды запросов и управления AD в удобном для чтения и написания скриптов виде. Импорт модуля — это законное действие, что снижает подозрения. Многие команды не отслеживают активно каждую загрузку модуля. Тем не менее, использование модуля регистрируется, и закономерности его использования имеют значение. Если вы импортируете Active Directory и сразу же запустите большой список с рабочей станции, которая никогда не выполняет эти команды, защитники могут это заметить.Представьте, что вы проводите физический пентест и обнаруживаете машину с PowerShell, но без доступа в интернет. Запоминание каждой команды помогает, но в разных операционных системах их слишком много, чтобы полагаться только на память. В этом случае вам помогут встроенная справка PowerShell и документация модуля. Microsoft предоставила надежную справочную систему, с которой вы можете учиться.
Доступные модули
Перед импортом чего-либо выведите список того, что есть в системе:PS > Get-Module -ListAvailable
Проверьте наличие модуля Active Directory:
PS > Get-Module ActiveDirectory
Если он доступен, импортируйте его:
PS > Import-Module ActiveDirectory
После импорта перечислите команды, доступные в модуле. Их много. Не пытайтесь запомнить их все, но сосредоточьтесь на тех, которые возвращают информацию об идентификаторах, группах и компьютерах, а также на тех, которые позволяют эффективно определять область действия запросов.
PS > Get-Command -Module ActiveDirectory
Get-Help — один из полезных инструментов для выживания в офлайн-режиме. Он показывает синтаксис команд, параметры, примеры и подробные заметки об использовании прямо в текущем сеансе. Мы обычно используем два флага: -Examplesи -Full:
Смотрите примеры:
PS > Get-Help Enable-ADAccount -Example
См. полную документацию:
PS > Get-Help Enable-ADAccount -Full
Справку также можно обновить, когда компьютер подключен к Интернету:
PS > Update-Help
Уделите немного времени изучению других команд PowerShell в модуле Active Directory. Это подготовит вас к разнообразным средам, с которыми вам предстоит столкнуться во время пентестов.
Краткое содержание
PowerShell — это одновременно ваш инструмент и проводник. Он позволяет вам изучать среду в оболочке, поскольку вы можете получать информацию, не полагаясь на внешние ресурсы. Такие инструменты, как dsquery и модуль Active Directory, помогают вам сопоставлять пользователей, компьютеры и группы. Эти встроенные двоичные файлы позволяют работать непосредственно с хоста, даже без доступа к Интернету, что хорошо для сохранения незаметности. Тщательная и целенаправленная разведка снижает риск обнаружения. Хотя обнаружить можно всё, многое зависит от того, куда смотрит защитник. Обычно обнаружить все возможные действия хакера нереально. Используя инструменты, которые защитники и системные администраторы используют в законных целях, вы отлично вписываетесь в окружающую среду.В следующей главе мы расскажем, как защитники выявляют подозрительную активность, и предложим общие рекомендации по поддержанию безопасности операций и минимизации ненужного шума.