paint-brush
So entwickeln Sie eine Drohne mit Wireshark mithilfe der Paketzerlegung zurückvon@angelinatsuboi
7,944 Lesungen
7,944 Lesungen

So entwickeln Sie eine Drohne mit Wireshark mithilfe der Paketzerlegung zurück

von Angelina Tsuboi26m2023/05/19
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

In diesem Artikel werden die Schritte beschrieben, die ich unternommen habe, um DJI-Drohnen mithilfe von Paketüberwachungstechniken mit Wireshark zurückzuentwickeln. Ich beschäftige mich auch mit den Details der Paketzerlegung und wie Sie mit der Programmiersprache Lua Ihren eigenen Protokollzergliederer entwickeln können. Da fortschrittlichere Drohnensysteme eingeführt und in verschiedene Sektoren integriert werden, wird es immer wichtiger, die damit verbundenen Schwachstellen zu berücksichtigen.
featured image - So entwickeln Sie eine Drohne mit Wireshark mithilfe der Paketzerlegung zurück
Angelina Tsuboi HackerNoon profile picture

Da fortschrittlichere Drohnensysteme eingeführt und in verschiedene Sektoren integriert werden, wird es immer wichtiger, die von ihnen möglicherweise ausgehenden Schwachstellen zu berücksichtigen, um die Sicherheit ihrer Anwendungen zu gewährleisten.

Seitdem ich mich für Cybersicherheit in der Luft- und Raumfahrt interessiere, wollte ich immer einen Weg zum Hacken finden: UAVs. In diesem Artikel skizziere ich die Schritte, die ich unternommen habe, um DJI-Drohnen mithilfe von Paketüberwachungstechniken mit Wireshark zurückzuentwickeln, und beschäftige mich mit den Details der Paketzerlegung und wie Sie mit der Programmiersprache Lua Ihren eigenen Protokollzerleger entwickeln können.

Obwohl das Reverse Engineering von Drohnen keine leichte Aufgabe ist, sind sie dennoch anfällig für eine Vielzahl von Cyber-Bedrohungen, die schwerwiegende Folgen haben können. Indem ich den Prozess skizziere, mit dem ich meinen Weg in DJI-Drohnen zurückentwickelt habe, um in Paketdaten gespeicherte vertrauliche Informationen offenzulegen, hoffe ich, dass die Forschung bestehende Schwachstellen aufzeigt, um bessere Alternativen zum Schutz bestehender Drohnensysteme zu finden.

Inhaltsverzeichnis

  • Unbemanntes Fluggerät
  • Drohnen dekonstruiert 
  • Schwachstellen von UAV
  • Was ist Paket-Sniffing und -Analyse?
  • Was ist Wireshack?
  • Wireshack-Anzeigefilter
  • Was ist Paketdissektion?
  • Paketzerlegung mit Wireshack
  • Reverse Engineering von DJI-Drohnen
  • DJI-Paketzerlegung mit Wireshack
  • Tauchen Sie tiefer in die Wireshack-Dissektoren ein
  • Dissektor mit Wireshack einrichten

Unbemanntes Fluggerät

Ein unbemanntes Luftfahrzeug (kurz UAV) ist ein Luftfahrzeug, das keinen Piloten oder Passagiere an Bord befördert. Meistens wird der Begriff auf Drohnen angewendet, es gibt aber auch andere Arten von UAV-Fahrzeugen, wie zum Beispiel den Global Hawk der NASA, ein UAV für große Höhen und mit langer Lebensdauer, das für Forschungszwecke gedacht ist. UAVs werden für eine Vielzahl von Anwendungen wie Such- und Rettungsmissionen, Datenerfassung, Militär und Strafverfolgung, Luftaufnahmen usw. eingesetzt. Im Vergleich zu herkömmlichen Flugzeugen weisen UAVs eine kompakte Form auf und weisen eine höhere Agilität, Genauigkeit und Präzision auf Manöver und erweisen sich als kosteneffektiv, was sie für verschiedene kommerzielle und Verbraucheranwendungen wie Lieferdienste und Luftvermessung weithin beliebt macht.


Drohnen dekonstruiert

Da sich dieser Artikel mit der Forensik von Drohnen befasst, ist es wichtig, einen kurzen Überblick über die Komponenten zu geben, aus denen die DJI Phantom 4 besteht. Es ist zwar erwähnenswert, dass die in einer Drohne enthaltenen Komponenten je nach Marke oder Version variieren können, die meisten UAVs sind jedoch gleich eine erhebliche Mehrheit der Komponenten.

Chassis: Das Chassis der Drohne ist der physische Rahmen, der alle Komponenten zusammenhält. Das Chassis besteht typischerweise aus leichten Materialien wie Kunststoff oder Kohlefaser, um die Gesamtflugleistung der Drohne durch Reduzierung des Luftwiderstands und des Gewichts zu verringern

Drohnenmotor: Drohnen verwenden Motoren, um den für den Flug erforderlichen Auftrieb zu erzeugen. Die meisten Drohnen verfügen normalerweise über eine Quadcopter-Konfiguration, die aus vier Motoren besteht: zwei im Uhrzeigersinn drehenden Motoren und zwei gegen den Uhrzeigersinn drehenden Motoren, um die Drehkraft auszugleichen. Diese Konfiguration existiert, weil Newtons Drittes Gesetz besagt, dass es für jede Aktion eine gleiche und entgegengesetzte Reaktion gibt. Wenn also die gleiche Anzahl an gegenläufigen und rechtsdrehenden Motoren vorhanden ist, erhält die Drohne eine Flugkoordination durch eine ausgeglichene Drehkraft

Drohnen-Flugsteuerung: Die Flugsteuerung einer Drohne verhält sich wie ihr Gehirn. Der Flugcontroller empfängt Eingaben von Sensoren an Bord der Drohne, beispielsweise vom GPS-Modul, um den elektronischen Geschwindigkeitsreglern (ESCs) spezifische Anweisungen zur Steuerung der Motoren zu geben

GPS-Modul: Das GPS-Modul (Global Positioning Satellite) verwendet zwei verschiedene globale Positionierungssysteme, um den Standort der Drohne zu bestimmen. Mithilfe des GPS-Moduls kann die Drohne ihre Geolokalisierung anhand der Zeitdauer berechnen, die es dauerte, bis die von verschiedenen Satelliten gesendeten Signale eintrafen

Elektronischer Geschwindigkeitsregler (ESC): ESCs sind der Mittelsmann zwischen der Stromverteilungsplatine der Drohne und den Motoren. Sie verwenden Signale vom Flugregler, um die einem Motor zugewiesene Leistungsmenge zu steuern

Stromanschlussmodul: Der Stromanschluss ist ein Modul, das die von der Batterie gelieferte Strommenge misst und diese Strom an die ESCs und den Flugcontroller der Drohne verteilt

Sensoren zur Hindernisvermeidung: Einige Drohnen sind mit Stereosichtsensoren am Rahmen ausgestattet. Diese Sensoren berechnen den Abstand zwischen der Drohne und dem Hindernis vor dem Sensor, indem sie die Tiefe anhand der von jedem Sensor erfassten Bildpixel berechnen

