
Собственные инструменты для бокового перемещения/выполнения кода
Этот репозиторий был создан на основе уже существующего MiscTool, поэтому огромное спасибо rasta-mouse за их публикацию и за то, что дал мне правильную мотивацию для работы над ними.
Выполнение команд / Lateral movement через функциональность, подобную PsExec. Должен выполняться в контексте привилегированного пользователя. Инструмент основан на rasta-mouse CsExec, но спроектирован так, чтобы обеспечить дополнительный контроль над созданием службы, а именно:
CheeseExec.exe <targetMachine> <serviceName> <binPath> <action>
См. также TikiService.
Cheese PS — это фреймворк для выполнения команд / Lateral Movement. Он использует System.Management.Automation.PowerShell для загрузки и выполнения произвольного кода через PowerShell.
Инструмент изначально способен обходить распространённые ограничения, создавая и используя пространства выполнения PowerShell на локальных или удалённых целях.
Должен выполняться в контексте привилегированного пользователя (при использовании PowerShell Remoting).
Инструмент изначально был создан как улучшение rasta_mouse CsPosh, но вырос до самостоятельного фреймворка и теперь может использоваться как универсальный инжектор PowerShell.
Идея этого инструмента была обобщена в следующей статье:
Основные реализованные функции:
Следующий скриншот представляет собой достаточно точную схему, описывающую рабочий процесс инструмента:

Usage:
-t, --target=VALUE Target machine
-c, --code=VALUE Code to execute
-e, --encoded Indicates that provided code is base64 encoded
-a, --am-si-bypass=VALUE Uses the given PowerShell script to bypass A-M-S-
I (fs, smb o http[s])
--aX, --encrypted-am-si
Indicates that provided A.M.S.I. bypass is
encrypted
-i, --import=VALUE Imports additional PowerShell modules (fs, smb o
http[s])
--iX, --encrypted-imports
Indicates that provided PowerShell modules are
encrypted
-o, --outstring Append Out-String to code
-r, --redirect Redirect stderr to stdout
-d, --domain=VALUE Domain for alternate credentials
-u, --username=VALUE Username for alternate credentials
-p, --password=VALUE Password for alternate credentials
-X, --encrypt=VALUE Encrypt a script with an hardcoded key
-D, --decrypt=VALUE Test decryption of a script with an hardcoded key
-n, --skip-bypass=VALUE Skip A.M.S.I (A), WLDP (W) or ALL (*) Bypass
techniques
-l, --lockdown-escape Try to enable PowerShell FullLanguage mode using
REGINI
-w, --wldp-bypass=VALUE Uses the given PowerShell script to bypass WLDP
(fs, smb o http[s])
--wX, --encrypted-wldp Indicates that provided WLDP bypass is encrypted
-x, --executable=VALUE [Download and] Execute given executable
--xX, --encrypted-executable
Indicates that provided Exe/DLL is encrypted
--xCS, --executable-csharp
Indicates that the executable provided is C# -
(.NET)
-R, --reflective-injection Uses Invoke-ReflectivePEInjection to load the
assmebly from memory (requires Invoke-
ReflectivePEInjection to be imported!)
-P, --powershell-decrypt Force use of PowerShell-based decryption
-k, --encryption-key=VALUE Uses the provided key for encryption/decryption
--ssl Force use of SSL
-h, -?, --help Show Help
Примечание: Если запущено без указания цели, скрипт выполнится на локальной машине
См. также AmsiBypass.
Выполнение команд / Lateral Movement через DCOM. Должен выполняться в контексте привилегированного пользователя. Этот инструмент основан на rasta-mouse CsDCOM, но был улучшен для добавления дополнительных методов, адаптируясь к новым исследованиям Филипа Цукермана. Существует также экспериментальный метод для «исправления» возможных попыток отключения затронутых объектов DCOM через dcomcfg, но для его правильной работы требуются некоторые предварительные условия.
Идея этого инструмента была обобщена в следующей статье:
Текущие методы: MMC20.Application, ShellWindows, ShellBrowserWindow, ExcelDDE, VisioAddonEx,
OutlookShellEx, ExcelXLL, VisioExecLine, OfficeMacro.
Usage:
-t, --target=VALUE Target Machine
-b, --binary=VALUE Binary: powershell.exe
-a, --args=VALUE Arguments: -enc <blah>
-m, --method=VALUE Methods: MMC20Application, ShellWindows,
ShellBrowserWindow, ExcelDDE, VisioAddonEx,
OutlookShellEx, ExcelXLL, VisioExecLine,
OfficeMacro
-r, --reg, --registry Enable registry manipulation
-h, -?, --help Show Help
Примечание: Если запущено с -t ., скрипт выполнится на локальной машине
См. также Lateral Movement Using DCOM Objects and C#
Похититель учётных данных RDP через RDI (рефлексивная инъекция DLL). Должен выполняться в контексте привилегированного пользователя или пользователя с привилегией SeImpersonatePrivilege.
Этот инструмент построен на основе RdpThief от MDSec, но полностью обёрнут в единый C#, что позволяет запускать его через .NET Reflection (Assembly.Load и подобные). Таким образом,
его можно запускать через Covenant без необходимости загружать DLL в целевую систему.
Usage:
CheeseRDP [actions]
Actions:
wait: keep listening for any new mstsc.exe process indefinitely (stop with ctrl-C)
clean: delete the credentials dump file if present
dump: dump the content of the file if present, parsing the credentials in a compact format
Примечание: Если запущено без опций, программа попытается внедриться в активный процесс mstsc.exe (время ожидания по умолчанию — 10 секунд)
Выполнение команд / Lateral Movement через доверие MSSQL. Этот инструмент был разработан для преодоления некоторых ограничений существующих инструментов, таких как esc, в основном касающихся имперсонации MSSQL. Кроме того, CheeseSQL был специально модифицирован для запуска из Covenant (через рефлексивную загрузку) и для автоматизации наиболее важных этапов злоупотребления доверием MSSQL. Особенно забавна реализация злоупотребления CLR, которая позволяет пользователю скомпилировать и загрузить расширение MSSQL на лету с помощью Roslyn для выполнения команд. Небольшая демонстрация показана ниже; выполняется закодированная команда PowerShell — загрузчик Covenant:

