声明:ISF该框架是北京xx科技基于开源框架自研的一套工控渗透框架,仅用于工控安全教学,公司实验箱产品的安全研究,使用该框架进行非法操作产生的一切后果公司一概不负责。
框架主要使用Python语言开发,通过集成ShadowBroker释放的NSA工具Fuzzbunch攻击框架,开发一款适合工控漏洞利用的框架。由于Fuzzbunch攻击框架仅适用于Python2.6,很多核心的功能都封装成了DLL,通过函数进行调用,不便于后期的移植和使用。但是,Fuzzbunch的命令行使用的确很方便,所以就有了现如今这款适合工控漏洞利用的框架,取名isf。
注:如果想在windows平台上安装,除了需要安装其它两个依赖:pypiwin32、dnet==1.12以外,window平台和linux平台下的使用没有什么区别。
这里所说的安装,其实是该工具所需环境的安装与配置,当运行环境配置好后,只需要在网站[https://github.com/w3h/isf]下载该工具,然后在项目目录下运行python2 isf.py即可。出现如下图所示证明安装成功。
该构架不仅可以通过命令行进行操作,还可以通过WEB的方式运行,通过WEB的方式进行操作,可以做到只需要部署一套环境,多个人同时使用的效果,且其他人不需要安装和配置,只需要通过浏览器的方式即可拥有一套工控代理框架。
WEB启动分为两种,一种是通过Docker容器方式进行部署,一种是直接在宿主机上运行,两种方式本质上是一样的,只是运行的宿主不一样而已。
不懂docker的请向下看宿主部署章节
mkdir -p /root/isfdocker
cd /root/isfdocker
wget https://github.com/w3h/isf/raw/master/docker/Dockerfile
docker build -t isf:v1 . # 构建一个isf:v1的docker容器,并使用Dockerfile安装好相关依赖
docker run --net=host isf:v1 butterfly.server.py --host='0.0.0.0' –unsecure
#or 新版的docker使用下面命令
docker run --network=host isf:v1 butterfly.server.py --host='0.0.0.0' –unsecure
运行完上面的命令之后,在浏览器中输入http://192.168.223.129:57575(这里的ip换成自己的)输入默认密码:123456,即可登录,如下图所示:
如果是通过上面的docker方式进行部署,那么只需要按照命令执行即可,所需依赖都将通过Dockerfile进行安装。如果想在宿主机上直接使用WEB控制台的方式进行访问的话,就需要安装butterfly依赖,命令pip2 instll butterfly,安装好后,通过butterfly.server.py --host="0.0.0.0" --port="55555"启动WEB控制台。然后就与docker的方式一样,通过浏览器访问。
代码解释:
• --host="0.0.0.0"是在所有网卡上启用
• --port="55555"通过55555端口进行访问(默认是57575)
不管是docker的方式,还是宿主的方式,只要能正常运行,那么使用时就与上面章节中“命令行启动”的方式一模一样。多种安装方式介绍完之后,那我们就来看看isf的具体功能以及如何使用。
虽然该工具不大,但是它的功能也不少,所以一个章节不能完全掌握它的全部功能,我们决定将该工具的使用分多个章节进行讲解。
首先,通过help命令查看isf都有哪些功能:
结果是不是很惊喜,居然有这么多功能!小伙伴们不要着急,通过后面章节,我们会一一讲解每个命令的用途。
今天我们就通过一个实例来演示一下,这个框架的简单用法,以及它在工控系统中的实际作用。
可以通过use加tab键的方式,查看可用模块,当前版本共有9个功能模块。如果你是工控安全大牛,那么你也可以通过向该框架贡献各种exp的方式丰富该框架的攻击面。
我们先通过plcscan小试牛刀
当输入use plcscan后,提示我们是否设置变量,这里当然要先yes了,因为我们还没有设置targetIp的值呢,它怎么知道要扫描哪个目标呢?所以按回车键后,提示我们输入targetIp。
这里我们就以公司自研的工控实验箱为攻击目标,扫描实验箱中目标系统的相关信息,下图为公司自研的工控实验箱示意图:
输入目标系统IP地址(192.168.1.100),如下图所示:
因为目前我们的工具只集成了Siemens和modbus设备,所以它需要你选择目标设备的品牌,这里我们选择0,即直接按回车。
后面会需要设置目标系统的端口号,Siemens默认是102,这里直接回车即可。后面还有几个参数,想必很多人都不知道这些参数是干什么的,大家暂时先不用管,后期随着对工控系统的了解,你会知道每个参数的含义,这里我们全部选择默认即可。
当最后一个回车键入之后,系统就列出你刚才输入的所有参数,如果没有错误的话,直接回车即可开始扫描。
当扫描结果后,系统会返回该目标设备的详细信息,或者是失败。
这里我们成功识别出该目标系统的详细信息,如品牌是Siemens,型号是S7-200等,是不是方便。说到这里想必有些人会问,识别到目标系统的这些信息后能做什么?看来你不是做安全的,做安全的都知道前期的信息收集是多么的重要,知道了目标系统的品牌、型号等信息之后,就可以使用公开或未公开的漏洞进行攻击。
原文地址:https://www.freebuf.com/sectool/243118.html