工控安全,纵横网络靶场部分WP(一)

纵横网络靶场部分 wp

前言

最近有了misc、二进制、web的一些基础后,准备开始工控安全的一些题目学习。目前做了几道靶场题目,发现主要题型还是和modbus等工控协议相关的流量分析、misc相关等,所以简单做一个记录,以便以后学习回顾。

黑客的大意

题目描述:
2GnIBV.png

文件下载下来后得到的是一个没有格式的文档,所以我们先用winhex或者010看一下文件是什么格式的

2Gnbh4.png

可以看到,文件头显示mail文件是png格式的,所以我们修改后缀名,用png格式打开mail文件,得到如下的图片

2GnXcR.png

可以看到得到的图片里面包含的信息很少,也没有我们需要的mail格式的flag,所以先猜测文件中是否隐藏包含有我们需要的flag或者mail
2Gnjj1.png
2Gnxnx.png

搜索关键字,也是没有找到我们需要的flag,接下来打开kali,使用binwalk分析下我们的mail文件是否隐藏有其他文件(misc中经常有这种类型题目,所以尝试分析下)

2Gud5F.png

可以看到我们的mail.png确实只是单纯的png文件,这样我们可以初步认为:所有可以给我们的信息已经包含在图片里面了,没有其他情况的东西了~

回头看我们得到的图片:

2GnXcR.png

唯一我们可以用来检索的信息就是最后的一串英文:im in yur computerz watchin yur screenz

打开万能百度,开始检索:可以看到搜索出来的都是GitHub上的项目,我们随便点进去一个看一下,这里我点的是第三个

2GlaLR.png

在里面,我们确实看到了和我们图片类似的图像:

2G8hwR.png

接着,我们可以尝试找下项目里面是否包含有类似邮箱的信息,最后在项目里面的gcat目录下找到邮箱信息

2GG8B9.png

提交flag,确实是我们需要的flag。个人比较好奇的是,其他项目里面的邮箱似乎也是可以的?= =

2Gl0dx.png


大工UDP协议

题目描述:在进行工业企业检查评估工作中,发现了疑似感染恶意软件的上位机。现已提取出上位机通信流量,尝试分析出异常点,获取FLAG,flag形式为 flag{}。

拿到流量包后,直接尝试搜索flag,看下有没有包含flag

2yZuC9.png

追踪UDP流后也没有发现有flag的地方,看了其他师傅的WP后,学会了通过分析流量包长度的出现频率来判断是否有异常

“大部分UDP流量包的长度相同,只有一些长度的UDP流量包仅出现过一次,猜测它们可能有异常。”

2yVrtJ.png

尝试在流量包中找到只出现过一次173长度的流量包,发现131,173对应的流量包存在异常的字符串

从图中可以看出,字符串的组成为0-F,所以可以初步判定为16进制编码,直接对字符串解码,得到flag

2yZABT.png

做完这个题后,发现流量包查看异常时可以查看是否包含有长度异常的流量包,或许玄机就在里面。
但自己做的时候还是一个一个查看,比较麻烦,应该可以编写py脚本来筛选出各个流量包的长度出现频率,得到结果后直接找~


工控蜜罐分析日志

题目描述:工控安全分析人员在互联网上部署了工控仿真蜜罐,通过蜜罐可抓取并分析互联网上针对工业资产的扫描行为,将存在高危扫描行为的IP加入防火墙黑名单可有效减少工业企业对于互联网的攻击面。分析出日志中针对西门子私有通信协议扫描最多的IP,分析该扫描组织,Flag为该IP的域名,flag形式为 flag{}。

拿到日志文件如下所示,里面包含有很多IP,一个一个查看实在是太累了。所以想着写个py脚本提取下log日志里面的有关ip地址~

在这里插入图片描述

参考了一下一个师傅编写的py脚本文件,里面包含了自动提取、去重复、用nslookup查询域名等操作:

在这里插入图片描述

不知为何,nslookup无法查询日志里面的ip地址。。。

2gfoVg.png

所以后面直接用的ip反查询工具来反查询域名

之前的脚本还是成功生成了我们需要的日志里面的ip:

2ghiGR.png

