So bauen Sie einen Störsender-Detektor

Stellen Sie sich die heutige Welt ohne drahtlose Kommunikation vor. Keine Handys, kein WLAN zu Hause, kein GPS, keine Bluetooth-Tastatur / -Maus / -Kopfhörer usw. usw. usw. Wir sind eindeutig mehr auf drahtlose Konnektivität angewiesen, als uns bewusst ist. Was ist also, wenn diese Funksignale so beeinträchtigt werden könnten, dass sie unbrauchbar werden und die Kommunikation vollständig verloren geht? Wäre das überhaupt möglich? Nun, in einigen Fällen ist dies der Fall und es ist recht einfach zu erreichen ... aber zum Glück gibt es Möglichkeiten, diese Arten von Bedrohungen zu identifizieren, und ich zeige Ihnen eine davon.

Jamming

Wie bereits erwähnt, sind wir in hohem Maße auf drahtlose Netzwerke angewiesen. Drahtlose Kommunikation ist wie das Sprechen von zwei Personen. Einer von ihnen spricht und hört dann zu und umgekehrt. Was ist, wenn eine dritte Person sich ihnen nähert und so laut zu schreien beginnt, dass die beiden anderen nicht mehr aufeinander hören können? Am Anfang werden sie versuchen, das Gespräch fortzusetzen, aber bald werden sie feststellen, dass es nicht möglich ist, und sie werden aufhören zu sprechen und darauf warten, dass der Verrückte den Mund hält. Dies passiert mit vielen Kommunikationsprotokollen. Wenn sie bemerken, dass der Kanal belegt ist, ziehen sie sich zurück. Daher wird der Nachrichtenaustausch zwischen diesen Geräten unterbrochen. Selbst wenn sie versuchen zu kommunizieren, wenn das Medium nicht frei ist, wie dies bei einigen anderen Protokollen der Fall ist, werden die Nachrichten auf der anderen Seite nicht korrekt empfangen und es ist keine Kommunikation möglich. Dies ist das, was wir als kabelloses Stören bezeichnen.

Es gibt eine große Anzahl schädlicher drahtloser Geräte, die absichtliche Störungen in einem drahtlosen Netzwerk verursachen sollen. Sie sind eindeutig illegal, aber heutzutage können sie für einen moderaten Preis online gekauft werden.

Diese Störsender arbeiten auf folgende Weise. Sie erzeugen ein starkes Funksignal, das sich auf die physische Schicht des verwendeten Funkkommunikationsprotokolls auswirkt. Dies bedeutet, dass sie jedes Protokoll in jedem gegebenen Frequenzband beeinflussen können. Sie betreffen die erste Schicht des OSI-Stacks, das Medium. Infolgedessen ist jede für die Kommunikation verwendete obere Schicht betroffen. Wifi, Bluetooth, 3G, 4G, GSM, GPS, Sie nennen es. Es ist wie der verrückte Typ, der mitten im Gespräch anfängt zu schreien. Es ist egal, ob die Sprecher Englisch oder Russisch sprechen, sie können nicht mehr miteinander sprechen.

Es gibt verschiedene Arten von Störsignalen, aber die am häufigsten verwendeten sind diese vier:

Kontinuierliche Welle: Sinusförmiges Schmalbandsignal mit konstanter Amplitude und konstanter Frequenz

Frequenzmoduliert: Sinussignal mit konstanter Amplitude und variabler Frequenz, das die Frequenzen des Servicebands abtastet

Breitband: Überträgt ein Frequenzband, das in Bezug auf die Bandbreite eines einzelnen Emitters groß ist

Gepulste Signale: intermittierendes Signal mit mehreren harmonischen Komponenten, die im gesamten Serviceband aufgeteilt sind

