MISC:流量包取证(pcap文件修复、协议分析、数据提取)
文章目录
- 1、流量包修复
- 2、协议分析
- 2.1 wireshark基本操作
- 2.2 一些例题(各种协议)
- 3、数据提取
1、流量包修复
这个方向的考点较少
- 当我们用 wireshark 打开流量包时,如果遇到报错,可以试着修复一下再去开。
- pcapfix在线修复工具:http://f00l.de/hacking/pcapfix.php
pcapfix的离线版本:https://github.com/Rup0rt/pcapfix/tree/devel
2、协议分析
总体把握:协议分级+端点统计
过滤筛选:过滤语法+Host,Protocol,contains,特征值
发现异常:特殊字符串+协议某字段+flag 位于服务器中
2.1 wireshark基本操作
根据总体信息迅速把握流量包总体特征, 搞清楚 做什么?
1、捕获过滤器
在捕获里设置2、显示过滤器(语法)
(1)IP过滤:如ip.addr == 192.168.76.26 and icmp , ip.src ==192.168.104.10, ip.dst==192.168.104.10,
(2)协议过滤:如TCP, 注意http和icmp要小写
(3)端口过滤:如 tcp.port == 80 || udp.port == 80
(4)逻辑运算符:如 && || !
(5)方法过滤:http.request.method==GET ,注意GET要大写
(6)数据包内容过滤:data contains "abcd"
PS:Info列是wireshark组织的说明列并不一定是该数据包中的原始内容3、分组窗口(协议分析)
选定的数据包的分协议层展示(存在底色的是因为wireshark开启校验和验证而该层协议校验和又不正确所致)
以IP层为例:每一行就对应该层协议的一个字段;中括号行是前一字段的说明。
(1)Frame: 物理层的数据帧概况
(2)Ethernet II: 数据链路层以太网帧头部信息
(3)Internet Protocol Version 4: 互联网层IP包头部信息
(4)Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
(5)Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议4、二进制源数据
最后一个窗口是选定的数据包的2进制源数据。
左侧是十六进制表示右侧是ASCII码表示。另外在中间窗口中选中某层或某字段,该窗口对应位置也会被高亮。5、统计分析
(1)Protocol History(协议分级):捕捉文件包含的所有协议的树状分支,可以为分析数据包的主要方向提供依据
(2)Conversation(对话):发生于一特定端点的 IP 间的所有流量。 查看收发大量数据流的 IP 地址。如果是你知道的服务器(你记得服务器的地址或地址范围),那问题就解决了;但也有可能只是某台设备正在扫描网络,或仅是一台产生过多数据的 PC。 - 查看扫描模式(scan pattern)。这可能是一次正常的扫描,如 SNMP 软件发送 ping 报文以查找网络,但通常扫描都不是好事情
(3)EndPoints(端点):列出了 Wireshark 发现的所有 endpoints 上的统计信息
(4)HTTP请求:好用的统计HTTP信息
2.2 一些例题(各种协议)
HTTP
江苏省领航杯 - 2017:hack
总体观察可以得出: 以HTTP和192.168.173.134为主
详细观察:这是一个在sql注入-盲注时产生的流量包
flag 的方向: 提取出所有的 url 后, 用python辅助得到盲注结果
提取 url: tshark -r hack.pcap -T fields -e http.request.full_uri|tr -s '\n'|grep flag > log
HTTPS
HTTPs = HTTP + SSL / TLS. 服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据
hack-dat-kiwi-ctf-2015:ssl-sniff-2
打开流量包发现是 SSL 加密过的数据, 导入题目提供的server.key.insecure, 即可解密
FTP
默认情况下 FTP 协议使用 TCP 端口中的 20 和 21 这两个端口,其中 20 用于传输数据, 21 用于传输控制信息。
但是,如果采用主动模式,那么数据传输端口就是 20 ;
如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
DNS
DNS 通常为 UDP 协议。 查询包只有头部和问题两个部分, DNS 收到查询包后,根据查询到的信息追加回答信息、授权机构、额外资源记录,并且修改了包头的相关标识再返回给客户端。
BSides San Francisco CTF 2017 : dnscap.pcap
发现全部为 DNS 协议, 查询名为大量字符串([\w\.]+)\.skullseclabs\.org
通过 tshark -r dnscap.pcap -T fields -e dns.qry.name > hex提取后,利用 python 转码:
import re
find = ""
with open('hex','rb') as f:for i in f:text = re.findall(r'([\w\.]+)\.skull',i)if text:find += text[0].replace('.','')
print find
发现几条关键信息:
根据发现的 dnscat, 在qry.name中去除其余字段, 只留下 data 快, 从而合并数据, 再从 16 进制中检索89504e.....6082提取png, 得到 flag
WIFI
802.11 是现今无线局域网通用的标准, 常见认证方式有
不启用安全, WEP, WPA/WPA2-PSK(预共享密钥), PA/WPA2 802.1X (radius 认证)
Deauth 攻击:因为WIFI管理数据帧没有被加密,导致攻击者可以伪造管理帧,从而让攻击者可以任意发送“取消认证”数据包来强行切断AP与客户端的连接。用户体验到的状态就是连接不上对于的WIFI了。(路由器支持802.11w协议可以加密管理帧)
实验吧: shipin.cap
从大量的Deauth 攻击基本可以判断是一个破解 wifi 时的流量攻击
同时也成功发现了握手包信息, 接下来跑密码
linux : aircrack 套件
windows : wifipr ,速度比 esaw 快得到密码88888888在 wireshark 中Edit -> Preferences -> Protocols -> IEEE802.11 -> Edit以key:SSID形式填入即可解密 wifi 包看到明文流量
USB
鼠标协议:每一个数据包的数据区有四个字节,第一个字节代表按键,当取 0x00 时,代表没有按键、为 0x01 时,代表按左键,为 0x02 时,代表当前按键为右键。
第二个字节可以看成是一个 signed byte 类型,其最高位为符号位,当这个值为正时,代表鼠标水平右移多少像素,为负时,代表水平左移多少像素。
第三个字节与第二字节类似,代表垂直上下移动的偏移。
键盘协议:键盘数据包的数据长度为 8 个字节,击键信息集中在第 3 个字节。根据 data 值与具体键位的对应关系可以参考ctf-wiki. 可从数据包恢复出键盘的案件信息
USB 协议的数据部分在 Leftover Capture Data 域之中在 Mac 和 Linux 下可以用 tshark 命令可以将 leftover capture data 单独提取出来,命令如下:
tshark -r example.pcap -T fields -e usb.capdata //如果想导入usbdata.txt文件中,后面加上参数:>usbdata.txtWindows 下装了 wireshark 的环境下,在 wireshark目录下有个 tshark.exe
tshark.exe -r example.pcap -T fields -e usb.capdata //如果想导入usbdata.txt文件中,后面加上参数:>usbdata.txt命令语法参考:
https://www.wireshark.org/docs/man-pages/tshark.html
3、数据提取
数据提取:字符串取+文件提取
这一块是流量包中另一个重点, 通过对协议分析, 找到了题目的关键点, 如何提取数据成了接下来的关键问题。
wireshark
- 自动分析:file -> export objects -> http
- 手动分析:file->export selected Packet Bytes
tshark(wireshark命令行版)
- 命令
tshark -r **.pcap –Y ** -T fields –e ** | **** > data
通过-Y过滤器 (与 wireshark 一致), 然后用-T filds -e配合指定显示的数据段 (比如 usb.capdata)
-e后的参数不确定可以由 wireshark 右击需要的数据选中后得到 - 一个例子:
鼠标协议中数据提取
tshark -r capture.pcapng -T fields -e usb.capdata > data2.txt
- 一个例子
采用 tshark 进行提取,提取 dns 中的数据, 筛选具体报文形式\w{4,}.asis.io
tshark -r forensic_175_d78a42edc01c9104653776f16813d9e5 -T fields -e dns.qry.name -e dns.flags|grep 8180|awk '{if ($1~/\w{4,}.asis.io/) print $1}'|awk -F '.' '{print $1}'|tr -d '\n' > png
//打印http协议流相关信息
tshark -s 512 -i eth0 -n -f 'tcp dst port 80' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t'注释:-s: 只抓取前512字节;-i: 捕获eth0网卡;-n: 禁止网络对象名称解析;-f: 只捕获协议为tcp,目的端口为80;-R: 过滤出http.host和http.request.uri;-T,-e: 指的是打印这两个字段;-I: 输出到命令行界面; //实时打印当前mysql查询语句
tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query注释:-R: 过滤出mysql的查询语句;//导出smpp协议header和value的例子
tshark -r test.cap -R '(smpp.command_id==0x80000004) and (smpp.command_status==0x0)' -e smpp.message_id -e frame.time -T fields -E header=y >test.txt注释: -r: 读取本地文件,可以先抓包存下来之后再进行分析; -R: smpp...可以在wireshark的过滤表达式里面找到,后面会详细介绍; -E: 当-T字段指定时,设置输出选项,header=y意思是头部要打印; -e: 当-T字段指定时,设置输出哪些字段; >: 重定向;//统计http状态
tshark -n -q -z http,stat, -z http,tree 注释: -q: 只在结束捕获时输出数据,针对于统计类的命令非常有用; -z: 各类统计选项,具体的参考文档,后面会介绍,可以使用tshark -z help命令来查看所有支持的字段;http,stat: 计算HTTP统计信息,显示的值是HTTP状态代码和HTTP请求方法。 http,tree: 计算HTTP包分布。 显示的值是HTTP请求模式和HTTP状态代码。//抓取500个包提取访问的网址打印出来
tshark -s 0 -i eth0 -n -f 'tcp dst port 80' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l -c 500注释: -f: 抓包前过滤; -R: 抓包后过滤; -l: 在打印结果之前清空缓存; -c: 在抓500个包之后结束;//显示ssl data数据
tshark -n -t a -R ssl -T fields -e "ip.src" -e "ssl.app_data"//读取指定报文,按照ssl过滤显示内容
tshark -r temp.cap -R "ssl" -V -T text 注释: -T text: 格式化输出,默认就是text; -V: 增加包的输出;//-q 过滤tcp流13,获取data内容
tshark -r temp.cap -z "follow,tcp,ascii,13"//按照指定格式显示-e
tshark -r temp.cap -R ssl -Tfields -e "ip.src" -e tcp.srcport -e ip.dst -e tcp.dstport//输出数据
tshark -r vmx.cap -q -n -t ad -z follow,tcp,ascii,10.1.8.130:56087,10.195.4.41:446 | more注释: -t ad: 输出格式化时间戳;//过滤包的时间和rtp.seq
tshark -i eth0 -f "udp port 5004" -T fields -e frame.time_epoch -e rtp.seq -o rtp.heuristic_rtp:true 1>test.txt 注释: -o: 覆盖属性文件设置的一些值;//提取各协议数据部分
tshark -r H:/httpsession.pcap -q -n -t ad -z follow,tcp,ascii,71.6.167.142:27017,101.201.42.120:59381 | more
MISC:流量包取证(pcap文件修复、协议分析、数据提取)相关推荐
- 从pcap文件中解析网络数据包
pcap文件解析 1:pcap文件格式 2:从pcap文件中读取以太网数据包 3:c语言代码实现 4 参考链接: 1:pcap文件格式 pcap文件主要包含了三个部分,pcap文件头,数据包头,数据包 ...
- 钉钉小程序可以上传文件_怎样禁止钉钉外发文件?钉钉文件传输协议分析
钉钉(DingTalk)是中国领先的智能移动办公平台,用于商务沟通和工作协同.越来越多企业采用钉钉来进行办公自动化,但是由此带来的信息安全问题也不能忽视.钉钉软件可以很容易的上传附件.外发和接收文件, ...
- 网刃杯复现misc+流量包
签到 cipher.txt U2FsdGVkX1+WTSHujcCjvHj/gcwL0C7u37XtW4idGcpci3H913I= U2F那些,考虑为aes,des啥的 发现flag.txt是零宽度 ...
- wireshark提取流量包中的文件_[技术]Wireshark抓取的数据包提取文件
0x00 简介 本期主要会教大家如何从流量中还原出来文件.下面我将会用多种办法来讲解. 使用系统:Kali Linux 0x01 tcpxtract工具网络流量提取文件(方法1) Kali Linux ...
- wireshark提取流量包中的文件_返璞归真——流量中提取文件的五种方法
0×00 简介 本期主要会教大家如何从流量中还原出来文件.下面我将会用5种办法来讲解. 0×01 网络流量提取文件(方法1) 1. 安装依赖 Default yum install -y lib ...
- wireshark读写pcap文件_PCAP-file-analysis 利用wireshark捕获tcp ip数据包和pcap文件分析 - 下载 - 搜珍网...
reademe.txt 实验报告-终版.doc 实验数据/ 实验数据/arp.pcap 实验数据/DHCP.pcap 实验数据/Diagram1.dia 实验数据/Diagram1.png 实验数据/ ...
- 2021-09-28 网安实验-取证分析-Pcap流量包取证
相关知识 关于wireshark Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用W ...
- wireshark提取流量包中的文件_从Wireshark监听的数据中提取需要的数据
最近,需要将wireshark监听的数据进行提取,分两步:首先,应该得出wireshark的数据包吧,在图形化界面中可以非常直观的将监听数据进行存储,但是这样需要手动操作非常麻烦,而且容易出错(随着处 ...
- CTF——MISC——流量分析
目录 一.流量包修复 二.协议分析 三.数据提取 例题: 1,题目:Cephalopod(图片提取) 2,题目:特殊后门(icmp协议信息传输) 3,题目:手机热点(蓝牙传输协议obex,数据提取) ...
最新文章
- 计算机程序设计员_第二届北京大工匠计算机程序设计员、网络与信息安全管理员挑战赛:一场互联网“战场”的巅峰对决...
- [转]js escape,encodeURI,encodeURIComponent
- Yii2.0 数据库更新update
- 路由表及路由的选择算法
- 【作品】超级玛丽射击版
- 用户登录python_python用户登录系统
- Java render用法_SpringMVC ModelAndView的用法使用详解
- Tensorflow图像编码处理
- UIKit Dynamic主题学习笔记
- MySql递归查询上级,下级
- 计算机ip 地址异常,电脑显示IP地址错误怎么办|电脑无法上网提示IP地址错误的解决方法...
- 计算机系最好的985大学排名,2017年全国“985”大学排名及王牌专业全解析
- wso2 mysql_WSO2
- C程序设计语言思维导图
- Bootstrap 新手学习手册---环境部署与网格系统
- 头脑王者服务器维护,头脑王者请求超时怎么解决 头脑王者查询服务器失败怎么回事...
- C++ | 数据结构 | 图结构的讲解与模拟实现 | DFS与BFS的实现
- 苹果EMS物流管理系统
- 彻底搞懂javascript中的replace函数
- 电源模块中滤波电容的作用