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

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

LeSh1y777

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

Мы продолжаем рассматривать применение PowerShell в наступательных операциях, но на этот раз с учётом необходимости выживания. Когда вы действуете на вражеской территории, креативность и гибкость помогают вам выжить. PowerShell — мощный инструмент, и его эффективность зависит от того, насколько умело вы его используете. Чем больше приёмов вы знаете, тем лучше вы сможете адаптироваться к напряженной обстановке. В сегодняшней главе мы сосредоточимся на ключевом аспекте наступательной работы — выживании в целевой среде. Эти подходы хорошо зарекомендовали себя в реальных операциях. Чем дольше вы будете оставаться незамеченным и избегать внимания, тем большего вы сможете достичь.

Мы разделим эту серию на несколько частей. Первая часть посвящена разведке и изучению обстановки, в которой вы оказались. Если вы заранее составите карту периметра и определите масштаб вашей цели, вам будет гораздо проще начать использовать её, не срабатывая на ловушки, расставленные защитниками. Это требует терпения. Как говорится в OTW, настоящие компромиссы обычно требуют времени и настойчивости. Защитники часто полагаются на предсказуемые схемы обнаружения, и именно на этой предсказуемости и ловятся многие злоумышленники. Пренебрежение основами — распространённая и дорогостоящая ошибка.

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

Если вы читали нашу предыдущую статью «PowerShell для хакеров: основы», то некоторые команды из части 1 покажутся вам знакомыми. В этой статье мы развиваем эти основы и показываем, как применять их, уделяя первостепенное внимание выживанию и скрытности.

Базовая разведка

Имя хоста

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

PS > hostname

выполнение команды hostname в PowerShell

Иногда имя хоста не слишком информативно, особенно в плохо организованных сетях или со слабой настройкой домена. С другой стороны, при взломе сети крупной компании вы часто увидите машины, помеченные кодами вместо обычных имён. Это связано с тем, что ИТ-специалистам нужно отслеживать тысячи систем, не теряясь. Эти коды не случайны, они подчиняются определённой логике. Если вы потратите время на выяснение этой закономерности, вы можете обнаружить подсказки о том, как компания структурирует свою сеть.

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

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

PS > systeminfo

запуск systeminfo в PowerShell

Эта команда особенно полезна для определения доменного имени, определения того, является ли машина виртуальной, и оценки её мощности. Часто важна высокая степень подготовки машины. Не менее важен тип операционной системы. Например, взлом сервера Windows — это серьёзная возможность. Серверы обычно допускают несколько RDP-подключений и реже являются персональными рабочими станциями. Это делает их более привлекательными для таких методов, как сбор данных LSASS и SAM. На серверах также часто размещается информация, ценная для разведки, а также общие ресурсы, которые можно заразить вредоносными LNK-файлами, указывающими на ваш Responder.

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

Версия ОС

Если ваша оболочка нестабильна или неинтерактивна, и вы не можете рисковать её поломкой с помощью systeminfo , вот альтернатива:

PS > Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object Caption

узнать версию ОС в PowerShell

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

Патчи и исправления

Определение уровней обновлений крайне важно. Это позволяет определить, какие уязвимости всё ещё могут быть доступны для эксплуатации. Системы конечных пользователей, как правило, обновляются чаще, но серверы и контроллеры доменов часто отстают. Зачастую они не имеют антивирусной защиты, всё ещё работают на устаревших операционных системах, таких как Windows Server 2012 R2, и содержат ценные данные. Это делает их весьма привлекательными целями для атак.

Многие администраторы ошибочно полагают, что изоляция контроллеров домена от Интернета обеспечивает достаточную защиту. В результате системы часто остаются без обновлений. Однажды мы скомпрометировали организацию менее чем за 15 минут с помощью эксплойта NoPac, используя учётную запись с низкими привилегиями, просто потому, что их контроллер домена устарел.

Чтобы просмотреть установленные исправления:

PS > wmic qfe get Caption,Description,HotFixID,InstalledOn