Es gibt mehrere Arten von Signalen, die zur Beeinflussung der drahtlosen Kommunikation verwendet werden können. Die kommerziellen Störsender, die wir problemlos über das Internet kaufen können, verwenden jedoch gepulste Störsender, da dies der billigste Weg ist, einen leistungsstarken Breitbandstörsender für eine bestimmte Band zu erzielen.

Also, was machen wir damit? Wie können wir feststellen, dass ein bösartiges Gerät versucht, das normale drahtlose Netzwerk zu beeinträchtigen? Nun, eine der Lösungen wäre der Bau eines Störsender-Detektors. Einfach, richtig? :)

DoS Sensing - Störsender-Detektor

Heute (an dem Tag, an dem ich mit dem Schreiben dieses Blogposts begonnen habe) bin ich vor 2 Jahren zu Worldsensing gekommen. Dies ist ein IoT-Unternehmen, das in letzter Zeit stark gewachsen ist, und es war für mich bisher eine großartige Erfahrung, hier zu arbeiten. Ich bin Teil eines Teams, das hauptsächlich an Innovationsprojekten arbeitet, die im Allgemeinen von der Europäischen Union gegründet wurden. Im Rahmen eines dieser Projekte namens CIPSEC sollten wir ein Tool entwickeln, mit dem wir DoS-Angriffe (Wireless Denial of Service) erkennen können. Nachdem wir das Problem analysiert und viel recherchiert hatten, beschlossen wir, DoS Sensing, ein Jammer Detector IoT-Gerät, zu bauen. Schließlich sind wir ein IoT-Unternehmen!

Die Idee war, ein Gerät zu haben, das in der Lage ist, jedes drahtlose Netzwerk unabhängig vom Frequenzband zu schützen. Dies bedeutet, dass es in der Lage sein musste, Anomalien auf der physischen Ebene zu erkennen und zu informieren, wenn ein Angriff stattfand. Auf diese Weise könnten wir ein einziges Gerät verwenden, um die Sicherheit heterogener Geräte wie WLAN-Router, Mobiltelefone oder sogar der Loadsensing-Datenlogger von Worldsensing zu verbessern, die über LoRa kommunizieren.

In der Folge wollten wir einen intelligenten Sensor, der die Funksignale nicht stört, sondern sie nur passiv hört und analysiert, um eine Anomalie zu finden. Falls es so etwas gab, sollte es über den Angriff informieren, damit etwas unternommen werden kann. Es würde natürlich helfen, ein visuelles Werkzeug zu haben, um die Stärke des Angriffssignals in Echtzeit zu sehen, da der Angriff stattfinden würde.

Lösungsarchitektur

Aber wie bauen wir so etwas? Nun, wenn Sie gewillt sind, das Kommunikationsprotokoll nicht zu kennen und die physikalische Schicht analysieren, ist es am besten, ein SDR-Modul (Software Defined Radio) zu verwenden. Diese Module sind hauptsächlich ein Mehrband-Radio, während alle anderen Komponenten, die im Allgemeinen in Hardware implementiert sind (Filter, Modulatoren, Mischer usw.), auf Software laufen. Dies ermöglicht uns die Umwandlung eines drahtlosen Signals von seiner analogen in eine digitale Form, unabhängig vom Kommunikationsprotokoll. Dann müssen wir nur noch die Art des Signals analysieren und sicherstellen, dass es einem der bekannten Störsignale entspricht. Es ist, als würde man die Signatur des Signals mit den uns bekannten Signaturen vergleichen.

Dann brauchen wir nur noch ein SDR-Modul? Nun, nur mit dem SDR-Modul können Sie keine Analyse durchführen. Es werden nur Ihre analogen Daten in digitale Samples umgewandelt. Übrigens brauchen wir natürlich auch eine Antenne. Wie erfassen wir die Funksignale ohne sie? Recht. Antennen hängen jedoch von der Frequenz ab. Sie können nicht für alle Frequenzen dieselbe Antenne verwenden. Richtig, aber es gibt einige Antennen, die einen weiten Frequenzbereich abdecken, den wir verwenden können.

