基于Codesys工控软PLC环境

 

今天分享一个IRTeam工控安全红队自己搭建的工控PLC的研究环境,为了让工控安全研究人员,更加贴近真实的工控环境,这次IRTeam采用著名德国3S公司的Codesys软PLC的Demo版本,此版本每次能够持续运行2个小时后自动停止,然后需要在控制器控制面板上重启启动,才可以继续运行2个小时,但对于工控研究并不妨碍。

CODESYS软件商是德国Smart software solution GmbH,CODESYS是可编程逻辑控制PLC的完整开发环境(CODESYS是Controlled Development System的缩写),在PLC程序员编程时,CODESYS为强大的IEC语言提供了一个简单的方法,它支持IEC61131-3标准IL 、ST、 FBD 、LD、 CFC、 SFC 六种PLC编程语言,用户可以在同一项目中选择不同的语言编辑子程序,功能模块等,系统的编辑器和调试器的功能是建立在高级编程语言的基础上。国际上多家控制器厂商施耐德/ABB/力士乐,国内和利时/研华/台达等均采用此款软件作为PLC的Runtime内核和PLC组态开发环境。

这次搭建软PLC的操作系统采用ubuntu v18.04的Linux系统,PLC内核采用Codesys的linux版本runtime demo版本,连接为:https://store.codesys.com/softplc/codesys-control-for-linux-sl.html#All%20versions

考虑到主要是学习漏洞的复现,采用了3.5.13老版本,这个版本存在一些RCE漏洞。而搭建工程师站,基础操作系统采用了64位widows 7专业版,并且安装了Codesys v3.5.13的开发版本和Codesys gateway v3.5.13网关。

两台虚拟机均配置一个独立网卡,网络配置采用DHCP模式,所以需要采用vmware workstation的主机模式,主机子网启用DHCP服务,子网IP为192.168.1.10-192.168.1.250 子网掩码为255.255.255.0,网关为192.168.1.1

架构图:

Codesys工控环境介绍:

1、工程师站

a)Windows 7 专业版

b)Codesys v3.5.13版本开发环境

c)Codesys gateway v3.5.13网关环境

2、PLC站

a)Ubuntu 18.04 server

b)Codesys v3.5.13 Runtime 运行内核Demo版本

账号:

1、Windows 7专业版,用户名:ENG 密码:123456

2、Ubuntu 18.04 server,用户名:plc 密码:123456

环境所需资源:

CPU:4 Core

内存:8G

硬盘:40G

Codesys工控研究环境下载:

链接:https://pan.baidu.com/s/19jAzbXG5kIYDUn2JhR9s7A

提取码:zn4c

使用方法:

Codesys.7z压缩包包含两个虚拟机,解压后分别为ENG和PLC,其中ENG为工程师站,PLC则为软PLC的环境。首先是vmware中建立一个vmnet0网卡,并设置这个vmware网卡为主机内网同时启用为DHCP服务。

然后,直接启动PLC的虚拟机,使用虚拟机的用户名和密码登陆虚拟机,敲入$ dpkg -l 查看安装的软件,确认是否有安装下图的软件。

然后,启动ENG的虚拟机,看到登陆界面输入上述的用户名和密码进入桌面

执行Codesys V3.5 SP13,这个开发环境,会出现以下执行的界面

分别查看一下,两台虚拟机的IP,ipconfig和ifconfig,并确保两台虚拟机可以相互ping通。

然后在Codesys中选择打开项目,找到用户-文档目录中test项目,并选择打开它。可以看到这个test项目树和一段极其简单的测试梯形图代码,为通过开关test0的接通后test2连续累加,当test2大于100时清零。

先点击项目树定端的device项目,会出现device设置界面,然后需要修改gateway的IP为现在ENG这个虚拟机的IP,同时看到gateway灯为绿色,同时可以自动发现PLC控制器。

在工具-update linux,选择查看PLC控制,在IP地址中填写PLC虚拟机的IP,然后点击scan按钮,看看是否可以通过二层查找到这个PLC。对于要求PLC的密码填入上上述的密码。

然后可以在这个控制面板上看到,以上这些功能,比如可以通过这个PLC的控制面板,启动PLC,停止PLC,关闭PLC的Runtime,重启PLC这台虚拟机。点击系统信息可以看到PLC的内部详细描述。

然后选择菜单中在线-登陆,就可以进入PLC的监控环境,进入后PLC的状态为停止,要点击工具栏上运行后,就可以看到PLC的状态转为运行。可以在变量上通过对test0的变量准备值设置为true后,选择右键写入变量,就可以看到PLC的逻辑运行起来。

至此Codesys工控环境已经搭建起来,大家就可以来做一些环境的熟悉和学习,以及协议逆向和漏洞复现工作了。

IRTeam工控安全红队-剑思庭(微信:jiansiting)

(完)