
IoTMapは、1つまたは複数のプロトコルを同時に使用してIoTネットワークをモデル化するツールです。これは進行中の研究であり、モノのインターネットセキュリティに関する博士論文の一部です。このリポジトリは新しい結果が得られるたびに定期的に更新されます。現在、このプロジェクトはBLE、ZigBee、OS4Iの3つのプロトコルをサポートしています。さらに追加予定です。
requirements.txtファイルを使用してパッケージをインストールできます:
pip3 install -r requirements.txt
sudo apt-get install libgcrypt20-dev # (debian-based distribs)
sudo pacman -S libgcrypt # (archlinux-based distribs)
このリポジトリをクローンし、上記のすべての要件をインストールします:
# For any distrib
git clone https://github.com/AlgoSecure/iotmap.git
cd iotmap
sudo pip install -r requirements.txt
# If debian-based
sudo apt-get install libgcrypt20-dev
# If archlinux-based
sudo pacman -S libgcrypt
次にNeo4Jをインストールします。ほとんどのディストリビューションには、組み込みのパッケージマネージャを介してNeo4Jが含まれています。ただし、tarballからインストールして使用する方が簡単な場合があります:
cd /path/to/iotmap
cd database
# Replace the version number with the latest in the URL if necessary
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
プロジェクトの初回実行時には、データベースのユーザー名とパスワードを定義する必要があります。次のコマンドでデータベースを起動します:
cd database
./neo4j-community/bin/neo4j console
Neo4Jが起動し、http://localhost:7474 でアクセスできるようになります。デフォルトのユーザー名とパスワードはそれぞれ neo4j と neo4j です。Iotmapはデフォルトのユーザー名とパスワード iotmap を使用します。
別の認証情報を設定したい場合は、core/databaseController.pyの46行目の値を次のように更新する必要があります:
model = Model("bolt:http://localhost:7474", "username", "password")
IoTMapの使用方法の詳細なドキュメントはこちらにあります
フレームワークを起動します:
python3 iotmap.py
IoTMapは実行前にneo4jデータベースを起動しますが、データベースはすぐには利用可能になりません。10秒の待機でデータベースが利用可能になる場合もありますが、そうでない場合はiotmapを再実行する必要があります。
IoTMapは3つのモジュールを提供します:Database、Modelling、Sniffing。スニッフィングモジュールは開発中であり、完全には動作しません。モジュールを切り替えるには、モジュールの名前を入力します。
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 >
各モジュールと機能には、利用可能な機能とその使用方法を一覧表示するヘルプメニューがあります。
このモジュールはneo4jデータベースを管理し、対話します。
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 >
データベースを構築するには、既存のデータベースまたはPcapファイルをインポートできます。ImportPcapsはPcapsをモデリング生成に使用する統一形式に変換します。このモジュールは、引数で指定されたプロトコルに応じた異なる抽出器を使用します。これらはextractorsフォルダにあります。メインプログラムは適切な抽出器を選択し、パケットジェネレータ(gen_packets.py)をマルチスレッドで実行して、統一形式のpcapを生成します。
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 >
このプログラムは、モデリングを作成する前にNeo4Jデータベースを起動します。データベースが起動すると、モデリングが開始されます。入力として与えられたpcapの分析から始まり、ノードを抽出して作成し、次にノードをリンクするエッジを作成します。4つのグラフが作成された後、結果はNeo4Jが提供するWebアプリケーション(http://localhost:7474/)で表示できます。
入力ボックスでCypherクエリを使用して、Webアプリケーションから直接データベースに問い合わせることもできます。