Следуя моему правилу «всегда отдавайте должное, когда это заслужено», этот инструмент был разработан на основе существующего проекта от Jb05s, называемого SharpSQL, так что огромное спасибо Джереми за его работу.
Кроме того, я настоятельно рекомендую ознакомиться со всеми инструментами от NetSPI, касающимися аудита и эксплуатации MSSQL, так как они действительно потрясающие:
[*] List of available commands:
- findspn : Find MSSQL Instances, using Domain SPNs
- listdb : List available Databases on the server
- gethash : Send Service Account Net-NTLM Hash to an Arbitrary IP
- getlogin : Retrieve SQL Logins Available for Impersonation
- getdbuser : Retrieve Information on the SQL Login, Currently Mapped User, and Available User Roles
- getlinked : Retrieve Information about Linked Servers
- getserverinfo : Retrieve current values of 'xp_cmdshell', 'ole automation procedures' and 'clr enabled'
- xp : Execute Encoded PowerShell Command via 'xp_cmdshell'
- ole : Execute Encoded PowerShell Command via 'sp_OACreate' and 'sp_OAMethod'
- clr : Execute Encoded PowerShell Command via custom .NET assemblies
- rpc : Configure Linked SQL Server to Allow RPC connections
- linkedquery : Execute Encoded PowerShell Command on Linked SQL Server via 'OPENQUERY'
- openquery : Execute an arbitrary query using 'OPENQUERY'
[*] For detailed usage, type:
- CheeseSQL <command> /help