2023年江西省“振兴杯”工业互联网安全技术技能大赛暨全国大赛江西选拔赛 Write UP

news/2024/11/29 0:32:03/

文章目录

    • 一、协议分析 - modbus
    • 二、协议分析 - 异常的流量
    • 三、协议分析 - S7Error
    • 四、协议分析 - OmronAttack
    • 五、组态编程 - 工程的秘密
    • 六、组态编程 - 工程的秘密
    • 七、组态编程 - 简单的计算
    • 八、组态编程 - 交通灯
    • 九、组态编程 - 有趣的转盘
    • 十、应急处置 - 登录日志分析
    • 十一、应急处置 - 设备运行状态分析
    • 十二、恶意程序分析 - 样本分析
    • 十三、恶意程序分析 - 恶意的指令
    • 十四、固件分析 - 固件后门分析
    • 十五、固件分析 - 固件加密分析

入职的第一场比赛,最后一分钟被超10多名,心态崩了,神仙打架,未进决赛。最终团队排名 25+,个人得分 2015分,排名第 9。

一、协议分析 - modbus

黑客通过modbus协议向他的同伙发送了一条秘密信息,通过流量设备我们抓取到了相关的流量包,你能根据流量包找到这条信息么?

题目分析 modbus 协议,先筛选 modbus 协议,然后随便选择一条数据包右键进行 TCP 流跟踪,如下:
在这里插入图片描述

可以直接看到 flag 字样,直接筛选即可。
在这里插入图片描述


二、协议分析 - 异常的流量

请对提供的流量进行分析,发现可能存在的异常,找出flag,提交格式:flag{xxx}。

第一步:对长度排个序,看异常数据包的长度会不会跟别的数据包有差异。发现长度都是 861,看不出什么。
在这里插入图片描述

随便截图里找一条数据包,右键TCP流跟踪:

在这里插入图片描述

分离TCP 流查看,发现几段16进制片段:
在这里插入图片描述

在这里插入图片描述

拼接后 Hex 解码得:

在这里插入图片描述

提交 flag {EnergyRevolution} 答案正确。


三、协议分析 - S7Error

某工厂的工程师发现有一台西门子设备存在资源异常,请分析并找出异常流量的数据包编号。

题目提示是资源异常,说明响应包有对应错误状态码:

回包 error code 分类:

0x00 No error 没有错误
0x81 Application relationship 应用关系
0x82 Object definition 对象定义
0x83 No resources available 没有可用资源
0x84 Error on service processing 服务处理中错误
0x85 Error on supplies 请求错误
0x87 Access error 访问错误

对照状态码,所以应该去筛选 0x83, 筛选命令为:s7comm && s7comm.header.errcod == 0x83

在这里插入图片描述

得 flag{213056}, 答案正确。


四、协议分析 - OmronAttack

某工厂的工程师发现有一台设备存在异常,抓取流量后发现了黑客的端倪,你能协助他分析黑客留下的痕迹吗?

这道题是赛后做出来的。题目标题为 OmronAttack, 自然先筛选 Omron 协议数据包:
在这里插入图片描述

我有个习惯喜欢先对数据包长度排个序,看看有没有长度不同的数据包

在这里插入图片描述

看到8条可疑数据包

在这里插入图片描述

不像是简单的 HEX 解码,先根据流量包编号从小到大拼接数据

在这里插入图片描述

分析最后一个数据包的 ahevf nu): ,两两交换发现是 have fun:) , 这里可能是在提示我们对上面加密字符串字母进行两两交换,编写脚本得:

在这里插入图片描述

f94ScF/rv0jUS2+fs04MH+xChkzBMy4dI7R7BucEM1CkzcyJU1Au3XnH 这串密文如何解密呢?秘钥肯定是在流量里,我习惯开启 tcp 流跟踪去过滤筛选一下:
在这里插入图片描述
发现特别多 FINS………, 分流导出两份数据文本 :

在这里插入图片描述

在这里插入图片描述
Vscode分别打开这两个文件把 FINS………等大量相同的字符串全局替换成空字符得如下:

在这里插入图片描述

9600 端口 -> 49921 端口发现一串可疑字符串。5ae1e174746f6f64647373a5a56b

在这里插入图片描述

(tips: 无头绪的时候不妨试试流跟踪, 刚才找的加密字符串通过流跟踪也很快能找到)

5ae1e174746f6f64647373a5a56b 看着像md5编码,但是数了一下一共有24个字符,md5常见是16或者32个字符,发现中间有好多重复的,去重复得 5ae1746f6473a56b,刚好是16位,拿去md5 解密一下:

