咱也不知道题目叫啥,就用文件名命名了

WEB 流量分析

Q3.pcap

打开首先按照协议排一下序,在 HTTP 协议中,前面一堆 404,后面几个是 200,着重看一下

image.png
image.png

执行了三条命令, phpinfo() 是就不说了后面的先 base64decode,然后 file_get_contents 读进来,然后 gzcompress 压缩字符串,经过 base64 解码,第一个压缩的是 index.php,第二个是 flag.txt,那么把压缩的字符串保存出来

image.png
image.png

然后写个 php 的脚本还原一下

1
2
3
4
5
<?php
$a = file_get_contents('./flag');
$b = gzuncompress($a);
echo $b;
?>
image.png
image.png

知识点:有耐心的看流量 2333

1.pcap

这个流量包比较大,可以看看哪些流量大,统计 -> Conversations

image.png
image.png

挨个看看比较大的包,追踪流,正好在这个 10M 的地方看出了 rar

image.png
image.png

原始数据显示并保存出来

image.png
image.png

但是打开会要求输入密码
这时候别忘了上面还有一些 base64,解码一下没啥东西

image.png
image.png

别气馁,再找找别的 base64,最终在 流 18 中的 z2 找到了这样一串字符串

image.png
image.png
image.png
image.png
1
cd /d "c:\inetpub\wwwroot\"&C:\progra~1\WinRAR\rar a C:\Inetpub\wwwroot\backup\wwwroot.rar C:\Inetpub\wwwroot\backup\1.gif -hpJJBoom&echo [S]&cd&echo [E]

参考:命令行下 winrar 用法 得到密码是 JJBoom

打开 rar,拿到一张 gif,但是打不开,winhex 打开发现是 MDMP 开头,是个 DUMP 的文件,使用 mimikatz 获取明文密码

1
2
3
privilege::debug
sekurlsa::minidump D:\anquan\Atemp\1.gif
sekurlsa::logonpasswords full
image.png
image.png

知识点:统计 -> Conversations 可以比较方便的查看数据包的大小
winrar 的命令行用法 hp 后面跟的是密码
文件头 MDMP 是 dump 文件,可以用 mimikatz 获取明文

attachment

附件有个提示,私钥

image.png
image.png

在 2016 这里,有一串超级长的 base64,解码前几个字符是 png

image.png
image.png

使用 python 写个脚本转成图片

1
2
3
4
5
6
7
import base64
fp = open('base64.txt','r')
png = open('1.png','wb')
bin_png = base64.b64decode(fp.read())
png.write(bin_png)
fp.close()
png.close()

生成图片如下

image.png
image.png

照着敲出文字来,加上私钥的头尾得

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDCm6vZmclJrVH1AAyGuCuSSZ8O+mIQiOUQCvN0HYbj8153JfSQ
LsJIhbRYS7+zZ1oXvPemWQDv/u/tzegt58q4ciNmcVnq1uKiygc6QOtvT7oiSTyO
vMX/q5iE2iClYUIHZEKX3BjjNDxrYvLQzPyGD1EY2DZIO6T45FNKYC2VDwIDAQAB
AoGAbtWUKUkx37lLfRq7B5sqjZVKdpBZe4tL0jg6cX5Djd3Uhk1inR9UXVNw4/y4
QGfzYqOn8+Cq7QSoBysHOeXSiPztW2cL09ktPgSlfTQyN6ELNGuiUOYnaTWYZpp/
QbRcZ/eHBulVQLlk5M6RVs9BLI9X08RAl7EcwumiRfWas6kCQQDvqC0dxl2wIjwN
czILcoWLig2c2u71Nev9DrWjWHU8eHDuzCJWvOUAHIrkexddWEK2VHd+F13GBCOQ
ZCM4prBjAkEAz+ENahsEjBE4+7H1HdIaw0+goe/45d6A2ewO/lYH6dDZTAzTW9z9
kzV8uz+Mmo5163/JtvwYQcKF39DJGGtqZQJBAKa18XR16fQ9TFL64EQwTQ+tYBzN
+04eTWQCmH3haeQ/0Cd9XyHBUveJ42Be8/jeDcIx7dGLxZKajHbEAfBFnAsCQGq1
AnbJ4Z6opJCGu+UP2c8SC8m0bhZJDelPRC8IKE28eB6SotgP61ZqaVmQ+HLJ1/wH
/5pfc3AmEyRdfyx6zwUCQCAH4SLJv/kprRz1a1gx8FR5tj4NeHEFFNEgq1gmiwmH
2STT5qZWzQFz8NRe+/otNOHBR2Xk4e8IS+ehIJ3TvyE=
-----END RSA PRIVATE KEY-----

