CTF实战数据包解题及思路

安全
数据包分析题在CTF中基本是必考题目,这类题目一般是给出一个pcap包文件,要求从中分析出Flag。

1.数据包解题方法及思路  

数据包分析题在CTF中基本是必考题目,这类题目一般是给出一个pcap包文件,要求从中分析出Flag。有的简单,直接通过字符串检索就可以获取,有点需要破解密码,有的需要保存文件,虽然样式很多,但仍然有迹可寻。

1.1数据包简介  

1.pcap文件简介

pcap文件是常用的数据报存储格式,它是按照特定格式存储的一种文件格式,通过记事本等普通编辑工具打开pcap文件显示为乱码,pcap文件只能使用专业的数据包处理软件来打开,例如wireshark等。wireshark可以抓包、查看包以及另存为cap包等。

2. PCAP文件构成

PCAP文件由一个PCAP文件头和多个PCAP数据包组成,PCAP数据又由数据包头和数据包内容组成,PCAP总体结构如图 1所示。

图片

图1pcap总体结构图

(1)文件头    

每一个pcap文件只有一个文件头,总共占24(B)字节,以下是总共7个字段的含义。

Magic(4B):标记文件开始,并用来识别文件和字节顺序。值可以为0xa1b2c3d4或者0xd4c3b2a1,如果是0xa1b2c3d4表示是大端模式,按照原来的顺序一个字节一个字节的读,如果是0xd4c3b2a1表示小端模式,下面的字节都要交换顺序。现在的电脑大部分是小端模式。

Major(2B):当前文件的主要版本号,一般为0x0200

Minor(2B):当前文件的次要版本号,一般为0x0400

ThisZone(4B):当地的标准事件,如果用的是GMT则全零,一般全零

SigFigs(4B):时间戳的精度,一般为全零

SnapLen(4B):最大的存储长度,设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将值设置为65535

LinkType(4B):链路类型。解析数据包首先要判断它的LinkType,所以这个值很重要。一般的值为1,即以太网。

(2)数据包头(Packet Header)

数据包头可以有多个,每个数据包头后面都跟着真正的数据包。以下是Packet Header的4个字段含义:

Timestamp(4B):时间戳高位,精确到seconds,这是Unix时间戳。捕获数据包的时间一般是根据这个值。

Timestamp(4B):时间戳低位,能够精确到microseconds

Caplen(4B):当前数据区的长度,即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。    

Len(4B):离线数据长度,网路中实际数据帧的长度,一般不大于Caplen,多数情况下和Caplen值一样

(3)包数据(Packet Data)

Packet是链路层的数据帧,长度就是Packet Header中定义的Caplen值,所以每个Packet Header后面都跟着Caplen长度的Packet Data。也就是说pcap文件并没有规定捕获的数据帧之间有什么间隔字符串。Packet数据帧部分的格式就是标准的网络协议格式了。

1.2数据库包解题思路  

1. 字符串提取

很多简单的数据包题可以通过strings命令来直接进行搜索获取,其命令格式如下:

strings -a filename.pcap | grep -i strings,其中filename.pcap为包文件,strings为需要进行查找的关键字,例如password、user、admin、flag等,关键字要根据CTF题目中的提示来进行。

2.在wireshark中直接对关键字进行搜索

 在Wireshark中可以通过String来搜索关键字,也即在Filter中输入关键字,如图2所示。    

图片

图2wireshark搜索关键字

3.使用wireshark进行Follow分析

 使用wireshark包分析软件打开包文件,根据题目提示,可以选择相对应的协议来进行follow跟踪和分析。

4.提取内容为文件

 在wireshark中或者其它编辑器中,将需要提取的内容单独保存为文件,这些文件可能是图片文件、压缩文件等。

(1)winhex来提取(->|和|<-之间的)内容保存为对应的文件,一般在数据库包分析的数据包记录前后应该有提示,比如tar.gz或者rar等。

(2)有些文件可能是txt文件、png文件等。

1.3数据包分析实战  

1.实战数据包随波逐流

该题为一个data.pcap抓包文件,需要获取管理员的密码才能获取Flag值,通过前面的解题思路,可以通过linux进行字符串搜索,根据提示该字符会包含“pass”或者“=”关键字。    

(1)执行关键字搜索命令

strings data.pcap | grep -i =

strings data.pcap | grep -i pass

即可获取关键信息:

userid=spiveyp&pswrd=S04xWjZQWFZ5OQ%3D%3D

(2)url解码

对S04xWjZQWFZ5OQ%3D%3D通过notepad的url解码获取为:

S04xWjZQWFZ5OQ==

(3)base64解密

S04xWjZQWFZ5OQ==明显采用base64加密,通过nodepad的base64解密获取管理员userid及pswrd值:userid=spiveyp&pswrd=KN1Z6PXVy9

(4)登录系统即可获取flag值

使用用户名spiveyp和KN1Z6PXVy9登录系统即可获取Flag值。

2.实战数据包无线加密

题目仅仅给出一个ctf.pcap文件,根据包头文件LinkType值分析出该包为无线数据包,无线数据包一般都是包含密码,需要进行解密。

(1)获取解密密码

在wireshark中奖ctf.pcap包另存为ctf.cap,在aircrack-ng -w password.txt ctf.cap进行破解,获取密码为password1,如图2所示。

图片    

图2获取密码值

(2)对ctf.pcap进行解包

执行命令airdecap-ng ctf.pcap -e ctf -p password1 -o me.cap,对ctf.pcap包进行解密,其中ctf为AP名称,password1为密码,生成me.cap包,如图3所示。

图片

图3获取原始数据包

(3)wireshark分析获取Flag值

使用wireshark打开me.cap包,然后对HTTP协议进行分析,如图4所示,获取flag值:flag{H4lf_1s_3n0ugh}。

图片

图4分析HTTP协议获取Flag值

(4)使用字符串搜索

可以使用另外一种方法:strings me | grep flag,如图5所示来获取flag值。

图片

图5通过strings命令来获取flag值

责任编辑:庞桂玉 来源: 小兵搞安全
相关推荐

2017-09-28 15:19:53

Hadoop面试题解题思路

2011-05-19 13:34:50

无线信息包

2017-08-22 11:30:15

LinuxWireshark过滤数据包

2020-11-18 07:54:31

太网数据包架构

2023-03-27 00:13:26

数据包Kubernete网络

2021-07-15 09:57:39

Wireshark数据包长度

2019-03-28 13:34:22

IP TCP握手

2024-06-07 06:35:08

2010-05-26 17:42:29

IPv6数据包

2011-11-28 16:03:49

wireshark数据包

2014-07-09 09:43:59

2020-11-23 10:25:44

tcpdump数据包Linux

2010-12-27 13:14:15

Openbsd PFOpenBSD数据包过滤

2013-01-21 15:11:39

路由器数据包路由技术

2017-03-28 13:25:14

Linux网络数据包

2012-12-04 09:54:33

路由器数据包TCP

2017-01-19 14:35:10

数据包DPInDPI

2021-05-26 08:01:25

数据包Scapy数据安全

2017-04-07 09:30:49

Linux网络数据包

2019-04-29 07:53:11

TCP数据包TCP网络编程
点赞
收藏

51CTO技术栈公众号