OK, wir brauchen eine Antenne, ein SDR-Modul und etwas, um die von ihm erzeugten Daten zu verarbeiten. Das wird unser Sensor sein, unser IoT-Gerät. Es sollte in der Lage sein, das Funkspektrum zu erfassen und in Erkennungsereignisse umzuwandeln. Diese Ereignisse sollten vom Typ "Es gibt tatsächlich einen Störsender" oder "Es gibt keinen Störsender hier" sein und diese sollten regelmäßig kommuniziert werden, da die Lösung in Echtzeit ausgeführt werden soll. Zu diesen Ereignissen können Informationen wie die Art des Angriffs, die Signalstärke des Angriffssignals, die Häufigkeit, mit der der Angriff gefunden wurde, und natürlich ein Zeitstempel gehören.

Gut. Jetzt bleibt nur noch die Software, mit der wir diese Angriffsereignisse in Echtzeit visualisieren können. Normalerweise werden solche Anwendungen in der Cloud ausgeführt und bieten eine Webschnittstelle für den Zugriff darauf. Darüber hinaus sollte die in der Cloud ausgeführte Software auch die Möglichkeit bieten, Daten zu speichern, falls historische Ereignisse angezeigt werden sollen.

OK dann! Unsere Architektur sieht ungefähr so ​​aus:

Die Funksignale werden von der Antenne empfangen. Anschließend vom SDR-Modul in digitale Samples umgewandelt. Diese werden vom Processing Board verarbeitet. Sobald das Board entscheidet, ob ein Angriff stattfindet oder nicht, wird das Ergebnis an den Monitoring Server übermittelt, der die Daten empfängt und speichert. Dann kann das Visualisierungstool verwendet werden, um diese Ereignisse in Echtzeit und in der Vergangenheit anzuzeigen.

Der Sensor (Hardware)

Jetzt müssen wir den Sensor bauen. Beginnen wir mit der Antenne. Wir wissen, dass es einige Antennen gibt, die mehrere Bänder abdecken, zum Beispiel diese, die wir tatsächlich mit guten Ergebnissen getestet haben. Wir könnten so etwas verwenden, um mehrere Frequenzbänder abzudecken und mehrere Protokolle zu schützen. Zunächst konzentrierten wir uns jedoch hauptsächlich auf einen Prototyp zum Schutz des WLAN-Bandes, sodass eine 2,4-GHz-2,5-GHz-Antenne ausreichte. Wir werden später sehen, warum.

Wir brauchen auch ein SDR-Modul. Welcher? Es gibt verschiedene Produkte auf dem Markt. Nach einigen Recherchen und Diskussionen mit Experten haben wir beschlossen, dass wir uns für diesen Prototyp für den HackRF One entscheiden. Dieses Gerät bietet ein gutes Preis-Leistungs-Verhältnis und deckt Frequenzen von 1 MHz bis 6 GHz ab! Die Treiber sind Open Source und können für die meisten Linux-Distributionen einfach über den Paket-Manager installiert werden.

Gut, das nimmt langsam Gestalt an. Jetzt brauchen wir eine Maschine, die die vom SDR-Modul erzeugten digitalen Proben verarbeiten kann, unser Processing Board. Hier wird es etwas knifflig. Wenn wir den Datenstrom in Echtzeit analysieren möchten, benötigen wir eine erhebliche Rechenleistung. Mit einer anständigen Abtastrate (z. B. 5 Msps) erreichen wir eine Datenrate von mehr als 300 Mbit / s! Das sind eine Menge Daten, wenn wir alles analysieren wollten. Glücklicherweise müssen wir nicht wirklich alles verarbeiten, sondern nur ein paar Datenpakete pro Sekunde, um eine Echtzeitlösung zu erhalten. In diesem Fall wäre ein Laptop großartig, aber Sie können kein IoT-Gerät mit einem Laptop erstellen. Sie brauchen auf jeden Fall etwas kleiner. Dann haben wir uns einen Himbeer-Pi überlegt, aber in einigen Fällen reicht möglicherweise sogar Version 3 nicht für unsere Zwecke aus (obwohl es auch funktionieren könnte, wenn es Ihnen nichts ausmacht, dass die Ergebnisse eine gewisse Latenz aufweisen). Aus diesem Grund haben wir uns für den Odroid C2 entschieden. Dieses Board ist für seinen Preis ziemlich leistungsstark und kann Ubuntu-Minimal ausführen, was sehr hilfreich ist. Abhängigkeiten sind wirklich einfach zu installieren, wenn Sie einen HackRF One daran anschließen möchten, und es ist eine recht robuste Karte.

