协议分析
被攻击的电机
打开流量包,过滤出写数据的包
通过查看发现,13 88,大于3000
得到flag
flag{c90a00000006030600721388}
omron
首先我们过滤出omron协议的流量
然后我们进行排序,发现一个为104长度的流量,我们点击发现一段密文
解密得到flag
组态编程
西门子组态分析
1、首先我们查看题目的给出的程序段图进行分析
程序段一:启动按钮A,并且确保D点已经接通,这时会给C置位,使得C对应的灯亮起。
程序段二:启动按钮B,这会给C复位,导致C对应的灯熄灭。
程序段三:再次启动按钮B,并等待12秒,之后会给D复位
程序段四:启动按钮E,并等待10秒,这个操作会给D置位。由于之前启动按钮A已经设定了在D置位时给C置位的条件,因此D的置位会使得C再次置位,从而使得C对应的灯再次亮起。
当我们启动按钮A后,我们应该启动E并且等待10s,这样就会使得D置位,而后C也会置位,从而使得C被点亮
最后得出flag为:flag{E_10_D_1}
Smart
用西门子软件打开得到一个流程图
VW100通过MOV_W函数18转二进制得到10010
VW104通过SHL_W函数将VW100左移3位得到144
VW108通过SHR_W函数将VW104函数右移2位得到36
设置VW500为5
将VW108向表格中加入条目,且最大条目数为VW500为5,则加入100100
将VW500从表格中先进先出得到VW600,为36
将240和VW600进行按位与运行,得到VW700为36&240=32
这里的函数是把VW700转双整数得到VD704,将VD704+17得到VD708为49,将VD708转实数为VD712
用SQRT求VD712的平方根得到VD716为7.0
这里没有VW502,所以VW502=0,VW600=36,VD716=7.0
最终的flag
flag{0_36_7.0}
恶意程序分析
勒索病毒分析
将exe文件拖入ida发现flag.txt文件
我们通过010editor将题目给我们的加密后的flag文件打开,拿到了一些十六进制数据
得到了一段机密的文本的十六进制编码
0B B0 B5 4E 89 4E 9D 03 93 1D 5B E5 10 E2 EA 1310 BE 60 09 D8 16 4A F0 4B F8 CB C6 49 39 88 1072 00 28 B6 0D 5A CB 49 FB 3D
通过参考这个链接找key和nonce
https://www.freebuf.com/articles/network/304435.html
然后用python进行脚本的编写
# coding: utf-8
from Crypto.Cipher import ChaCha20
from Crypto.Protocol.KDF import scrypt
# 定义数据
data = bytes([
0x0B, 0xB0, 0xB5, 0x4E, 0x89, 0x4E, 0x9D, 0x03, 0x93, 0x1D, 0x5B, 0xE5,
0x10, 0xE2, 0xEA, 0x13, 0x10, 0xBE, 0x60, 0x09, 0xD8, 0x16, 0x4A, 0xF0,
0x4B, 0xF8, 0xCB, 0xC6, 0x49, 0x39, 0x88, 0x10, 0x72, 0x00, 0x28, 0xB6,
0x0D, 0x5A, 0xCB, 0x49, 0xFB, 0x3D
])
# 定义密钥和随机数(nonce)
key = bytes([
0x75, 0x2b, 0xcb, 0x44, 0x8b, 0xd1, 0x70, 0x53, 0xe6, 0xb5, 0x5c, 0xc4,
0xe6, 0xba, 0x1b, 0xe8, 0x75, 0x6d, 0x2d, 0xbb, 0x03, 0x89, 0x9e, 0xb6,
0x5e, 0xf5, 0xa7, 0xef, 0xf6, 0xde, 0x5e, 0xe7
])
nonce = bytes([
0x4b, 0xf6, 0x5b, 0x44, 0xe2, 0x79, 0x81, 0x1c, 0x36, 0x7f, 0x94, 0xcc
])
# 初始化 ChaCha20 算法
cipher = ChaCha20.new(key=key, nonce=nonce)
# 手动设置计数器为 1,因为 pycryptodome 默认从 0 开始
# 每个块大小为 64 字节,因此计数器为 1 时应偏移 64 字节
cipher.seek(64)
try:
# 解密数据
decrypted_data = cipher.decrypt(data)
# 输出解密后的数据
print(decrypted_data)
except Exception as e:
print(f"An error occurred: {e}")
然后我们运行脚本得到flag
应急处置
工程被加密了
用组态王7.5SP1软件打开题目给的工程,发现工程被加密了
叉掉输入密码的页面,点工具里面的加密,再点击确定,这样就能把密码取消掉
再打开工程,打开操作记录图片看到flag
固件分析
固件后门分析
解压bin文件发现可疑pyc文件
反编译得到域名+端口
flag{www.1sdfa4sdfdsgbnm098d8342kflgb.com:38209}