
이종 IoT 프로토콜 모델링에 관한 연구 프로젝트
IoTMap은 하나 이상의 프로토콜을 동시에 사용하여 IoT 네트워크를 모델링하는 도구입니다. 이는 사물인터넷 보안에 관한 박사 학위 논문의 일부로 진행 중인 작업입니다. 이 저장소는 새로운 결과가 얻어질 때마다 정기적으로 업데이트됩니다. 현재 이 프로젝트는 BLE, ZigBee, OS4I의 세 가지 프로토콜을 지원합니다. 더 많은 프로토콜이 추가될 예정입니다.
requirements.txt 파일을 사용하여 패키지를 설치할 수 있습니다:
pip3 install -r requirements.txt
sudo apt-get install libgcrypt20-dev # (데비안 계열 배포판)
sudo pacman -S libgcrypt # (아치 리눅스 계열 배포판)
이 저장소를 클론하고 위에 설명된 모든 요구사항을 설치하세요:
# 모든 배포판
git clone https://github.com/AlgoSecure/iotmap.git
cd iotmap
sudo pip install -r requirements.txt
# 데비안 계열의 경우
sudo apt-get install libgcrypt20-dev
# 아치 리눅스 계열의 경우
sudo pacman -S libgcrypt
이제 Neo4J를 설치하겠습니다. 대부분의 배포판은 내장 패키지 관리자를 통해 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 및 neo4j입니다. Iotmap은 기본 사용자 이름을 사용하고 비밀번호로 iotmap을 사용합니다.
다른 자격 증명을 설정하려면 core/databaseController.py의 46번째 줄에 있는 값을 다음과 같이 업데이트해야 합니다:
model = Model("bolt:http://localhost:7474", "username", "password")
IoTMap 사용 방법에 대한 자세한 문서는 여기에서 확인할 수 있습니다.
프레임워크를 시작하세요:
python3 iotmap.py
IoTMap은 실행 전에 neo4j 데이터베이스를 시작하지만, 데이터베이스를 즉시 사용할 수 있는 것은 아닙니다. 때로는 10초의 대기 시간이 데이터베이스 사용 가능에 충분하지만, 그렇지 않은 경우 iotmap을 다시 실행해야 합니다.
IoTMap은 Database, Modelling, Sniffing의 3가지 모듈을 제공합니다. 스니핑 모듈은 진행 중이며 완전히 작동하지 않습니다. 모듈 간 전환을 위해 모듈 이름을 입력하면 됩니다.
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개의 그래프가 생성된 후, 결과는 http://localhost:7474에서 제공되는 Neo4J 웹 애플리케이션에서 볼 수 있습니다.
입력 상자에서 cypher 요청을 사용하여 웹 애플리케이션에서 직접 데이터베이스에 요청할 수도 있습니다.
