
Script Powershell per l'enumerazione delle applicazioni DCOM vulnerabili
DCOMrade è uno script PowerShell che è in grado di enumerare le possibili applicazioni DCOM vulnerabili che potrebbero permettere movimenti laterali, esecuzione di codice, esfiltrazione di dati, ecc. Lo script è progettato per funzionare con PowerShell 2.0 ma funzionerà anche con tutte le versioni successive. Lo script attualmente supporta i seguenti sistemi operativi Windows (sia x86 che x64):
Attualmente sto svolgendo uno stage presso HackDefense, ricercando le tecniche esistenti di movimento laterale tramite DCOM e cercando di trovare un modo per automatizzare l'enumerazione di queste (e possibilmente di nuove tecniche). La ricerca ha portato alla creazione di questo script e del relativo documento di ricerca, linkato di seguito.
Lo script è stato creato basandosi sulla ricerca di Matt Nelson (@enigma0x3), in particolare il post del blog round 2 che approfondisce la ricerca di applicazioni DCOM utili per penetration tester e red team.
Innanzitutto, viene stabilita una connessione remota con il sistema target; questa connessione viene utilizzata in tutto lo script per una moltitudine di operazioni. Un comando PowerShell viene eseguito sul sistema target per recuperare tutte le applicazioni DCOM e i loro AppID's. Gli AppID's vengono utilizzati per scorrere il Registro di sistema di Windows e verificare se un AppID non ha la sottochiave LaunchPermission impostata nella propria voce; questi AppID's vengono memorizzati e utilizzati per recuperare i loro CLSID's associati.
Lo script utilizza una specifica blacklist per ogni sistema operativo; ecco perché ci sono diverse opzioni per il sistema operativo target. La blacklist salta le voci CLSID che potrebbero bloccare lo script a causa di applicazioni DCOM che non possono essere attivate, riducendo così il carico sul sistema target e il tempo di completamento dello script.
Con il CLSID, l'applicazione DCOM ad esso associata può essere attivata. Il CLSID 'Shortcut' viene utilizzato per contare il numero di MemberTypes ad esso associati; questo viene fatto per verificare il numero predefinito di MemberTypes. Questo numero viene utilizzato per verificare i CLSID's che contengono un numero diverso. Lo script fa questo utilizzando il CLSID di 'Shortcut' (HKEY_CLASSES_ROOT\CLSID\{00021401-0000-0000-C000-000000000046}) perché è un CLSID condiviso tra i sistemi operativi Microsoft Windows. I CLSID's con un numero diverso di MemberTypes potrebbero contenere un Method o Property che può essere (ab)usato e verranno aggiunti a un array.
I CLSID's nell'array vengono controllati per stringhe nei MemberTypes che potrebbero indicare un modo per (ab)usarne; questa lista di stringhe si trova nel file VulnerableSubset. Si noti che questa lista non è affatto completa per trovare ogni singola applicazione DCOM vulnerabile, ma essendo una parte dinamica del processo, dovrebbe dare all'utente dello script un modo per cercare stringhe specifiche che potrebbero indicare una funzionalità di un'applicazione DCOM utile per i loro scopi.
I risultati dello script vengono emessi in un report HTML e dovrebbero essere utilizzabili per auditare un sistema come misura preventiva. Per il lato offensivo ho creato un modulo Empire che, al momento della scrittura, è in attesa di approvazione per essere aggiunto al ramo master. Se desideri aggiungerlo tu stesso a Empire, puoi farlo aggiungendo il modulo situato qui.
Per una spiegazione tecnica completa dell'idea, dello script e dei possibili metodi di rilevamento, puoi leggere il documento di ricerca associato.
Public, è necessario eseguire il seguente comando per consentire l'uso dei servizi Windows Remote Management sul sistema target: Enable-PSRemoting -SkipNetworkProfilecheck -ForceQuando si è in un dominio Microsoft Windows:
.\DCOMrade.ps1 -ComputerName [Computername / IP] -User [Local Administrator] -OS [Operating System] -Domain [Domain name]
Quando non si è in un dominio Microsoft Windows:
.\DCOMrade.ps1 -ComputerName [Computername / IP] -User [Local Administrator] -OS [Operating System]

Questo script è stato ispirato da un workshop sul movimento laterale DCOM tenuto da Eva Tanaskoska; senza questo workshop, l'intera idea di provare a enumerare tutto questo in modo automatizzato non sarebbe mai stata concepita.
Grazie alla ricerca di Matt Nelson (alias @enigma0x3) sono stato in grado di trovare abbastanza informazioni per sviluppare una forma di automazione.
L'articolo di Philip Tsukerman, che riassume la maggior parte delle tecniche DCOM disponibili per il movimento laterale e spiega come funzionano.