3-Achsen-Gimbal: Der Gimbal stabilisiert die an der Drohne befestigte Kamera, um das Filmmaterial zu stabilisieren. Wenn Sensoren eine Bewegung um eine Achse bemerken, signalisieren sie dem Gimbal, die richtigen Anpassungen vorzunehmen, um das Kameramaterial zu glätten

Drohnenbatterie: Batterien versorgen die Drohne mit Strom. Einige Batterien verfügen außerdem über Funktionen wie Überladeschutz, Leistungsausgangskommunikation usw

Drohnenkamera: Die Kamera der Drohne wird zum Filmen und Fotografieren verwendet. Der Bildsensor in der Kamera erfasst einfallende Lichtstrahlen und verarbeitet sie zu einem digitalen Bild

Drohnenantennen: Drohnenantennen fungieren als Übertragungssystem zur Weiterleitung von Informationen zwischen dem Controller und der Drohne

Abwärts gerichteter Ultraschall-Hindernisvermeidungssensor: Diese Sensoren werden verwendet, um die Höhe der Drohne über dem Boden zu berechnen. Die Höhe kann berechnet werden, indem ein hochfrequenter Schallimpuls von einem Sensor gesendet und die Zeit gemessen wird, die der andere Sensor benötigt, um ihn zu empfangen

Flug-LED: Flug-LEDs werden normalerweise verwendet, um die Flugrichtung der Drohne anzuzeigen. Zwei blinkende rote Lichter zeigen die Vorderseite der Drohne an und blinkende grüne Lichter zeigen die Rückseite an

Joysticks: Joysticks dienen zur Steuerung der Drohne, indem sie die physische Bewegung der Sticks in Informationen umwandeln, die der Controller der Drohne als Bewegungsrichtungen mitteilen kann

Hauptplatine der Fernbedienung: Die Fernbedienungsplatine ruft nützliche Telemetriedaten über die Drohne ab, z. B. Höhe, Standort und Kamerabilder

Hauptkameraplatine: Die Kameraplatine verarbeitet Daten vom Bildsensor und den Kardanmotoren, um stabiles Filmmaterial zu synthetisieren

Schwachstellen von UAVs

Obwohl UAVs wie jedes andere Gerät mit einem Bordcomputersystem für eine Vielzahl von Anwendungen eingesetzt werden, sind sie einer Reihe von Cybersicherheitsbedrohungen ausgesetzt. Zu den häufigsten Cybersicherheitsbedrohungen bei UAVs gehören:

Unbefugter Zugriff: UAVs sind anfällig für unbefugten Zugriff durch böswillige Akteure, die drahtlose Signale, die zur Steuerung der Drohne verwendet werden, entweder abfangen oder fälschen können. Dies ermöglicht es dem Hacker, die Drohne zu steuern oder ihr passiv Informationen zu stehlen.

Datendiebstahl: UAVs sind mit einer Vielzahl von Sensoren ausgestattet, die aktiv Informationen über ihre Umgebung wie Fotos, Videos und Telemetriewerte sammeln. Diese Daten können anfällig für das Abfangen durch Hacker sein, die sie für schändliche Zwecke verwenden können

Denial of Service: Ein spezifischerer Angriff, den Hacker zum Hacken von Drohnen einsetzen können, ist ein Denial of Service. Dies geschieht, wenn ein Hacker ein DOS auf demselben drahtlosen Kommunikationssystem der Drohne startet und so deren Fähigkeit zum Empfangen oder Senden von Daten beeinträchtigt

Da mit der zunehmenden Beliebtheit von UAVs immer mehr Sicherheitslücken entdeckt werden, ist es für Sicherheitsforscher erforderlich, Geräte forensisch auf böswillige Zwecke zu analysieren. Ein Teilgebiet der Cybersicherheit namens forensische Analyse konzentriert sich auf das Sammeln und Analysieren von Daten aus einem Angriff zu Ermittlungszwecken .

Dieses Verfahren ist in realen Kriminalitätsszenarien nützlich, wenn digitale Informationen eines Computersystems beschlagnahmt werden und untersucht werden müssen. Oftmals steht die überwiegende Mehrheit der Informationen auf der Maschine in keinem Zusammenhang mit der Straftat und muss herausgefiltert werden, um die Kriminalitätsszenarien aufzuschlüsseln.

Es gibt ein breites Spektrum an illegalen Einsatzmöglichkeiten von Drohnen, wie z. B. Schmuggelware-Abwürfe in nicht genehmigte Gebiete, Drogenabwürfe über ausländische Grenzen und unaufgeforderte Überwachung. Nach vielen dieser Szenarien wird digitale Forensik eingesetzt, um Informationen wie den Gerätebesitz und alle mit der Straftat verbundenen Daten zu ermitteln.

Eine Studie , die an gängigen Drohnenmodellen an verschiedenen Tatorten durchgeführt wurde, zeigte, dass Informationen wie Mediendateien im Foto- oder Videoformat, Flugmuster, Standorte und Besitzerinformationen für den Erfolg digitaler forensischer Fälle von Strafverfolgungsermittlern am förderlichsten waren. Obwohl es den Ermittlern der Studie mithilfe digitaler Forensiktechniken möglich war, Informationen über das Verbrechen herauszufiltern, stellte die Studie fest, dass die Gesetzgebung auf Landes- und Bundesebene die Vorschriften hinter der Drohnentechnologie nicht ordnungsgemäß gehandhabt hat und daher viele Interessengruppen angreifbar macht. Insgesamt kamen sie zu dem Schluss, dass der Mangel an forensischen Tools und einer universellen Drohnenstruktur die Entwicklung weiterer Methoden zur Datenextraktion erforderlich machte.

Um dazu beizutragen, den Mangel an UAV-Forensik-Tools zu beheben, werde ich demonstrieren, wie ich mithilfe der Programmiersprache Lua ein Paketzerlegungsskript für Wireshark erstellt habe, um in digitalen Forensik-Szenarien nützliche Netzwerkinformationen zu finden. Das Tool ist eine Anwendung digitaler forensischer Fähigkeiten aus erster Hand, um nützliche Informationen über UAVs zu sammeln, die in Ermittlungssituationen verwendet werden könnten, um mehr Daten im Zusammenhang mit dem begangenen Verbrechen zu sammeln.

Was ist Paket-Sniffing und -Analyse?

Beim Packet Sniffing werden Datenpakete abgefangen und untersucht, während sie über ein bestimmtes Netzwerk übertragen werden. Diese Technik wird von Cybersicherheitsexperten genutzt, um Schwachstellen aufzuspüren, Fehler und die Leistung ihres Netzwerks zu diagnostizieren oder Bedrohungen zu entdecken.

