首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >IoTMap:一款支持多协议的物联网网络模型构建工具

IoTMap:一款支持多协议的物联网网络模型构建工具

作者头像
FB客服
发布2020-11-06 11:10:50
发布2020-11-06 11:10:50
9040
举报
文章被收录于专栏:FreeBufFreeBuf

IoTMap

IoTMap是一款支持多协议的物联网网络模型构建工具,该工具可以同时使用一个或多个协议来对物联网IoT网络进行模型构建。该项目目前仍处于开发阶段,主要针对的是物联网设备安全。这个项目目前会定期更新,当前版本的IoTMap支持三个协议,即BLE、ZigBee和OS4I,并且将来还会支持更多协议。

工具要求

Python 3依赖:

代码语言:javascript
复制
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文件来安装依赖包:

代码语言:javascript
复制
pip3 install -r requirements.txt

OS库

除了上述依赖组件之外,我们还需要安装libgcrypt20-dev(用于网络嗅探),这里可以使用下列命令,具体取决于你所使用的操作系统:

代码语言:javascript
复制
sudo apt-get install libgcrypt20-dev # (debian-based distribs)

sudo pacman -S libgcrypt             # (archlinux-based distribs)

工具安装

广大研究人员可以使用下列命令将项目源码克隆至本地,并安装上述所有的依赖组件:

代码语言:javascript
复制
# 针对任意系统的发布版本呢

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来安装和使用该工具:

代码语言:javascript
复制
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

首次运行

如果你是第一次运行该工具的话,你还需要定义一个数据库的用户名和密码,你可以使用下列命令开启数据库:

代码语言:javascript
复制
cd database

./neo4j-community/bin/neo4j console

此时,Neo4J将会运行,并可以通过http://localhost:7474来访问。默认的用户名和密码均为neo4j。IoTMap使用的是默认用户名和密码(iotmap)。

如果你想要设置不同的凭证,你则需要更新core/databaseController.py文件中第46行的参数值:

代码语言:javascript
复制
model = Model("bolt:http://localhost:7474", "username", "password")

工具使用

我们可以使用下列命令来运行和开启该框架:

代码语言:javascript
复制
python3 iotmap.py

IoTMap将会在运行之前开启neo4j数据库,不过数据库并非立即可用,因为数据库需要大约10秒的初始化时间。

IoTMap提供了三个模块,即数据库模块(Datebase)、模型模块(Modelling)和嗅探模块(Sniffing)。Sniffing模块目前仍处于开发阶段,可能某些选项还不可用。如需切换模块,可以直接输入模块名即可:

代码语言:javascript
复制
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数据库进行交互和管理:

代码语言:javascript
复制
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)

代码语言:javascript
复制
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/来查看结果了。

工具运行截图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IoTMap
  • 工具要求
    • Python 3依赖:
    • OS库
  • 工具安装
  • 首次运行
  • 工具使用
  • 数据库模块(Datebase)
  • 模型模块(Modelling)
  • 工具运行截图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档