
Dieses Projekt soll eine Reihe von Werkzeugen bereitstellen, um LoRaWAN-Pakete zu erstellen, zu parsen, zu senden, zu analysieren und zu knacken, um die Sicherheit einer LoRaWAN-Infrastruktur zu auditieren oder einem Pentest zu unterziehen.
IoT-Bereitstellungen wachsen stetig und ein Teil dieses signifikanten Wachstums besteht aus Millionen von LPWAN-Sensoren (Low-Power Wide-Area Network), die in Hunderten von Städten (Smart Cities) auf der ganzen Welt sowie in der Industrie und in Privathaushalten eingesetzt werden. Eine der am häufigsten verwendeten LPWAN-Technologien ist LoRa, für die LoRaWAN der Netzwerkstandard (MAC-Schicht) ist. LoRaWAN ist ein sicheres Protokoll mit integrierter Verschlüsselung, aber Implementierungsprobleme und Schwachstellen beeinträchtigen die Sicherheit der meisten aktuellen Bereitstellungen.
Dieses Projekt soll eine Reihe von Werkzeugen bereitstellen, um einen Satz von LoRaWAN-Paketen zu erstellen, zu parsen, zu senden, zu analysieren und zu knacken, um die Sicherheit einer LoRaWAN-Infrastruktur zu auditieren oder zu pentesten.
Im Folgenden die Struktur dieses Repositorys:
|-- tools
|-- UdpSender.py
|-- UdpProxy.py
|-- TcpProxy.py
|-- lorawan
|-- BruteForcer.py
|-- MicGenerator.py
|-- PacketCrafter.py
|-- PacketParser.py
|-- SessionKeysGenerator.py
|-- Loracrack (https://github.com/matiassequeira/Loracrack/tree/master)
|-- utils
|-- DevAddrChanger.py
|-- Fuzzer.py
|-- FileLogger.py
|-- auditing
|-- datacollectors
|-- MqttCollector.py
|-- UdpForwarderProxy.py
|-- analyzers
|-- LafProcessData.py
|-- bruteForcer
|-- LafBruteforcer.py
|-- keys
|-- dataanalysis
|-- LafPacketAnalysis.py
|-- printer
|-- LafPrinter.py
|-- db
|-- __init__.py
|-- Models.py
|-- Service.py
|-- lorawanwrapper
|-- LorawanWrapper.py
|-- utils
|-- jsonUnmarshaler.go
|-- lorawanWrapper.go
|-- micGenerator.go
|-- sessionKeysGenerator.go
|-- scripts
|-- gateway_channel_changer
|-- LoRa-GW-Installer.sh
|-- Continuous-Channel-Switch.sh
|-- LoRa-GW-Channel-Setup.sh
Wir bieten verschiedene Optionen, um Ihr LoRaWAN Auditing Framework zum Laufen zu bringen:
tools/ zu verwenden, um Probleme mit dem Docker-Port-Mapping zu vermeiden.localhost eine Verbindung zu Postgres herzustellen. Siehe Anweisungen unten zur Einrichtung von Docker.Diese Anweisungen verschaffen Ihnen eine Kopie des Projekts und seiner Abhängigkeiten auf Ihrem lokalen Rechner. Die folgenden Befehle gelten für eine Debian-basierte Umgebung:
Klonen Sie dieses Repository: git clone --recurse-submodules https://github.com/IOActive/laf.git
Installieren Sie python3:
sudo apt-get updatesudo apt-get install python3.6Laden Sie die Python-Abhängigkeiten herunter und installieren Sie sie:
sudo pip3 install paho-mqtt && sudo pip3 install sqlalchemy && sudo pip3 install psycopg2-binary &&sudo pip3 install python-dateutilSetzen Sie PYTHONPATH und ENVIRONMENT
cd laf && export PYTHONPATH=$(pwd) && export ENVIRONMENT='DEV'Installieren und richten Sie Golang ein:
cd ~/Downloadssudo tar -C /usr/local -xvzf YOUR_GOLANG_FILEexport PATH=$PATH:/usr/local/go/binexport GOPATH="$HOME/go"Kompilieren Sie die Go-Bibliothek:
cd laf/lorawanwrapper/utilsgo build -o lorawanWrapper.so -buildmode=c-shared jsonUnmarshaler.go lorawanWrapper.go micGenerator.go sessionKeysGenerator.go hashGenerator.goJe nachdem, welche Datenbank Sie verwenden möchten:
a. PostgreSQL: Befolgen Sie die Anweisungen unter 'LAF mit Docker installieren' bis zum 3. Schritt.
b. SQLite:
cd laf/auditing/db__init__.py mit Ihrem bevorzugten Texteditor und kommentieren Sie die Zeilen für Postgres aus (DB-Verbindung und Umgebungsvariablen) und entfernen Sie den Kommentar der Zeile für SQLite.Und das war's!
Dieser Ansatz vermeidet die manuelle Installation von Abhängigkeiten und startet eine PostgreSQL-Datenbank, in der die Werkzeuge Pakete und Daten speichern. Container:
Schritte:
git clone https://github.com/IOActive/laf.gitcd laf/docker-compose up --builddocker exec -ti laf_tools_1 /bin/bashSie können Daten in der Datenbank über pgAdmin überprüfen:
Zuerst auf pgAdmin zugreifen:
Dann müssen Sie den Server hinzufügen:
Hier finden Sie eine Beschreibung der Verzeichnisse und der darin enthaltenen Werkzeuge / Funktionen.
Der Hauptzweck der in diesem Verzeichnis bereitgestellten Werkzeuge besteht darin, die Durchführung eines Penetrationstests einer LoRaWAN-Infrastruktur zu erleichtern.
Dieses Werkzeug ist dazu gedacht, Uplink-Pakete (an den Netzwerkserver oder Gateway-Bridge, je nach Infrastruktur) oder Downlink-Pakete (an den Packet-Forwarder) zu senden. Optional können Pakete gefuzzt und eine gültige MIC berechnet werden.
Optionale Argumente: