OtterCTF—Network WP

此题组主要是进行流量分析

文章目录

一、思路

二、解题

2.1 Birdman's Data

2.2 Look At Me

2.3 Otter Leak 

2.4 Morty Talks

总结


前言

系统:win10,kali

工具:Wireshark,tshark  (Kali中都自带)


一、思路

做流量分析的主要思路:

查找流量包谁占的比重最大—>进行分析数据—>找出重要点—>拿到flag


二、解题

2.1 Birdman's Data

We recorded some of BirdMan's networking, but a part of it (the important part) got scrambled.

我们录下了一些鸟人的网络,但其中的一部分(重要的部分)被打乱了。

我们打开数据包进行总体 分析。

发现占比最大的是IP协议和TCP协议,发现有html的痕迹,不用思考直接在http协议上分析。

 筛选http协议后发现了8个数据包,进入第一个查看具体包, 发现了一个网址

Online Encryption Tool - AES/GCM, AES/CBC (txtwizard.net)https://www.txtwizard.net/crypto

进入链接后发现,是一个加解密的网站。

 猜测记录数据包的主机,一定在这里进行过加解密,所以我们需要知道他的参数。

Algorithm:

Key:

IV:

二有一即可

Base64:

Text:

我们继续查找,分析接下来的数据包,于是在第四个,第六个,第七个,第八个将全都参数集齐。

 我们这里发现了两个Key,猜测一个是Key,一个是IV

Algorithm:AES-CBC

Key:XfCtxvD1yFZbxQ/+ULhAcA==

IV:sEhrZxQpnNnINixu3KQ1Tg==

Base64:

qKOtD3sK0WMMbAkIKach40aXJpNSz+N4dxcQC5I84ZOe7RqsK2ScQPQ4FO0NLvp

U0M9uI ..................................eZwYEH7Ds4kGqfGsOP++uYFbjT2tXBIfdFg6sSNbP7

于是我们进入网页进行解码。

 将Text放入txt文档,发现每一行第一个词加起来就是flag

 我们可是使用kali中的cat,cut,tr命令让其更好看一些。

cat flag.txt | cut -c 1 |tr -d '\n'

cut -c:以字符 (characters) 的单位取出固定字符区间
tr -d :删除字符串1中所有输入字符

 CTF{EmiNeM_FOR_LifE_gEez}


2.2 Look At Me

My otter played with my PC while I was recording...
我在录音的时候,水獭在玩我的电脑……

先全部分析一下,发现只有USB协议。

 具体查找一下,发现了Wacom,网上查找是一个绘画板。

 没有做过类似题目,再网上查到了类似的题目WP和相同题目的WP,跟随大佬的思路,发现此包要是有37和32字节长度的数据包。

但32字节主要在开头和结尾,所以我们猜测重要数据在37字节的数据包中,于是我们使用tshark进行筛选。

 tshark是一个网络协议分析器。它允许您从实时网络捕获数据包数据,或者从以前保存的捕获文件读取数据包,或者将这些数据包的解码形式打印到标准输出,或者将数据包写入文件。TShark的本机捕获文件格式是pcapng格式,这也是Wireshark和其他各种工具使用的格式。如果不设置任何选项,TShark的工作方式将非常类似于tcpdump。它将使用pcap库捕获来自第一个可用网络接口的流量,并在每个接收到的数据包的标准输出上显示摘要行。

tshark -r look_at_me.pcap -w filtration_01 -Y '((usb.transfer_type == 0x01) && (frame.len == 37))'

look_at_me.pcap数据包使用的USB传输类型是0x01(Interrupt传输类型),并且数据包的长度为37,则选择这个数据包并将其输出到filtration_01。

 我们打开筛选后的数据包进行分析发现了具体数据。

但是是不同的数据数据头不同,我浏览了大多数的数据包发现以02数据头的居多,于是我们将其划分为2个16进制为一组,进行分析。

我们需要的数据是绘图板上笔的 X/Y 坐标的表示,以及表示笔压力的 Z 值。
02:f0:6d:0a:b4:05:00:00:0a:00

02:f0 - 数据头
6d:0a - X
b4:05 - Y
00:00 - Z (压力)
00    - 填充

 我们在进行一次筛选,筛选以02数据头开头的数据包,并将其放置在文本文档。

tshark -r filtration_01.pcap -T fields -e usb.capdata -Y usb.capdata > filtration_02.txt