Perfekt. Noch etwas? Nun ja. Wenn Sie ein IoT-Gerät bauen möchten und es gut aussehen soll, benötigen Sie eine Box. Wenn Sie das Gerät im Freien installieren möchten, sollten Sie außerdem sicherstellen, dass die Box wasserdicht ist! Verwenden wir etwas, das wir bereits kennen. Worldsensing hat ein Produkt namens Bitcarrier, das eine eingebettete Antenne in seiner Box hat und perfekt für unsere Zwecke geeignet ist, falls wir nur auf dem Wifi-Band zum Detektor gehen. Aus diesem Grund haben wir uns entschlossen, die Bitcarrier-Box wiederzuverwenden und uns hauptsächlich auf die Erkennung von Angriffen in diesem Band zu konzentrieren.

Der Sensor (Firmware)

Dies ist wahrscheinlich der komplexeste Teil des Bauprozesses. Die Software, die auf dem eingebetteten Gerät verwendet wird (wir nennen es Firmware), muss die vom SDR-Modul kommenden digitalen Proben verarbeiten und eine Entscheidung über das Vorhandensein oder Nichtvorhandensein eines Störsenders treffen. Glücklicherweise gibt es Tools, die den Job sehr vereinfachen und sogar Open Source sind! Zu diesem Zweck verwenden wir GNU Radio.

GNU Radio ist ein kostenloses Software-Entwicklungs-Toolkit, mit dem wir Signalverarbeitungsblöcke verschiedener Art verwenden können, um Signalverarbeitungssysteme und softwaredefinierte Radios zu implementieren. Sie können die Bausteine, die die Signalverarbeitung durchführen, in der Software verwenden und miteinander verbinden, um das Signal zu transformieren und einen Ausgang zu erzeugen. Es gibt viele vordefinierte Funktionen wie Filter, Equalizer, Decoder usw. Und das Beste daran ist, dass Sie auch Ihre eigenen Blöcke entwickeln und sie verwenden können, um sich mit den anderen zu verbinden. Die Anwendungen können in C ++ oder Python geschrieben werden. Mit GNU Radio können Sie ein SDR-Modul verwenden, um coole Dinge wie diese zu visualisieren:

Dies ist die FFT eines Signals. Das heißt, Sie haben Ihren eigenen Spektrumanalysator auf Ihrem Computer!

Auf der anderen Seite können Sie eine Signalquelle mit anderen Blöcken verbinden, um die Samples in etwas anderes umzuwandeln. Es gibt eine grafische Benutzeroberfläche mit dem Namen GNU Radio Companion und sie sieht folgendermaßen aus:

Dieses Tool generiert schließlich ein Python-Skript, das die Blöcke miteinander verbindet und die Anwendung ausführt. Dabei wird eine Ausgabe generiert. In diesem Fall möchten wir einen Fluss von Samples erstellen, der einige angepasste Blöcke durchläuft, die sie analysieren können, sodass auf dem Signal ein bestimmtes Muster oder eine bestimmte Signatur gefunden wird. In diesem Fall senden wir eine Nachricht, dass wir einen Störsender gefunden haben. Die Architektur der SDRJD-Anwendung (SDR Jammer Detection) auf dem Processing Board sieht folgendermaßen aus:

