10. Juni 2021

secuvera-SA-2021-01 Privilege Escalation in NetSetMan Pro 4.7.2

Im Rahmen eines Penetrationstests für einen unserer langjährigen Kunden durfte ich ein neues Arbeitsplatzsystem vor dem Roll-Out analysieren👨🏻‍💻. Dabei konnte ich unterschiedliche Wege identifizieren, um als nicht authentifizierter Angreifer Zugang zum Arbeitsplatz zu erhalten. Einer der Wege stand im Zusammenhang mit dem Werkzeug NetSetMan der gleichnamigen Firma. In diesem Blogpost beleuchte ich, wie ich, durch (aus Kunden- und Herstellersicht) unglückliche Umstände, Zugang mit administrativer Berechtigung erlangen konnte und den Weg zur Veröffentlichung als Advisory

Disclaimer: Ich fasse hier manches vereinfacht (und ab und an etwas launisch) zusammen, um es für lesende verständlich zu halten. Ich erwähne es, weil ich im Verlauf der Kommunikation mit dem Hersteller sehr ausführlich und für mein Gefühl zu ausführlich per Mail korrigiert/kommentiert wurde.

NetSetMan?

Die Frage stellte sich mir nach all dem Testen auch. Trotz ~14 Jahren Admintätigkeit auf dem Buckel noch nie davon gehört oder gelesen. Aber das soll ja nix heißen – man lernt ja nie aus.

Laut Webseite des gleichnamigen Herstellers ist „NetSetMan […] eine Software zur Verwaltung von Netzwerkeinstellungen (LAN & WLAN) sowie weiterer Systemeinstellungen in Profilen, zwischen denen Sie jederzeit einfach wechseln können“. Und genau dafür setzt es der Kunde ein. Nur leider in einer Konfiguration, die aus Sicherheitssicht nicht ganz gut gewählt wurde.

Alt und speziell konfiguriert

Obwohl es sich beim Prüfgegenstand um einen Prototypen eines neuen Arbeitsplatz-Systems handelte, hat der Kunde offensichtlich eine veraltete Software-Version (4.7.2) installiert (Patch- und Änderungsmanagementprozesse senden liebe Grüße 🤓 und möchten aus dem Kinderadminparadies abgeholt werden der Schublade abgestaubt und angepasst werden). Das fiel mir zunächst nicht ins Auge, ist aber für den Verlauf des Beitrags wichtig. Viel wichtiger zum Zeitpunkt der Prüfung: ein „Profil wechseln“-Icon in Form des Hersteller-Logos (siehe dessen Webseite) auf dem Windows Logon Screen. Randnotiz: das hat laut Hersteller nicht jeder direkt aktiv, muss man also extra anknipsen. Was hier getan wurde. Mit voller Absicht. Aber nutzen laut Hersteller wohl die wenigsten 🤷‍♂️

Datei speichern unter

Steht man also vor einem eingeschalteten Gerät und drückt auf dem Logon-Screen auf diesen Button, kann man eines aus mehreren Profilen (je nachdem wie viele abgespeichert wurden) auswählen. Wenn man das macht, dann öffnet sich ein Fenster und es passieren ein paar Dinge. Was genau passiert wird als ein Aktionsprotokoll angezeigt. Das kann man speichern. Und nett, wie das Programm ist, fragt es den Anwender, wohin es das speichern soll.

Aufmerksame Lesende vermuten richtig: 🤔Moment mal, man ist noch nicht angemeldet und man kann Dateien speichern. Was, wenn man da ausbrechen kann? Jep. Nicht die erste geprüfte Software, bei der man über den Speichern-Dialog ausbüchsen kann. Wir könnten Listen füllen, wenn wir dürften.

Lasst mich durch, ich bin Admin!

Also dann. Setze Kurs auf cmd.exe im System32-Verzeichnis mit Dateityp „*.*“. Warp 9.🚀

In der aufpoppenden Shell schnell (Zungenbrecher 😛) einen Benutzer anlegen und in die Gruppe der Admins befördern (letzteres ist hier doppeldeutig). Et voilà: lokaler Adminzugang zu einem Kundensystem. (Lokale) Rechteausweitung vorerst abgeschlossen.

Da waren sie wieder, meine Probleme…

Meldung machen. Erst mal beim Kunden. Der erlaubte mir die Problemmeldung an den Hersteller, um das Problem zu beseitigen. Eine meiner liebsten Disziplinen: Leuten Probleme erklären – wie ich in der Vergangenheit schonmal kund getan habe. Gehört aber zum Job des Pentesters mit dazu. Dabei fiel mir im Übrigen auf, dass die installierte Version eine Veraltete ist. Ich hab aber auch ein Glück 🤓

Zeitachse:

  • am 17.5. das Problem und Lösungsvorschlag für den Hersteller (Protokoll ablegen und gut ist) und temp. Workaround für den Kunden (Deinstallation) formuliert und dann gemeldet und prompt eine lange Antwort per Mail erhalten. Ich glaube, das per Telefon zu besprechen wäre schneller gewesen (ich sollte ja meine Infos im Rahmen des responsible disclosure zwingend schriftlich übermitteln, aber ein anschließender verbaler Dialog darf ja doch entstehen🙋🏻‍♂️). TL;DR: In neueren Versionen ab 5.x aufwärts wird durch das Programm ein anderer Unterbau mit eigenem Speichern-Dialog eingesetzt, der besser eingeschränkt werden könne und auch wurde. Muss ich dann im Rahmen eines meiner Labortage verifizieren. Hab mich bedankt für die Eingaben und auch angekündigt, dass ich das im nächsten Labortag voraussichtlich am 2.6. verifizieren werde.
  • Labortag am 2.6.. Mit Version 5.0.6. Da war dann auch kein Dialog mehr vorhanden (siehe Problemlösung). Also noch schnell das Advisory updaten und ab dafür zum Hersteller. Erneut Kommentare Kritik abholen. Yeah🎉

Problem? Lösung!

Die Lösung: Update auf 5.x oder neuer installieren. Der Hersteller hat laut seiner Aussage das Problem durch das Ersetzen des Unterbaus und des Dialogs ab der Version 5.0 schon vor meiner Meldung (Be-tonung) behoben – is‘ mir egal glaub ich auch. Aber zur Sicherheit wurde der Dialog am 31.5. in Version 5.0.6 doch ganz deaktiviert (Zitat aus den Release-Notes der 5.0.6 „Im Logon-Modus wird der Log durch die Speichern-Schaltfläche ohne Dialog abgelegt“). Na also, alles gut🤸🏻‍♂️. Man bot mir sogar nach dem Update des Advisories noch an, eine ältere Version zuzusenden um das zu verifizieren, aber das muss aus meiner Sicht nicht mehr sein. Bin kein Leichenschänder…⚰️

Fazit

Again what learned. Also zu den Themen Software am Markt und Missbrauch von Software. Und auch ein bisschen zum Thema Responsible Disclosure. Und wichtig: Patchen, patchen, patchen!

Schleichwerbung: möchten auch Sie ihr Arbeitsplatzsystem im Rahmen eines Penetrationstest untersuchen lassen, sprechen Sie uns (PGP verschlüsselt) an!

/sb