поиск исправлений с помощью PowerShell

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

Защиты

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

Правила брандмауэра

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

PS > netsh advfirewall show allprofiles

поиск правил брандмауэра с помощью PowerShell

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

Антивирус

Антивирусное ПО распространено в большинстве систем. Поскольку наша цель — выжить, используя только PowerShell, мы не будем обсуждать методы злоупотребления антивирусными продуктами или обхода AMSI, которые обычно обнаруживаются этими средствами защиты. Тем не менее, при наличии достаточных прав вы можете напрямую запросить информацию об установленных антивирусных продуктах и их настройках. Возможно, вам повезет найти сервер без антивируса, но это скорее исключение, чем правило.

PS > Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntivirusProduct

поиск антивирусного продукта в Windows с помощью PowerShell

Этот метод надёжно идентифицирует используемый продукт, а не только Microsoft Defender. Для получения дополнительных сведений, таких как актуальность сигнатур и история сканирования, выполните следующую команду:

PS > Get-MpComputerStatus

получение подробного отчета об антивирусе в Windows с помощью PowerShell

Чтобы обеспечить максимальную живучесть, избегайте использования вредоносного ПО на этих машинах. Даже если логи не собираются активно, необходимо использовать режим выживания так, как будто каждый шаг отслеживается. Отсутствие защиты конечных точек не позволяет вам делать всё возможное. Мы видели, как некоторые устанавливали Gsocket на Linux-компьютеры, думая, что он обеспечит безопасный доступ, но на самом деле сетевой мониторинг быстро обнаруживал эти сокеты, и специалисты по безопасности их отключали. То же самое относится и к Windows.

Ведение журнала скриптов

Возможно, самая важная проверка — это определение того, включено ли ведение журнала скриптов. Эта функция записывает каждую выполненную команду PowerShell.

PS > Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"

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

Если EnableScriptBlockLogging равно 1, все ваши действия сохраняются в журнале операций PowerShell. Далее мы покажем вам стратегии работы в таких условиях.

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

Еще одним важным шагом является определение того, кто еще присутствует в системе.

Команда quser ориентирована на пользователя и показывает вошедших в систему пользователей, время простоя и сведения о сеансе:

PS > quser

запуск команды quser в PowerShell

В то же время, qwinsta ориентирован на сеансы, отображая как активные, так и неактивные. Это особенно полезно при подготовке к дампу LSASS, поскольку учётные данные прошлых сеансов часто остаются в памяти. Также отображается тип подключения: консольное или RDP.

PS > qwinsta

запуск команды qwinsta в PowerShell

Перечисление сетей

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

ARP-кэш

Таблица ARP записывает известные хосты, с которыми машина взаимодействовала. Она одновременно является и ресурсом разведки, и поверхностью для атаки:

PS > arp -a

запуск ARP для поиска известных хостов

Записи ARP могут раскрывать подсети и активные хосты. Если вы только что зашли на хост, это может быть полезно.

Примечание: общепринятым неформальным соглашением является то, что небольшие организации используют адресное пространство 192.168.xx, организации среднего размера — 172.16.xx–172.31.xx, а крупные предприятия — 10.0.0.0/8. Это не правило, но на практике часто встречается.

Известные Хозяева

SSH изначально поддерживается в современных Windows, но используется реже, поскольку более распространены такие инструменты, как PuTTY. Тем не менее, стоит проверить известные хосты, поскольку это может дать представление о сегментации сети и подсетях:

PS > cat %USERPROFILE%\.ssh\known_hosts

Маршруты

Таблица маршрутизации показывает, какие сети известны хосту, включая VLAN, VPN и статические маршруты. Это бесценно для построения внутренней топологии и планирования опорных точек:

PS > route print

поиск маршрутов с помощью распечатки маршрута

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

Интерфейсы

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

PS > ipconfig /all

показ интерфейсов с ipconfig all

Ведение учета интерфейсов на скомпрометированных хостах предотвращает избыточные попытки аутентификации и дает более четкое представление о среде.

Сетевые команды