Digitale Samples stammen von einer Quelle, dem SDR-Modul. Dank GNU Radio und seiner blockorientierten Architektur kann das SDR-Modul als Quelle jedoch durch andere mögliche Quellen ersetzt werden, sofern ein Block dafür vorhanden ist. Die Quelle könnte beispielsweise eine Datei sein. Dies ist sehr nützlich, da wir damit ein Signal aufzeichnen (z. B. einen Störsender), in eine Datei speichern (mit einem Sink-Block, der in eine Datei schreibt) und es dann so oft wiederverwenden können, wie wir es testen möchten.

Wir werden auch einen Signalkonditionierer verwenden, um die Proben vorzubereiten, die von den Störsendererkennungsalgorithmen analysiert werden sollen. Es gibt vier von ihnen (eine pro Störsendertyp) und sie verarbeiten die Daten parallel (tatsächlich läuft jeder GNU Radio-Block auf einem eigenen Thread). Sobald die Algorithmen entschieden haben, teilen sie diese Entscheidung dem Detector Message Receiver mit, der die Entscheidungen aggregiert, die endgültige Entscheidung darüber trifft, welcher Störsender vorhanden ist oder nicht, und eine Nachricht in eine Linux-Warteschlange stellt.

Die SDRJD-Anwendung verfügt über eine sehr vollständige Konfigurationsdatei, mit der wir Abtastfrequenz, Eingangsverstärkung, Signalquelle, Mittenfrequenz und viele andere Parameter konfigurieren können. Es gibt sogar einige Parameter zum Anpassen und Kalibrieren jedes Erkennungsalgorithmus, da sie sich abhängig von der Umgebung, in der der Sensor installiert ist, ändern können. In sehr lauten Umgebungen müssen möglicherweise die Schwellenwerte und die Parameter des Tong-Algorithmus neu eingestellt werden.

Der Tong-Algorithmus ist ein interessantes Verfahren, das entwickelt wurde, um falsch positive Ergebnisse zu verbessern und die von jedem Störsendererkennungsalgorithmus getroffenen Entscheidungen zu verfeinern. Es besteht darin, mehrere Entscheidungen zu treffen, um zu einer Schlussfolgerung zu gelangen. Wir beginnen mit einem Zähler K = B. Wenn die Entscheidung positiv ist, erhöhen wir K. Wenn K gleich A ist, ist das Ergebnis positiv. Wenn die Entscheidung negativ ist, dekrementieren wir K. Wenn K gleich 0 ist, ist das Ergebnis negativ. Da wir unendlich iterieren könnten, zählen wir auch eine maximale Anzahl von Iterationen, bis ein negatives Ergebnis deklariert wird.

Alle hier beschriebenen Firmware ist Open Source und kann hier gefunden werden.

Wie bereits erwähnt, werden Erkennungsmeldungen in eine Linux-Warteschlange gestellt. Ein anderer Prozess ist dafür zuständig, die Nachrichten aus der Warteschlange zu lesen und an die Überwachungssoftware zu übertragen, die in der Cloud ausgeführt wird.

Überwachungssoftware

In Bezug auf die Software haben wir nach verschiedenen Tools gesucht, mit denen Daten in Echtzeit dargestellt und Dashboards einfach erstellt werden können. Wir haben festgestellt, dass die Kombination von InfluxDB, Kapacitor und Grafana unsere Anforderungen hervorragend erfüllt. Die Monitoring Software-Architektur sah dann so aus:

