Conpot:一个开源的工控系统蜜罐

news/2024/12/4 4:46:17/文章来源:https://www.cnblogs.com/o-O-oO/p/18585386

Conpot 是一个 ICS 蜜罐,目的是收集有关针对工业控制系统的对手动机和方法的情报。

使用 Docker 快速安装

安装Docker
docker pull honeynet/conpot
docker run -it -p 80:80 -p 102:102 -p 502:502 -p 161:161/udp --network=bridge honeynet/conpot:latest /bin/sh
conpot -f --template default
导航至http://MY_IP_ADDRESS确认设置。

从源代码构建docker镜像

安装Docker
使用以下命令克隆此仓库git clone https://github.com/mushorg/conpot.git
sudo make run-docker
导航至http://MY_IP_ADDRESS确认设置。

从源代码构建并使用 docker-compose 运行


安装docker-compose
使用以下命令 克隆此 repo git clone https://github.com/mushorg/conpot.gitcd conpot/docker
使用以下方式构建图像docker-compose build
测试一切是否正常运行docker-compose up
作为守护进程永久运行docker-compose up -d

示例输出

首先我们看一个典型的工业控制网络拓扑图:

conpot启动指令在.local/bin目录下

conpot附带了一个默认的配置文件, 它可以实现对安装有基本扩展模块的西门子S7-200 PLC的仿真. 这个默认仿真的攻击面包括: MODBUS, HTTP, SNMP and s7comm. 为了避免混乱, conpot的大部分配置是在XML文件中, 也有一些是保存在不同文件夹的templates文件夹下.

MOSBUS

配置文件的 <device_info /> 部分允许用户定义设备的信息并可以作为函数调用返回。

<slave /> 部分允许用户将每个从设备(slave)都定义在一个 <blocks /> 中。

二进制输出块: COILS , 二进制输入块: DISCRETE_INPUTS , 用户只需定义它们的起始地址和数据规模. ANALOG_INPUTS 以字节为单位保存数据.

<block name="a"><!-- COILS/DISCRETE_OUTPUTS aka. binary output, power on/power offHere we map modbus addresses 1 to 127 to S7-200 PLC Addresses Q0.0 to Q15.7 --><type>COILS</type><starting_address>1</starting_address><size>128</size><values><value><address>1</address><!-- Will be parsed with eval() --><content>[random.randint(0,1) for b in range(0,128)]</content></value></values></block>

SNMP

在配置文件的 <snmp /> 部分, 你可以用 <symbol> 和一个name属性定义一个信息管理库(MIB) .


<symbol name="sysDescr"><value>Siemens, SIMATIC, S7-200</value>
</symbol>

HTTP

在配置文件的<http>部分, 用户可以配置conpot的web server的特性, 以及用相应的header和behaviour来控制每个网页和资源的访问特性. 还可以控制相应的错误代码和错误页面的传输方式以及何时传输.
全局 http 的配置:

<global><config><!-- what protocol shall we use by default? --><entity name="protocol_version">HTTP/1.1</entity><!-- if we find any date header to be delivered, should we update it to a real value? --><entity name="update_header_date">true</entity><!-- should we disable the HTTP HEAD method? --><entity name="disable_method_head">false</entity><!-- should we disable the HTTP TRACE method? --><entity name="disable_method_trace">false</entity><!-- should we disable the HTTP OPTIONS method? --><entity name="disable_method_options">false</entity><!-- TARPIT: how much latency should we introduce to any response by default? --><entity name="tarpit">0</entity></config><!-- these headers will be sent with each response --><headers><!-- this date header will be updated, if enabled above --><entity name="Date">Sat, 28 Apr 1984 07:30:00 GMT</entity></headers></global>

进阶

既然考虑进行大规模的部署,像我们刚才做的镜像那样那样直接输出到屏幕显然是不合理的, Conpot 提供了多种日志收集的途径, Conpot 在 conpot.cfg 文件中配置了默认日志输出形式,用户可以通过修改 conpot.cfg 文件来自定义日志收集的配置。

[json]
enabled = False  
filename = /var/log/conpot.json[sqlite]
enabled = False[mysql]
enabled = False  
device = /tmp/mysql.sock  
host = localhost  
port = 3306  
db = conpot  
username = conpot  
passphrase = conpot  
socket = tcp        ; tcp (sends to host:port), dev (sends to mysql device/socket file)[syslog]
enabled = False  
device = /dev/log  
host = localhost  
port = 514  
facility = local0  
socket = dev        ; udp (sends to host:port), dev (sends to device)[hpfriends]
enabled = False  
host = hpfriends.honeycloud.net  
port = 20000  
ident = 3Ykf9Znv  
secret = 4nFRhpm44QkG9cvD  
channels = ["conpot.events", ][taxii]
enabled = False  
host = taxiitest.mitre.org  
port = 80  
inbox_path = /services/inbox/default/  
use_https = False  

可以看到,在 Conpot 中,我们可以使用 json 、 sqlite 、 mysql 、 syslog 、 hpfriends 和 taxii 等几种方式输出访问日志。

