
Progetto di ricerca sulla modellazione di protocolli IoT eterogenei
IoTMap è uno strumento che modella reti IoT utilizzando uno o più protocolli simultaneamente. Questo è un lavoro in corso, parte di una tesi di dottorato sulla sicurezza dell'Internet delle Cose. Questo repository viene aggiornato regolarmente man mano che si ottengono nuovi risultati. Questo progetto supporta al momento 3 protocolli: BLE, ZigBee e OS4I. Altri sono in arrivo.
Puoi utilizzare il file requirements.txt per installare i pacchetti:
pip3 install -r requirements.txt
sudo apt-get install libgcrypt20-dev # (distribuzioni basate su debian)
sudo pacman -S libgcrypt # (distribuzioni basate su archlinux)
Clona questo repository e installa tutti i requisiti descritti sopra:
# Per qualsiasi distribuzione
git clone https://github.com/AlgoSecure/iotmap.git
cd iotmap
sudo pip install -r requirements.txt
# Se basato su debian
sudo apt-get install libgcrypt20-dev
# Se basato su archlinux
sudo pacman -S libgcrypt
Ora installeremo Neo4J. La maggior parte delle distribuzioni include Neo4J tramite il gestore pacchetti integrato. Tuttavia, potrebbe essere più semplice installarlo e utilizzarlo dal tarball:
cd /path/to/iotmap
cd database
# Sostituisci il numero di versione con l'ultimo nell'URL se necessario
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
Per la prima esecuzione del progetto, devi definire un nome utente e una password per il database. Avvia il database con il seguente comando:
cd database
./neo4j-community/bin/neo4j console
Neo4J si avvierà e sarà accessibile su http://localhost:7474. Il nome utente e la password predefiniti sono rispettivamente neo4j e neo4j.
Iotmap utilizza il nome utente predefinito e iotmap come password.
Se desideri impostare credenziali diverse, devi aggiornare i valori in core/databaseController.py alla riga 46 come segue:
model = Model("bolt:http://localhost:7474", "username", "password")
Una documentazione più dettagliata su come utilizzare IoTMap con un esempio è disponibile qui
Avvia il framework:
python3 iotmap.py
IoTMap avvierà il database neo4j prima di eseguire, tuttavia il database non è immediatamente disponibile. A volte il timeout di 10 secondi è sufficiente perché il database sia disponibile, a volte no e devi rieseguire iotmap.
IoTMap fornisce 3 moduli: Database, Modellazione e Sniffing. Il modulo di sniffing è in fase di sviluppo e non è completamente operativo. Per passare da un modulo all'altro, digita semplicemente il nome del modulo.
python3 iotmap.py
Avvio del database
Il database è disponibile su 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
Versione=0.1
IoTMap > help
Comandi principali
==================
Comandi Descrizione
------------------------------
database Usa la modalità database.
sniffing Usa la modalità sniffing.
exploit Usa la modalità exploit.
IoTMap >
Ogni modulo e funzione fornisce un menu di aiuto per elencare le funzioni disponibili e come utilizzarle.
Questo modulo gestisce e interagisce con il database neo4j.
IoTMap > database
IoTMap database > help
Comandi principali
==================
Comandi Descrizione
------------------------------
database Usa la modalità database.
sniffing Usa la modalità sniffing.
exploit Usa la modalità exploit.
Comandi del database
====================
Interagisci con il database neo4j.
Elenco dei comandi disponibili:
addNodes
clearDatabase
exportDB
getNodes
help
importDB
importPcaps
mergeNodes
removeNode
Per maggiori informazioni su qualsiasi comando digita:
<nome comando> -h
IoTMap database >
Per popolare il database puoi importare un database esistente o file Pcaps. ImportPcaps converte i Pcap nel nostro formato unificato utilizzato per generare la modellazione. Questo modulo utilizza diversi estrattori in base al protocollo fornito come argomento, che puoi trovare nella cartella extractors. Il programma principale sceglie l'estrattore appropriato, quindi esegue il generatore di pacchetti (gen_packets.py) in modo multithread per generare il pcap con il formato unificato.
IoTMap modellazione > help
Comandi principali
==================
Comandi Descrizione
------------------------------
database Usa la modalità database.
sniffing Usa la modalità sniffing.
exploit Usa la modalità exploit.
Comandi di modellazione
=======================
Mappa la rete dei dispositivi IoT rilevati tramite sniffing.
Elenco dei comandi disponibili:
appGraph
compareTo
dlGraph
help
nwkGraph
option
run
set
transGraph
Per maggiori informazioni su qualsiasi comando digita:
<nome comando> -h