Bei einem Computer handelt es sich bei der Netzwerkschnittstellenkarte (auch als NIC bezeichnet) um eine Hardwarekomponente, die eine eingebettete Platine enthält, die es dem Computer ermöglicht, eine Verbindung zu Netzwerken herzustellen und Paket-Sniffing durchzuführen. Aufwändigeres Sniffing für Cybersicherheits- oder Hacking-Zwecke erfordert oft, dass die Netzwerkkarte in den Promiscuous-Modus versetzt wird, der es dem Computer ermöglicht, den umgebenden Netzwerkverkehr abzurufen. Durch einen Decodierungsprozess können Schnüffler Zugriff auf verschlüsselte Informationen erhalten, die in Datenpaketen gespeichert sind, während diese über ein Netzwerk transportiert werden. Das Schnüffeln kann in zwei allgemeine Kategorien unterteilt werden: aktives und passives Schnüffeln.

Passives Schnüffeln

Beim passiven Sniffing werden nur Pakete abgehört, die als Netzwerkverkehr gesendet werden. Es wird oft als Aufklärungstechnik eingesetzt, um relevante Informationen über den Datenverkehr und die Art der Daten zu ermitteln, die über ein Netzwerk übertragen werden. Auf diese Weise können Sicherheitsexperten das Netzwerk auf Anomalien oder verdächtige Aktivitäten analysieren, z. B. Netzwerkfehler beheben (unter Verwendung des Netzwerkverkehrs als Maß für Netzwerkprobleme) und die Leistung optimieren, indem sie Bereiche mit Überlastung identifizieren.

Aktives Schnüffeln

Aktives Sniffing ist eine Technik, die in Paketinjektions-/Spoofing-Anwendungen eingesetzt wird, die darauf abzielen, eine Antwort von Netzwerkgeräten auszulösen. Beispielsweise könnte ein Angreifer ein bestimmtes Paket senden, um ein bestimmtes Gerät oder eine bestimmte Anwendung dazu zu bringen, mit vertraulichen Informationen zu antworten. Dies könnte für mehrere böswillige Aktivitäten wie die Orchestrierung eines Man-in-the-Middle-Angriffs (MiTM) und die Übernahme von Netzwerksitzungen genutzt werden. Aktives Schnüffeln ist etwas schwieriger zu erkennen als passives Schnüffeln, da es darauf ausgelegt ist, sich als umgebender Netzwerkverkehr zu tarnen. Aktives Sniffing wird durch die absichtliche Eingabe von ARP-Paketen (Address Resolution Protocol) durchgeführt, um die CAM-Tabelle (Content Address Memory) des Switches zu überlasten. Dies führt dazu, dass legitimer Netzwerkverkehr zu verschiedenen Ports transportiert wird, die als Grundlage für Spoofing-Angriffe wie ARP-Spoofing, DHCP-Angriffe (Dynamic Host Configuration Protocol) und DNS-Poisoning (Domain Name System) dienen.

OSI-Modell

Das OSI-Modell (bekannt als Open Systems Interconnection) wird verwendet, um zu konzeptualisieren, wie unterschiedliche Komponenten eines Netzwerks miteinander kommunizieren. Das Modell wird als siebenschichtiges Modell dargestellt, das einen standardisierten Regelsatz dafür enthält, wie verschiedene Geräte und Programme über das Netzwerk miteinander kommunizieren können.



Das OSI-Modell kann in mehrere Schichten segmentiert werden: Anwendung, Präsentation, Sitzung, Transport, Netzwerk, Datenverbindung und physisch.

Physikalische Schicht
Dies beschreibt die physischen Eigenschaften des Netzwerks, das für die physische Verbindung zwischen Geräten wie Verkabelung, Anschlüssen und Signalisierung verantwortlich ist. In dieser Schicht werden Daten über Bits übertragen.

Datenübertragungsebene
In dieser Schicht werden Daten in Pakete formatiert und über das Netzwerk übertragen. Die Datenverbindungsschicht stellt außerdem sicher, dass Ihre Daten keine internen Fehler enthalten. Die Datenübertragung erfolgt mittels Frames .

Netzwerkschicht
Die Netzwerkschicht verwaltet, wie Pakete adressiert und über das Netzwerk gesendet werden, indem sie den optimalen Weg zum Senden des Pakets findet. In dieser Phase werden IP-Adressen an den Header des Pakets angehängt.

Transportschicht
Die Transportschicht ist der Übergang zwischen der Netzwerk- und der Sitzungsschicht. Diese Schicht verwendet Netzwerkprotokolle wie UDP und TCP, um zu bestimmen, wie Daten zwischen Anwendungen übertragen werden. Die in dieser Schicht transportierten Daten werden als Segment bezeichnet.

Sitzungsschicht
Diese Ebene definiert, wie Anwendungen Verbindungen untereinander herstellen und aufrechterhalten.

Präsentationsfolie
Die Präsentationsschicht wandelt die Daten aus Segmenten in ein besser lesbares Format um. Diese Schicht umfasst auch die Ver- und Entschlüsselung von Paketen.

Anwendungsschicht
Die Anwendungsschicht dient der Kommunikation mit Benutzern. Es definiert die Protokolle und Schnittstellen, die von Anwendungen zur Kommunikation mit dem Netzwerk verwendet werden können.

Aufschlüsselung der Paketinformationen

Im Netzwerk ist ein Paket ein kleiner Abschnitt einer größeren Nachricht. Jede Art von Daten, die über ein Netzwerk übertragen werden, wird in Pakete aufgeteilt. Sobald diese Pakete durch das Netzwerk geleitet werden, werden sie von dem Gerät, das sie empfängt, rekonstruiert.

Über ein Netzwerk gesendete Pakete enthalten in ihrer Struktur den Header, die Nutzlast und den Trailer. Ich werde das IPv4-Paket als Beispiel verwenden, um die Art der in einem Paket enthaltenen Informationen zu demonstrieren.

1. Paket-Header
Der Paket-Header ist der Anfangsteil eines Pakets. Es enthält Adressierungs- und andere Daten, die erforderlich sind, damit das Paket sein Ziel erreicht. Der IPv4-Header enthält 13 Felder…

- Version: Versionsnummer des verwendeten Internetprotokolls (z. B. IPv4)

- Internet-Header-Länge (IHL):
Länge des gesamten IP-Headers

- Explizite Staubenachrichtigung:
Informationen zu den unterwegs gesehenen Stauinformationen

- Gesamtlänge:
Länge des gesamten IP-Pakets (einschließlich Header und Body)

- Identifikation:
Wenn das IP-Paket fragmentiert ist, enthält jedes Paket eine entsprechende Identifikationsnummer, um das ursprüngliche IP-Paket zu identifizieren, zu dem es gehört

- Flags:
Angabe, ob das Paket groß genug ist, um fragmentiert zu werden

- Fragment-Offset:
Positionierung des Fragments im IP-Paket

- Time to Live (TTL):
Die Anzahl der Router, die das Paket noch passieren muss, um eine Schleife im Netzwerk zu vermeiden

- Protokoll:
die Netzwerkschicht auf dem Zielhost, zu dem das Paket gehört (d. h. TCP = 6, UDP = 17 und ICMP = 1)

- Header-Prüfsumme:
Prüfsummenwert des gesamten Headers, der zur Bestätigung verwendet wird, dass das Paket keine Fehler enthält

- Quelladresse: 32-Bit-Adresse des Absenders (Quelle) des Pakets

