工控安全-PLC指纹提取的几种方法

时间:2021-10-11 06:33:07

前言:PLC为可编程逻辑控制器,采用S7协议。其硬件本身存在许多漏洞,可以利用kali里面的漏洞模块或者modbus工具对其进行攻击,甚至直接可以进行未授权访问,只要其开启对外网的端口服务,那么我们就可以利用其私有协议进行指纹提取、模糊测试、漏洞利用来最终达到控制PLC。指纹提取占据比较重要的位置,因为我们只要把指纹提取的工作做好,那么我门就可以针对什么版本的PLC进行1day的打击。因为工控硬件的更新换代始终很慢。

这里采用的是一个西门子PLC的仿真软件来进行实验的。

0x01 nmap指纹识别

在虚拟机中开启西门子S7 PLC仿真软件,ip不用改,如果nmap扫不出,再改成本地ip

工控安全-PLC指纹提取的几种方法

nmap扫描整个网段中开放102端口的存活ip

nmap -p102 -n 192.168.163.1/ --open

先看看启动了PLC的虚拟机的ip

工控安全-PLC指纹提取的几种方法

然后在物理机上扫描

工控安全-PLC指纹提取的几种方法

发现整个内网中开放102端口的ip

接下来就可以用nmap的s7-info.nse脚本探测其指纹信息

nmap -p102 -n 192.168.1.116 --open --script=s7-info.nse

工控安全-PLC指纹提取的几种方法

0x02 PLC连接信息采集工具

下载PLC连接测试工具对PLC的信息进行采集,获取到详细的指纹,ip地址填plc所在的ip,即存在plc仿真软件的虚拟机

工控安全-PLC指纹提取的几种方法

然后连接,即可获取很详细的指纹信息

工控安全-PLC指纹提取的几种方法

0x03 wireshark抓包进行流量分析获取PLC指纹信息

打开wireshark,开始抓包,筛选cotp

工控安全-PLC指纹提取的几种方法

然后打开PLC连接工具进行连接

工控安全-PLC指纹提取的几种方法

然后就捕获到了s7协议的包

747号的包是物理机向PLC请求通讯;749号数据包是物理机向plc请求配置通讯;等750号plc同意之后;752号物理机开始发送数据进行通讯;

下面从plc的ip192.168.1.116发送到物理机192.168.1.100的数据包就是plc的指纹信息,比如说755号的数据包。

工控安全-PLC指纹提取的几种方法

可以看到PLC的CPU型号、序列号等指纹信息。

当然还有几种方法可以获取到PLC的指纹信息,比如说可以利用python模拟抓包来获取。但以上三种是最为常用方便的。

附上TideSec安全团队总结(更全面):

http://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247484526&idx=1&sn=92b6b46bd6471ba2bc7b51cad1c86fe1&chksm=ce5e260ff929af19db8a74f7c0309049c4eabc4b972d9ac03810bc3a4a791b6384864942294f&mpshare=1&scene=23&srcid=1024zQya2YBwrCEztoHnVbyn&sharer_sharetime=1571891653504&sharer_shareid=45176a46e594e1ff053abe513bfce4be#rd

工控安全-PLC指纹提取的几种方法的更多相关文章

  1. android 让一个控件按钮居于底部的几种方法

    android 让一个控件按钮居于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_ ...

  2. &lbrack;Android&rsqb; Android 让UI控件固定于底部的几种方法

    Android 让UI控件固定于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_p ...

  3. 给Repeater控件里添加序号的5种方法

    Repeater是我们经常用的一个显示数据集的数据控件,经常我们希望在数据前显示数据的序号,那么我们该怎么为Repeater控件添加序号呢?下面编辑为大家介绍几种常用的为Repeater控件添加序号的 ...

  4. 利用来JS控制页面控件显示和隐藏有两种方法

    利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位. 方法一:  1 2 document.getEle ...

  5. &lbrack;转&rsqb;android 让一个控件按钮居于底部的几种方法

    本文转自:http://www.cnblogs.com/zdz8207/archive/2012/12/13/2816906.html android 让一个控件按钮居于底部的几种方法 1.采用lin ...

  6. Java学习笔记——可视化Swing中JTable控件绑定SQL数据源的两种方法

    在 MyEclipse 的可视化 Swing 中,有 JTable 控件. JTable 用来显示和编辑常规二维单元表. 那么,如何将 数据库SQL中的数据绑定至JTable中呢? 在这里,提供两种方 ...

  7. 解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11&period;8&period;800&period;168

    目前比较流行的是使用SWFUpload控件,这个控件的详细介绍可以参见官网http://demo.swfupload.org/v220/index.htm 在使用这个控件批量上传文件时发现中文文件名都 ...

  8. QT 窗体控件的透明度设置(三种方法)

    整个窗体 当设置QT的窗体(QMainWindow, QDialog)时,直接用 targetForm->setWindowOpacity()   函数即可实现,效果为窗体及窗体内所有控件都透明 ...

  9. pictureBox控件获得图片路径的三种方法及自适应大小属性

    1.绝对路径: this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径: Application.StartupP ...

随机推荐

  1. Linux命令详解之—tail命令

    tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux tail命令主要用来从指定点开始将文 ...

  2. guava学习--ComparisonChain

    转载:https://my.oschina.net/realfighter/blog/349824 在日常的工作中,我们经常需要对两个对象进行比较,以找出其中的异同, Java中提供了compare/ ...

  3. C&num;进制转换

    //十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(6 ...

  4. WP开发笔记——WP7 SDK使用技巧

    俗话说的好,工欲善其事,必先利其器. 入门WP开发之前,免不了要先接触开发环境和开发工具.使用WP7 SDK进行开发,我们需要掌握SDK的一些实用技巧,以便我们的开发. 一.开启/关闭电脑键盘输入 W ...

  5. 关于同步VSS服务器上的代码发生Eclipse里面的项目全部不见了

    有次在同步VSS服务器上的代码的时候突然发生了错误(同步的代码的项目竟然消失了)....如下图 Could not open the editor: The file does not exist. ...

  6. Swift - 15 - 导入Foundation使用更多字符串功能

    //: Playground - noun: a place where people can play import Foundation var str = "Hello, playgr ...

  7. HDU-1701-ACMer

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1701 解题: 好久没做题,好久没写解题思路了,连简答题都不会做了,下午的月赛挂了,我悲剧了,在此发牢骚 ...

  8. windows添加默认路由

    由于GW的原因,我们无法使用强大的google,身为技术屌丝,这是不能容忍的,于是乎使用了VPN,但是VPN连上之后,悲剧发生了,我的服务器连不上了,怎么整 原来一切都是很简单,在windows上添加 ...

  9. 2D游戏与3D游戏的区别 原文:https&colon;&sol;&sol;zhidao&period;baidu&period;com&sol;question&sol;588490865&period;html

    2D和3D间有哪些不同点呢? 让我们来比较一下,共同找出它俩之间的不同点. 对玩家来说,2D技术和3D技术只是显示数据的方式而已,玩家都是通过二 维的平面显示器来观看它们.对制作者来说,二者的不同之处 ...

  10. MySQL 基本语句&lpar;2&rpar;

    1.创建数据库 :create database 名称 [charset 字符集 collate 校对规则] ;  如: drop database if exists `mydb` ; # 若存在就 ...