这样的话,可以用我前面分享的ELK日志审计平台,如果您有专业的日志审计设备也可以外发,或者存储在mysql里查询。

更多内容请查阅:

https://github.com/mushorg/conpot
http://plcscan.org/blog/tools/conpot/

原创 三沐数安

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846442.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【甲方安全】工业行业+如何建设安全防护体系

一、工业控制系统安全现状1.1 工业控制系统概念1.2 工业控制网络发展历程1.3 从国家政策看工业安全重要性1.4 从微软系统蓝屏事件看工控风险1.5 从震网时间看黑客攻击路径 1.6 从2022年工业行业安全攻击态势看风险1.7 工控安全可能面对的挑战二、工业控制系统指南解读三、工控…

【攻防技术系列】反弹Shell

一、Linux -> Windows1.1 反向连接1.1.1 nc反连1.1.2 PowerShell反连1.1.3 利用编程语言反连1.2 正向连接二、Windows -> Linux2.1 反向连接2.1.1 nc反连2.1.2 Bash-i连接2.1.3 Perl反连2.2 正向连接总结免责声明: 请勿使用本文中提到的技术进行非法测试或行为。使用本文…

来玩游戏吗?能在线陪玩的那种。

在游戏世界的广阔天地里,选择一款优质的游戏盒子 APP 如同手握一把金钥匙,能够轻松解锁无限的游戏乐趣。今天为大家推荐一款全新的游戏盒子。这款精选的游戏盒子将带你走进精彩纷呈的游戏世界,体验前所未有的游戏魅力! 17 互娱 app 17 互娱游戏盒子是最新款游戏盒子。拥有超…

机器学习:神经网络构建(下)

在上一篇文章《机器学习:神经网络构建(上)》中讨论了线性层、激活函数以及损失函数层的构建方式,本节中将进一步讨论网络构建方式,并完整的搭建一个简单的分类器网络。简介 在上一篇文章《机器学习:神经网络构建(上)》中讨论了线性层、激活函数以及损失函数层的构建方式…

HCIP-18 MPLS LDP原理与配置

MPLS体系有多种标签分配协议,LDP标签分配协议是这些协议中使用较广的一种。 LDP是LSR之间协商标签含义的过程。LDP协议使用发现、会话、通告、通知四类报文进行会话的建立和标签的分发。 LDP通过标签发布方式、标签分配控制方式和标签保持方式来决定标签的发布和管理。华为数通…

centos7安装docker-ce

下载docker-ce repo curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo安装依赖 yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7.5/x86_64/stable/Packages/containerd.io-1.4.8-3.1.el7.x86_64.rpm安装…

虚拟机苹果系统IM群发,苹果iMessage群发软件,iMessage协议版自动群发完美实现

一、PC电脑版苹果系统(Mac OS)上实现imessage群发总结为以下几种方式: /*MacOS苹果系统,正常情况下,只能安装到苹果公司自己出品的Mac电脑,俗称白苹果,不能安装到各种组装机或者其他品牌的品牌机上,黑苹果的的原理,就是通过一些 “破解补丁” 工具欺骗macOS系统,让苹果系统…

docker-配置镜像服务

镜像加速器配置 默认情况下,Docker是从Dcoker Hub上下载镜像资源,但由于该站点在国外,因此下载速度很慢,可以通过配置国内镜像加速器来解决,本文以阿里云镜像加速器为例,讲解在CentOs7系统下如何给Docker配置阿里云镜像加速器。 Docker Hub官网:https://hub.docker.com …

天梯赛练习集 L2-049 鱼与熊掌 查找

好简单,一开始随便二分一下,没想到也能过,算了时间复杂度1e10 思路:存储每个人拥有物品,查询每一个人是否两个物品都有. #include<bits/stdc++.h> using namespace std; vector<set<int>>vc; int main() {int n,m,x,y,cot;cin>>n>>m;for(int…

开源 - Ideal库 - Excel帮助类,ExcelHelper实现(四)

实现ExcelHelper第二步,设计接口包括读写操作和两类转换,通过文件路径、文件流及后缀读取Excel到DataSet,涉及工作簿Sheet与DataTable相互转换,具体代码已上传至代码库。书接上回,前面章节已经实现Excel帮助类的第一步TableHeper的对象集合与DataTable相互转换功能,今天实…

攻防世界-OldDriver

一、题目二、解题 1、观察特征:低指数,多密文 使用低指数广播攻击2、中国剩余定理剩余定理求解代码: def crt(remainders, moduli):"""中国剩余定理实现:param remainders: 余数列表 [r1, r2, ...]:param moduli: 模数列表 [m1, m2, ...]:return: 满足所有条…

Cannot find a valid baseurl for repo: base/7/x86_64

001、yum报错(base) [root@PC1 yum.repos.d]# yum install httpd ## yum安装应用报错 。002、解决方法(base) [root@PC1 home]# cd /etc/yum.repos.d (base) [root@PC1 yum.repos.d]# ls CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.rep…