- Zieladresse:
32-Bit-Adresse des Empfängers (Ziels) des Pakets

- Optionen:
optionales Feld, das Informationen wie Aufzeichnungsroute, Zeitstempel usw. enthalten kann

2. Nutzlast
Die Nutzlast eines Pakets umfasst die tatsächlichen Daten, die das Paket an sein Ziel transportieren möchte. Im Fall des IPV4-Pakets wird die Nutzlast mit 0 Bit aufgefüllt, um sicherzustellen, dass das Paket innerhalb der 32-Bit-Beschränkung endet.

3. Anhänger
Manchmal können Pakete ein Ende ihres Pakets enthalten, das als Trailer bezeichnet wird. Obwohl die IPV4-Paketstruktur keinen Trailer enthält, enthalten Ethernet-Frames einen Trailer, der Informationen enthält, die Netzwerkadapter im Ethernet zur Verarbeitung des Frames benötigen.

Was ist Wireshark?

Wireshark ist ein weit verbreitetes und quelloffenes Netzwerkprotokoll- und Paketanalysetool. Damit können Sie Netzwerkpakete von Quellen wie WLAN (IEEE.802.11), Bluetooth, Ethernet, Token-Ringen usw. erfassen. Wireshark verfügt außerdem über eine Paketfilterfunktion, mit der Sie den Protokollstrom von Paketen filtern können, während diese auf Ihrem Bildschirm angezeigt werden .

Verwendung von Wireshark zur Paketanalyse

Die Wireshark-Oberfläche enthält verschiedene Bereiche zur Anzeige von Paketinformationen. Im Hauptfenster wird die Liste aller Pakete angezeigt, die durch das Netzwerk fließen. Wenn Sie ein einzelnes Paket auswählen, sollten am unteren Rand des Bildschirms zwei Bereiche mit spezifischeren Paketdaten angezeigt werden. Die Details für jede der Spaltenkategorien im Hauptbereich lauten wie folgt:

Nr.: Die Paketnummer in der Capture-Datei

Zeit: Die Zeit, zu der dieses Paket erfasst wurde, nachdem das Paket-Sniffing initiiert wurde

Quelle: IP-Adresse und Portnummer des sendenden Geräts

Ziel: IP-Adresse und Portnummer des empfangenden Geräts

Protokoll: der Pakettyp (z. B. TCP, UDP, HTTP usw.)

Info: Weitere Informationsinhalte zum Paket, die je nach erfasstem Pakettyp variieren

Dies sind die vorkonfigurierten Informationsspalten in Wireshark, aber es stehen noch viele weitere Spalten zur Verfügung, die im Tool angezeigt werden können, z. B. TTL, Prüfsumme usw., indem Sie die „Spalten“-Einstellungen auswählen.

Der Abschnitt „Paketdetails“ des Tools zeigt Ihnen interpretierbarere Informationen über das Paket an, die je nach Pakettyp variieren. Der untere Bereich, Paketbytes , zeigt den Paketinhalt im reinen Hexadezimalformat.

Wireshark Capture-Filter

Die Erfassungsfilter in Wireshark begrenzen die vom eingefügten Filter erfassten Pakete. Wenn Sie es vielleicht bemerkt haben, folgen die Wireshark-Erfassungsfilter demselben Format wie tcpdump , ein weiteres beliebtes Tool zur Netzwerkpaketerfassung. Die Syntax der Paketerfassung entspricht den Syntaxausdrücken des Berkeley Packet Filter (BPF). Zu den gängigen Capture-Filtern für Wireshark gehören…

Erfassen Sie nur den Datenverkehr von und zur IP-Adresse 172.18.5.4:

 host 172.18.5.4

Erfassen Sie den Datenverkehr zu oder von einer Reihe von IP-Adressen:

 net 192.168.0.0/24

ODER

 net 192.168.0.0 mask 255.255.255.0

Erfassen Sie den Datenverkehr von einer Reihe von IP-Adressen:

 src net 192.168.0.0/24

ODER

 src net 192.168.0.0 mask 255.255.255.0

Erfassen Sie den DNS-Verkehr (Port 53):

 port 53

Erfassung mit Ausnahme des gesamten ARP- und DNS-Verkehrs:

 port not 53 and not arp

Erfassen Sie nur IPv4-Pakete:

 ip

Erfassen Sie nur Ethernet-Pakete (EAPOL):

 ether proto 0x888e

Wireshark-Anzeigefilter

Mit der Anzeigefilterfunktion in Wireshark können Sie die Art der in der Liste der erfassten Pakete angezeigten Pakete eingrenzen. Zu den gängigen Beispielen für Anzeigefilter gehören:

Protokollbasierte Filter:

Sie können den Paketverkehr basierend auf dem Netzwerkprotokoll filtern

 http

Das obige Beispiel zeigt nur Pakete mit dem HTTP-Protokoll

Pakete nach Adresse filtern (d. h. IP-Adressfilterung):

Sie können Pakete über die Adresse des Absenders oder des Empfängers filtern

 ip.src == xxxx

Das Obige zeigt den Datenverkehr, der von einer bestimmten IP-Adresse kommt

Portbasierte Filter:

Sie können den Paketverkehr basierend auf der verwendeten Portnummer filtern

 http

Das obige Beispiel zeigt nur TCP-Pakete mit Port 80

Zeitbasierte Filter:

Sie können Pakete nach dem Zeitpunkt ihrer Erfassung filtern

 frame.time >= "YYYY-MM-DD HH:MM:SS" && frame.time <= "YYYY-MM-DD HH:MM:SS

Das obige Beispiel zeigt nur Pakete innerhalb eines ausgewählten Zeitbereichs

Inhaltsbasierte Filter:

Sie können Pakete basierend auf dem Inhalt der Pakete filtern

 frame contains google

Das obige Beispiel zeigt Pakete, deren Inhalt das Schlüsselwort „google“ enthält.

Was ist Paketdissektion?

Während der Prozess der Paketanalyse verwendet wird, um einen allgemeinen Überblick über Netzwerkverkehrsmuster zu erhalten, beinhaltet die Paketzerlegung einen viel engeren Ansatz. Unter Paketzerlegung versteht man den Prozess der Zerlegung einzelner Pakete in ihre einzelnen Komponenten (z. B. Header, Nutzlastinhalte usw.), um wertvolle Erkenntnisse über Netzwerkprozesse oder das überwachte Gerät zu gewinnen. Zu den Anwendungen, für die Paketzerlegungen verwendet werden können, gehören Protokollanalyse und Forensik.

Paketzerlegung mit Wireshark

Glücklicherweise enthält Wireshark ein integriertes Toolset zur Durchführung einer gründlichen Paketzerlegung für jedes Paket, das über ein Netzwerk transportiert wird. Zu den Techniken zur Paketdissektion gehören…

Protokolldekodierung: Sie können die Protokolldetails für jedes Paket anzeigen, indem Sie die Layer-Details im Bereich „Paketdetails“ erweitern. Dies ist nützlich für die Dekodierung verschiedener Protokolle wie TCP, UDP, DNS usw

