0x00写在前面


工业4.0,物联网趋势化,工控安全实战化。安全从业保持敏感,本篇以科普角度对工控安全做入门分析,大牛绕过,不喜轻喷。

0x01专业术语


SCADA:数据采集与监视控制系统

ICS:工业控制系统

DCS:分布式控制系统/集散控制系统

PCS:过程控制系统

ESD:应急停车系统

PLC:可编程序控制器(Programmable Logic Controller)

RTU:远程终端控制系统

IED:智能监测单元

HMI:人机界面(Human Machine Interface)

MIS:管理信息系统(Management Information System)

SIS: 生产过程自动化监控和管理系统(Supervisory Information System)

MES:制造执行管理系统

0x02协议端口及测试脚本


  • 协议科普

    • Modbus

      MODBUS协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS协议映射能够在应用数据单元(ADU)上引入一些附加域。

      安全问题:

      • 缺乏认证:仅需要使用一个合法的Modbus地址和合法的功能码即可以建立一个Modbus会话
      • 缺乏授权:没有基于角色的访问控制机制, 任意用户可以执行任意的功能。
      • 缺乏加密:地址和命令明文传输, 可以很容易地捕获和解析
    • PROFIBUS

      一种用于工厂自动化车间级监控和现场设备层数据通信与控制的现场总线技术,可实现现场设备层到车间级监控的分散式数字控制和现场通信网络

    • DNP3

      DNP(Distributed Network Protocol,分布式网络协议)是一种应用于自动化组件之间的通讯协议,常见于电力、水处理等行业。

      简化OSI模型,只包含了物理层,数据层与应用层的体系结构(EPA)。

      SCADA可以使用DNP协议与主站、RTU、及IED进行通讯。

    • ICCP

      电力控制中心通讯协议。

    • OPC

      过程控制的OLE (OLE for Process Control)。

      OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。

    • BACnet

      楼宇自动控制网络数据通讯协议(A Data Communication Protocol for Building Automation and Control Networks)。

      BACnet 协议是为计算机控制采暖、制冷、空调HVAC系统和其他建筑物设备系统定义服务和协议

    • CIP

      通用工业协议,被deviceNet、ControINet、EtherNet/IP三种网络所采用。

    • Siemens S7

      属于第7层的协议,用于西门子设备之间进行交换数据,通过TSAP,可加载MPI,DP,以太网等不同物理结构总线或网络上,PLC一般可以通过封装好的通讯功能块实现。

    • 其他工控协议

      IEC 60870-5-104、EtherNet/IP、Tridium Niagara Fox、Crimson V3、OMRON FINS、PCWorx、ProConOs、MELSEC-Q。按需求自行查阅资料。

  • 信息探测

    • 协议测试脚本

      PS:简要测试,大量脚本自行测试。

    • 相关搜索引擎

      Shodan搜索

      PS:Shodan搜索引擎介绍 http://drops.wooyun.org/tips/2469

      Zoomeye搜索

      PS:敏感信息,你懂得。

    • Ethernet/IP 44818

      nmap -p 44818 --script enip-enumerate.nse 85.132.179.*

    • Modbus 502

      nmap --script modicon-info.nse -Pn -p 502 -sV 91.83.43.*

    • IEC 61870-5-101/104 2404

      nmap -Pn -n -d --script iec-identify.nse --script-args=iec-identify -p 2404 80.34.253.*

    • Siemens S7 102

      nmap -p 102 --script s7-enumerate -sV 140.207.152.*

      nmap -d --script mms-identify.nse --script-args='mms-identify.timeout=500' -p 102 IP

    • Tridium Niagara Fox 1911

      nmap -p 1911 --script fox-info 99.55.238.*

    • 意义何在

      上述NSE脚本意义:

      1. 定位工控系统及协议模块。
      2. 收集目标工控的信息,如版本、内网IP、模块、硬件信息等。
      3. 结合对应的NSE脚本进一步拓展,例如自定义空间搜素引擎。
  • 脚本资源

0x03乌云工控漏洞的分析


  • 工控相关漏洞分析

    针对乌云主站的漏洞进行关键字搜索:工控(31)、SCADA(15)、Modbus(9)、PLC并进一步整合得到如下列表。

    在以上的漏洞列表中,可以得出如下结论:

    1. 乌云工控漏洞的案例中,绝大多起因是弱口令(弱口令最多的是123456,其次是admin)、注入类漏洞。
    2. 能够挖出工控的精华漏洞的人也是特定的那几位,且在Kcon2015也有过演讲。
    3. 挖掘此类漏洞主要解决两个问题
      1. 如何找到工控相关的系统和地址
      2. Getshell后,基于工控知识如何操控系统
    4. 根据漏洞中的细节可以进一步的复测和拓展,进而为工控系统的漏洞挖掘提供非线性思路。
      1. 结合GHDB关键字的搜素:例如inurl:SCADA……
      2. 链接地址含SCADA、Modbus等协议的关键字……
      3. 其他KEY:MIS、SIS、DCS、PLC、ICS、监控系统……
      4. 相关公司:南京科远、金风科技、天能集团、国电南瑞、华润燃气、积成电子、重庆三峰、东方电子……
      5. 至于利用以上四点去做什么,呵呵…
  • 工控精华漏洞分析

    乌云工控相关的精华漏洞如下7个,在思路亮点中分析了漏洞的核心,同样也可能是获得打雷精华的理由。几乎共同点均是操控了对应的工控系统。

0x04参考资源