1. 为什么是工控安全:我踏入这个领域的起点和整体认知
1.1 工控安全到底是什么
工控安全,全称是工业控制系统安全,英文圈习惯叫ICS Security,也有人直接叫OT Security。它覆盖的对象包括电力、水务、石化、冶金、轨道交通、制造业、楼宇自控这些行业里的控制系统——PLC、DCS、SCADA、RTU,以及支撑这些系统的上位机、工程师站、HMI和历史数据库。为什么值得单独学?因为在传统IT里,我们默认关心机密性,但在工控现场,第一目标是可用性和人的安全。一台服务器挂了可以重启,一条产线停了可能带来设备损坏、环境污染甚至人身伤害。这个优先级的颠倒,决定了后面所有的技术判断:补丁不能随便打,杀软不能随便装,扫描不能随便扫。这不是"把IT安全的方法搬到OT",而是要重新理解现场。
我刚接触工控安全时最大的困惑在于:明明都是电脑和网络,为什么大家讲起来像两门学科?后来才明白,因为OT世界里混着一堆"活了二十年还不退休"的老设备、私有协议、串口组网,再加上工程师习惯于"能跑就别动",整个系统的安全脉络和互联网完全不是一回事。这也是这篇文章存在的意义:把这条交叉学科的学习主线和坑位梳理清楚,让想入行的你少走我走过的弯路。
1.2 我为什么要从传统安全转向工控
我原来是做Web渗透和应用安全测试的,每天和注入、文件上传、逻辑越权打交道。做久了有个很直接的困惑:漏洞报告写完,客户改完上线,然后呢?边界变得很快,今天修好的问题明天换个框架又出现,和真实世界的物理结果却很难对上。后来一次偶然机会,帮朋友看一套小型水处理系统的上位机,发现上位机软件本身有一个未授权访问接口,而那台上位机能直接下发阀门控制指令。那时候我意识到——工控安全的攻击后果是可以"看见"的,它是一个模拟世界和物理世界的交叉路口。
当然,转方向不是因为情怀,而是这个方向确实有自己的技术纵深:协议分析、固件逆向、嵌入式安全、OT网络架构、IEC 62443体系、事故调查和应急响应,每个子方向都够吃好几年。而且IT与OT融合是大趋势,企业把ERP、MES和车间网络拉通之后,原来"物理隔离"的护城河正在消失,安全需求只会多不会少。
不过我也要泼一盆冷水:别以为懂点IT安全就能直接上手工控渗透。工控现场有大量的"历史包袱",很多协议连最基本的分片重组机制都没有,很多PLC的内存保护完全依赖物理隔离。这套逻辑需要在另一个知识体系里从头学。我前半年就是吃了这个亏,以为会几个攻击脚本就算入行了,结果到了实验室连Modbus报文的MBAP头都解释不清。
2. 学习地图第一站:先补足工业现场的知识底座
2.1 从通用网络到工业现场:先搞懂"网线那头接的是什么"
工控安全学习的第一步,不是去下载漏洞库,而是先搞清楚工业现场的网络形态。传统IT网络通常是一个分层的以太网结构,交换机、路由器、防火墙、服务器,层次清晰。工业现场则要混乱得多:既有基于以太网的工业协议,也有大量还在服役的RS-232/RS-485串行总线,还有CAN、HART这种专用接口。不要嫌这些老掉牙,真实电厂水厂里它们依旧在跑。
我给自己定了一个学习顺序:先理解"主从"、"轮询"、"实时性"这三个词。Modbus的Master/Slave,DNP3的Outstation/Master,Profinet的实时数据交换,本质上都是"谁先主动发,谁被动应答"的问题。做流量分析时,你必须能回答:这条报文是谁发的,是周期轮询还是事件触发,延迟要求是多长。没有这个时间维度的意识,光会看协议结构跟没学差不多。
工业控制系统的通信有个关键概念叫"确定性",即特定指令必须在规定时间范围内送达,否则会引起控制逻辑偏差。这也是为什么OSI模型里,很多工业实时协议直接跳过TCP/UDP,跑在数据链路层上,目的就是减少协议栈带来的不确定性。理解这一点后再看EtherCAT、Profinet IRT这类协议,就会明白它们为什么长得那么特殊,也就不会再用"这端口怎么没开"的IT思维去衡量OT设备了。
2.2 认识工控系统的四大件和两个常被忽略的角色
PLC、DCS、SCADA、RTU、HMI、现场仪表,这些名词是工控安全的"四菜一汤",不把它们分清,后面看任何报告都会像看天书。
| 名词 | 全称 | 一句话理解 | 安全视角的要点 |
|---|---|---|---|
| PLC | 可编程逻辑控制器 | 现场级的小型"嵌入式电脑",可编程执行I/O逻辑 | 攻击面:编程软件、下载口、固件后门 |
| DCS | 分散控制系统 | 面向大型连续工艺(化工、电力)的分布式调节系统 | 侧重高可用与冗余,修改逻辑影响面大 |
| SCADA | 数据采集与监控系统 | 集中监控多个远程站点,常见于电力、水务、管道 | 大量RTU通信,协议多样,通常远程暴露 |
| RTU | 远程终端单元 | 部署在远端现场的采集与执行装置 | 常走串口或无线,能量受限,补丁困难 |
| HMI | 人机界面 | 工程师/操作员面前的画面软件 | 上位机漏洞可直接影响现场操作 |
| 现场仪表 | 传感器、阀门、变频器等 | 被控制的对象 | 采集链路被篡改时,操作员看到的是"假数据" |
安全工作者常犯一个错误:把DCS当成大号的PLC,把SCADA当成监控大屏。实际上,DCS更强调实时连续控制,SCADA更强调远程分散采集,它们的网络拓扑、通信协议和风险模型差异非常大。我建议初学者做一张自己的"设备认知表",每接触一个新环境就补充设备类型、端口、协议、默认凭据、已知漏洞,这是后面做资产梳理的基本功。
2.3 安全模型的"第一性原理":从Purdue模型理解边界与信任
工控安全里最常被引用的模型就是Purdue企业参考架构,也就是Purdue模型。它把工业企业的网络大致分成几个层次:第0层是现场传感器和执行器,第1层是PLC等基本控制设备,第2层是监控与调度,第3层是站点级别的管理与历史数据,第4层是ERP等企业IT系统,再往上就是和互联网连接的边界。这个模型的意义在于让你理解——OT系统的安全边界不是"防火墙把内外网隔开",而是每一层之间的信任关系都要重新定义。
实际操作中,我见过大量工控系统把PLC、HMI、工程师站放在同一个扁平网段里,一层二层不分,生产网和办公网只用一台傻瓜交换机连通。这时候你即使拿到了内网一台普通PC的权限,也可能直接访问到PLC的编程口。这也是我在做风险评估时最先关注的点:不是哪个漏洞多严重,而是网络分区和访问控制是否真的存在。
IEC 62443(工控安全领域的国际标准)就是围绕这种分层思想展开的,它提出了区域和通道的概念,要求把具有相似安全要求的资产划在同一区域内,区域之间通过受控的通道通信。它还定义了功能安全等级,从SL 1到SL 4,逐级对应从"偶然性触发"到"恶意专业人员攻击"的对抗强度。对初学者来说,不用一开始背标准条文,先把"区域隔离、纵深防御、最小权限、安全生命周期"这四个词理解透就够了。我自己的学习方法是:每看一个安全事故报告,就拿出Purdue模型画一遍攻击路径在哪个层,慢慢地就能建立直觉。
3. 学习地图第二站:协议分析与流量分析实操
3.1 从Modbus TCP开始:最友好的工业协议入门
工控协议一大堆,我强烈建议入门只盯一个:Modbus TCP。原因很朴素——它最简单、资料最多、模拟器支持最好,而且足够"没安全感"。Modbus诞生于1979年,最初是串口协议,后来扩展到TCP/IP上,它的报文结构基本没有加密和认证的概念。
一个Modbus TCP报文由两部分组成:MBAP头加上PDU。MBAP头是7个字节:事务标识符(2字节)、协议标识符(2字节,0代表Modbus)、后续长度(2字节)、单元标识符(1字节,相当于从站地址)。PDU里最关键的是功能码,比如0x01读线圈、0x03读保持寄存器、0x05写单线圈、0x06写单寄存器。理解了这个结构,你在Wireshark里看到一条modbus报文,基本就能自己"翻译"出它想干什么了。
我入门时做了一个笨办法:把常见功能码抄在一张便签上贴在显示器旁边,然后手动构造Modbus报文发给模拟PLC,再用Wireshark抓包核对。建议你也这么干,因为亲手构造过一个字节序列,你对协议的理解深度会远超只看教程。
3.2 常用工控协议速查:一张表看清核心差异
学完Modbus后,你可以按"同一张表"的框架去横向学其他协议。我最初自学时整理的对照如下:
| 协议 | 传输层/端口 | 常见行业 | 关键特征 | 攻击面侧重 |
|---|---|---|---|---|
| Modbus TCP | TCP 502 | 通用工业、楼宇 | 无认证、明文,功能码简单 | 读写线圈/寄存器、广播 |
| DNP3 | TCP 20000 / 串口 | 电力、油气、水务 | 事件轮询、时间戳、分片组 | 主站/从站欺骗、对象点篡改 |
| IEC 60870-5-104 | TCP 2404 | 电力调度 | 遥测遥信遥控 | 遥控指令、链路崩溃 |
| OPC UA | TCP 4840(默认) | 制造、MES集成 | 面向对象的信息模型,可加密 | 安全配置不当、证书信任 |
| PROFINET | TCP 34962-34964 | 汽车、自动化产线 | 实时循环IO数据 | 设备身份欺骗、实时数据篡改 |
| EtherNet/IP | TCP 44818、UDP 2222 | 离散控制、物流 | CIP协议对象模型 | 显式/隐式消息滥用 |
这张表不是要你背端口号,而是帮你建立横向对比的习惯。我自己的技巧是:每学一个新协议,都回答五个问题——它跑在什么传输层、有没有认证、有没有加密、数据是轮询还是事件触发、典型功能码或服务号是什么。回答完这五个问题,这个协议的安全画像基本就出来了。
3.3 抓包与报文解读实操:一个从模拟到复现的完整案例
这里我给出一个我反复使用的实验组合:用OpenPLC作为模拟PLC,在另一个终端用Modbus客户端去读写,Wireshark穿在中间抓包。如果不想装OpenPLC,也可以用Conpot这个蜜罐项目直接模拟Modbus服务。
Wireshark里抓Modbus非常省心,直接输入显示过滤器:
modbus.tcp想看某类功能码更细一点:
modbus.tcp.func_code == 5如果你抓到一条写线圈报文,会看到前7个字节的MBAP头里,长度字段的值通常是0x0006,这是因为该条报文从单元标识符开始到PDU结束是6个字节:单元标识符占1字节、功能码占1字节、输出地址占2字节、输出值占2字节。手动算一遍这个长度,比看十遍文档都管用。
要自己发一条Modbus写线圈指令,我习惯用Scapy直接构造。关键代码如下:
from scapy.all import * # 构造一个写单线圈报文:事务ID=1,协议ID=0,长度=6,单元ID=1 # 功能码=0x05(写单线圈),输出地址=0x0000,输出值=0xFF00(ON) mbap = bytes([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01]) pdu = bytes([0x05, 0x00, 0x00, 0xff, 0x00]) payload = mbap + pdu pkt = IP(dst="192.168.56.20") / TCP(sport=12345, dport=502) / Raw(payload) send(pkt, verbose=False)发送之后去模拟PLC对应点位看输出状态,同时用Wireshark确认报文,这一步走通后,你对Modbus的掌控感会立刻上一个台阶。别急着升级到复杂攻击,先把"读、写、置位、复位"这四个动作练熟,你就已经超越了绝大多数只会跑工具的人。
注意:实验环境务必使用专用虚拟机网络,比如VirtualBox的Host-Only网段,不要把报文发到真实生产网段上。每次实验前确认目标地址是模拟设备,不是实际业务设备。
4. 学习地图第三站:搭建一个能动手的实验环境
4.1 没有真实PLC的起步方案:纯虚拟化组合
工控安全有个门槛——市面上真实PLC和HMI都不便宜,初学者一听到"必须买设备"容易劝退。但以我实际经验看,纯软件环境足够支撑你走过前八个月的学习,关键是选对组合。
我建议的最小实验架构是:一台VMware或VirtualBox虚拟机做攻击机(装Kali或Ubuntu),一台虚拟机跑OpenPLC作为"PLC",再用Conpot跑一个蜜罐收集恶意流量样本。网络设置为Host-Only模式,与真实网络物理隔离。OpenPLC以Docker方式启动最省事:
docker pull openplcproject/openplc docker run -it --network host openplcproject/openplc如果你只是想快速抓包看Modbus流量,用Conpot更轻:
docker pull conpot/docker-conpot docker run --rm -it -p 502:102 conpot/docker-conpot注意端口映射:这里把宿主的502映射到容器内的102,是因为Conpot内部默认用102端口模拟Modbus。这个细节当年卡了我一晚上,特此记录。虚拟化方案的价值不只是省钱,它让你能随时重置实验状态、截图保存,也方便在文章里复盘。我强烈建议给每个实验写一段STEPS日志,写下目标、环境、命令、结果,半年后回头看全是宝藏。
4.2 从小模拟器到真实硬件的进阶路径
当你在模拟环境里能把协议读、写、分析都走通,就可以考虑上真实硬件了。真实硬件与模拟器最大的区别在三点:一是很多PLC的固件和功能码实现并不完全符合标准,二是有真实的I/O接线和时序,三是有启动、停止、复位这些操作会带来真实状态变化。我第一台设备是淘的一台二手小型PLC,附带一个按钮和一个指示灯,写第一段梯形图让灯受Modbus控制。灯亮的那一刻,我理解了什么叫"物理世界响应"。
进阶实验可以往两个方向走:一个是给真实PLC接入小负载,比如通过继电器控制小水泵或直流电机(注意电工规范和安全);另一个是搭一台真实的HMI上位机软件,与PLC建立通信,观察上位机与下位机的交互流量。若资金有限,用树莓派加采集板也能凑合出一套低成本实验台。关键不是硬件多贵,而是你有没有形成一条"现场设备—控制器—上位机—网络—攻击机"的完整链路。有这一整条链路,你的学习才能从"单点漏洞"走向"整网研判"。
4.3 动手实验:一次对模拟PLC发起"写线圈"攻击的完整操作
这里演示一个最经典也最能说明问题的实验:通过Modbus向OpenPLC写入一个线圈,控制模拟产线的"启动开关"。整个过程分五步:环境启动、资产发现、读取数据、写入数据、结果验证。
先启动OpenPLC容器,并确认Modbus端口在监听:
nc -z 192.168.56.20 502 echo $?然后用Nmap确认端口和协议状态(这里只建议对你自己实验室的IP做扫描):
nmap -sT -p 502 192.168.56.20用Python的pymodbus读取保持寄存器和线圈:
from pymodbus.client import ModbusTcpClient client = ModbusTcpClient('192.168.56.20', port=502) client.connect() result = client.read_coils(0, 8, slave=1) print(result.bits[:8])确认默认状态后,构造写单线圈请求,把线圈0置为ON:
client.write_coil(0, True, slave=1)回到OpenPLC模拟器界面或者HMI上看,你会发现对应开关已经变成"启动"状态,且没有任何认证和日志记录。这就是Modbus明文通信的典型风险:攻击者只要能到达PLC,就等于拿到了遥控器。整个过程不需要利用任何"高级漏洞",完全依赖协议自身的缺陷,这正是工控安全入门的重要直觉——在OT世界里,最致命的往往不是0day,而是几十年没人设防的默认信任。
写完这一步,我建议你再抓一次包,对比读请求和写请求的差异,彻底弄懂MBAP头的长度字段和功能码含义。做完这个闭环,你的实操自信会完全不同。
5. 学习地图第四站:漏洞分析与固件方向
5.1 工控漏洞的"脾气":为什么和Web漏洞不一样
搞定协议和应用层后,你会发现工控漏洞的形态和Web漏洞差异巨大。Web漏洞大多是注入、越权、逻辑错误,属于"业务层"问题;而工控漏洞往往出现在固件、协议栈、编程软件、上位机组件里,属于"系统层"和"嵌入式"问题。例如某些PLC的私有编程协议里存在硬编码调试口令,某些HMI组件存在内存破坏可被远程触发,某些传感器固件在网络模块里有提权路径。这些漏洞的特点是:生命周期长、公开POC少、利用门槛高,但一旦利用成功,直接影响现场控制。
初学者看漏洞不要只盯CVE编号,我建议按"资产-入口-影响"三个维度拆解:这个漏洞长在哪个设备上,可以通过哪些协议或服务触发,触发后对现场设备的状态控制权有多大。用这套框架去读ICS-CERT或厂商的漏洞公告,你会发现很多漏洞其实在"怎么入侵"之外,还藏着"怎么写入安全基线"的信息。分析漏洞报告时我常做的一个练习是:把报告还原成一条攻击链,标注每一步对应Purdue模型的哪一层,再考虑如果我是蓝方,该在哪一层阻断。
5.2 固件分析入门路线:从提取到关键路径识别
固件分析是工控安全里最有纵深的方向,也是很多人慕名入坑又止步的地方。入门路线不需要一步到位搞逆向,可以按这个顺序推进:先学会提取和浏览固件,再学会定位关键文件,最后才谈得上逆向驱动或漏洞挖掘。
提取方面,最常用的工具是binwalk。拿到一个路由器、PLC通信模块或HMI设备的固件镜像后:
binwalk -Me firmware.bin这个命令会把能识别的文件系统自动解包出来。然后结合file、strings、find等命令快速浏览:
file squashfs-root/bin/* strings squashfs-root/etc/passwd | head -20初学者可以给自己布置一个小任务:从任一开源的嵌入式固件里找到Web管理界面的配置文件、默认口令或启动脚本。能完成这个任务,说明你已经具备"在固件里找脆弱点"的基本能力。之后再学习如何用QEMU将固件启动起来,用主机网络访问设备的管理服务,通常会遇到文件系统路径不对、硬件依赖缺失等问题,但这些排查过程本身就是嵌入式方向最好的训练。
注意:分析固件时如果发现未公开漏洞,请勿直接公开披露或编写带利用代码的教程。正确的做法是负责任地向厂商或相关协调机构报告。初学者参与开源社区或厂商的漏洞赏金项目时,一定要先确认授权范围。
5.3 漏洞利用之外:风险评估与报告才是吃饭的手艺
这一节可能和很多人的预期相反,但我在工控安全行业摸爬滚打下来的感受是:真正让一个从业者值钱的,不是会多少种攻击手法,而是能不能把技术发现翻译成管理层听得懂的风险语言。
工控安全的风险评估需要同时考虑攻击概率和业务后果。同一个漏洞发生在财务服务器和发生在化工厂DCS上,处置优先级完全不同。评分时可以借鉴CVSS,但一定要结合OT场景修正:可用性权重要上调、机密性权重要下调,还要考虑物理后果(人身伤害、环境事故、停产损失)。这就是为什么IEC 62443里反复强调"基于风险的保护"。
报告写作上,我踩过大坑——早期写的渗透报告全是技术细节,甲方分管安全的领导根本看不懂。后来我改成"先结论、后证据、再建议"的结构:首段给高危风险清单和业务影响,中间给复现步骤和流量证据,最后给分层整改建议(立即做的、短期能做的、中期规划的)。报告里不要炫技,入口是哪个IP、哪个协议、哪条报文,清楚列出来,比写十个"建议加强安全意识"有价值得多。
6. 学习路线里的暗坑:我踩过的雷与排查经验
6.1 认知层面的常见误区速查表
学习工控安全过程中,我发现自己和身边同行都反复掉进过一些坑,整理出来给大家避雷:
| 误区 | 正解 |
|---|---|
| Modbus在专网里很安全 | 专网不等于安全,一旦内网被跨,协议无认证即裸奔 |
| 直接给PLC打补丁就行 | 工控系统有连续生产要求,补丁需先测试验证,易被滞后 |
| 会用渗透工具就会工控渗透 | 不懂协议和工艺,攻击要么无效要么直接导致现场故障 |
| 工控安全就是找漏洞 | 合规、评估、应急、加固、体系建设都是主干工作 |
| 远程访问必须开大端口 | 应使用受控通道,如跳板机、白名单、会话审计 |
每一条背后都是我或者同行用事故换来的教训。尤其第二条,我曾见过某工厂为了打补丁直接重启了关键控制器,结果产线停机一整班,损失远超那台设备被攻破的理论风险。所以做工控安全的人,脑子里时刻要有两根弦:可用性优先、安全方案必须适配业务连续性。
6.2 实操环境里的雷区与合规底线
亲手搭实验环境时,有几个雷我必须重点提醒。第一,千万不要把实验网段和真实办公网、生产网接在一起,一旦抓包抓到真实业务流量,你不仅可能触发告警,还可能带来法律和职业道德风险。我自己的实验室永远跑在Host-Only或独立物理网段上。第二,扫描和流量发送前先确认目标地址,养成写靶标清单的习惯,别凭印象输入IP。第三,涉及真实PLC的测试必须拿到书面授权,即使是在自己公司,也要走内部流程。
另外,了解合规要求非常重要。国内做工控安全绕不开网络安全等级保护的思路,尤其是对关键信息基础设施的运营者,在测评、整改、预案方面有明确要求。国际上大家普遍对齐IEC 62443体系。这些合规框架的核心都不是限制你,而是帮你把安全需求说清楚。初学者不必背条文,但要养成一个习惯:任何实验和测试项目启动前,先画一条"授权边界线",边界内随便折腾,边界外一概不动。
6.3 学习节奏与自我管理:别被工具绑架
最后聊一个很现实的坑——工具泛滥。工控安全工具这两年非常多,有扫描器、协议模糊器、蜜罐、固件分析框架,打开一篇教程恨不得给你三十个工具。但我的体会是:工具只是放大镜,懂协议才是真正的眼睛。前期可以多用工具辅助理解,比如用Wireshark抓包看协议、用Scapy构造报文、用binwalk解包固件,但不要沉迷"跑通工具=学到知识"的幻觉。
我给自己定了一套学习节奏:每学一个新协议,都在自己的笔记里画一张报文结构图,并写一段能独立收发该协议最小报文的脚本;每看完一份事故报告或漏洞分析,就写三百字以上的复盘,讲清楚攻击链和防御点。坚持半年,你会发现自己不再依赖某个工具,而是能针对现场任意组合出合适的测试方法。这种能力,才是工控安全从业者真正的核心竞争力。
7. 学习资源、认证和社区:少走弯路的清单
7.1 高价值入门资料与信息源
工控安全的资料分布很散,但高质量信息源其实是固定的。书籍方面,Eric Knapp的《工业网络安全》和《Hacking Exposed: Industrial Control Systems》是两本绕不开的经典,前者讲架构和风险,后者讲攻击视角,建议搭配读。中文方面,《工控安全入门与实践》这类书适合快速建立概念框架。
最大的免费宝藏是CISA的ICS-CERT官网,里面的漏洞公告和每年的趋势报告质量极高,值得定期刷。厂商白皮书也很重要:西门子、罗克韦尔、施耐德的安全公告,不仅写漏洞,还会写加固基线,这是乙方报告经常抄的素材。GitHub上有不少开源清单能帮你找工具和靶场,但注意甄别时效性,有些项目已经两年不更新了,优先选维护活跃的、社区使用多的。
7.2 认证如何取舍:GICSP与通用安全认证
认证是很多入行者的执念,但工控安全的认证体系其实并不复杂。国际上认可度最高、最对口的是GICSP(GIAC全球工业网络安全专业人员认证),它考察OT架构、协议、风险评估和安全管理,适合已具备网络安全基础的人考。SANS的ICS 410和ICS 515课程体系也很成体系,前者讲ICS基础与评估,后者专注攻防,但价格不便宜,适合公司掏钱或目标明确的人。
如果预算有限,我建议先考通用安全认证(如CISSP)打底,再针对工控方向补IEC 62443相关的培训。国内的话,等保和工控方向的测评类资格在乙方和监管侧价值更高,结合自己的职业路径选择即可。我个人经验是:认证只是背书,真正面试时面试官更会问"你抓过哪些协议、搭过什么靶场、写过什么报告"。所以别把考证当成学习的终点,把它当成整理知识体系的契机。
7.3 社区与信息源:让自己一直泡在工控语境里
学习工控安全最怕闭门造车。我常用的方式是关注专业会议:国外的S4大会、DEF CON的ICS Village、工业安全相关的圆桌讨论,哪怕看不了现场,也要看公开的演讲视频和PPT,信息密度非常高。国内行业峰会也有不少工业信息安全主题的论坛,适合了解本土案例和合规动态。
更日常的输入源包括:工控安全相关的邮件组、安全研究机构的季度报告,以及各类靶场和CTF题目。碰到不会的协议或手法,就去翻协议规范原文、读开源实现源码、在技术社区搜别人的复盘。我还有一个习惯:每周写一篇短小的检视清单,列出本周新学的协议、新踩的坑、待补的基础知识。这个清单帮我持续保持方向感,也逼着我不断输出。
最后说一点个人的体会。工控安全入门最劝退的不是技术门槛,而是那种"看了很多文章、装了很多工具,却仍然觉得自己什么都不会"的挫败感。我自己也在这个阶段反复打转过。后来发现,把一个小闭环走通,比看完十篇教程都有用——比如让一盏模拟的灯通过Modbus写线圈亮起来,再把这条报文从头到尾用Wireshark复述一遍,整个知识体系一下就活了。剩下的路无非是重复:抓一个包、写一段脚本、埋一次坑,再把它记录下来。这条学习路线没有捷径,但每一步都踩在真实的现场逻辑上,这恰恰是工控安全最迷人的地方。