给 wireshark 加上私钥:编辑 -> 首选项 -> protocols -> TLS(wireshark2.x 的是 ssl)

image.png
image.png

先添加,然后设置好 key 文件的位置

image.png
image.png

这时候随便追踪一个 TLS 流就能找到 flag 了

image.png
image.png

知识点:base64 解码是图片数据的脚本
wireshark 私钥导入直接看 TLS 明文

lx100.pcap

随便追踪 TCP 流,发现了一些视频相关的字符串,如:4K、MP4 等

image.png
image.png

视频流量走的是 UDP,所以随便追踪一个 UDP 流,发现 &’()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz 这表示有个 jpg 文件

image.png
image.png

保存出来之后通过脚本提取 jpg(按照文件头找)

1
2
3
4
5
6
7
8
9
10
11
12
13
f = open('1.jpg', 'rb')
data = f.read()
sub = 0
f.seek(0)

while 1:
if f.read(3) == b'\xff\xd8\xff':
f1 = open(str(sub) + '.jpg', 'wb')
f1.write(data[f.tell()-3:])
f1.close()
sub += 1
else:
f.seek(-2, 1)

有很多,其中几张会有 flag

image.png
image.png

不知道为啥,binwalk 和 foremost 识别不出来?
知识点:视频流量是 UDP 协议
jpg 中含有 &’()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
编写脚本拆分 jpg

USB 流量分析

区分鼠标与键盘协议看数据包间隔时间:鼠标一般是 0.001 级别,键盘一般是 0.1 级别
tshark 提取:tshark -r xxxx.pcapng -T fields -e usb.capdata >1.txt
关于 usb.capdata 怎么找,即我这里应该是 usbhid.data

image.png
image.png

键盘流量