TCP-Streams: Wireshark enthält außerdem eine Funktion, die den TCP-Stream aller Pakete anzeigt, die über eine TCP-Verbindung fließen. Um diese Funktion zu verwenden, wählen Sie ein Paket aus, das zu einer TCP-Verbindung gehört, klicken Sie mit der rechten Maustaste auf das Paket und wählen Sie „Folgen > TCP-Stream“.

Farbcodierung: Sie können Pakete auch anhand bestimmter Kriterien wie Paketlänge oder Protokolltyp visualisieren. Um diese Funktion anzuzeigen, gehen Sie zu „Ansicht“ und klicken Sie auf „Farbregeln“.

Flussdiagramme: Wireshark verfügt über eine Funktion, die ein Flussdiagramm anzeigt, das die Zeit- und Sequenzdetails eines Pakets zwischen zwei Maschinen zeigt. Um ein Flussdiagramm zu konfigurieren, gehen Sie zu „Conservation Filter“ und wählen Sie die Option „TCP“. Dadurch wird ein Filter erstellt, der alle Pakete anzeigt, die zwischen zwei Maschinen übertragen werden. Wählen Sie dann „Statistik“ und „TCP-Stream-Diagramme“, um das Flussdiagramm zu erstellen

Paketzerlegung zur Protokollanalyse

Die Paketzerlegung kann angewendet werden, um zu analysieren, welche Arten von Netzwerkprotokollen verwendet werden und wie sie verwendet werden. Um die Protokollanalyse mit Wireshark auszuprobieren, erfassen Sie zunächst Pakete mit der von Ihnen ausgewählten Netzwerkschnittstelle. Wenn Pakete dann erfasst werden, sollten sie verschiedene Protokolle wie HTTP (Port 80), HTTPS (Port 443), SSH (Port 22) und SNTMP usw. übertragen. Lassen Sie uns HTTP für unser Paketzerlegungsbeispiel verwenden. Beginnen Sie mit der Auswahl eines Pakets, dem das HTTP-Protokoll zugewiesen ist, wie unten beschrieben, indem Sie es mit dem Schlüsselwort http filtern ...



Sobald das Paket ausgewählt ist, erweitern Sie das Menü Transmission Control Protocol (TCP), um die relevanten Informationen für das Paket anzuzeigen.



Sobald die Paketdetails erweitert sind, können Sie verschiedene Felder des Protokolls analysieren, wie z. B. die Quell- und Ziel-IP-Adressen, Quell- und Zielports, die verwendete HTTP-Methode (GET, POST, DELETE usw.) und den HTTP-Antwortcode.


Paketzerlegung für die Forensik

Die Paketzerlegung kann auch für die digitale Forensik verwendet werden, um Informationen hinter bestimmten Netzwerkvorfällen zu extrahieren. Stellen Sie sich beispielsweise eine Situation vor, in der ein Hacker vertrauliche Informationen über Ihr Netzwerk an einen Remote-Server sendet. Wir können Anzeigefilter in Wireshark verwenden, um den für den Computer des Hackers kommenden Datenverkehr mithilfe der IP-Adresse des Geräts des Hackers und der IP-Adresse des Remote-Servers zu isolieren. Anschließend können wir von Wireshark angebotene Paketzerlegungstools wie die Funktion „Follow TCP Stream“ verwenden, um den TCP-Datenstrom zwischen dem Hacker und dem Remote-Server zu rekonstruieren. Mithilfe dieser Informationen können Sie versteckte Informationen aufdecken, die der Hacker an den Remote-Server gesendet hat, beispielsweise die Übertragung schädlicher Dateien oder Bilder. Diese Anwendung der Paketzerlegung kann auch zur Analyse des Netzwerkverkehrs und zur Erkennung krimineller Aktivitäten eingesetzt werden.

Reverse Engineering von DJI-Drohnen

Reverse Engineering ist der Prozess der Dekonstruktion und Analyse eines Systems, um zu verstehen, wie es „unter der Haube“ funktioniert, und relevante Informationen daraus zu extrahieren. Dieser Prozess erfolgt oft durch einen iterativen Prozess, der bestimmte Aspekte eines Systems dekonstruiert, seine technischen Spezifikationen und seinen Code analysiert und spezifische Tests durchführt, um seine Ergebnisse zu untersuchen. Im Fall von UAV-Hacking können wir Reverse-Engineering-Prinzipien anwenden, um die Software und Firmware einer Drohne zu analysieren, Telemetrieinformationen zu extrahieren und auszunutzende Schwachstellen zu identifizieren. Für dieses Forschungsexperiment habe ich beschlossen, die DJI Mini 2 zurückzuentwickeln – eine kleine, kompakte Drohne für den Freizeitgebrauch, die von einem beliebten Drohnenunternehmen namens DJI entwickelt wurde.


Man-In-the-Middle-Konfiguration

Da passives Abhören kein rückentwickelbares Ergebnis liefert, habe ich stattdessen eine künstliche und abhörfreundliche Netzwerkkonfiguration verwendet, um die drahtlose Kommunikation zwischen der Drohne und dem Bediener inspizierbar und abhörbar zu machen, indem ich der folgenden Konfiguration gefolgt bin:

a) Drohne: Der Done initialisiert den Prozess, indem er einen Zugangspunkt startet, der für die direkte Kommunikation mit seinen Netzwerkkollegen verwendet wird

b) MITM AP: Wir richten ein zweites virtuelles Netzwerk ein, wobei sich unsere Maschine als AP für den mobilen Client ausgibt

c) MITM-Client: Der MITM-Client stellt eine direkte Verbindung mit der Drohne her und leitet die Netzwerke des MITM-AP an die Drohne weiter und umgekehrt

d) MITM-Maschine: Die MITM-Maschine ist das Gerät, das zum Abhören verwendet wird, indem die virtuellen MITM-APs über NAT (Network Address Translation) mit der internen Netzwerkkarte des MITM-Clients verbunden werden

e) Betreiber: Der Betreiber ist das mobile Gerät, auf dem die DJI-Anwendung ausgeführt wird und das über WLAN mit dem Drohnenvertreter (MITM-AP) verbunden ist.

Access Point-Konfiguration

Um den MITM AP zu konfigurieren, habe ich create_ap verwendet Befehl zum Erstellen eines virtuellen AP über die Befehlszeile auf meinem Computer.

 sudo create_ap wlan0 wlan0 Operator 12345678 -w 2 -c 2 -m nat --freq-band 2.4 --country US

Dieser Befehl wurde entwickelt, um die Anzahl der Störungen zwischen den Verbindungen zu beseitigen, indem er sich auf die 2,4-GHz-Frequenz konzentriert und die folgenden Parameter festlegt:

 -w 2
WPA2-PSK im CCMP-Verschlüsselungsmodus

 -c 2
Nutzung eines beliebigen und statischen unbelegten Kanals

 -m nat
NAT zur Verbindung zwischen virtuellem AP und physischer Netzwerkkarte

 --freq-band 2.4
Wählen Sie nur das 2,4-GHz-Band aus

 --country US
Setzen Sie den richtigen Ländercode ein, um den örtlichen Vorschriften zu entsprechen

