针对IoT和OT协议的RiotPot蜜罐搭建

RloTPot是一个用Golang编写的混合交互蜜罐,专注于模拟IoT和OT协议,同时支持其他服务。它通过代理连接管理不同服务,包括Echo、SSH、Telnet、HTTP、Modbus、MQTT和CoAP服务。RloTPot提供了一个RESTAPI和Web应用程序进行管理,并允许通过Docker进行部署。用户可以选择下载发行版、自行构建或使用Docker容器来运行RloTPot。
摘要由CSDN通过智能技术生成

(说明:本文搬运自Git-Hub:https://github.com/aau-network-security/riotpot,仅作为自己学习材料,本人是网络安全菜鸟,欢迎交流!)

1、摘要:

RloTPot是一个混合交互蜜罐,主要关注模拟loT和OT协议,不过,它也能够模拟其他服务。本质上,RloTPot充当了系统中其他蜜罐的代理服务。因此,您可以在RloTPot的同时运行任何蜜罐和其他服务。此外,还有一个Ul web应用程序,您可以使用它来管理路由。

这个蜜罐提供了多种低交互的服务。由于这些服务是以插件的形式编写的,它们只在Linux上受支持;但是,你可以在没有它们的情况下启动RloTPot。列表如下表所示默认情况下包含在RloTPot中的服务,它们的内部端口和代理端口。

ServiceInternalProxy Port
Echo200077
SSH2002255
Telnet2002323
HTTP2808080
Modbus20502502
MQTT218861883
CoAP256835683

2、蜜罐结构:

RloTPot架构基于到内部和周围(或外部)服务(例如,蜜罐、全服务、容器、远程主机等)的代理连接。为此,蜜罐管理许多用户定义的代理,这些代理在服务和RloTPot之间中继连接。这样,RloTPot可以决定如何以及在哪里路由来袭的攻击。用于确定如何处理传入攻击的逻辑以中间件的形式实现。为了管理服务、中间件和代理,RloTPot附带了一个REST API 和一个即时可用的webapp UI。Ul可以通过浏览器访问。localhost:2022,你可以在localhost:2022/ API /swagger中修改API端点,显示一个swagger接口。

localhost:2022,你可以在

localhost:2022/ API /swagger中修改API端点,显示一个swagger接口。

图1显示了RloTPot体系结构,包括构成RloTPot的两个主要应用程序(RloTPot本身和RloTPot UI)及其组件,以及包含外部(或相邻)服务的部分。

图1 RloTPot体系结构,主要包括应用程序、外部服务和web应用程序的Ul来管理RIoTPot实例

RloTPot是用Golang编写的。每个RloTPot实例根据需要公开已注册的代理(基于它们的端口)。要为代理服务,它必须有一个绑定的服务,并且代理端口必须可用(目前RloTPot不接受在同一个端口上运行多个服务)。当一个代理被绑定并被服务时,攻击者将能够在该端口上向RloTPot发送消息,依靠消息发送到绑定的服务并返回攻击者[6]。为了方便访问,可以从RloTPot Ul web应用程序管理多个RloTPot实例。

除了管理在每个实例中注册的代理外,Ul还允许您创建、使用和编辑配置文件。每个配置文件包含许多以协议或其他服务命名的代理,使RloTPot实例类似于现实生活中的设备(例如家庭助手)。简而言之,概要文件加快了设置和提供具有特定配置的RloTPot实例的过程。Ul是使用React前端JavaScript库(我们在这个项目中使用Typescript)和Recoil状态管理库编写的。由于RloTPot相当小,目前它不使用数据库。

2、如何使用RIoTPot

运行RloTPot相对简单。总的来说,您有三个选择。第一种是下载RloTPot发行版;您可以选择下载最新版本或以前的版本。第二个选择是自己构建项目。最后一个选项是使用源代码创建一个带有RloTPot和一些附加应用程序的Docker容器来增强蜜罐。

1、使用发行版本(本指南是为没有特殊需要的用户,想要一个简单的开箱即用的体验。)

📁 riotpot
    ┕ riotpot
    ┕ 📁 plugins

(1) 首先,从版本页面下载您选择的版本。选一个你需要的操作系统(OS)。

(2)提取 riotpot文件夹

(3)运行 riotpot程序。这将启动RloTPot的API,所有准备使用的插件,以及UI服务器。

        o API和Ul可通过地址localhost:2022访问

2、构建自己的架构(为高级用户提供开发环境)

需要:

  • Golang - 需要创建项目
  • Node - 需要创建UI

操作

  • Git - 使用下载源代码
  • Make - 运行准备好的命令

 1. 从GitHub下载RloTPot源代码。打开一个控制台并引入以下行。

git clone git@github.com:aau-network-security/riotpot.git

 2. 打开已下载RloTPot源文件的文件夹,并安装所需的节点包。

npm install

3.如果您已经安装了Make,我们还提供了多个命令帮助程序来帮助您构建项目。简单来说,您可以运行两个简单的命令来构建RloTPot二进制文件和插件(并将它们放在正确的文件夹中)。

# Build the server
make build-ui
# Builds RIoTPot and the plugins
make riotpot-build

注意:Ul使用 Vite 来构建项目。如果您更喜欢使用其他构建器,您可能需要先自己做一些更改。

Docker(虚拟化)

  • Docker - 被用来创建RIoPot映像和UI服务
  • Docker-compose - 被用来创建含有RIoTPot实例、UI、其他应用和服务的单个容器,

使用这种设置的主要优点是附加的安全特性,对容器配置和容器本身的更改很小。例如,我们可以定义分离的虚拟专用网络和覆盖网络来隐藏、沙箱和封装RloTPot和其他相邻的服务。此外,容器允许我们使用它们的docker地址名称来绑定服务,而不是它们的IP,这非常方便。最后,我们可以根据需要生成和停止分离的容器,而不会影响其他服务。

另一方面,虚拟化可以说比在裸机上使用应用程序要求更高。虽然单个RloTPot实例是相对轻量级的,但重要的是要考虑虚拟化和硬件仿真带来的缺点(例如,响应延迟)。

警告:从技术上讲,专门的攻击者可能会通过分析意识到RloTPot实际上是一个蜜罐并且比较虚拟化和真实服务器带来的响应时间延迟(!!)虽然以前已经研究过这种蜜罐指纹,但对于普通互联网服务的结果仍然不确定(例如,HTTP, Telnet和SSH),这是由于使用虚拟机和详细的服务器配置的云托管服务的商品化。

docker-compose文件包括用于增强RloTPot体验的附加服务。下表总结了此容器中打包的服务和应用程序列表。

ServiceImagePortDetails
MQTTeclipse-mosquitto1883Mosquito MQTT Server
HTTPhttpd80Regular HTTP Server
Modbusoitc/modbus-server502Modbus Server
OCPPocpp1.6-central-system443OCPP v1.6(用于骑车充电站)
ApplicationImageDetails
TCPDumpkaazing/tcpdump网络流量存储以.pcap格式存储

容器可以通过三个简单的步骤来设置:

1. 从GitHub下载RloTPot源代码,打开控制台并输入以下命令

git clone git@github.com:aau-network-security/riotpot.git

2. 打开已下载RloTPot源代码的文件夹

3.在Docker运行时:如果安装了Make,则运行以下命令

否则运行docker-compose命令,build/docker文件夹中包含docker-compose文件

# With make
make up

# With docker-compose
docker-compose -p riotpot -f build/docker/docker-compose.yaml up -d --build

3、指令介绍

RloTPot支持命令的使用。例如:

# Run RIoTPot without the ui
./riotpot --ui false

Flag(标志)Type(类型)Default(默认)Description(描述)
debugBooleanfalse将日志级别设置为调试
apiBooleantrue是否启动API
pluginsBooleantrue是否加载低交互蜜插件
whitelistStringhttp://localhost
http://localhost:3000
允许主机连接API
uiBooleantrue是否启动UI

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值