IoTMap
IoTMap是一款支援多協定的物聯網網絡模型建構工具,該工具可以同時使用一個或多個協定來對物聯網IoT網絡進行模型建構。該項目目前仍處于開發階段,主要針對的是物聯網裝置安全。這個項目目前會定期更新,目前版本的IoTMap支援三個協定,即BLE、ZigBee和OS4I,并且将來還會支援更多協定。
工具要求
Python 3依賴:
1、Python > 3.5
2、Scapy(可以通過requirements檔案進行安裝,但建議使用最新版本源碼進行項目建構)
3、neo4j-1.7.6
4、docopt-0.6.2
5、prompt-toolkit-3.0.5
6、terminaltables-3.1.0
7、pycryptodomex-3.9.7
複制
廣大研究人員可以使用下列指令和requirements.txt檔案來安裝依賴包:
pip3 install -r requirements.txt
複制
OS庫
除了上述依賴元件之外,我們還需要安裝libgcrypt20-dev(用于網絡嗅探),這裡可以使用下列指令,具體取決于你所使用的作業系統:
sudo apt-get install libgcrypt20-dev # (debian-based distribs)
sudo pacman -S libgcrypt # (archlinux-based distribs)
複制
工具安裝
廣大研究人員可以使用下列指令将項目源碼克隆至本地,并安裝上述所有的依賴元件:
# 針對任意系統的釋出版本呢
git clone https://github.com/AlgoSecure/iotmap.git
cd iotmap
sudo pip install -r requirements.txt
# 基于Debian的系統
sudo apt-get install libgcrypt20-dev
# 基于ArchLinux的系統
sudo pacman -S libgcrypt
複制
接下來,我們還需要安裝Neo4J,大多數的Linux發行版系統都可以通過内置的包管理器來安裝Neo4J。當然了,我們也可以通過tarball來安裝和使用該工具:
cd /path/to/iotmap
cd database
# 如果有必要的話,可以在URL中替換最新版本的版本号參數
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。IoTMap使用的是預設使用者名和密碼(iotmap)。
如果你想要設定不同的憑證,你則需要更新core/databaseController.py檔案中第46行的參數值:
model = Model("bolt:http://localhost:7474", "username", "password")
複制
工具使用
我們可以使用下列指令來運作和開啟該架構:
python3 iotmap.py
複制
IoTMap将會在運作之前開啟neo4j資料庫,不過資料庫并非立即可用,因為資料庫需要大約10秒的初始化時間。
IoTMap提供了三個子產品,即資料庫子產品(Datebase)、模型子產品(Modelling)和嗅探子產品(Sniffing)。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 >
複制
這裡的每一個子產品和函數功能都提供了一個幫助菜單,以幫助廣大研究人員了解工具的使用方式。
資料庫子產品(Datebase)
這個子產品負責跟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指令可以将Pcap檔案轉換成我們用于生成模型時所需的統一格式。這個子產品可以根據給定的協定來使用不同的提取器,IoTMap的主程式可以選擇相應的提取器,并以多線程形式運作資料包生成器(gen_packets.py)來生成統一格式的pcap檔案。
模型子產品(Modelling)
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檔案,然後提取并建立節點,連接配接節點的邊則為連結節點。模型建立成功之後,我們就可以通過通路http://localhost:7474/來檢視結果了。