Abhören der Interkommunikation

Zum Abhören habe ich das Befehlszeilentool verwendet, um die Leistung des MITM-Netzwerks zu optimieren. Mit tcpdump werden erfasste Netzwerkpakete in einer entsprechenden PCAP-Datei gespeichert, die später von einer Reihe von Netzwerkanalyseprogrammen analysiert werden kann. Außerdem habe ich zusätzliche Filter implementiert, um den Bereich der erfassten Ausgabe so zu reduzieren, dass sie nur noch aus relevanten Netzwerkpaketen zwischen der Drohne und der Maschine besteht.

 sudo tcpdump --interface=ap0 -n udp host 192.168.2.1 -w /tmp/dumps/capture.pcap

 -n
vermeidet DNS-Auflösungen

 udp
ignoriert alle TCP-Pakete

 host 192.168.2.1
Stellt sicher, dass die angezeigten Pakete mit Drohnen zu tun haben

Forschungsspezifikationen

Für die Durchführung digitaler forensischer Untersuchungen zum DJI Mini 2 habe ich versucht, das DJI Wi-Fi-Protokoll zurückzuentwickeln, indem ich die von der Drohne gesendeten Netzwerkpakete mithilfe von Wireshark analysiert habe. Um die genaue Protokollstruktur der von der Drohne übertragenen Pakete zu bestimmen, habe ich jedes einzelne Bit mithilfe einer bitgenauen Argumentation klassifiziert. Während des gesamten Prozesses habe ich festgestellt, dass die folgenden Filterprädikate in Wireshark am nützlichsten sind:

 !dns && !mdns && !icmp
Da für diesen Prozess nur Netzwerkpakete auf Anwendungsebene relevant sind, können wir die Protokolle DNS, Internet Control Message Protocol (ICMP) und Multicast DNS (MDNS) von unserer Suche ausschließen

 ip.src == 192.168.2.1
Die IP-Adresse 192.168.2.1 stellt die IP-Adresse der Drohne dar. Hier geben wir die Quelle und das Ziel an, die nach dieser IP gefiltert werden sollen.

 data.len == 1472
In diesem Beispiel sind nur Pakete mit einer Länge von 1472 Bytes in der Ergebnisansicht enthalten, in der Drohnenpakete mit genau dieser Nutzlastgröße angezeigt werden

 data.data[0] == 0x00
Dadurch wird der statische Hexadezimalwert mit dem Nutzlastinhalt des ursprünglichen Index verglichen. Dies ist nützlich, da sich die Paketinspektion während des Fluges auf die damit verbundenen Änderungen zwischen dem Protokoll und den Drohnensteuerungsanweisungen des Bedieners konzentriert

Paketinformationen

Bei den mit Wireshark erhaltenen Paketen habe ich mich auf die Nutzlast vom Index 0x2A bis zur Ethernet-Frame-Länge konzentriert. Obwohl das gesamte Paket Informationen enthält, reichen die Datenbytes von 0x2A bis zum Ende für Reverse Engineering-Zwecke aus. Als Referenz habe ich die Tabelle mit den Ethernet-OSI-Modellschichten unten beigefügt:

Nutzlastverschlüsselung

Obwohl der gesamte Kommunikationsstrom verschlüsselt ist, kann der entschlüsselte Datenstrom dennoch die Integrität der Verschlüsselung gefährden. Eine Methode zum Entschlüsseln von Informationen mit UAV-Systemen besteht darin, mehrere Nutzlasten nebeneinander zu vergleichen, um Muster zu identifizieren. Der Electronic Codebook Mode (ECB) erzeugt eine Folge deterministischer Daten, indem er auf jeden Klartextblock dieselbe pseudozufällige Permutation anwendet, um Repeater-Chiffretextblöcke zu erstellen. Wir können dies in unserem Reverse-Engineering-Prozess anwenden, um möglicherweise auf eine pseudozufällige Nutzlast oder zwei identische Nutzlasten innerhalb der UDP-Pakete zu stoßen. Obwohl ich keine identischen Nutzlasten finden konnte, gab es viele, die einander sehr ähnlich waren. Die Bilder unten zeigen beispielsweise zwei Pakete, bei denen sich nur 5 Bytes unterscheiden. Die beiden Nutzlasten sind sehr ähnlich und weisen sogar eine Erhöhung um eins auf, was auf einen unverschlüsselten Datenstrom hinweist.

Deduktives Denken

Der Hauptansatz, den ich beim Reverse Engineering des DJI Mini 2 verwendet habe, bestand darin, deduktive Überlegungen anzuwenden, um Nutzlasten auf der Grundlage korrelierender Bedienereingaben zu vergleichen. Mithilfe der direkten Drohnensteuerungsanweisungen (z. B. Landung, Bewegung, Start usw.) zwang ich den Bediener, das repräsentative Netzwerkpaket zu signalisieren. Die Steuerbefehle waren in der Lage, den Befehlstyp und den Nutzlastinhalt zu signalisieren. Anschließend wurden die Pakete unter Verwendung der oben genannten binären Vergleichstechnik miteinander verglichen, um die Befehlsstruktur und Parameterwerte offenzulegen. Die Paketanalyse ergab ein Protokoll mit hohem Datenverkehr, das hauptsächlich aus Drohnen-zu-Betreiber-Paketen bestand, die auf der Maximum Transmission Unit (MTU) beruhten.

Bitgenaues Denken

Um mehr Informationen über die in den übertragenen Paketen gespeicherten Daten zu erhalten, wurde für die Analyse der Bits innerhalb der 56-Byte-Nutzlasten eine Technik namens „Bit-präzises Denken“ verwendet, um spezifische Urteile über die Eigenschaften jedes Pakets zu fällen. Um den Prozess zu vereinfachen, wurden Cluster verwendet, um Nutzlasten so zu aggregieren, dass sie jeweils genau die gleiche Länge haben. Ich empfehle dringend, dieses Forschungspapier zu lesen, das sich eingehend mit der Bit-Präzisionsmethode für Reverse Engineering von Drohnen befasst, um mehr über diese Technik zu erfahren. Die folgende Tabelle zeigt einen allgemeinen Überblick über die Informationen, die mithilfe bitgenauer Argumentation extrahiert werden konnten.

DJI- Paketzerlegung mit Wireshark

Während dieses Forschungsprozesses habe ich gelernt, dass die Paketzerlegung zur Aufklärung und zur digitalen Forensik/Reverse Engineering völlig unterschiedliche Ansätze erfordert. Glücklicherweise erwies sich die Paketzerlegung mithilfe passiver Aufklärung und eines Netzwerkkommunikationszergliederers als sehr praktisch für die Analyse der Kommunikationsschnittstellen des DJI Mini 2.

Um mit der Paketzerlegung zu beginnen, habe ich die PCAP-Dateien heruntergeladen, die in diesem Repository von DJI-Kommunikationspaket-Dumps aufgeführt sind, das ein umfangreiches Protokoll der Kommunikationsdaten für alle Arten von DJI-Drohnen enthält, die Wireshark verwenden. Nachdem die PCAP-Dateien heruntergeladen waren, habe ich sie mit Wireshark und verschiedenen Dissektoren analysiert.

