流量分析作用通常是溯源攻击流量的。
通常在比赛中提供一个流量数据包的PCAP文件,有时候也会需要选手们先进行修复或重构传输文件后,再进行分析的。
PCAP文件这一块作为重点考察方向,复杂的地方在于数据包里充满着大量无关的流量信息,因此如何分类和过滤数据是我们需要完成的目的!!!
分组列表、分组详情、分组字节流:
显示过滤器如上图;捕捉过滤器在我们打开wireshark的时候可以进行不同网卡的选择捕捉过滤。
比较运算 | 含义 | |
---|---|---|
eq | 等于 == | |
nc | 不等于 != | |
gt | 大于 > | |
lt | 小于 < | |
ge | 大于等于 >= | |
le | 小于等于 <= | |
逻辑运算 | 含义 | |
and | 逻辑与 && | |
or | 逻辑或 \ | |
xor | 逻辑异或 ^^ | |
not | 逻辑非 ! |
php
ip.addr==192.168.1.1 //只显示源/目的ip为192.。。的数据包
not ip.src==1.1.1.1 //不显示源ip为1.1.1.1的数据包
ip.src==1.1.1.1 or ip.dst==1.1.1.2 //只显示源ip为1.1.1.1或目的ip为1.1.1.2的数据包
php
tcp.port eq 80 //不管端口是来源的还是目标的都显示
tcp.port == 80
tcp.port eq 80 or udp.port eq 80
tcp.dstport == 80 //只显示tcp协议的目标端口80
tcp.srcport == 80 //只显示tcp协议的来源端口80
udp.port eq 15000
tcp.port >= 1 and tcp.port <= 80 //过滤端口范围
php
eth.dst == A0:00:00:04:C5:84 //过滤目标mac
etc.src eq A0:00:00:04:C5:84 //过滤来源mac
eth.addr eq A0:00:00:04:C5:84 //过滤来源MAC和目标都等于A0:00:00:04:C5:84的
php
http.request.method == "GET"
http.request.method == "POST"
http.host matches "www.baidu.com|baidu.cn" //matches可以写多个域名
http.host contains "www.baidu.com" //contains 只能写一个
http contains "GET"
数据包长度的过滤 php
udp.length == 26 这个长度是指 udp 本身固定长度 8 加上 udp 下面那块数据包之和 。
tcp.len >= 7 指的是 ip 数据包(tcp 下面那块数据),不包括 tcp 本身
ip.len == 94 除了以太网头固定长度 14,其它都算是 ip.len,即从 ip 本身到最后
frame.len == 119 整个数据包长度,从 eth 开始到最后
也可以在分组详情中选择想要选择的字段,单机右键—作为过滤器应用—选中或者非选中!!!
追踪流:我们不但要知道每一个包我们怎么去看,也要清楚连续的流之间的关系。
我们知道的http的包,协议是tcp协议。当一个http数据包非常大的时候,在传输过程中分层传输。追踪流看一下http中传输的数据流量
那么,如果我们想看攻击者上传了什么木马或者文件,也是可以在他的流量包中看出来,那么导出的话就可以在文件—>导出对象—>选择对应得协议。
另一种方法,悬着要导出得字段,在分组详情的data处单机右键导出分组字节流。
统计—>协议分级统计(流量包有多种多样)
统计—>http—分组计数(占比,状态包的多少)
搜索
ctrl+f
颜色
视图—着色规则
是在安装wireshark自带的tshark工具。
tshark -r \*\*\*.pcap -Y \*\* -T fields -e \*\*\*\*\* > data
tshark -r %s -T fields -e usb.capdata -Y 'usb.data.len == 8' -Y 'usb.src == "3.9.1"' > data
Eg:tshark -r easy.pcapng -T fields -e ip.src > 1.txt (流量包)
如果要去掉1.txt,那么就要grep进行过滤
tshark -r easy.pcapng -T fields -e ip.src | grep "\[^\\s\]"
基于http的应用流量,明文传输容易分析。
通常是分析攻击者攻击时的流量包,用于溯源发现攻击者信息和被利用的漏洞,难点是需要配出大量无关流。
举例分析一下:
菜刀流量
首次打开流量数据包,在统计中协议分析可以看到只存在http包,没有其他,然后追踪流
发现攻击POST请求访问了一个3.php的文件数据,响应包则是列出了一个目录情况,那么说明攻击者拿到了一个webshell,在用客户端连接后,执行了第一个命令就是列出目录的命令。
并且在列出的目录下,存在一个flag.tar.gz文件。
接着分析第二个tcp流:
这个返回来一个POST响应是一个webshell 不重要。
接着分析第三个tcp流:
看得到在执行了一些命令之后,响应包是一个二进制后的内容,大概可以猜到是跟前面flag.tar.gz有关。首先,将请求中的命令解码看到底是执行什么命令
看到echo出X@Y,fopen访问文件,并且readfile文件,那么提取出响应返回的文件,在分组详情中选择data块 然后导出分组字节流保存为tar.gz后缀文件。
使用010打开,在刚才的命令中又看到前后都有无用的输出,那么就要把前后去掉。
那么,通过解压得到flag.txt中的key。
TLS加密流量,通常是需要密钥解密。
HTTPs= http+SSL/TLS 服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据
那么解密,就是拿到密钥后导入wireshark可以看到明文的http内容。例题见后
usb接口是目前最为通用的外设接口之一,通过监听该接口的流量,可以得到很多有意思的东西。例如键盘击键,鼠标移动与点击,存储设备的明文传输通信,usb无线网卡网络传输内容。
USB协议的文档,可以找到这个值与具体键位的对应关系
http://www.usb.org/developers/hidpage/Hut1_12v2.pdf
数据一般在Leftover Capture Data中,每一个数据包的数据区有4个字节(可能回有8个字节),第一个字节代表按键,当取0x00时,代表没有按键、当0x01时,代表按左键,当为0x02时,代表按右键。第二个字节可以看成是一个signed byte 类型,其最高位为符号位,当这个值为正时,代表鼠标水平右移多少个像素。为负时,代表水平左移多少个像素。第三个字节与第二个字节类型,代表垂直上下移动的偏移像素。
用tshark 将鼠标数据提取出来:
tshark - r mice.pacpng -T fields -e usb.capdata > micedata
然后在脚本将鼠标数据转换成坐标图分析鼠标点击和移动轨迹分析。
它的与鼠标类似,数据也在Leftover Capture Data中,键盘数据包的数据长度为8个字节,击键信息集中在第三个字节,每次key storke都会产生一个keyboard event usb packet
用tshark 将键盘数据提取出:
tshark -r mice.pcapng -T fields -e usb.capdata > micedata
下载地址https://github.com/WangYihang/UsbKeyboardDataHacker
IEEE 802.11是现今无线局域网通用的标准,常见认证方式有:不启用安全、WEP、WPA/WPA2-PSK、PA/WPA2 802.1X
BSSID :路由器、AP的MAC地址 PWR:信号强度,- -看就是越小越强了 Data :传输的数据大小,大的可能在下载或看视频什么的 CH:无线信道,要看准 ENC :加密协议 ESSID:这个就不用多说了,wiff名称,有中文可能会出现乱码哈
对流量包爆破密码 aircrack-ng XXX.pcap -w /usr/share/wordlists/rockyou.txt 用密码解密流量包 airdecap-ng [capfile] -e [ESSID] -p [password]
http1.1中,可允许一个tcp中发送多个http流
打开流量数据包分析,追踪tcp流,前面的几个数据流是列目录和linux
安装包,一直到第7个tcp包,发现
它是将post中action进行了base64编码让后执行了eval,那么@action是要执行的命令,将action的值解码后分析:
首先,它echo三个字符进行混淆填充,然后是通过fwirte向f写了buf内容,而f是post的z1的内容,buf则是已输入的内容以2个为分组进行了切分,再加上%再进行urldecode,相当于hex编码的解码。
再查看z1的内容:
那么验证刚才想法会在这里目录中写一个文件,文件内容就是z2:
那么我们将z2的内容以二进制的形式保存下来。并且可以看到这个列目录别之前多了一个666.jpg文件
在010中以16进制文本粘贴后,看到是我们熟悉的jpg文件,当然不是最终得flag文件。
然后再往下查看tcp流,再第9个中发现post数据中存在一个flag.txt文件(在搜索中也是可以直接搜到的)
并且看到数据开头是pk开头,并且后面提示需要密码,那他就是一个压缩包文件。
那么在分组详情中保存data的分组字节流,并保存为zip后缀文件。并且在010中删除头尾混淆字符
解压之后得到flag。
打开数据包,看到的里面数据是非常多的,我们统计中分级统计查看一下看到的是存在udp tcp smtp ftp等协议,对每一个协议进行比较费时间,这里直接看SMTP邮件协议的数据包。
那么,导出该数据包中所有的smtp协议的数据包,通过文件—>导出对象—>IMF
save保存全部,
打开邮件1234是广告,而第5给是一个邮件密钥,然后更具提示,将密钥格式补全:
那么接下来就要导入https的私钥后就可以看到明文传输信息。
首先我们筛选出所有的https的协议数据包 (tls)
然后在编辑—>首选项—>protocols—>TLS 将进行导入
然后编辑-添加一个密钥,
保存确当后,TLS数据包中就有可以看明文的http数据包了,追踪http流就发现了flag。
鼠标:usb2
拿到数据包,里面不知有鼠标,也有其他的数据包,那么使用tshark将数据导出:
tshark - r usb2.pcap -T fields -e usb.capdata > micedata
那么,也可以用工具提取出左右键的轨迹:
下载地址:https://github.com/WangYihang/UsbMiceDataHacker
安装完成后,运行语句
python UsbMiceDataHacker.py usb2.pcap RIGHT
python UsbMiceDataHacker.py usb2.pcap LEFT
python UsbMiceDataHacker.py usb2.pcap ALL
键盘:usb1
打开流量数据包,看到和鼠标的类似,我们直接用脚本工具跑
python UsbKeyboardDataHacker.py usb1.pcap
可以简单看到一些i am …但是存在一些内容混淆的,我们看到流量包存在来源有2个3.10.1和3.9.1 。
那么解决办法就是在脚本中修改一下抓取来源:
tshark -r %s -T fields -e usb.capdata 'usb.data\_len == 8' > %s
tshark -r %s -T fields -e usb.capdata -Y 'usb.data\_len == 8' -Y 'usb.src == \\"3.10.1\\"' > %s
修改为3.9.1时,我们抓取键盘真正敲击内容。
hello<SPACE>,<SPACE>i<SPACE>am<SPACE>writing<SPACE>something<SPACE>important<SPACE>.<RET>but<SPACE>i<SPACE>do<SPACE>not<SPACE>use<SPACE>pinyin<RET>i<SPACE>am<SPACE>old<SPACE>.<RET><RET>ddpeiyuj,q<SPACE>s<SPACE>gavclwbmpyg<SPACE>rug<SPACE>stk<SPACE>b<SPACE>.<RET>i<SPACE>fpi<SPACE>j<SPACE>et<SPACE>kkyy<DEL><DEL><DEL><DEL>k<SPACE>yygy<SPACE>r<SPACE>gaaa<SPACE>lwbmr<SPACE>.<RET>wwq<SPACE>sk<SPACE>c<SPACE>rcn<SPACE>ghdmp<SPACE>qkd<SPACE>ytd<SPACE>r<SPACE>ruuj<SPACE>wt<SPACE>o<SPACE>pyg<SPACE>rug<SPACE>stk<SPACE>rjuq<SPACE>h<SPACE>fcu<SPACE>"<RET><RET>q<SPACE>yi<SPACE>j<SPACE>pyg<SPACE>rug<SPACE>stk<SPACE>kwkw<SPACE><RET><RET><RET>over<SPACE><RET>enjoy<SPACE>my<SPACE>misc<SPACE>.<RET><RET><RET>
这里还有最后一个小弯,由提示中的“不使用拼音 ”等信息推测出上文的特殊编码可能是某种拼音之外的古老的输入法,例如五笔,毕竟这也是做keylogger的人需要考虑而且头疼的一个地方。尝试对照着输入,可以得出如下文字:
hello, i am writing something important .
but i do not use pinyin
i am old
大家注意,我要开始输出福拉格了。
不过是用中文形式输出的。
你可以把下面这句话的拼音作为福拉格提交上去:
我就是福拉格哈哈
over
enjoy my misc .
打开数据包,看到全部是加密的WiFi流量数据。
首先,我们用kali自带工具aircrack-ng看它是不是wifi包
那么使用一个字典对流量包爆破密码
aircrack-ng XXX.pcap -w /usr/share/wordlists/rockyou.txt
然后用密码解密流量包:
解密后在该目录下生成一个xxx-dec.cap解密成功的流量包。
打开解密成功的流量包,里面出现各种协议流量
然后进行常规的分析,直接在搜索中搜索flag,发现flag.txt字符串
通过分析流,发现flag.txt是在一个png中的pk压缩包中,那么我们将该原始数据导出,然后利用binwalk去解压。
解压后发现是一个加密压缩包
回到刚才的tcp流中发现cookie中存在一个jwt数据,解密看一下
告诉我们密码是刚才ping过的一个网站,那么我们过滤dns流量
尝试里面每个域名,发现是最后一个域名,然后查看flag。
1 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!