Der Sensor kommuniziert mit einem Python-Skript, das die Daten in die InfluxDB-Datenbank einfügt. Hier macht Kapacitor etwas Magie, um die vom Sensor kommenden Erkennungsmeldungen zu verfeinern und die Angriffseinträge erneut in eine Datenbank einzufügen, die von Grafana verwendet wird, um die Angriffe in Echtzeit darzustellen und einige Statistiken anzuzeigen. Bei einem positiven Angriff teilt Kapacitor dies auch einem separaten Prozess mit, der einen Syslog-Eintrag in das ATOS XL-SIEM schreibt. Dieses SIEM wurde im Rahmen des CIPSEC-Projekts entwickelt und getestet.

Kapacitor spielt hier eine sehr wichtige Rolle. Selbst wenn wir die Erkennungsschwellen und -parameter des Sensors anpassen können, kann es gelegentlich zu Fehlalarmen oder Erkennungen kommen, die nicht unbedingt einen Angriff bedeuten. In diesen Fällen wollten wir nicht zeigen, dass ein „Mini-Angriff“ stattfand, da wir wussten, dass dies nicht der Fall war. Aus diesem Grund haben wir eine Verfeinerungsebene der vom Sensor kommenden Erkennungsmeldungen hinzugefügt, die von Kapacitor implementiert wird. Der Algorithmus ist der folgende:

  • Wenn _positiveRatio_% der letzten _windowDuration_-Störsendererkennungsentscheidungen vom Sensor (in der Rohentscheidungstabelle) positiv sind und das JNR (Störsender-Rausch-Verhältnis) größer als _jnrThreshold_ ist, dann deklarieren Sie ein positives Angriffsereignis. Wenn nicht, deklarieren Sie ein negatives Angriffsereignis.
  • Schieben Sie _jammerUpdateWindowDuration_ weitere Sekunden in das _windowDuration_-Schiebefenster

Derzeit haben wir die folgenden Parameter festgelegt und gute Ergebnisse erzielt:

  • _jnrThreshold_: 1 dB
  • _positiveRatio_: 90
  • _windowDuration_: 5 Sekunden
  • _jammerUpdateWindowDuration_: 1 Sekunde

Vorderes Ende

Der neueste Teil der Lösung besteht aus dem Visualisierungstool. Dieses Tool wurde mit Grafana erstellt und bietet ein Dashboard zur Visualisierung der Angriffe und anderer Statistiken. Es bietet einen Echtzeitgraphen des JNR gegenüber der Zeit für jede Art von erkennbarem Angriff. Außerdem wird die Anzahl der Angriffe pro Typ am letzten Tag angezeigt (dieser Zeitraum kann geändert werden). Es gibt auch ein Widget, das den aktuellen Status des Störungserkennungsgeräts anzeigt. Blau bedeutet, dass der Sensor aktiv ist, Rot bedeutet, dass er angegriffen wird, und Grau bedeutet, dass der Sensor inaktiv ist. So sieht es aus:

Einpacken

Wir haben gesehen, dass der Bau eines Störsender-Detektors kein einfaches Verfahren ist. Es braucht Zeit, um die Firmware und Software zu entwickeln und beide zu verfeinern, damit die vom Sensor gelieferten Ergebnisse kohärent sind. Trotzdem ist das Ergebnis ein sehr schöner Prototyp, der als Beweis für die Machbarkeit der Erkennung derartiger Angriffe dienen kann, die sich erheblich auf unsere drahtlose Umgebung auswirken.

Wenn Sie den Sensor selbst ausprobieren möchten, holen Sie sich ein SDR-Modul, laden Sie das Firmware-Repository herunter, befolgen Sie die README-Anweisungen und führen Sie die Störsendererkennung selbst aus!

Haftungsausschluss

Dieses Projekt (Cipsec) wurde im Rahmen der Finanzhilfevereinbarung Nr. 700378 aus dem Forschungs- und Innovationsprogramm Horizont 2020 der Europäischen Union finanziert. Die hier vorgelegte Verbreitung der Ergebnisse spiegelt nur die Ansicht des Konsortiums wider. Die Exekutivagentur für die Forschung ist nicht verantwortlich für die Verwendung der darin enthaltenen Informationen.