Informationsformate analysieren

Bevor wir uns eingehender mit dem spezifischen Paketzerlegungsprozess von DJI-Paketdumps befassen, ist es erwähnenswert, alles zu erwähnen

UART-Kommunikation: UART steht für Universal Asynchronous Receiver-Transmitter und ist ein häufig verwendetes serielles Protokoll zur Übertragung von Informationen zwischen elektronischen Geräten, die den asynchronen Fluss von Datenbits nacheinander über eine einzige Kommunikationsleitung nutzen

DUML-Streams: DUML steht für DJI Universal Markup Language und beschreibt das Close-Source-Protokoll für die DJI-Kommunikation. Es dient dazu, die internen Einstellungen des Geräts zu steuern oder Firmware-Updates zu initiieren

KML-Dateien: Auch bekannt als Keyhole Markup Language. Hierbei handelt es sich um XML-Dateien, die speziell für die Anzeige geografischer Daten in Kartensoftware verwendet werden. KML-Dateien enthalten Daten zu bestimmten Orten, Formen, Pfaden und anderen geografischen Merkmalen

DAT Flight Logs: DAT steht für Digitales Audioband. Sie beziehen sich auf die aufgezeichneten Flugdaten, die auf digitalen Audiobändern gespeichert sind. DAT-Dateien enthalten relevante Fluginformationen zur Analyse

Die PCAP-Datei im DJI-Paket-Dump-Repository enthält einen riesigen Dump von Kommunikationsprotokollen verschiedener DJI-Hardware. Diese Speicherung von Kommunikationsprotokollen ermöglicht es uns, die interne Kommunikation von Protokollen zu entschlüsseln und bietet gleichzeitig einen guten Anhaltspunkt für die Suche nach Hardwareproblemen innerhalb der Hardware. Beispielsweise enthält die erste Protokolldatei p3x_ofdm_to_center_run1 einen Kommunikations-Dump vom UART-Dump der DJI P3X-Empfängerplatine. Der Datendump umfasst eine bilaterale Kommunikation zwischen einer OFDM (Orthogonal Frequency Division Multiplexing) MCU (Microcontroller Unit) und einem FC (Flight Controller) auf der Drohne über ein Flachbandkabel und das Programm comm_serial2pcap.py .

Wireshark einrichten

Um eine grundlegende DJI-Kommunikationsanalyse einzurichten, habe ich die in den DJI-Firmware-Tools aufgeführten Kommunikationsanalysedateien verwendet. Die Tools zur Kommunikationsanalyse bieten die folgenden Funktionen:

- Anzeigefelder in erfassten DUML-Paketen von einer Drohnenquelle

- Felder in Paketen anzeigen, die im Binärflug gespeichert sind

- DAT-Dateien aufzeichnen

- Visualisieren Sie Flüge über die KML-Exportfunktion

Mit den Tools können Sie außerdem Protokollbefehle mithilfe der folgenden Optionen analysieren:

- DUML-Stream-basierte PCAP-Dateien

– PCAP-Dateien, die Dumps der USB/Ethernet-Kommunikation innerhalb eingebetteter DUML-Nutzlasten enthalten

- DAT Flight Log-basierte PCAP-Dateien

Um mit der Einrichtung Ihrer Umgebung zu beginnen, laden Sie alle unter diesem Link aufgeführten .lua-Dateien herunter. Öffnen Sie dann in Wireshark das Menü „Über Wireshark“ und gehen Sie zur Registerkarte „Ordner“ .

Klicken Sie dann auf den Dateipfadverweis für Personal Lua Plugins und fügen Sie den gesamten Dateiinhalt ein .

Sobald dies eingerichtet ist, aktualisieren Sie Wireshark mit dem Befehl Strg+Umschalt+L , um alle Tools zur Kommunikationsanalyse zu laden. Sobald es geladen ist, öffnen Sie es

 Preferences -> Protocols -> DLT_USER -> Edit
und nehmen Sie die Aufgaben gemäß dem Bild unten vor:

Nachdem die DLT-Tabelle initialisiert wurde, gehen Sie zu

 Preferences -> Appearance -> Columns
und passen Sie die Einstellungen an, um die gewünschten Protokollinformationen anzuzeigen. Das Folgende ist ein Beispiel für eine Möglichkeit, es zu konfigurieren:

Kommunikationssektion

Mit den Tools zur Kommunikationsanalyse können wir die folgenden Informationen aus den DJI-Kommunikationsprotokollen extrahieren:

Firmware-Dateistruktur: Der Dissektor kann Informationen über die Struktur von Firmware-Dateien wie Header, Abschnitte und Datenabschnitte abgrenzen

Firmware-Komponenten: Die Tools können auch einzelne Firmware-Komponenten wie den Bootloader, die Flugsteuerungs-Firmware, die Kamera-Firmware, die Gimbal-Firmware usw. extrahieren

Konfigurationsparameter: Es können auch Konfigurationsparameter eingesehen werden, die Einstellungsinformationen für Komponenten wie Kamera, Flugsteuerung und Sensoren liefern

Skripte: Codefragmente und ausführbare Binärdateien können ebenfalls in der Firmware-Datei aufgedeckt werden

Verschlüsselung: Je nach Situation kann der Dissektor auch Teile von Firmware-Dateien entschlüsseln und verschlüsseln und so Informationen über den Firmware-Verschlüsselungsprozess preisgeben

Dateisysteminhalte: Wenn eine Firmware-Datei ein Dateisystem enthält, können die Tools auch Inhalte innerhalb dieses Dateisystems extrahieren und analysieren

Tauchen Sie tiefer in die Wireshark-Dissektoren ein

In Wireshark ist ein Dissektor für die Interpretation und Dekodierung von Netzwerkprotokollen verantwortlich. Dissektoren sind nützlich, weil sie die erfassten Netzwerkpakete analysieren und daraus nützliche Informationen wie die Struktur, Felder und Codierungsregeln des Protokolls extrahieren und sie in einem für Menschen lesbaren Format anzeigen.

Mit Wireshark können Sie auch Ihre eigenen benutzerdefinierten Dissektoren mithilfe einer Programmiersprache namens Lua entwickeln. Obwohl Wireshark in C geschrieben wurde und Dissektoren für das Programm normalerweise in C geschrieben werden, ermöglicht Wireshark auch das Schreiben von Dissektoren in der Programmiersprache Lua, um die Lernkurve für Leute, die neu in der Entwicklung sind, weniger steil zu gestalten. Lua ist eine multiparadigmatische, prozedurale und funktionale Programmiersprache mit integrierten objektorientierten Funktionen. Obwohl die Wahl von Lua als Sprache für die Dissektorentwicklung Kompromisse bei der Geschwindigkeit mit sich bringt, ist sie aufgrund ihres geringen Gewichts und der einfachen Erlernbarkeit in den meisten Fällen günstiger.

Grundlegende Einführung in Lua