Семейство команд net остаётся крайне полезным, хотя их часто отслеживают. Позже мы обсудим методы обхода. А пока давайте рассмотрим их разведывательную ценность.

Политика паролей

Знание политики паролей поможет вам определить, можно ли использовать метод подбора или подбора. Но имейте в виду, что эти методы слишком шумные для режима выживания:

PS > net accounts /domain

Группы и членство

Локальные группы, хотя и редко настраиваемые в доменных средах, все равно могут быть полезны:

PS > net localgroup

вывод списка локальных групп с помощью PowerShell

Группы доменов гораздо более значимы:

PS > net group /domain

Проверка локальных администраторов может выявить возможности повышения привилегий:

PS > net localgroup Administrators

вывод списка участников локальной группы с помощью PowerShell

Проверка членства в группах домена часто выявляет неправильно настроенные привилегии:

PS > net group <group_name> /domain

При наличии достаточных прав группами можно манипулировать:

PS > net localgroup Administrators hacker /add

PS > net group "Marketing" user /add /domain

взаимодействие с локальными группами с помощью PowerShell

Однако прямое добавление учётных записей в высокопривилегированные группы, такие как администраторы домена, — безрассудство. Эти группы находятся под пристальным наблюдением. Опытные хакеры вместо этого ищут незамеченные учётные записи, например, пользователей с атрибутом «пароль не требуется» или незащищённые учётные данные в полях LDAP.

Доменные компьютеры и контроллеры

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

PS > net group "Domain Computers" /domain

PS > net group "Domain Controllers" /domain

Контроллеры, в частности, хранят ключи к Active Directory. Запросы LDAP к ним могут предоставить огромный объём информации.

Пользователи домена

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

PS > net user /domain

Акции

Новички часто упускают из виду общие ресурсы, и это распространённая ошибка. Общий ресурс — это, по сути, место для хранения ценных вещей. На первый взгляд он может показаться кучей хлама, полной ненужных файлов и данных. И это может быть правдой, поскольку такие ресурсы обычно заполнены бумагами и бюрократическими документами. Но среди всего этого хлама мы часто находим полезные IT-данные, такие как пароли, настройки VPN, карты сетей и другие объекты. Поиск документов, принадлежащих помощникам, не менее важен. Помощники обычно управляют делами своих директоров, поэтому вы часто обнаружите там много личной информации директоров, паролей, адресов электронной почты и подобных объектов. Вот как найти локальные общие ресурсы, размещённые на вашем компьютере:

PS > net share

вывод списка локальных общих ресурсов с чистой долей с помощью PowerShell

Удаленные акции также могут быть перечислены:

PS > net view \\computer /ALL

Перечисление всех общих ресурсов домена создаёт много шума, но это возможно, если у вас нет чёткого представления о хостах. Мы не рекомендуем этого делать. Если имена хостов уже дают достаточно информации об их назначении, например, «DB» или «BACKUP», то дальнейшее перечисление не требуется. Более глубокий анализ может вас запутать, даже в небольшой или плохо управляемой сети. Если вы всё же решитесь на это, вот как можно перечислить все общие ресурсы в домене:

PS > net view /all /domain[:domainname]

Интересные акции можно настроить для детального поиска:

PS > net use x: \\computer\share

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

PS > Get-ChildItem -Recurse | Select-String -Pattern "keyword" -SimpleMatch -CaseSensitive:$false

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

Вот и всё в первой части серии игр о выживании. Мы рады продолжать в том же духе, показывая вам различные способы работы с системами, даже если ваши возможности ограничены. Конечно, ваши команды ограничены, но выживание иногда требует риска. Если вы будете действовать слишком осторожно, вы можете застрять и не иметь возможности двигаться дальше. Время может работать против вас, и смелые действия в нужный момент могут окупиться.

Цель этой серии — помочь вам освоить инструменты Windows, имеющиеся в вашем распоряжении для разведки и пентеста. Иногда у вас будет мало возможностей, и вам придётся использовать всё, что доступно.

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