公开文集
0x01 信安之路安全产品
0x01 SRC 资产管理系统
001 企业资产有那些?
002 订阅最新 POC
003 IP 域名关联查询
004 公益权重数据
0x02 安全学习成长平台
001 成长平台视频参考
100 百分成就-学习心得-TOP 21 小伙伴
101 百分成就-学习心得-不想起床
102 百分成就-学习心得-不驚
103 百分成就-学习心得-aiDa0
104 百分成就-学习心得-起十二
105 百分成就-学习心得-Eyes
201 你为什么选择信安之路!
0x03 安全知识库
001 蜜罐运营专辑
0x04 自研蜜罐系统
0x02 Web 漏洞案例库
0x01 配置安全
001 header 安全配置
002 首页信息泄露
003 HTTP 访问控制 (CORS)
0x02 安全控制缺失
001 速率限制绕过
0x03 应用逻辑
0x03 小程序漏洞案例库
第一章:小程序渗透基础
1.1 微信小程序反编译与动态调试
1.2 微信小程序强制开启开发者模式
0x04 星球讨论知识问答
信息安全入门
学习方向选择
学习经验分享
安全产品研发
代码审计
物联网安全
APT
安全防御建设
安全建设经验
数据泄露监控
网络安全
终端安全
主机安全
产品安全
安全意识
数据安全
内部资产管理
安全管理
应急响应
网络安全架构
安全运营
业务安全
运维安全
渗透测试技术
信息收集
EXP/POC
web 测试
APP测试
内网渗透
0x05 代码审计小挑战
01 前端安全问题
101 script 标签下的 XSS
102 消息事件引发的 DOM XSS
104 常规评论 xss 漏洞
105 页面开放重定向漏洞
106 部分过滤的 xss 漏洞绕过
107 基于 DOM 的 XSS
108 CORS 配置错误
109 退出登录出 XSS
110 URL 重定向漏洞
111 CSRF 漏洞利用
112 JavaScript 代码注入
113 xss 绕过括号和反引号检测
02 文件操作类问题
201 Django 任意文件读取漏洞
202 php 后缀黑名单验证绕过上传
203 jsp 任意文件上传
204 jsp 代码中的 SSRF 漏洞
205 jsp 目录穿越漏洞
206 PHP文件包含漏洞
207 Django 本地文件包含
208 文件包含功能绕过
209 SSRF 跨服务端请求伪造
210 本地文件包含漏洞 windows
211 目录穿越漏洞
212 文件上传绕过
213 php 文件包含漏洞
03 注入类问题
301 由 SQL 注入引发的命令执行
302 php8 XML 实体注入
303 正则问题导致验证绕过
304 XPath 注入
305 典型认证 SQL 注入
306 数字型 SQL 注入
307 主机头(host header)注入
308 LDAP 注入
309 典型的万能密码漏洞
310 Ldap 注入漏洞代码
04 命令执行类问题
401 调用第三方工具时被劫持
402 原型污染导致命令执行
403 php array_map 代码执行
404 命令执行绕过检测
405 SSTI 模板注入
406 文件名注入 RCE
407 无防护命令执行
408 python eval 注入
409 绕过多个黑名单命令
05 业务逻辑类问题
501 django 认证 jwt 未验证 token
502 绕过权限检测执行命令
503 密码找回邮箱地址大小写绕过
504 DNS 重绑定问题
505 权限比对逻辑问题
506 越权访问其他用户的记录
507 用户注册问题
508 用户权限验证逻辑问题
509 PHP 判断两个变量相等逻辑问题
06 反序列化类问题
601 php 反序列化漏洞
602 python 反序列化漏洞
09 C语言问题
901 c 条件竞争
902 缓冲区溢出
903 通配符注入提权
0x99 AI 教你学安全
01-网络安全基础
Day-001-TCP-IP协议栈安全分析
Day-002-DNS协议安全与DNS劫持攻防
Day-003-IPv6 安全基础与过渡
Day-004-HTTP-HTTPS协议深度解析
Day-005-网络嗅探与流量分析技术
Day-006-防火墙原理与配置实践
Day-007-网络地址转换 NAT 安全分析
Day-008-路由协议安全 RIP-OSPF-BGP
Day-009-VLAN 安全与 VLAN-Hopping
Day-010-无线网络基础与安全 802.11
Day-011-网络访问控制 802.1X-NAC
Day-012-网络分段与微隔离设计
Day-013-负载均衡器安全配置
Day-014-CDN安全与防护
Day-015-NTP安全
Day-016-DHCP安全与攻击防护
Day-017-ICMP协议安全分析
Day-018-网络协议模糊测试基础
Day-019-网络流量基线建立
Day-020-网络取证基础
Day-021-网络入侵检测系统 NIDS
Day-022-网络入侵防御系统 NIPS
Day-023-网络流量加密与解密
Day-024-网络协议逆向工程基础
Day-025-网络性能与安全权衡
Day-026-SDN 安全
Day-027-网络虚拟化安全
Day-028-网络欺骗技术
Day-029-网络威胁情报应用
Day-030-网络容量规划与安全
Day-031-网络安全架构设计实战
02-Web 安全
Day-032-OWASP-Top-10-2021详解
Day-033-SQL 注入原理与手工检测
Day-034-SQL注入进阶报错注入与盲注
Day-035-XSS跨站脚本攻击基础
Day-036-XSS 进阶绕过与利用
Day-038-CSRF 跨站请求伪造
Day-039-文件上传漏洞
Day-040-反序列化漏洞基础
Day-041-PHP反序列化深入
Day-042-Java反序列化深入
Day-043-SSTI 服务端模板注入
Day-044-文件包含漏洞 LFI-RFI
Day-045-命令注入漏洞
Day-046-XXE-XML 外部实体注入
Day-047-反序列化漏洞进阶
Day-048-API 安全基础
Day-049-API认证与授权安全
Day-050-API漏洞挖掘实战
Day-051-文件上传漏洞进阶
Day-052-反序列化漏洞实战
Day-053-Web 安全综合实战
Day-054-移动安全基础
Day-055-Android 应用安全测试
Day-056-iOS 应用安全测试
Day-057-移动应用综合实战
Day-058-云安全基础
Day-059-AWS 安全实战
Day-060-Azure 安全实战
Day-061-GCP 安全实战
Day-062-云安全综合实战
Day-063-容器安全基础
Day-064-Docker 安全实战
Day-065-Kubernetes 安全实战
Day-066-容器安全综合实战
Day-067-API 安全进阶
Day-068-服务端请求伪造 SSRF 深入
Day-069-文件上传漏洞进阶
Day-070-反序列化漏洞实战进阶
Day-071-业务逻辑漏洞深入
Day-072-前端安全深入
Day-073-Web 安全综合实战
Day-074-云安全进阶
Day-075-移动安全进阶
Day-076-API 安全进阶
Day-077-前端安全进阶
Day-078-业务逻辑漏洞进阶
Day-079-反序列化漏洞实战进阶
Day-080-文件上传漏洞实战进阶
Day-081-SSTI 服务端模板注入进阶
Day-082-XXE-XML 外部实体注入进阶
Day-083-SSRF 服务端请求伪造进阶
Day-084-命令注入漏洞进阶
Day-085-文件包含漏洞进阶
Day-086-反序列化漏洞实战进阶
Day-087-文件上传漏洞实战进阶
Day-088-SSTI 服务端模板注入实战进阶
Day-089-XXE-XML 外部实体注入实战进阶
Day-090-SSRF 服务端请求伪造实战进阶
Day-091-命令注入漏洞实战进阶
Day-092-Web 安全综合实战
Day-093-GraphQL 安全
Day-094-JWT 与 OAuth2 安全
03-系统安全
Day-095-系统监控与检测
Day-096-主机防火墙配置
Day-097-系统审计与合规
Day-098-Linux 系统安全进阶
Day-099-Windows 系统安全进阶
Day-100-容器安全进阶
Day-101-容器编排安全进阶
Day-102-Linux 内核安全
Day-103-Windows 内核安全
Day-104-系统安全总结与实战
Day-105-Linux 系统安全基础
Day-106-Windows 系统安全基础
Day-107-容器安全基础
Day-108-系统加固技术
Day-109-日志分析技术
Day-110-威胁狩猎技术
04-应用安全
Day-111-安全编码规范
Day-112-输入验证技术
Day-113-输出编码技术
Day-114-错误处理安全
Day-115-会话管理安全
Day-116-认证安全
Day-117-授权安全
Day-118-数据保护安全
Day-119-日志安全
Day-120-API 安全
Day-121-微服务安全
Day-122-新兴技术安全概论
Day-123-DevSecOps 流水线安全
Day-124-云原生安全架构
Day-125-API 安全最佳实践
Day-126-安全编码规范
Day-127-SDL 安全开发生命周期
Day-128-威胁建模实战
Day-129-安全需求分析
Day-130-安全架构设计
Day-131-安全编码实践Java
Day-132-安全编码实践Python
Day-133-代码审计方法论
Day-134-静态代码分析SAST
Day-135-动态应用测试DAST
Day-136-交互式测试IAST
Day-137-软件成分分析SCA
Day-138-依赖漏洞管理
Day-139-安全测试自动化
Day-140-漏洞管理与响应
Day-142-OWASP-Top10-2024 详解
Day-143-CWE-Top25 分析
Day-144-漏洞挖掘方法论
Day-145-模糊测试技术
Day-146-逆向工程基础
Day-147-漏洞利用开发基础
Day-148-漏洞复现与验证
Day-149-漏洞披露流程
Day-150-CVE 申请与管理
Day-151-漏洞赏金计划
Day-152-等保2.0详解
Day-153-GDPR 合规实践
Day-154-数据安全法解读
Day-155-个人信息保护法与合规指南
Day-156-个人信息保护法解读
Day-157-ISO-27001 信息安全管理体系
Day-158-SOC-2 合规与审计
Day-159-PCI-DSS 支付卡行业数据安全标准
Day-160-网络安全审查办法解读
Day-161-数据出境安全评估办法
Day-162-应用安全评估实战
Day-163-红蓝对抗演练
Day-164-安全应急响应
Day-165-安全运营中心建设
Day-166-应用安全总结与展望
05-密码学
Day-167-密码学基础
Day-168-对称加密算法详解
Day-169-非对称加密算法详解
Day-170-哈希函数与数字签名
Day-171-密钥管理与PKI
Day-172-TLS-SSL 协议详解
Day-173-国密算法详解
Day-174-认证与密钥协议
Day-175-随机数生成与熵源
Day-176-椭圆曲线密码学详解
Day-177-后量子密码学详解
Day-178-高级密码学主题
Day-179-密码学行业应用精选
Day-180-常用加密算法原理与实现
Day-181-密码学总结与展望
06-渗透测试
Day-183-渗透测试方法论
Day-184-信息收集技术详解
Day-185-漏洞扫描技术详解
Day-186-漏洞利用技术详解
Day-187-渗透测试中的漏洞利用框架
Day-188-漏洞利用框架与 Metasploit 深入
Day-189-渗透测试中的 WAF 绕过技术
Day-190-渗透测试中的模糊测试技术
Day-191-渗透测试中的代码审计与静态分析
Day-192-渗透测试中的密码哈希破解技术
Day-193-渗透测试报告编写指南
Day-194-Web 应用渗透测试
Day-195-渗透测试中的 API 安全测试
Day-196-渗透测试中的 GraphQL 安全测试
Day-197-渗透测试中的前后端分离应用测试
Day-198-渗透测试中的小程序安全测试
Day-199-渗透测试中的浏览器安全测试
Day-200-OAuth-SSO安全测试
Day-201-渗透测试中的业务逻辑漏洞测试
Day-202-渗透测试中的厚客户端安全测试
Day-203-渗透测试综合实战演练
Day-204-内网渗透技术详解
Day-205-渗透测试中的内网信息收集进阶
Day-206-渗透测试中的域森林渗透技术
Day-207-渗透测试中的权限维持技术
Day-208-渗透测试中的横向移动技术
Day-209-渗透测试中的痕迹清理与反取证技术
Day-210-渗透测试中的数据窃取与 Exfiltration 技术
Day-211-渗透测试中的内部威胁与数据泄露测试
Day-212-渗透测试中的物理安全渗透
Day-213-社会工程学攻击技术
Day-214-移动应用渗透测试
Day-215-云安全渗透测试
Day-216-渗透测试中的容器与 Kubernetes 安全渗透
Day-217-渗透测试中的 Serverless 安全测试
Day-218-渗透测试中的微服务安全测试
Day-219-物联网安全渗透测试
Day-220-工业控制系统安全渗透测试
Day-221-无线网络安全渗透测试
Day-222-数据库安全渗透测试
Day-223-渗透测试中的供应链安全测试
Day-224-红队演练技术详解
Day-225-渗透测试中的红队基础设施搭建
Day-226-渗透测试中的威胁情报与狩猎
Day-227-渗透测试中的综合指纹识别技术
Day-228-自动化渗透测试技术
Day-229-渗透测试中的运维安全测试
Day-230-渗透测试中的区块链与智能合约安全测试
Day-231-渗透测试中的漏洞管理与修复验证
Day-232-渗透测试法律与合规
Day-233-后渗透攻击技术详解
Day-234-渗透测试中的人工智能应用
Day-235-漏洞利用开发深入
Day-236-云原生渗透测试深入
07-应急响应
Day-237-应急响应概述与核心概念
Day-238-应急响应流程框架
Day-239-CSIRT 团队组建与职责分工
Day-240-应急响应工具包准备
Day-241-应急响应法律与合规要求
Day-242-安全事件检测方法与指标
Day-243-云原生应急响应
Day-244-日志收集与分析技术
Day-245-网络流量分析与异常识别
Day-246-自动化响应与 SOAR
Day-247-端点监控与 EDR 技术
Day-248-威胁狩猎方法论
Day-249-威胁情报在检测中的应用
Day-250-数字取证基础与证据链管理
Day-251-内存取证技术
Day-252-磁盘取证与文件恢复
Day-253-网络取证与数据包分析
Day-254-云环境与容器取证
Day-255-恶意代码静态分析技术
Day-256-恶意代码动态分析技术
Day-257-恶意代码行为分析方法
Day-258-逆向工程基础与工具
Day-259-沙箱技术与自动化分析
Day-260-事件隔离与遏制策略
Day-261-威胁根除与系统修复
Day-262-系统恢复与数据重建
Day-263-业务连续性计划
Day-264-事件复盘与经验总结
Day-265-APT 攻击事件复盘分析
Day-266-勒索软件事件响应实战
Day-267-数据泄露事件处置流程
Day-268-内部威胁调查与取证
Day-269-综合应急响应演练
08-安全运维
Day-270-安全运营中心 SOC 概述
Day-271-安全监控指标体系
Day-272-安全告警管理
Day-273-安全可视化与仪表盘
Day-274-监控工具选型
Day-275-日志采集技术
Day-276-日志标准化与解析
Day-277-日志存储与归档
Day-278-日志分析技术
Day-279-日志合规要求
Day-280-SIEM 架构与设计
Day-281-关联规则引擎
Day-282-高级关联分析
Day-283-UEBA 用户实体行为分析
Day-284-威胁狩猎
Day-285-SOAR 基础概念
Day-286-剧本设计
Day-287-自动化响应技术
Day-288-安全工具集成
Day-289-SOAR 度量与优化
Day-290-安全基线管理
Day-291-漏洞管理流程
Day-292-补丁管理策略
Day-293-变更安全管理
Day-294-合规审计技术
Day-295-7x24 安全运营
Day-296-安全事件管理流程
Day-297-安全运营度量体系
Day-298-持续改进机制
Day-299-安全运维综合演练
Day-300-云原生安全运营
Day-301-AI 与机器学习安全运营
Day-302-安全自动化脚本实战
09-移动安全
Day-303-移动安全威胁概述
Day-304-移动设备安全架构
Day-305-移动操作系统安全模型
Day-306-移动应用权限管理
Day-307-移动端数据加密
Day-308-330-Android 安全合集
Day-309-Android 安全架构
Day-310-Android 组件安全
Day-311-Android 权限与隐私
Day-312-Android 逆向工程
Day-313-Android 应用加固
Day-314-iOS 安全架构
Day-315-iOS 应用沙盒机制
Day-316-越狱与反越狱
Day-317-iOS 逆向工程
Day-318-iOS 企业分发安全
Day-319-移动安全开发生命周期
Day-320-移动应用安全测试
Day-321-移动应用加固技术
Day-322-移动威胁防护
Day-323-移动安全合规
10-云安全
Day-324-云计算安全模型
Day-325-责任共担模型
Day-326-云安全威胁模型
Day-327-云安全合规框架
Day-328-云安全架构设计
Day-329-AWS IAM 安全
Day-330-AWS 网络安全
Day-331-AWS 存储安全
Day-332-AWS 安全监控
Day-333-AWS 安全最佳实践
Day-334-Azure AD 安全
Day-335-Azure 网络安全
Day-336-Azure 存储安全
Day-337-Azure 安全中心
Day-338-Azure 安全最佳实践
Day-339-容器安全基础
Day-340-Kubernetes 安全
Day-341-Serverless 安全
Day-342-云原生 DevSecOps
Day-343-云安全态势管理 CSPM
11-物联网工控
Day-344-物联网安全概述
Day-345-IoT 通信协议安全
Day-346-IoT 设备安全
Day-347-IoT 平台安全
Day-348-IoT 应用安全
Day-349-工业控制系统概述
Day-350-工控协议安全
Day-351-PLC 安全
Day-352-SCADA 系统安全
Day-353-工控安全防护
12-综合与总结
Day-354-安全职业发展路径
Day-355-安全技术趋势展望
Day-356-安全建设方法论
Day-357-经典攻防案例复盘
Day-358-安全学习资源指南
Day-359-信息安全行业求职指南
-
+
首页
Day-220-工业控制系统安全渗透测试
# Day 225: 工业控制系统安全渗透测试 > 渗透测试系列第 15 天 | 预计阅读时间:65 分钟 | 难度:★★★★★ --- ## 清单 目录 1. [ICS 安全概述](#ics 安全概述) 2. [工业控制系统架构](#工业控制系统架构) 3. [ICS 渗透测试规则](#ics 渗透测试规则) 4. [工业协议安全](#工业协议安全) 5. [PLC 安全测试](#plc 安全测试) 6. [SCADA 系统安全](#scada 系统安全) 7. [DCS 系统安全](#dcs 系统安全) 8. [工控网络架构安全](#工控网络架构安全) 9. [ICS 渗透实战案例](#ics 渗透实战案例) 10. [ICS 安全最佳实践](#ics 安全最佳实践) 11. [总结与思考](#总结与思考) 12. [参考资料](#参考资料) --- ## ICS 安全概述 ### 什么是工业控制系统安全 工业控制系统(ICS)安全渗透测试是对工业自动化环境(工厂、电站、水处理等)中的控制系统进行全面的安全评估,发现可能影响生产安全和连续性的漏洞。 **ICS 安全的核心定义**: ``` ┌─────────────────────────────────────────────────────────────┐ │ ICS 安全渗透测试定义 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ICS 安全 = 功能安全 + 网络安全 + 物理安全 │ │ │ │ 关键要素: │ │ 1. 功能安全(Safety) │ │ - 人员安全 │ │ - 设备安全 │ │ - 环境安全 │ │ - 生产连续性 │ │ │ │ 2. 网络安全(Security) │ │ - 访问控制 │ │ - 通信安全 │ │ - 数据安全 │ │ - 恶意软件防护 │ │ │ │ 3. 物理安全(Physical Security) │ │ - 访问控制 │ │ - 监控 │ │ - 环境保护 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### ICS 与 IT 安全区别 | 方面 | IT 系统 | ICS 系统 | |------|---------|----------| | **首要目标** | 机密性 | 可用性/安全性 | | **更新策略** | 定期更新 | 极少更新(怕影响生产) | | **系统寿命** | 3-5 年 | 10-30 年 | | **实时性** | 不关键 | 关键(毫秒级) | | **协议** | TCP/IP | 专有工业协议 | | **风险** | 数据丢失 | 人身伤害、环境灾难 | | **测试窗口** | 灵活 | 受限(停机窗口) | ### ICS 安全挑战 ``` ┌─────────────────────────────────────────────────────────────┐ │ ICS 安全挑战 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 历史遗留: │ │ ├── 老旧系统(10-30 年) │ │ ├── 无安全设计 │ │ └── 无法打补丁 │ │ │ │ 协议缺陷: │ │ ├── 无认证 │ │ ├── 无加密 │ │ └── 明文传输 │ │ │ │ 运营限制: │ │ ├── 不能停机 │ │ ├── 测试窗口有限 │ │ └── 变更管理严格 │ │ │ │ 技能缺口: │ │ ├── IT 人员不懂 OT │ │ ├── OT 人员不懂安全 │ │ └── 复合型人才稀缺 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 工业控制系统架构 ### 典型 ICS 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 典型 ICS 架构(Purdue 模型) │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Level 4: 企业层 │ │ ├── ERP 系统 │ │ ├── 邮件系统 │ │ └── 办公网络 │ │ │ │ Level 3: 运营层 │ │ ├── MES(制造执行系统) │ │ ├── HMI(人机界面) │ │ └── 历史数据库 │ │ │ │ Level 2: 控制层 │ │ ├── SCADA 系统 │ │ ├── DCS 系统 │ │ └── 工程师站 │ │ │ │ Level 1: 现场层 │ │ ├── PLC(可编程逻辑控制器) │ │ ├── RTU(远程终端单元) │ │ └── 传感器/执行器 │ │ │ │ Level 0: 物理层 │ │ ├── 电机 │ │ ├── 阀门 │ │ └── 仪表 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### ICS 组件 **主要组件**: ``` ┌─────────────────────────────────────────────────────────────┐ │ ICS 主要组件 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ PLC(可编程逻辑控制器): │ │ ├── 工业计算机 │ │ ├── 执行逻辑控制 │ │ ├── 厂商:Siemens、Allen-Bradley、Schneider │ │ └── 风险:逻辑篡改、固件攻击 │ │ │ │ RTU(远程终端单元): │ │ ├── 远程数据采集 │ │ ├── 广域分布 │ │ └── 风险:通信劫持、未授权访问 │ │ │ │ HMI(人机界面): │ │ ├── 操作员界面 │ │ ├── 监控和控制 │ │ └── 风险:凭证窃取、恶意操作 │ │ │ │ 工程师站: │ │ ├── 编程和配置 │ │ ├── 高权限访问 │ │ └── 风险:配置篡改、后门植入 │ │ │ │ 历史数据库: │ │ ├── 过程数据存储 │ │ ├── 趋势分析 │ │ └── 风险:数据篡改、信息泄露 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## ICS 渗透测试规则 ### 安全原则 **ICS 渗透测试首要原则**: ``` ┌─────────────────────────────────────────────────────────────┐ │ ICS 渗透测试安全原则 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 第一原则:不伤害(Do No Harm) │ │ ├── 不影响生产 │ │ ├── 不改变设备状态 │ │ ├── 不发送控制命令 │ │ └── 只读测试优先 │ │ │ │ 测试限制: │ │ ├── 禁止 DoS 测试 │ │ ├── 禁止固件更新测试 │ │ ├── 禁止逻辑修改测试 │ │ └── 禁止物理访问测试(除非授权) │ │ │ │ 测试窗口: │ │ ├── 计划停机窗口 │ │ ├── 维护窗口 │ │ └── 非生产时间 │ │ │ │ 应急准备: │ │ ├── 回滚计划 │ │ ├── 紧急联系人 │ │ └── 快速恢复程序 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 测试范围 **允许的测试**: ``` ✓ 网络架构分析 ✓ 协议分析(被动) ✓ 配置审计 ✓ 凭证测试(非生产系统) ✓ 日志分析 ✓ 策略审查 ✓ 物理安全评估(授权) ``` **禁止的测试**: ``` ✗ 主动协议 fuzzing ✗ 控制命令发送 ✗ 固件修改 ✗ 逻辑程序修改 ✗ DoS/DDoS测试 ✗ 未授权的物理访问 ✗ 生产系统凭证暴力破解 ``` --- ## 工业协议安全 ### 常见工业协议 **协议对比**: | 协议 | 用途 | 端口 | 安全特性 | |------|------|------|----------| | **Modbus** | 通用工业 | 502 | 无认证、明文 | | **DNP3** | 电力/水务 | 20000 | 可选认证 | | **IEC 61850** | 电力 | 102 | 可选安全 | | **PROFINET** | 制造业 | 34962-34964 | 有限安全 | | **EtherNet/IP** | 制造业 | 44818 | 有限安全 | | **OPC** | 数据交换 | 135, 49320 | 依赖 Windows | | **BACnet** | 楼宇自控 | 47808 | 有限安全 | | **S7** | Siemens PLC | 102 | 有限认证 | ### Modbus 安全测试 **Modbus 协议分析**: ```bash # Nmap Modbus 扫描 $ nmap -p 502 --script modbus-info <target> $ nmap -p 502 --script modbus-discover <target> # Modbus 枚举 $ nmap -p 502 --script modbus-discover.nse \ --script-args='modbus-discover.range=0-100' <target> # 使用 modbus-cli $ pip install modbus-cli $ modbus read <target> 0 1 10 # 读取保持寄存器 $ modbus write <target> 0 1 10 1234 # 写入(危险!) # 使用 pymodbus $ python3 >>> from pymodbus.client.sync import ModbusTcpClient >>> client = ModbusTcpClient('192.168.1.100') >>> client.connect() >>> result = client.read_holding_registers(0, 10, unit=1) >>> print(result.registers) ``` **Modbus 测试要点**: ``` ┌─────────────────────────────────────────────────────────────┐ │ Modbus 安全测试要点 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 信息收集: │ │ ├── 枚举线圈(Coils) │ │ ├── 枚举离散输入(Discrete Inputs) │ │ ├── 枚举输入寄存器(Input Registers) │ │ └── 枚举保持寄存器(Holding Registers) │ │ │ │ 风险评估: │ │ ├── 识别关键寄存器 │ │ ├── 识别控制点 │ │ └── 评估未授权访问影响 │ │ │ │ 安全建议: │ │ ├── 网络隔离 │ │ ├── 访问控制 │ │ └── 协议加密(Modbus Security) │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### S7 协议测试(Siemens) ```bash # Nmap S7 扫描 $ nmap -p 102 --script s7-info <target> # 使用 snap7 $ git clone https://github.com/gijzelaerr/python-snap7 $ pip install python-snap7 # Python 脚本 $ python3 >>> import snap7 >>> client = snap7.client.Client() >>> client.connect('192.168.1.100', 0, 1) >>> data = client.db_read(1, 0, 100) # 读取 DB 块 >>> print(data) # 枚举 PLC 信息 $ nmap -p 102 --script s7-enumerate <target> ``` ### DNP3 安全测试 ```bash # DNP3 扫描 $ nmap -p 20000 --script dnp3-info <target> # 使用 dnp3-scan $ git clone https://github.com/automayt/dnp3-scan # DNP3 协议分析 $ wireshark -Y "dnp3" capture.pcap # 测试要点: # - 枚举数据点 # - 测试未授权控制 # - 测试时间同步攻击 ``` --- ## PLC 安全测试 ### PLC 信息收集 **PLC 识别**: ```bash # Nmap PLC 扫描 $ nmap -sV -p 102,502,44818 <target> # 使用 plcscan $ git clone https://github.com/360netlab/plcscan $ python3 plcscan.py -t <target> # 使用 shodan $ shodan search "Siemens PLC" $ shodan search "Allen-Bradley PLC" ``` **PLC 厂商特定信息**: ``` ┌─────────────────────────────────────────────────────────────┐ │ 主要 PLC 厂商 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Siemens(西门子): │ │ ├── 协议:S7 Comm │ │ ├── 端口:102 │ │ ├── 工具:TIA Portal、Step7 │ │ └── 风险:S7 协议漏洞 │ │ │ │ Allen-Bradley(罗克韦尔): │ │ ├── 协议:EtherNet/IP │ │ ├── 端口:44818 │ │ ├── 工具:Studio 5000 │ │ └── 风险:CIP 协议漏洞 │ │ │ │ Schneider(施耐德): │ │ ├── 协议:Modbus │ │ ├── 端口:502 │ │ ├── 工具:Unity Pro │ │ └── 风险:Modbus 无认证 │ │ │ │ Mitsubishi(三菱): │ │ ├── 协议:MC Protocol │ │ ├── 端口:5007 │ │ └── 风险:协议漏洞 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### PLC 逻辑分析 **梯形图分析**: ``` ┌─────────────────────────────────────────────────────────────┐ │ PLC 逻辑安全分析 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 逻辑提取: │ │ ├── 上传 PLC 程序(需要权限) │ │ ├── 反编译字节码 │ │ └── 分析梯形图 │ │ │ │ 风险分析: │ │ ├── 识别安全关键逻辑 │ │ ├── 识别急停逻辑 │ │ ├── 识别联锁逻辑 │ │ └── 识别报警逻辑 │ │ │ │ 篡改风险: │ │ ├── 逻辑修改 │ │ ├── 参数修改 │ │ ├── 定时修改 │ │ └── 后门植入 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## SCADA 系统安全 ### SCADA 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ SCADA 系统架构 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 调度中心: │ │ ├── 主站系统 │ │ ├── 操作员工作站 │ │ └── 历史服务器 │ │ │ │ 通信网络: │ │ ├── 专线 │ │ ├── 无线 │ │ └── 卫星 │ │ │ │ 远程站点: │ │ ├── RTU │ │ ├── PLC │ │ └── 智能仪表 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### SCADA 软件安全 **常见 SCADA 软件**: | 软件 | 厂商 | 行业 | |------|------|------| | **WinCC** | Siemens | 制造业 | | **FactoryTalk** | Rockwell | 制造业 | | **Citect** | Schneider | 基础设施 | | **Ignition** | Inductive Automation | 通用 | | **Wonderware** | AVEVA | 制造业 | | **ClearSCADA** | Schneider | 基础设施 | **SCADA 安全测试**: ``` ┌─────────────────────────────────────────────────────────────┐ │ SCADA 安全测试要点 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 访问控制: │ │ ├── 用户认证测试 │ │ ├── 权限提升测试 │ │ └── 会话管理测试 │ │ │ │ 通信安全: │ │ ├── 协议分析 │ │ ├── 加密验证 │ │ └── 重放攻击测试 │ │ │ │ HMI 安全: │ │ ├── 命令注入测试 │ │ ├── 脚本执行测试 │ │ └── 文件上传测试 │ │ │ │ 数据安全: │ │ ├── 历史数据访问 │ │ ├── 配置数据保护 │ │ └── 报警数据完整性 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## DCS 系统安全 ### DCS 架构 **DCS 与 SCADA 区别**: | 特性 | DCS | SCADA | |------|-----|-------| | **应用** | 连续过程(化工、石油) | 离散过程(电力、水务) | | **架构** | 分布式控制 | 集中监控 | | **实时性** | 高 | 中 | | **规模** | 单厂/装置 | 广域分布 | ### DCS 安全测试 ``` ┌─────────────────────────────────────────────────────────────┐ │ DCS 安全测试要点 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 控制器安全: │ │ ├── 固件版本检查 │ │ ├── 配置审计 │ │ └── 访问控制验证 │ │ │ │ 操作站安全: │ │ ├── 操作系统加固 │ │ ├── 应用白名单 │ │ └── 外设控制 │ │ │ │ 网络隔离: │ │ ├── 控制网与管理网隔离 │ │ ├── 安全域划分 │ │ └── 单向网关验证 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 工控网络架构安全 ### 网络分区 **Purdue 模型分区**: ``` ┌─────────────────────────────────────────────────────────────┐ │ 工控网络分区 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 企业网(Level 4-5): │ │ ├── 办公网络 │ │ ├── 互联网接入 │ │ └── 风险:高 │ │ │ │ DMZ(Level 3.5): │ │ ├── 历史服务器 │ │ ├── 跳板机 │ │ └── 风险:中 │ │ │ │ 监控网(Level 3): │ │ ├── HMI │ │ ├── 工程师站 │ │ └── 风险:中高 │ │ │ │ 控制网(Level 1-2): │ │ ├── PLC/RTU │ │ ├── 控制器 │ │ └── 风险:低(应隔离) │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 工业防火墙 **防火墙规则审计**: ``` ┌─────────────────────────────────────────────────────────────┐ │ 工业防火墙规则审计 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 检查要点: │ │ ├── 允许的协议和端口 │ │ ├── 源/目的地址限制 │ │ ├── 深度包检测(DPI) │ │ └── 白名单配置 │ │ │ │ 常见错误: │ │ ├── 允许任意到 PLC 的访问 │ │ ├── 允许所有 Modbus 功能码 │ │ ├── 未启用协议验证 │ │ └── 规则过于宽松 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## ICS 渗透实战案例 ### 案例背景 **目标**:某水处理厂 **系统**:SCADA + PLC **测试范围**:监控网、控制网(只读测试) ### 测试过程 #### 第 1 阶段:信息收集 ```bash # 网络扫描 $ nmap -sS -sV -O 192.168.10.0/24 发现: 192.168.10.10:502 - Modbus TCP (PLC) 192.168.10.20:102 - S7 Comm (Siemens PLC) 192.168.10.30:44818 - EtherNet/IP (Allen-Bradley) 192.168.10.100:80 - HMI Web Interface 192.168.10.101:49320 - OPC Server ``` #### 第 2 阶段:协议分析 ```bash # Modbus 枚举 $ nmap -p 502 --script modbus-discover 192.168.10.10 发现: - 可读取保持寄存器 - 可读取线圈状态 - 无认证保护 # S7 信息收集 $ nmap -p 102 --script s7-info 192.168.10.20 发现: - PLC 型号:S7-1200 - 固件版本:V4.0 - 受保护:否 ``` #### 第 3 阶段:HMI 测试 ```bash # Web 接口测试 $ curl http://192.168.10.100/admin # 默认凭证测试 admin/admin → 成功登录! # 发现功能: - 查看实时数据 - 查看历史趋势 - 修改设定点 - 启停设备 ``` #### 第 4 阶段:风险评估 ``` ┌─────────────────────────────────────────────────────────────┐ │ 发现的风险 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 严重风险: │ │ ├── HMI 默认凭证 │ │ ├── PLC 无认证访问 │ │ └── 控制网与企业网未隔离 │ │ │ │ 高危风险: │ │ ├── Modbus 协议无加密 │ │ ├── 无操作审计日志 │ │ └── 远程访问无 MFA │ │ │ │ 中危风险: │ │ ├── 操作系统未更新 │ │ ├── 防病毒未部署 │ │ └── 备份策略不完善 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 漏洞汇总 | 漏洞 | 系统 | 风险等级 | CVSS | |------|------|----------|------| | HMI 默认凭证 | HMI | 严重 | 9.8 | | Modbus 无认证 | PLC | 严重 | 9.1 | | S7 协议未保护 | PLC | 高危 | 8.1 | | 网络未隔离 | 网络 | 高危 | 8.6 | | 无操作审计 | SCADA | 中危 | 5.3 | | 系统未更新 | HMI | 中危 | 6.1 | ### 修复建议 ``` 短期(1-2 周): 1. 修改所有默认凭证 2. 启用 PLC 访问保护 3. 部署网络隔离 4. 启用操作日志 中期(1-3 月): 1. 部署工业防火墙 2. 实施协议加密 3. 部署 SIEM 监控 4. 建立备份策略 长期(3-6 月): 1. 建立 ICS 安全体系 2. 实施纵深防御 3. 建立应急响应 4. 定期安全评估 ``` --- ## ICS 安全最佳实践 ### 测试清单 ``` ┌─────────────────────────────────────────────────────────────┐ │ ICS 安全测试清单 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 架构评估: │ │ □ 网络分区评估 │ │ □ 防火墙规则审计 │ │ □ 远程访问评估 │ │ □ 无线安全评估 │ │ │ │ 设备评估: │ │ □ PLC 配置审计 │ │ □ HMI 安全评估 │ │ □ 工程师站评估 │ │ □ 服务器加固评估 │ │ │ │ 协议评估: │ │ □ Modbus 安全评估 │ │ □ S7 协议评估 │ │ □ DNP3 安全评估 │ │ □ OPC 安全评估 │ │ │ │ 管理评估: │ │ □ 访问控制策略 │ │ □ 变更管理流程 │ │ □ 应急响应计划 │ │ □ 安全意识培训 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 工具推荐 **ICS 安全工具**: | 工具 | 用途 | 链接 | |------|------|------| | **Nmap** | 网络扫描 | nmap.org | | **Wireshark** | 协议分析 | wireshark.org | | **Shodan** | 设备搜索 | shodan.io | | **GRFICS** | ICS 模拟 | GitHub | | **Firmalyzer** | 固件分析 | GitHub | **商业工具**: | 工具 | 厂商 | 用途 | |------|------|------| | **Claroty** | Claroty | ICS 监控 | | **Nozomi** | Nozomi Networks | ICS 安全 | | **Dragos** | Dragos | ICS 威胁情报 | | **Tenable.ot** | Tenable | ICS 漏洞管理 | --- ## 总结与思考 ### 核心要点回顾 1. **ICS 安全首要原则是不伤害**,测试必须谨慎 2. **协议安全是核心问题**,大多数工业协议无认证加密 3. **网络隔离是关键**,控制网必须与企业管理网隔离 4. **老旧系统是挑战**,无法更新需要补偿性控制 5. **OT 与 IT 融合**,需要跨领域安全团队 ### 深入思考 **问题 1:ICS 安全与 IT 安全的最大区别?** 我的观点: - 安全优先级不同(可用性>机密性) - 更新策略不同(不能随意打补丁) - 风险后果不同(人身安全 vs 数据丢失) - 测试限制不同(不能影响生产) **问题 2:ICS 安全的未来趋势?** 我预测: - IT/OT 融合加速 - 零信任架构引入 - AI/ML 用于异常检测 - 供应链安全重视 **问题 3:如何建立 ICS 安全体系?** 我建议: - 风险评估先行 - 纵深防御策略 - 持续监控检测 - 应急响应准备 ### 实战建议 **给新手的建议**: ``` 1. 学习基础知识 - 工业控制原理 - 工业协议 - 安全标准 2. 搭建实验环境 - 开源 PLC 模拟 - SCADA 软件 - 网络隔离环境 3. 掌握工具 - Nmap、Wireshark - 协议分析工具 - 漏洞扫描工具 4. 持续学习 - 关注 ICS 安全新闻 - 学习新协议 - 参与社区 ``` **给企业的建议**: ``` 1. 建立安全体系 - 安全策略 - 网络分区 - 访问控制 2. 技术控制 - 工业防火墙 - 协议加密 - 监控检测 3. 管理控制 - 变更管理 - 供应商管理 - 应急响应 4. 持续改进 - 定期评估 - 漏洞管理 - 安全培训 ``` --- ## 参考资料 ### 学习资源 | 资源 | 类型 | 链接 | |------|------|------| | **ICS-CERT** | 威胁情报 | https://us-cert.cisa.gov/ics | | **Dragos ICS Security** | 资源 | https://dragos.com | | **SANS ICS Security** | 培训 | https://sans.org/ics | | **ISA/IEC 62443** | 标准 | ISA | ### 工具资源 | 工具 | 官网 | 用途 | |------|------|------| | **Nmap** | https://nmap.org | 网络扫描 | | **Wireshark** | https://wireshark.org | 协议分析 | | **Shodan** | https://shodan.io | 设备搜索 | | **GRFICS** | GitHub | ICS 模拟 | ### 书籍推荐 | 书名 | 作者 | 难度 | |------|------|------| | 《ICS/SCADA Security》 | various | 入门 | | 《Practical ICS Security》 | various | 实战 | | 《Industrial Network Security》 | various | 进阶 | --- *365 天信息安全技术系列 | Day 225 | 工业控制系统安全渗透测试 | 字数:约 23,000 字*
myh0st
2026年4月13日 23:20
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码