跳转至

MISC流量分析

MISC流量分析

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

WEB流量分析

Q3.pcap

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

1629972579240-9dd24146-1b97-4d90-8f57-a8dbd44162f1.png

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

1629979498172-2c55014b-5f62-4f7c-bea5-b7da5a6b066b.png

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

<?php
$a = file_get_contents('./flag');
$b = gzuncompress($a);
echo $b;
?>

1629979417103-1253f881-12bf-4230-9f36-33d90de7519f.png

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

1.pcap

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

1629979648442-8e4e36e2-4c21-4f9f-abf0-4c98c245a393.png

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

1629979799071-446ac859-4b66-4406-bdcf-299326e7951e.png

原始数据显示并保存出来

1629979873288-4f42885b-f056-4826-bf36-4baba0b7c97c.png

但是打开会要求输入密码

这时候别忘了上面还有一些 base64,解码一下没啥东西

1629980459385-70e5b83d-1898-466d-953b-a7443420c62c.png

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

1629980842232-0c9fb4a8-ee83-4f03-b89b-7ddc0633b9c1.png

1629980733143-20bc5b21-0350-455f-acd6-dfb875bb91d0.png

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 获取明文密码

privilege::debug
sekurlsa::minidump D:\anquan\Atemp\1.gif
sekurlsa::logonpasswords full

1629981216229-f28ea679-66a4-4eaa-b0d2-264c9186ec80.png

知识点:统计 -> Conversations 可以比较方便的查看数据包的大小

winrar 的命令行用法 hp 后面跟的是密码

文件头 MDMP 是 dump 文件,可以用 mimikatz 获取明文

attachment

附件有个提示,私钥

1629981522376-5231de5a-930a-4776-bc9e-a696fbe8aa54.png

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

1629982001729-4d3742ca-f819-4361-997c-7bd6a9ea35f0.png

使用 python 写个脚本转成图片

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()

生成图片如下

1629983968190-07aa1703-6372-4024-bed0-cbe3070e4fc2.png

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

-----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)

1629984527275-72e8668b-d01a-4605-8d0c-469ffda2d673.png

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

1629984556927-fe86dc5b-3545-4cbd-bcb2-1a3246640484.png

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

1629984632046-764684d4-3e95-43ee-9688-12db1f9c8aa6.png

知识点:base64 解码是图片数据的脚本

wireshark 私钥导入直接看 TLS 明文

lx100.pcap

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

1629985891289-c1567544-3a7c-41ef-8402-c78628d22e8e.png

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

1629985626923-5518272a-492d-48f2-8779-07bd8de90648.png

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

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

1629986906755-be34dd31-fdc1-4865-b6dc-c80a11ccad00.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

1629987627922-43c48de2-9a95-4790-81d7-943320d249f6.png

键盘流量

tshark 提取数据 tshark -r keyboard.pcapng -T fields -e usbhid.data > 1.txt

然后是用脚本读取

# -*- 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

1629987876828-0e57ebfd-4f4c-44e6-a112-4da6a4ca9af4.png

鼠标流量

同样提取数据 tshark -r mouse.pcapng -T fields -e usbhid.data > 1.txt

可以通过 notepad++ 的编辑 -> 行操作 -> 移除空行

通过脚本分析 x 与 y 最终生成的 result.txt 是一个 x y 形式的坐标集合,直接用 gnuplot 画图

# -*- 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 画出图片出来

1629988457780-28219ae8-5c01-4b24-ba33-36ee06ecc7b8.png

gnuplot 直接官网下安装就行

知识点:通过 tshark 提取鼠标键盘流量,通过脚本分析流量

gnuplot 根据坐标画图

1629988694151-a8467d18-fd7f-4b2c-ac5b-8f20b20a50fb.png

1629988650623-0bd03af3-74bc-4b03-a52f-d250598b2249.png

无线流量

MISC-datapack

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

1630022167031-f096324a-0714-4b3f-866a-a7f4f311f284.png

使用 aircrack-ng 破解密码:

首先 aircrack-ng cacosmia.cap 获取 MAC 地址(BSSID)与 ESSID

1630023188474-2fcd5932-a1f0-4b2e-a186-7d4174a0e894.png

使用 -w 指定字典 -b 指定 BSSID 地址破解密码

aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 1A:D7:17:98:D0:51 cacosmia.cap

1630023292165-6c735dba-85bd-4c5b-9455-e3d836214315.png

然后使用 airdecap-ng cacosmia.cap -e mamawoxiangwantiequan -p 12345678 提取流量包

-e 指定 ESSID,-p 指定密码

1630023388589-3b09ed41-10e4-4e27-bcd1-d94bc69fa333.png

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

1630023649229-6cae0ce8-cd52-46ba-a277-d34074968a90.png

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

1630023891242-5ac3d3b8-c8ad-428f-a4f5-3eb0e68a92ee.png

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

session=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoaW50IjoiZm9yIHNlY3VyaXR5LCBJIHNldCBteSBwYXNzd29yZCBhcyBhIHdlYnNpdGUgd2hpY2ggaSBqdXN0IHBpbmdlZCBiZWZvcmUifQ.P3xOErNrUkYqdMBoo8WvU63kUVyOkZjiTK-hwOIIS5A

1630024140684-8460df4b-8d53-4a41-9072-d8d2f9f78c98.png

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

知识点:无线数据包需要先用 aircrack-ng 跑出密码,然后 airdecap-ng 提取流量包再进行分析

jwt 格式是三部分每部分用 . 分隔开

原文: https://www.yuque.com/hxfqg9/misc/btg45s