
Forschungsprojekt zur Modellierung heterogener IoT-Protokolle
IoTMap ist ein Werkzeug, das IoT-Netzwerke unter Verwendung eines oder mehrerer Protokolle gleichzeitig modelliert. Dies ist eine laufende Arbeit im Rahmen einer Doktorarbeit über die Sicherheit des Internets der Dinge. Dieses Repository wird regelmäßig aktualisiert, sobald neue Ergebnisse vorliegen. Derzeit unterstützt dieses Projekt 3 Protokolle: BLE, ZigBee und OS4I. Weitere folgen.
Sie können die requirements.txt-Datei verwenden, um die Pakete zu installieren:
pip3 install -r requirements.txt
sudo apt-get install libgcrypt20-dev # (Debian-basierte Distributionen)
sudo pacman -S libgcrypt # (Archlinux-basierte Distributionen)
Klonen Sie dieses Repository und installieren Sie alle oben beschriebenen Voraussetzungen:
# Für jede Distribution
git clone https://github.com/AlgoSecure/iotmap.git
cd iotmap
sudo pip install -r requirements.txt
# Falls Debian-basiert
sudo apt-get install libgcrypt20-dev
# Falls Archlinux-basiert
sudo pacman -S libgcrypt
Jetzt installieren wir Neo4J. Die meisten Distributionen liefern Neo4J über den integrierten Paketmanager aus. Es kann jedoch einfacher sein, es aus dem Tarball zu installieren und zu verwenden:
cd /path/to/iotmap
cd database
# Ersetzen Sie die Versionsnummer in der URL bei Bedarf durch die neueste
wget -O neo4j-community.tar "https://neo4j.com/artifact.php?name=neo4j-community-3.5.9-unix.tar.gz"
mkdir neo4j-community && tar xvf neo4j-community.tar -C neo4j-community --strip-components 1
Für den ersten Start des Projekts müssen Sie einen Benutzernamen und ein Passwort für die Datenbank festlegen. Starten Sie die Datenbank wie folgt:
cd database
./neo4j-community/bin/neo4j console
Neo4J wird gestartet und ist unter http://localhost:7474 erreichbar. Standard-Benutzername und -Passwort sind neo4j bzw. neo4j.
Iotmap verwendet den Standard-Benutzernamen und iotmap als Passwort.
Wenn Sie andere Anmeldeinformationen festlegen möchten, müssen Sie die Werte in core/databaseController.py in Zeile 46 wie folgt aktualisieren:
model = Model("bolt:http://localhost:7474", "username", "password")
Eine ausführlichere Dokumentation zur Verwendung von IoTMap mit einem Beispiel finden Sie hier
Starten Sie das Framework:
python3 iotmap.py
IoTMap startet die neo4j-Datenbank vor dem Ausführen, jedoch ist die Datenbank nicht sofort verfügbar. Manchmal reicht der 10-Sekunden-Sleep aus, damit die Datenbank verfügbar ist, manchmal nicht, und Sie müssen iotmap erneut ausführen.
IoTMap bietet 3 Module: Datenbank, Modellierung und Sniffing. Das Sniffing-Modul befindet sich in der Entwicklung und ist nicht vollständig betriebsbereit. Um zwischen den Modulen zu wechseln, geben Sie einfach den Namen des Moduls ein.
python3 iotmap.py
Starting the database
Database is available at http://localhost:7474/
IIIIIIIIII TTTTTTTTTTTTTTTTTTTTTTTMMMMMMMM MMMMMMMM
I::::::::I T:::::::::::::::::::::TM:::::::M M:::::::M
I::::::::I T:::::::::::::::::::::TM::::::::M M::::::::M
II::::::II T:::::TT:::::::TT:::::TM:::::::::M M:::::::::M
I::::I oooooooooooTTTTTT T:::::T TTTTTTM::::::::::M M::::::::::M aaaaaaaaaaaaa ppppp ppppppppp
I::::I oo:::::::::::oo T:::::T M:::::::::::M M:::::::::::M a::::::::::::a p::::ppp:::::::::p
I::::I o:::::::::::::::o T:::::T M:::::::M::::M M::::M:::::::M aaaaaaaaa:::::ap:::::::::::::::::p
I::::I o:::::ooooo:::::o T:::::T M::::::M M::::M M::::M M::::::M a::::app::::::ppppp::::::p
I::::I o::::o o::::o T:::::T M::::::M M::::M::::M M::::::M aaaaaaa:::::a p:::::p p:::::p
I::::I o::::o o::::o T:::::T M::::::M M:::::::M M::::::M aa::::::::::::a p:::::p p:::::p
I::::I o::::o o::::o T:::::T M::::::M M:::::M M::::::M a::::aaaa::::::a p:::::p p:::::p
I::::I o::::o o::::o T:::::T M::::::M MMMMM M::::::Ma::::a a:::::a p:::::p p::::::p
II::::::IIo:::::ooooo:::::o TT:::::::TT M::::::M M::::::Ma::::a a:::::a p:::::ppppp:::::::p
I::::::::Io:::::::::::::::o T:::::::::T M::::::M M::::::Ma:::::aaaa::::::a p::::::::::::::::p
I::::::::I oo:::::::::::oo T:::::::::T M::::::M M::::::M a::::::::::aa:::ap::::::::::::::pp
IIIIIIIIII ooooooooooo TTTTTTTTTTT MMMMMMMM MMMMMMMM aaaaaaaaaa aaaap::::::pppppppp
p:::::p
p:::::p
p:::::::p
p:::::::p
p:::::::p
ppppppppp
Version=0.1
IoTMap > help
Core commands
=============
Commands Description
------------------------------
database Use database mode.
sniffing Use sniffing mode.
exploit Use exploit mode.
IoTMap >
Jedes Modul und jede Funktion bietet ein Hilfemenü, das die verfügbaren Funktionen und deren Verwendung auflistet.
Dieses Modul verwaltet und interagiert mit der neo4j-Datenbank.
IoTMap > database
IoTMap database > help
Core commands
=============
Commands Description
------------------------------
database Use database mode.
sniffing Use sniffing mode.
exploit Use exploit mode.
Database commands
=================
Interact with the neo4j database.
List of available commands :
addNodes
clearDatabase
exportDB
getNodes
help
importDB
importPcaps
mergeNodes
removeNode
For more information about any commands hit :
<command name> -h
IoTMap database >
Um die Datenbank zu befüllen, können Sie eine vorhandene Datenbank oder Pcaps-Dateien importieren. ImportPcaps wandelt Pcaps in unser einheitliches Format um, das für die Erstellung des Modells verwendet wird. Dieses Modul verwendet je nach dem als Argument angegebenen Protokoll verschiedene Extraktoren, die Sie im Ordner extractors finden. Das Hauptprogramm wählt den entsprechenden Extraktor aus und führt dann den Paketgenerator (gen_packets.py) in einer Multithreading-Weise aus, um die Pcap im einheitlichen Format zu erzeugen.
IoTMap modelling > help
Core commands
=============
Commands Description
------------------------------
database Use database mode.
sniffing Use sniffing mode.
exploit Use exploit mode.
Modelling commands
==================
Map the network of IoT devices detected by sniffing.
List of available commands :
appGraph
compareTo
dlGraph
help
nwkGraph
option
run
set
transGraph
For more information about any commands hit :
<command name> -h
IoTMap modelling >
Dieses Programm startet die Neo4J-Datenbank, bevor es die Modellierung erstellt. Sobald die Datenbank läuft, beginnt die Modellierung. Sie beginnt mit der Analyse der als Eingabe gegebenen Pcap, um Knoten zu extrahieren und zu erstellen, dann Kanten, die Knoten verbinden. Nachdem die 4 Graphen erstellt wurden, kann das Ergebnis in der von Neo4J bereitgestellten Webanwendung unter http://localhost:7474/ eingesehen werden.
Sie können die Datenbank auch direkt über die Webanwendung abfragen, indem Sie Cypher-Abfragen in das Eingabefeld eingeben.
