Eine Geschichte darüber, wie wir im Netzwerkschrank ein schädliches Gerät gefunden, es mit Hilfe von Reddit analysiert und schließlich den Besitzer ertappt haben.
Anfang des Jahres bekam ich von einem Arbeitskollegen eine Nachricht mit einem beigefügten Bild (siehe oben). Ich bat ihn, das Gerät abzuschließen, es an einem sicheren Ort aufzuheben, Bilder von allen Einzelteilen zu machen und die Inhalte der SD-Karte zu spiegeln (da ich überwiegend über externen Zugriff arbeite). Ich habe schon an vielen Raspberry-Pi-Projekten gearbeitet und war mir deshalb sicher, dessen Funktion herausfinden zu können.
Inhalt:
Raspberry Pi: Rätselhafter Mikroprozessor im Netzwerkschrank enttarnt
Ein näherer Blick auf die Partitionen
Zu diesem Zeitpunkt ahnte noch niemand, dass es sich hierbei um etwas Schädliches handeln würde. Wir vermuteten, einer unserer Mitarbeiter hätte damit herumgespielt.
Die Einzelteile
ein Raspberry Pi b, erste Generation
ein mysteriöser USB-Stecker
eine schnelle 16-GByte-SD-Karte, Klasse 10
Der erste Schritt: alle mit Zugang zum Netzwerkschrank befragen
Der Zugang zum Kasten ist auf folgende Personen beschränkt:
1. den Geschäftsführer,
2. den Hausmeister,
3. meinen Arbeitskollegen,
4. mich.
Niemand wusste etwas darüber. Also fragte ich Kollegen aus dem IT-Bereich, worum es sich handeln könnte, doch sie waren genauso verwundert darüber wie ich. Ich habe schon einmal davon gehört, dass es Leute gibt, die dafür bezahlt werden, ähnliche Geräte an unbefugten Stellen heimlich anzuschließen. Daher entschloss ich mich, der Sache genauer nachzugehen.
Was kann dieser USB-Stecker eigentlich?
Um mir bei der Lösung dieses Rätsels zu helfen, wandte ich mich an die Reddit-Community. Und siehe da, sie konnten das Gerät identifizieren. Es handelt sich um einen Kopierschutzstecker - einen Mikroprozessor, fast so stark wie das Raspberry Pi selbst: ein nRF52832-MDK, einen leistungsstarken WLAN-, Bluetooth- und RFID-Reader.
Der Stick sollte ohne Zweifel eine WLAN- und Bluetooth-Verbindung ermöglichen. Na toll, jetzt hat das Ding auch WLAN. Es wird Zeit, die Daten der SD-Karte genauer zu analysieren. Die SD-Karte enthielt mehrere Partitionen, einige ext4 (Linux) und eine Partition fat16 (boot).
Was zur Hölle ist Resin?
Na wunderbar, es wird Zeit, diese zu mounten. Mein Debian-Computer gab mir meinen ersten großen Hinweis: Es handelte sich hier um eine Resin-Installation. Was zur Hölle ist Resin? Resin (inzwischen umbenannt in Balena) ist ein bezahlter IoT-Web-Service, mit dem man Images für IoT-Geräte generieren kann, welche dann dafür verwendet werden, Daten und Updates zwischen diesen Geräten auszutauschen.
Resin installiert auf dem Gerät auch einen VPN, um diese Daten sicher transferieren zu können. Offensichtlich hätte das Gerät wieder mitgenommen werden sollen. Der bezahlte Service hinterlässt eine verfolgbare Spur.
Ein näherer Blick auf die Partitionen
Die erste Partition wird hier Resin-Boot genannt. Sehen Sie etwas, das Ihnen ins Auge fällt? Es gibt eine Config-Datei config.json. Ein schneller Jackpot? Wir können durch diese Datei Folgendes herausfinden:
1. Die Applikation, die auf diesem Resin-Device eingesetzt wird, hat den Namen logger. Das ist schon mal kein gutes Zeichen.
2. Wir haben einen Benutzernamen. Es scheint sich dabei um den Benutzernamen des Resin-Benutzerkontos zu handeln, das mit diesem Gerät verbunden ist.
3. Die Nutzung eines VPNs durch Port 443 ist bestätigt.
4. Ein Datum der ersten Verwendung. Es wurde am 13. Mai 2018 zum ersten Mal verwendet (oder eingebaut bzw. eingeschaltet).
Über den Benutzernamen
Durch das Googeln des Benutzernamens aus der Config-Datei fand ich heraus, dass User und Raspberry Pi in derselben Stadt agieren. Die Firma hatte über den User keine Informationen. Lustigerweise fand ich eine Website aus dem Jahr 2001, auf der Eltern Artikel über ihre "begabten Kinder" veröffentlichen. Dort erkannte ich den Usernamen wieder und fand Adressen und Telefonnummern des Users sowie seiner Familie. Der Username war natürlich nur ein Indiz und hätte auch von jemand anderem verwendet werden können - eine Spur war es trotzdem und ich behielt den Namen im Hinterkopf.
Die Resin-Daten
Das Datenverzeichnis hatte keine Daten in sich gespeichert, sondern eine Node.js-Applikation, welche gut versteckt war. Ich bin mir bis zum heutigen Tag nicht sicher, was diese genau macht. Sie scheint durch eine serielle Verbindung mit dem USB-Stick kommuniziert zu haben, aber ich konnte nicht herausfinden, welche Daten sie eigentlich gesammelt hat. Ich vermute, dass Bewegungsprofile von Bluetooth- und WLAN-Geräten im Umfeld (Büro des Geschäftsführers) oder vielleicht rohe Wi-Fi-Pakete gesammelt wurden.
Aber ich habe noch etwas Interessanteres gefunden: Eine LICENSE.md-Datei. Komisch ... Warum sollte eine Nodejs-App eine geheime Software inkludieren? Also suchte ich den Firmennamen und wer hätte es erwartet? Der Typ, dessen Benutzernamen ich in der Config-Datei gefunden habe, ist Miteigentümer der Firma. Ich habe keine Ahnung, warum ein Miteigentümer einer Firma solche Geräte in der Stadt verteilen würde, aber ok ...
Die Heimatadresse des Angreifers
Eine andere sehr interessante Sache, die ich auf der dritten Partition (resin-state) gefunden habe, war eine Datei unter dem Dateipfad /root-overlay/etc/NetworkManager/system-connections/. Die Datei hatte den Namen resin-wifi-01, und dreimal dürfen Sie raten, was sie beinhaltet? Sie beinhaltet die WLAN-Referenzen des WLANs, das benutzt wurde, um das Gerät aufzusetzen (oder zu testen). Eindeutig handelt es sich hier nämlich nicht um das WLAN der Firma.
Und was tun wir jetzt, um den Ort finden, der mit dem WLAN-Namen verknüpft ist? Wir gehen auf wigle.net, geben die SSID ein und der Service sagt uns genau, wo dieses zu finden ist. Und raten Sie mal, was herausgekommen ist? Die Adresse, die ich auf der Website über "begabte Kinder" gefunden habe, war dieselbe Adresse, unter der laut Wigle.net das Raspberry Pi aufgesetzt wurde!
Die Nachwirkungen
Wie und wann ist das Pi überhaupt dorthin gekommen? Ich habe die DNS-Logs durchsucht und konnte herausfinden, wann das Pi dort zum ersten Mal im Netzwerk aufgetaucht ist. Außerdem überprüfte ich die Radius-Logs, um herauszufinden, welcher Mitarbeiter an dem Tag am Firmengelände war und sah überraschenderweise, dass sich ein deaktivierter Account ins WLAN einloggen wollte.
Dieser Account gehörte einem ehemaligen Angestellten, der mit der Geschäftsleitung vereinbart hatte, den Schlüssel noch über mehrere Monate zu behalten, um persönliche Gegenstände aus dem Gebäude zu holen (fragen Sie gar nicht erst ...).
Was hat das Gerät eigentlich gemacht?
Bei der Befragung des ehemaligen Mitarbeiters wurde beteuert, es habe sich um ein Gerät gehandelt, welches die Qualität des WLANs permanent misst, damit Probleme mit dem Empfang einfacher gelöst werden können. Auf die Frage, warum er uns in den über sechs Monaten nichts von dem Gerät erzählt hat, wenn er es für uns eingerichtet hat, bekamen wir keine Antwort.
Weiter meinte er zunächst, dass er uns die gesammelten Daten, die ja jetzt auf Balena.io lagen, selbstverständlich übermitteln werde. In späteren E-Mails hat er das wieder verneint und meinte zuerst, dass das Gerät alle Daten lokal gespeichert hat - was ich widerlegen konnte - und später, dass es gar keine Daten gesammelt hat.
In einer späteren Konversation meinte er dann, dass er diese Geräte auch in einer anderen Firma einsetzt, um Bewegungsdaten von Personen aufzuzeichnen. Sehr widersprüchliche Aussagen insgesamt.
Wie hat es geendet?
Die Rechtsabteilung wird den Fall jetzt weiter bearbeiten, ich tat, was ich konnte. Der Rest liegt über meiner Gehaltsstufe. Für mich stellte sich diese ganze Situation als eine nette Herausforderung dar und ich möchte mich ganz herzlich bei allen Personen und natürlich auch der Reddit-Community für die Hilfe bei der Lösung dieses Rätsels bedanken.