域名不是特别多,一个一个查询,查到第十四个就发现了我们需要的flag域名:
在这里插入图片描述

写在后面:做完这套题后,初步了解了渗透中利用蜜罐来进行安全防护措施的思想。做这个题也了解一些ip反查询的工具。分析日志的时候,有通过编写python脚本来实现提取ip的想法,但编程能力还不太够,所以参考的是其他师傅的WP。但这个WP的功能似乎也不是特别的完善,是不是应该将ip出现的次数也考虑在内?这样编写脚本提取ip地址,记录ip重复的次数,按照顺序来记录,这样来查询效率或许更高。做完一些类似的题目后,开始觉得深入学下python还是很有必要的了~


MMS协议分析

流量包下载下来,直接搜索flag,发现有一些相关的flag.txt文件,追踪tcp流,也没发现有与编码相关的内容

在这里插入图片描述

考虑搜索其他关键字,例如jpg、png等。搜到png发现有个相关图片,且后面包含了很长的一段base64编码

2HHeC4.png

复制base64编码后,直接用base64解码,得到一片乱码。后来想想,这么长的编码怎么可能是字符串直接编码~应该是png图片对应的base64编码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qi5eL67d-1625466656356)(https://z3.ax1x.com/2021/06/15/2HHN2d.png)]

所以将base64还原png图像得到最终flag。注意的是前面的data也要复制进去解码~不然无法解析图片格式

2HbSIO.png


简单流量分析

题目描述:不久前,运维人员在日常安全检查的时候发现现场某设备会不时向某不知名ip发出非正常的ICMP PING包。这引起了运维人员的注意,他在过滤出ICMP包分析并马上开始做应急处理很可能已被攻击的设备。运维人员到底发现了什么?flag形式为 flag{} 。

文件下载下来是一个流量包,协议为icmp。搜索我们常见的一些字符串:flag、txt、png、jpg、php等都没有发现存在异常的地方。

想到之前做过查看长度异常的流量包来分析,但是还是发现流量包里面包含的字符串无法正确解码,binwalk分析也没有结果。所以最开始做到这里的时候,一点思路也没有~

RlQiJx.png

查看了其他师傅的wp后,算是开拓了自己的视野。主要的思路就是:发现icmp流量包的长度区间对应的是ascii码,因此采用py爬取所有包的data长度,再转化为ascii码,最后再base64

RllPBQ.png

附上其他师傅的py脚本

#!/usr/bin/python
# -*- coding=utf -*-

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)))

最终得到结果:flag{xx2b8a_6mm64c_fsociety}

做完本题,最主要的感受就是:很多时候解题就差一个关键的思路。一开始我是无论如何也想不到在数据包的长度上找猫腻的,还是思路太窄了~而且python脚本的编写能力也有待提高。。


S7COMM协议分析

题目描述:某10段工控网络中,工业协议中存在异常数据。请通过流量中的数据找寻 flag,flag形式为 flag{}。

流量包下载下来,包含了很多协议,有tcp、http、s7comm

RJGLKs.png

但题目描述需要我们找十段的S7COMM协议,所以直接过滤器筛选该协议。筛选出的协议数量太多,大概有几十万个,看不过来。

RJGXbq.png

在做这题之前是没有接触过S7COMM协议的,也不知道流量分析的各个字节段代表什么,后来找到了一篇很好的博客介绍,才开始慢慢了解。传送门:利用Wireshark对报文逐字节进行解析

在前面筛选出S7COMM协议后,看到基本上全是read var和响应返回的组合,协议长度都差不多。再返回到我们的题目描述:协议中存在异常数据,应该是把数据藏在了data段,那对应协议的长度应该会增加,所以直接在length上按从高到低排序,来找我们需要的异常协议。

RJJkrR.png

可以看到,最长的协议长度达到了192,和普通的响应长度不一样。而且第一个协议中还被标上了Malformed packet(畸形数据包),应该是被wireshark自动检测出来了。找到对应的协议我们可以看到最后存在一串16进制编码,所以直接对该编码解码即可得到flag:

RJYSeI.png

flag{is_not_real}

个人博客地址:Cloudyun

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C1ovd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值