天天看點

IoTMap:一款支援多協定的物聯網網絡模型建構工具

IoTMap:一款支援多協定的物聯網網絡模型建構工具

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/來檢視結果了。

工具運作截圖

IoTMap:一款支援多協定的物聯網網絡模型建構工具
IoTMap:一款支援多協定的物聯網網絡模型建構工具