在这里插入图片描述

按理来说,出题方给的 md5 肯定能解开,是不是漏了什么信息。回想一下,我们密文之前做了两两交换,是不是说这串 md5 也需要两两交换才是正确的?使用刚才编写的脚本得:
a51e47f646375ab6,再拿去解密一下:
在这里插入图片描述

解密成功,提示rabbit, 说明是现在密码学中的 rabbit 加解密,使用 CyberChef 工具进行解密:
在这里插入图片描述

为什么解密不了?试了好几次,都没效果。回想自己开发数据加密如AES, RSA 加密,喜欢把加密数据再 Base64 编码,或许这里也对加密数据做了一次 Base64 加密,最终结果如下:
在这里插入图片描述

成功解开此题 flag{40d3b450-8ea3-46bb-b2b8-e69a3d7a50b3}


五、组态编程 - 工程的秘密

小李刚入门自动化领域,学习了组态编程技术,他将一段秘密信息放在了组态文件中并把他藏了起来,你能把他找出来么?

题目给了一张图:
在这里插入图片描述看图片大小,可以排除是图片宽高遮挡问题。使用 binwalk 看下 png 是不是藏了东西:
在这里插入图片描述

啥也没有。试试 CTF的图片隐写题中有一种常见的题型——基于LSB原理的图片隐写。使用zsteg 工具,输入 zsteg -e b1,rgb,lsb,xy flag.png -> res.zip,解压res.zip 里面有一个12.cmp 的文件。

在这里插入图片描述

结合题意,是组态王软件的备份文件,使用组态王恢复工程:

在这里插入图片描述在这里插入图片描述


六、组态编程 - 工程的秘密

组态工程文件被黑客篡改,导致程序画面功能出现问题,请协助分析组态程序,修复画面功能至正常。答案为flag{修复画面的脚本命令内容转换成HEX格式的前8位}

这类工控题要下载各种工控软件,这类软件还大装半天,比赛装软件就半天。这题是别的师傅做的,temp.MCP 查找一下对应软件打开,题干提示,画面出错,要修复画面的脚本命令内容,属性可以看到启动脚本、循环脚本、退出脚本这种。使用McgsPro版本组态软件打开, 仿真跑起来后测试功能,发现 有个窗口无法关闭

在这里插入图片描述

在这里插入图片描述

还可以看到这里脚本程序

在这里插入图片描述看官方文档找到关闭窗口的脚本函数是这个

在这里插入图片描述
然后hex一下 前八位就是 21436C6F, 即 flag{21436C6F}


七、组态编程 - 简单的计算

初入自动化的小王被单位的工程师出题,假设FC1块的IN1接口DB1.DBW0数值为900,IN2接口为360,IN3接口为20后,FC块将获取到接口的数据并加以计算最终由OUT接口DB1.DBD6输出结果是什么? flag格式为flag{}。

打开文件发现有一个.ap16的文件,使用博途V16打开该文件:

在这里插入图片描述
该题去年振兴杯考过一模一样的题,签到题。打开PLCSIM Advanced软件,以及博途v16软件。

在这里插入图片描述
将题目中的FC1块的IN1接口DB1.DBW0数值为900带入其中运行仿真程序计算出结果:

在这里插入图片描述
得到flag: flag{1.985294}


八、组态编程 - 交通灯

附件是一个交通信号灯的一些资料,请你分析出当按下启动按钮后,信号灯启动控制过程中,信号灯亮、闪、灭的情况。方向及状态代号如下:东西:EW, 南北:SN, 红灯:R ,绿灯:G ,黄灯:Y, 亮:T ,闪:L 灭:F ,时间:S (1S,2S,3S,4S,5S),交通灯在一个周期内,按红绿黄灯顺序依次找出东西南北红绿黄灯的亮灭情况。如流程:南北红灯亮20S灭,绿灯亮10S闪烁灭,黄灯亮4秒闪烁3秒灭,可写为:SNRT20SF-GT10SF-YT4SL3SF。注:正确答案写成EWXX-XXXX-XXXX-SNXX-XXXX-XXXX为正确的flag。Flag格式为:flag{}

给了两张图,一份交通灯.doc 资料,但是word资料打不开。010editor 查看交通灯.doc发现文件头为 AC1024, 是 CAD (dwg),文件头:41433130。

在这里插入图片描述

在这里插入图片描述
word 转换为 dwg 后缀拿去在线 cad 转 png 网站进行转换得:

在这里插入图片描述
东西红灯Q 0.5, 东西绿灯 Q 0.3, 东西黄灯Q 0.4,南北红灯Q 0.2,南北黄灯 Q0.1, 南北绿灯Q 0.0,

结合这篇文章理解:https://www.wolai.com/ctfhub/s3A1zqErH54BGuyeWbWFgX

在这里插入图片描述
程序段遇到 T37 就会激活定时器。程序段2、6、7为连续时间,3、4、5为连续时间

程序段2:0~35s --> T35F
程序段6: 35 ~ 50s亮, SM0.5 提供一个周期为1秒钟的时钟脉冲,50 ~ 53s 闪烁 -->T15SL3SF
程序段7:53~60s亮 -->T7SF

程序段3:0 ~ 27s亮,27~30s闪烁 -->T27SL3SF
程序段4:30~38s亮 -->T8SF
程序段5:38-60s亮 -->T22SF

考虑到不确定的道路方向以及黄灯时间较短的情况,我们可以做出如下猜测:在第一组,可能为东西方向,红灯亮35秒,绿灯亮15秒并闪烁3秒,然后黄灯亮7秒。在第二组,同样可能为东西方向,红灯亮22秒,绿灯亮27秒并闪烁3秒,接着黄灯亮8秒。

两种情况都提交一下,发现 flag{EWRT22SF-GT27SL3SF-YT8SF-SNRT35SF-GT15SL3SF-YT7SF} 正确。


九、组态编程 - 有趣的转盘

车间最新设计了一个可转动圆盘设备,并设计控制程序使得转盘由西门子1200系列控制,该设备由一个转盘主体、启动程序按钮和三个限位开关组成;设备初始状态如图所示,当按下启动按钮后程序启动,限位开关1-3分别控制输入点位I0.1-I0.3,当触点与限位开关接触时,对应输入点位通电;启动按钮控制输入点位I0.0;设备转动分为内圈和外圈,转盘以逆时针转动,Q0.0输出点位控制内圈转动,Q0.1控制外圈转动,内圈转动会带动外圈一起转动,外圈转动是与内圈的相对转动(例如外圈内圈均转动90度;,则内圈转动90度;,外圈在内圈带动转动的90度;之外还要再相对于内圈转动90度;也就是总共转动180度;),触点1镶嵌在内圈上与内圈一同转动,触点2镶嵌在外圈上同外圈一同转动,转盘转动一圈所需时间为12s,操作员需要使用启动按钮方可启动程序;现在指定操作员对转盘进行模拟转动测试,操作员需要在转盘停止后按下启动按钮令转盘设备启动,直至转盘设备与图中初始位置相同后方可不再运行(即触点1、2对应如图位置)。flag格式为:10#flag{启动所需长按最短时间_总共按下按钮次数_mw3_设备停止时两个触点与中心连线最大夹角(小于等于180度;)}


在这里插入图片描述
开局一张图,一脸懵,无思路。


十、应急处置 - 登录日志分析

黑客通过爆破SSH的方式成功入侵了工控服务器,请从日志中分析出攻击者的IP地址,确定成功爆破出登录名/密码的时间,flag即为该时间,如9:36:33。flag提交形式为flag{xxxx}

签到题。 筛选Accpted 查看黑客爆破登录成功的日志,发现有5条。

在这里插入图片描述

那么是哪一条呢?里面登录成功的日志有可能是正常用户登录的。 我们要想到黑客爆破自然先会有很多密码错误的日志,然后再有一条密码正常的日志。从而排除得到 19:32:01 是黑客首次爆破成功的时间。

答案为 flag{19:32:01}


十一、应急处置 - 设备运行状态分析

操作员打开设备后,发现点击设备运行按钮后,设备不能正常启动,请帮助操作员分析程序,修复其中的问题。flag为导致设备故障的控制点所直接关联的两个子程序名称_按钮控制点名称的组合,例如:flag{[PID_count(SBR6)]_[PRT(SBR19)]_M0.0}。

看不懂,不会做


十二、恶意程序分析 - 样本分析

某电力系统部门发现来历不明的病毒攻击,样本中包含可疑攻击行为,请对样本协助分析,找到隐藏在攻击代码中的flag。提交格式:flag{xxx}

使用 64 位IDA打开,字符串搜一下flag试试,发现Py字样,是python打包的程序。
在这里插入图片描述

使用开源的工具 pyinstxtractor.py, 下载链接 https://github.com/extremecoders-re/pyinstxtractor

