IoTMap 是一个使用一个或多个协议同时建模物联网网络的工具。 这是一项正在进行的工作,作为物联网安全博士论文的一部分。 此存储库定期更新,随着获得新结果。 该项目目前支持3种协议:BLE、ZigBee 和 OS4I。更多协议即将推出。
您可以使用 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 and 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 >
要填充数据库,您可以导入现有数据库或 Pcaps 文件。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/ 查看。
您还可以直接在 Web 应用程序的输入框中使用 Cypher 查询来查询数据库。
