工控安全竞赛实战:从力控PCZ文件到Flag的三种解法
工控安全竞赛实战:从力控PCZ文件到Flag的三种解法
上周参加了"铸网-2025山东省工业互联网网络安全职业技能竞赛",里面有一道工控方向的题挺有意思。题目给了一个.PCZ文件,说是力控组态软件的工程文件,要求从中找到flag。
这篇文章不只讲怎么解题,而是借此聊聊工控安全这个越来越热的方向——以及为什么安全工程师需要了解ICS/SCADA系统。
工控安全为什么越来越重要
先说个背景。2025年全国各类网络安全竞赛里,工控安全题目的占比从前年的5%涨到了15%以上。这不是偶然。
工业控制系统(ICS)正在从"物理隔离"走向"互联互通"。工厂的SCADA系统要上云、要远程运维、要和ERP对接——每多一个连接点,就多一个攻击面。
更关键的是:工控系统一旦被攻破,后果不是数据泄露,而是物理世界的真实损害。乌克兰电网被攻击导致大面积停电、伊朗核设施被Stuxnet破坏——这些都不是理论,是真实发生过的事。
回到题目。
题目分析:.PCZ文件是什么
拿到test.PCZ文件,第一反应是用力控软件打开。力控(ForceControl)是国内常用的SCADA组态软件,广泛用于工业自动化。
但我的虚拟机没装力控,比赛环境也不方便装。怎么办?
老规矩:先看文件头。
file test.PCZ
# 输出:Zip archive data
PCZ本质上是个ZIP压缩包。这在工控软件里很常见——组态工程文件通常是一个打包了配置、脚本、图片等资源的压缩文件。
# 改后缀名解压
mv test.PCZ test.zip
unzip test.zip -d pcz_contents/
解压后看到一堆文件:
pcz_contents/
├── project.xml # 项目配置
├── scripts/ # 脚本文件
│ ├── main.psc
│ └── alarm.psc
├── graphics/ # 画面文件
├── database/ # 数据库配置
└── docs/
└── readme.txt # 偷偷藏在这里
解法一:直接搜索Flag
最快的方法——暴力搜索:
grep -r "flag{" pcz_contents/
# 或者用更宽松的正则
grep -ri "flag" pcz_contents/
在这个例子里,flag就藏在docs/readme.txt里:
flag{D076-4D7E-92AC-A05ACB788292}
这种解法看起来"太简单了",但它代表了一种真实的安全问题:敏感信息明文存储。
实际的工控系统里,管理员密码、数据库连接串、API密钥明文写在配置文件里的例子比比皆是。
解法二:分析组态脚本
如果flag不是明文存的,就要深入分析了。力控的脚本语言类似VB,文件后缀.psc。
cat pcz_contents/scripts/main.psc
脚本里可能有:
- 变量赋值(flag分散在多个变量里拼接)
- 加密逻辑(flag被简单编码或加密)
- 条件判断(需要满足特定条件才输出flag)
比如这道题的一个变体,flag被拆成了几个部分:
Dim part1, part2, part3
part1 = "D076"
part2 = "4D7E-92AC"
part3 = "-A05ACB788292"
' flag = "flag{" & part1 & "-" & part2 & part3 & "}"
看到这种代码,手动拼接就行。更复杂的可能需要理解力控的变量系统和函数调用。
解法三:十六进制分析
如果文件被混淆或者加密了,可以尝试十六进制层面的分析:
# 用xxd查看二进制内容
xxd pcz_contents/database/config.dbf | grep -i "flag"
# 或者用strings提取可读字符串
strings pcz_contents/database/config.dbf | grep -i "flag"
工控系统的二进制文件通常保护很弱——不像互联网产品那样有加壳、混淆。很多时候strings就能搞定。
工控安全的常见攻击面
这道CTF题虽然简单,但折射出真实工控系统的安全问题:
1. 组态文件泄露
力控、WinCC、iFIX等组态软件的工程文件,如果被攻击者获取,就等于拿到了整个系统的"蓝图":
- 所有设备的IP地址和通信参数
- 数据库连接信息
- 控制逻辑和报警阈值
- 用户权限配置
真实案例:很多工控系统的工程文件通过供应商U盘、运维笔记本、共享文件夹等途径泄露。
2. 协议安全缺失
工控系统常用的Modbus、OPC、DNP3等协议,设计之初就没考虑安全性:
# Modbus协议连上去就能读写寄存器,没有认证
nmap -p 502 --script modbus-discover <target_ip>
3. 默认凭据
工控设备大量使用默认密码。西门子、施耐德、罗克韦尔的设备,出厂密码在网上一搜一大把。
4. Windows系统漏洞
很多工控上位机还跑着Windows XP、Windows 7,补丁不知道欠了多少年。永恒之蓝(EternalBlue)在工控环境里至今还有用武之地。
入门工控安全的建议
- 了解基本概念:PLC、RTU、HMI、SCADA这些术语要知道是什么
- 搭建实验环境:用Docker跑一个OpenPLC,或者用仿真软件
- 学习工控协议:Modbus TCP是最容易上手的,Wireshark抓包就能看懂
- 关注CVE:工控漏洞虽然少但每个都很严重,ICS-CERT的公告值得关注
- 参加竞赛:各类网安竞赛的工控题目是最好的学习材料
工控安全是蓝海,懂安全又懂工控的人非常稀缺。如果你在考虑未来方向,这值得投入。
关注「安全值班室」公众号
每天AI安全早报 + 实战攻防案例 + 网安学习路线连载
浙公网安备 33010602011771号