Beobachten Sie Hunde im wirklichen Leben oder schwerwiegende Schwachstellen in ACS

Es scheint mir, dass viele Jungs, besonders in jungen Jahren, coole Hacker sein wollten. Hack-Sites, Telefone, Zugangssysteme. Ich habe also ein bisschen von dieser jungenhaften Begeisterung. Daher stöberte regelmäßig in verschiedenen Software und fand nichts lohnend. Aber eines Tages kam Glück für mich und sogar was! ACS voller Sicherheitslücken, die den Zugriff auf die Steuerung des gesamten Systems ermöglichen (Öffnen / Schließen von Türen, Hinzufügen Ihrer Zugangskarte usw.).


Interessant? Dann willkommen bei kat!


Alles, was unten beschrieben wird, wurde auf einem Prüfstand durchgeführt. Der Artikel wurde ausschließlich zu Bildungszwecken verfasst und ist im Allgemeinen eine Erfindung des Autors.


SKUD - Zugangskontroll- und -verwaltungssystem


So kam es, dass ich einmal in einem Bau- und Straßenunternehmen arbeitete, wo ich eine Reihe von Programmen für die Ausstellung von Pässen, die Ausstellung von Lebensmitteln für diese Pässe und die Berichterstattung schrieb. Ich musste all dies in ein ziemlich beliebtes ACS integrieren. Die Entwickler reagierten lange Zeit auf Dokumentationsanfragen und die Fristen brannten. Ich musste ihre Software selbst verstehen.


Bild
Ungefähres ACS-Betriebsschema


Ich begann aus der Datenbank zu lernen. Der ACS-Server arbeitet mit der Firebird 2.5-Datenbank. Die Anmeldung und das Passwort dafür erwiesen sich als Standard, was bereits sehr alarmierend ist, aber das Passwort kann in den Programmeinstellungen festgelegt werden. Passwörter in der Datenbank zu den Konten werden gehasht, aber ohne Salt, was schlecht, aber wieder unkritisch ist. Es speichert alle Durchgangszonen, Benutzer, ihre Kartennummern, Zugriffe und Controller-Adressen.


Bild
Db


Als nächstes nehmen wir ein Programm für das Verkehrs-Sniffing (ich habe "SmatrSniff" genommen, das erste, das den lokalen Host-Verkehr untersuchen kann) und sehen, was der Client an den Server sendet. Alle Daten werden unverschlüsselt über TCP und einige über UDP übertragen. Und hier beginnt der Spaß. Der Server sendet zuerst das eindeutige Passwort aus der Datenbank, seinen Speicherort, und überprüft erst dann den Benutzernamen und das Passwort!


Bild
Passwort aus der Masterkey-Datenbank


Es stellt sich heraus, dass wir ohne Kenntnis des Benutzernamens und des Passworts vollen Zugriff auf die Datenbank erhalten können, was uns nahezu unbegrenzte Möglichkeiten bietet. Wir können uns eine Karte mit Zugang zu jedem Objekt geben. Verschreiben Sie Ihre Karte einem anderen Benutzer und gehen Sie unter seinem Namen. Damit diese Daten jedoch auf die Controller hochgeladen werden können, müssen Sie dem Server vom Client aus einen Befehl erteilen. Obwohl wir das Kennwort aus der Datenbank an den Client übertragen können, verwenden Sie die geöffneten MD5-Datenbanken und versuchen Sie, das Kennwort für den Hash zu finden (ich möchte Sie daran erinnern, dass die Kennwörter in der Datenbank salzfrei sind). Wenn das Kennwort jedoch kompliziert ist, funktioniert höchstwahrscheinlich nichts. Wir müssen warten, bis jemand auf den vollständigen Upload-Button klickt.


Dann habe ich nachgesehen und wirkt sich die Autorisierung überhaupt auf irgendetwas aus? Zu diesem Zweck habe ich versucht, Anforderungen an den Server mit „TCP / IP Builder“ zu wiederholen. Und ja, nachfolgende Anfragen an den Server funktionieren nicht ohne Autorisierung (sendet eine Ablehnung als Antwort). Hier bin ich etwas deprimiert, weil ich für die Integration eine Wiederholung der gesamten Berechtigungskette implementieren und erst dann ein Paket senden muss, um Daten in den Controller zu laden.


Schließlich beschloss ich, die Aufforderung zu wiederholen, die Tür in den Öffnungsmodus zu versetzen. Der Server antwortete mit "OK" und die Tür piepte. Ohne Genehmigung. Ich habe dasselbe von einem anderen Computer im lokalen Netzwerk wiederholt und es hat auch funktioniert.


Bild
Ungefähre Art des Pakets


Dies bedeutet, dass wir jede Tür von jedem Computer im lokalen Netzwerk aus öffnen / schließen können. Verschreiben Sie sich eine Karte und laden Sie diese Daten sofort auf die Controller herunter. Dann gehen Sie ruhig durch die Objekte und löschen Sie alle Protokolle unseres Besuchs.


Ich habe ein paar Stunden gebraucht, um das Kommunikationsprotokoll zwischen dem Controller und dem Server zu lernen, um es endgültig zu brechen, aber ich konnte das Datenformat nicht vollständig verstehen. Aber ich bin sicher, dass es keinen Schutz gibt. Die Pakete haben definitiv die Mac-Adressen des Controllers und des Servers / Gateways (die Bindung an den Server erfolgt an die Mac-Adresse, die Datenbank enthält keine Verschlüsselungsschlüssel und dergleichen, sodass Sie höchstwahrscheinlich vorgeben können, der Server für den Controller zu sein, der den Mac-Server kennt). Leider gibt es keine Deponien oder Zugang zu den Geräten, sodass ich sie nicht zeigen kann.


Infolgedessen haben wir Sicherheitslücken in Bezug auf die vollständige Zugriffskontrolle, die uns uneingeschränkten Zugriff auf Passagen zu Objekten ermöglichen. Aufgrund der geringen Kosten für Komponenten und freie Software ist dieses ACS sehr verbreitet. Sie steht in vielen Schulen in Moskau, und ich habe sie an anderen Orten gesehen. Das Unternehmen ist stolz auf Preise bei verschiedenen Veranstaltungen. Ich nenne die Organisation nicht ausdrücklich und habe ihnen auch nicht darüber geschrieben. Weil ich glaube, dass solche Schwachstellen auf Architekturebene nicht behoben werden können, ohne die gesamte Software von Grund auf neu zu schreiben und die gesamte Ausrüstung der Leute zu aktualisieren, die dieses System gekauft haben (auf Architekturebene gibt es mehrere schwerwiegendere Lücken, aber ihre Beschreibung hätte den Artikel verdreifacht). Für diejenigen, die vom ACS-Bildschirm gelernt haben und dieser in Ihnen installiert ist, empfehle ich Ihnen, das Netzwerk (das als „Best Practices“ gilt), in dem sich alle Komponenten des Systems befinden, vollständig zu isolieren. Der Zugriff auf die Datenbank zum Hinzufügen von Mitarbeitern erfolgt nur über ein VPN. Die richtige Routing-Konfiguration kann ebenfalls hilfreich sein.

Source: https://habr.com/ru/post/de452458/


All Articles