tshark 提取数据 tshark -r keyboard.pcapng -T fields -e usbhid.data > 1.txt
然后是用脚本读取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# -*- coding: utf-8 -*-
# Python2
mappings = {0x04:"A", 0x05:"B", 0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0a:"G", 0x0b:"H", 0x0c:"I", 0x0d:"J", 0x0e:"K", 0x0f:"L", 0x10:"M", 0x11:"N", 0x12:"O", 0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U", 0x19:"V", 0x1a:"W", 0x1b:"X", 0x1c:"Y", 0x1d:"Z",0x1e:"!", 0x1f:"@", 0x20:"#", 0x21:"$", 0x22:"%", 0x23:"^",0x24:"&",0x25:"*",0x26:"(",0x27:")",0x28:"<RET>",0x29:"<ESC>",0x2a:"<DEL>", 0x2b:"\t",0x2c:"<SPACE>",0x2d:"_",0x2e:"+",0x2f:"{",0x30:"}",0x31:"|",0x32:"<NON>",0x33:"\"",0x34:":",0x35:"<GA>",0x36:"<",0x37:">",0x38:"?",0x39:"<CAP>",0x3a:"<F1>",0x3b:"<F2>", 0x3c:"<F3>",0x3d:"<F4>",0x3e:"<F5>",0x3f:"<F6>",0x40:"<F7>",0x41:"<F8>",0x42:"<F9>",0x43:"<F10>",0x44:"<F11>",0x45:"<F12>"}
nums = []
keys = open('1.txt') # 这里填写提取出来并处理好的keyusb.txt
for line in keys:
if line[0]!='0' or line[1]!='0' or line[2]!='0' or line[3]!='0' or line[6]!='0' or line[7]!='0' or line[8]!='0' or line[9]!='0' or line[10]!='0' or line[11]!='0' or line[12]!='0' or line[13]!='0' or line[14]!='0' or line[15]!='0':
# 如果提取出来的数据没有: 的话,上面一行就将改为:
# if line[0]!='0' or line[1]!='0' or line[2]!='0' or line[3]!='0' or line[6]!='0' or line[7]!='0' or line[8]!='0' or line[9]!='0' or line[10]!='0' or line[11]!='0' or line[12]!='0' or line[13]!='0' or line[14]!='0' or line[15]!='0':
continue
nums.append(int(line[4:6],16)) # 如果提取出来的数据没有: 的话,这里就将改为 nums.append(int(line[4:6],16))
keys.close()
output = ""
for n in nums:
if n == 0 :
continue
if n in mappings:
output += mappings[n]
else:
output += '[unknown]'
print 'output :\n' + output
image.png
image.png

鼠标流量

同样提取数据 tshark -r mouse.pcapng -T fields -e usbhid.data > 1.txt
可以通过 notepad++ 的编辑 -> 行操作 -> 移除空行
通过脚本分析 x 与 y 最终生成的 result.txt 是一个 x y 形式的坐标集合,直接用 gnuplot 画图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- coding: utf-8 -*-
nums = []
keys = open('1.txt','r')
result = open('result.txt','w')
posx = 0
posy = 0
for line in keys:
x = int(line[6:8],16)
#x = int(line[6:8],16)
y = int(line[10:12],16)
if x > 127 :
x -= 256
if y > 127 :
y -= 256
posx += x
posy += y
btn_flag = int(line[4:6],16)
if btn_flag == 1 :
result.write(str(posx)+' '+str(-posy)+'\n')
keys.close()

x、y、btn_flag 的位置需要自己试出来
然后用 gnuplot -e "plot 'result.txt'" -p 画出图片出来

image.png
image.png

gnuplot 直接官网下安装就行

知识点:通过 tshark 提取鼠标键盘流量,通过脚本分析流量
gnuplot 根据坐标画图

image.png
image.png
image.png
image.png

无线流量

MISC-datapack

打开流量包,发现了都是 802.11 的协议

image.png
image.png

使用 aircrack-ng 破解密码:
首先 aircrack-ng cacosmia.cap 获取 MAC 地址(BSSID)与 ESSID

image.png
image.png

使用 -w 指定字典 -b 指定 BSSID 地址破解密码
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 1A:D7:17:98:D0:51 cacosmia.cap

image.png
image.png

然后使用 airdecap-ng cacosmia.cap -e mamawoxiangwantiequan -p 12345678 提取流量包
-e 指定 ESSID,-p 指定密码

image.png
image.png

用 wireshark 打开解密出来的流量包,追踪一下 TCP 流看到有张 png,同时下面还有个压缩包

image.png
image.png

保存出来以后分离出压缩包,然而有密码

image.png
image.png

这时候回头看数据包开头那一串 session 是 jwt 格式的

1
session=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoaW50IjoiZm9yIHNlY3VyaXR5LCBJIHNldCBteSBwYXNzd29yZCBhcyBhIHdlYnNpdGUgd2hpY2ggaSBqdXN0IHBpbmdlZCBiZWZvcmUifQ.P3xOErNrUkYqdMBoo8WvU63kUVyOkZjiTK-hwOIIS5A
image.png
image.png

然后就去找 DNS 里面的网址,发现是 26rsfb.dnslog.cn,打开即可

知识点:无线数据包需要先用 aircrack-ng 跑出密码,然后 airdecap-ng 提取流量包再进行分析
jwt 格式是三部分每部分用 . 分隔开