-r filtration_01.pcap:指定要读取的数据文件。
-T fields:指定输出方式为“fields”。这种方式将数据包解析为一系列字段,并输出这些字段的值。
-e usb.capdata:指定要输出的字段是usb.capdata。这个字段包含USB数据包中的有效负载。
-Y usb.capdata:指定筛选条件为usb.capdata,这意味着只有包含usb.capdata字段的数据包才会被输出。

 提取完后,我们需要将我们所需要有效的的x,y,z值进行提取,大佬提供了一个代码。

awk -F: '{x=$3$4;y=$5$6}{z=$7}$1=="02"{print x,y,z}' filtration_02.txt > filtration_03.txt

 但是此代码貌似对我无效,我分析了一下此代码的含义,就是先将filtration_02.txt中每一行的数据进行分组,然后将02数据头中的第3,4位给到x;5,6位给到y;7位给到z,最后将x,y,z输出到filtration_03.txt中,于是我使用python写出了类似脚本,效果是一样的。

f=open('filtration_02.txt','r')       #以只读的方式打开filtration_02.txt,并赋值给f
list_1=f.readlines()                  #一次性读取f整个文件;自动将文件内容分析成一个行的列表
list_2=[]
for i in list_1:                      #在list列表中循环取值,给到i
    if i[0:2] == '02' :               #字符串i的第1,2位为02继续
        a=i[4:8]+' '+i[8:12]+' '+i[12:14]   #将i的4-7位,8-11位,12-13位赋值给a并中间加括号
        list_2.append(a)              #将a加入列表中
f.close()
f = open('filtration_03.txt','w')
for i in list_2:
    f.write(i+'\n')
f.close()

 提取出x,y,z,接下来我们需要把有压力的时候将下x,y从16进制转为10进制,将其当作坐标,直接就借用大佬的了。

#flag.py
from pwn import * 
for i in open('filtration_03.txt').readlines():
    ii = i.strip().split(' ')
    x = int(ii[0], 16)
    y = int(ii[1], 16)
    z = int(ii[2], 16)
    if z > 0:
        print (u16(struct.pack(">H", x)), u16(struct.pack(">H", y)))

此代码使用Python的pwntools库,读取名为filtration_03.txt的文本文件,并对每一行进行处理。每一行都被分成三个十六进制数,命名为x、y、z。如果z的值大于0,那么它将x和y解压缩为无符号16位整数,并将它们作为元组打印出来。
struct.pack(">H", x):使用struct.pack()函数将整数x转换为网络字节顺序(big-endian)的无符号16位整数。
u16():使用pwntools库中的u16()函数将无符号16位整数还原为Python整数。
最终结果是打印了一个元素为两个无符号16位整数的元组。

然后我们使用Linux的绘图工具gnuplot进行绘画。、

gnuplot
plot "flag.txt"

最后将照片翻转处理一下,拿到了flag

 

 CTF{0TR_U58}


2.3 Otter Leak 

We found out that one of the Otters been leaking information from our network! Find the leaked data.

我们发现一个水獭泄漏信息从我们的网络!发现泄露的数据。

还是我们先整体查看一下协议。

发现了SSH协议以及其底下的SMB服务,一般SMB服务是发送文件的,我们直接导出进行查看。

  • SMB是一个协议名,全称是Server Message Block(服务器消息快协议),用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居由它实现。

在导出的过程中我们发现好多是jpg格式说明是照片,且好多都为1字节,说明可能里面就一个单词,于是我们使用cat命令将导出的所有jpg格式的文件进行内容查看。

cat %5cotter-under-water.jpg.638x0_q80_crop-smart*

 发现一串字符串,看见后面的"="让我想到了base64编码,于是我们试一试解码。

 解码后发现'-.'不用想就是摩斯电码,送到摩斯电码去解码,拿到flag。

 CTF{M0R5EOT73RINB64}


2.4 Morty Talks

We think we recorded some communication between the members of the Morty Resistance. We also found this weird script on one of the Ricks living in the Citidel.Help us figure this one out.

我们录下了莫蒂抵抗组织成员之间的对话。我们还在一个住在西德尔的瑞克人身上发现了这个奇怪的字迹。帮我们解决这个问题。

暂时整不明白,哈哈哈,暂定。


总结

在这三个题目中我学到了http类型,usb类型和smb类型的大体分析方法,都是之前没有接触过的,总结一句话还是欠练啊。

猜你喜欢

转载自blog.csdn.net/m0_66638011/article/details/130675427