Wie ich bereits erwähnt habe, verfügt Lua über eine intuitive und einfache Code-Syntax, wobei Geschwindigkeit, Portabilität und Integration mit anderen Programmen im Auge behalten werden, sodass es leicht zu erlernen ist, ohne viel Funktionalität und Leistung zu opfern. Hier sind einige grundlegende Codeausschnitte, die die grundlegenden Funktionen der Sprache skizzieren:

Variablen und Operationen

 local a = 25
local b = 5
local result = a + b print (result) -- Output: 30

Bedingte Anweisungen

 local temperature = 15
local heatSetting = 0
if temperature < 0 then heatSetting = 3
elseif temperature <= 20 then heatSetting = 2
else heatSetting = 1 end
print (heatSetting) -- Output: 2

Schleifen

 -- While Loops
local i = 0
while i < 10 do 
 i = i + 1
end
print (i) -- Output: 10
 -- For Loops
local i = 0
-- i = first, last, delta
for i = 0 , 10 , 1 do
  print (i) end
print (i) -- Output: 10

Tische

 local new_table = {} -- Table value assignment
new_table[ 20 ] = 10
new_table[ "x" ] = "test"
ax = 10  

Funktionen

 function add (arg1, arg2)
    return arg1 + arg2 end
local added_number = add( 2 , 3 ) print (added_number) -- Output: 5

Zusammenfassende Anmerkungen zu Lua

Lua ist dynamisch typisiert

Der Geltungsbereich wird entweder als lokal oder global angegeben. Global ist die Standardeinstellung

Semikolons sind nicht erforderlich, wodurch Leerzeichen wertvoller werden

– bezeichnet einen Kommentar

i = i + 1 wird für die Variableninkrementierung verwendet

~= wird anstelle von != verwendet

Zu den Typen gehören: Zeichenfolge, Zahl, Boolescher Wert, Null, Funktion, Benutzerdaten, Thread und Tabelle

Null wird für einen Nichtwert verwendet

In Bedingungen: Null und Falsch sind falsch, der Rest ist wahr.

Luas einzige Datenstruktur ist eine Tabelle. Tabellen implementieren assoziative Arrays. Assoziative Arrays können sowohl durch Zahlen als auch durch andere Typen wie Zeichenfolgen indiziert werden. Sie sind dynamisch und werden oft als Objekte bezeichnet.

Dissektor mit Wireshark einrichten

Klicken Sie auf, um die Dissektorentwicklung mit Lua-Skripten in Wireshark einzurichten

 Help -> About Wireshark -> Folders
. Klicken Sie dort entweder auf die Ordnerreferenz „Personal Lua Plugins“ oder „Global Lua Plugins“. Der Pfad sollte etwa wie C:\Program Files\Wireshark\plugins\2.4.2 unter Windows aussehen . Um einen Dissektor zu erstellen, initialisieren Sie eine Datei in diesem Verzeichnis wie folgt
 example.lua
. Das Skript wird automatisch angewendet, sobald Wireshark neu geladen wird. Sie können Wireshark neu laden, indem Sie entweder die Anwendung neu starten oder alle Lua-Skripte mit Strg+Umschalt+L neu laden .

Einrichten eines Protokolls

Nachdem Sie nun alles eingerichtet haben, werde ich Sie durch ein rudimentäres Dissektorskript führen, das Informationen zu einem benutzerdefinierten Protokoll extrahiert und anzeigt.

 -- Create a new protocol for our custom protocol
local custom_protocol = Proto( "CustomProtocol" , "Custom Protocol" ) -- Define the fields of our custom protocol
local field1 = ProtoField.uint8( "custom_protocol.field1" , "Field 1" , base.DEC) local field2 = ProtoField. string ( "custom_protocol.field2" , "Field 2" ) -- Register the fields to the custom protocol
custom_protocol.fields = { field1, field2 } -- Create a function to dissect the packets of our custom protocol
function custom_protocol.dissector (buffer, pinfo, tree)
  -- Create a subtree for our custom protocol in the Wireshark GUI
  local subtree = tree:add(custom_protocol, buffer(), "Custom Protocol Data" )  -- Extract and display the values of Field 1 and Field 2
  local field1_value = buffer( 0 , 1 ):uint() subtree:add(field1, buffer( 0 , 1 )):append_text( " (Value: " .. field1_value .. ")" )  local field2_value = buffer( 1 , 5 ): string () subtree:add(field2, buffer( 1 , 5 )):append_text( " (Value: " .. field2_value .. ")" ) end
-- Register our custom protocol as a dissector in Wireshark
local udp_port = DissectorTable.get( "udp.port" ) udp_port:add( 12345 , custom_protocol)

– Der Code beginnt mit der Initialisierung eines benutzerdefinierten Protokolls mithilfe des aufgerufenen Proto-Objekts

 CustomProtocol


Eine Feldtabelle für das Protokoll wird initialisiert und enthält zwei benutzerdefinierte Felder:
 field1
Und
 field2


Die Dissektorfunktion für das Protokoll wird initialisiert, die einmal für jedes Paket aufgerufen wird, das den Typ des benutzerdefinierten Protokolls hat. Die Funktion übernimmt die Parameter
 buffer
,
 pinfo
, Und
 tree
. buffer enthält den Puffer und das Tvb-Objekt des Pakets, pinfo enthält Spalten der Paketliste und tree ist die Baumwurzel

– Innerhalb der Dissektorfunktion erstellen wir einen Unterbaum im Abschnitt „Wireshark-Paketdetails“, der unser benutzerdefiniertes Protokoll als Feld zeigt

- Im Abschnitt „Baumansicht“ zeigen wir die Paketinformationen für jedes der entsprechenden Felder innerhalb des benutzerdefinierten Protokolls an

- Zuletzt weisen wir einem Port ein Protokoll zu. In diesem Fall lautet der verwendete Port

 12345
für UDP

Abschluss

Insgesamt konnten wir durch den Einsatz von Wireshark in Verbindung mit einigen DJI-basierten Kommunikations-Dissektoren sensible Informationen offenlegen, die von DJI-Drohnen über ihre Kommunikationsprotokolle übertragen wurden. Ich hoffe, dass dieser skizzierte umfassende Rechercheprozess einige Reverse-Engineering-Techniken aufgezeigt hat, die Sie während Ihres Cybersicherheitsprozesses anwenden können, um möglicherweise Schwachstellen in bestehenden Systemen zu finden. Darüber hinaus hoffe ich, dass dieser Bericht bewiesen hat, dass Drohnen-Hacking zwar etwas mühsam, aber nicht unmöglich ist. Es ist wichtig, die Grenzen dessen, was derzeit über ein System bekannt ist, immer wieder zu erweitern, um bestehende Mängel hervorzuheben, bevor sie von böswilligen Akteuren bemerkt werden. In diesem Fall haben wir herausgefunden, dass Drohnenprotokolle selbst für große, vertrauenswürdige Markenhersteller wie DJI immer noch anfällig für das Abfangen von Daten und Reverse Engineering sind. Wenn man dies berücksichtigt, können konstruktive Maßnahmen ergriffen werden, um diese bestehenden Schwachstellen zu mindern und die Sicherheit der Drohnen-Kommunikationskanäle zu festigen.

Auch hier veröffentlicht.