工控安全竞赛实战:从力控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安全早报 + 实战攻防案例 + 网安学习路线连载

关注安全值班室

posted on 2026-06-01 18:05  明.Sir  阅读(38)  评论(0)    收藏  举报

导航