在这里插入图片描述
在这里插入图片描述
看到一个 control 控制文件,可能是黑客留下的,记事本查看发现flag:

在这里插入图片描述


十三、恶意程序分析 - 恶意的指令

安全公司截获了某个针对电力系统攻击的样本,样本会向指定设备的8个IOA发送控制命令,flag就隐藏在IOA中。提交格式:flag{xxx}

在这里插入图片描述
32 位的文件, 使用32位的IDA工具打开进入main函数:

在这里插入图片描述
查看伪代码。经过分析发现,将v3数组的值作为shellcode传入,结合题目意思分析, 看到v3数组类似flag,R键转字符观察并提取出来。

在这里插入图片描述

得:flag{f30l7a1g}


十四、固件分析 - 固件后门分析

一些厂商为方便调试和监测,可能会在产品上保留“后门”,这也为产品带来了较大安全隐患。请对提供的固件进行分析,找出其中可能存在的后门口令。flag即为口令字符串,提交格式:flag{xxx}。

题目提供一个 OCR 文件,放入 ida 中。黑客留后门,可以猜测可能存在ssh 连接,字符串搜索SSH 可以看到如下截图:

在这里插入图片描述
点击SSH 跳转如下:

在这里插入图片描述
发现了存在 SHH 的公钥和私钥, 下面还有一个secret 字符串。
在这里插入图片描述
查看该函数,可以断定这是黑客后门行为,该秘钥就是flag

在这里插入图片描述
故答案为 flag{Ovation35}


十五、固件分析 - 固件加密分析

某公司收到勒索邮件,经过分析查验后发现内网中并没有勒索病毒的痕迹,网管小张研究后发现疑似黑客对工控路由器进行了攻击,通过技术手段获取到了路由器固件,请帮助小张分析出固件并且尝试找出被加密的文件,提交格式:flag{xxx}。

一脸懵,不会做…


http://www.ppmy.cn/news/1183620.html

相关文章

Python基础入门例程19-NP19 列表的长度(列表)

最近的博文: Python基础入门例程18-NP18 生成数字列表(列表)-CSDN博客 Python基础入门例程17-NP17 生成列表(列表)-CSDN博客 Python基础入门例程16-NP16 发送offer(列表)-CSDN博客 目录 描述 输入描述: 输出描述&#xff1…

吴恩达《机器学习》2-2->2-4:代价函数

一、代价函数的概念 代价函数是在监督学习中用于评估模型的性能和帮助选择最佳模型参数的重要工具。它表示了模型的预测输出与实际目标值之间的差距,即建模误差。代价函数的目标是找到使建模误差最小化的模型参数。 二、代价函数的理解 训练集数据:假设我…

【Java】PAT Basic Level 1024 科学计数法

题目 1024 科学计数法 作者 HOU, Qiming 单位 浙江大学 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [-][1-9].[0-9]E[-][0-9],即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指…

C#,数值计算——分类与推理,基座向量机的 Svmgenkernel的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public abstract class Svmgenkernel { public int m { get; set; } public int kcalls { get; set; } public double[,] ker { get; set; } public double[] y { get; set…

Spring Security: 整体架构

Filter Spring Security 是基于 Sevlet Filter 实现的。下面是一次 Http 请求从 client 出发,与 Servlet 交互的图: 当客户端发送一个请求到应用,容器会创建一个 FilterChain,FilterChain 中包含多个 Filter 和 Servlet。这些 Fi…

OS的Alarm定时器调度机制

调度表触发的任务在编译时就被静态定义,任务的触发时间和执行顺序是固定的。这种方式适用于已知的、固定的任务触发模式,例如周期性任务或事件驱动任务。而使用 Alarm 机制触发的任务具有更大的灵活性。Alarm 允许在运行时动态地设置和修改任务的触发时间…

【C++指针】函数返回指针类型 与 函数返回英语类型(关于获取局部变量的操作)

错误示范 #include <bits/stdc.h> using namespace std;int* RetPtr(void) { //函数返回指针类型int tempData1 1; //函数执行完后&#xff0c;这个变量的生命周期结束&#xff0c;变量的内存被系统收回cout << "第一个函数中值的地址为&#xff…

C++编译与运行:其三、虚函数、虚表和多态

对于非虚非静态成员函数的调用&#xff0c;是在编译期间就明确了的。简单地说&#xff0c;调用的时候将this指针传入函数&#xff0c;后面根据this指针指向的对象执行程序。但是在虚函数中却不一样。 一、虚函数执行原理&#xff1a;虚函数指针和虚函数表 虚函数表&#xff1…