wireshark流量分析
- 一、wireshark捕获过滤器
- 二、显示过滤器
- 三、跟踪TCP流
- 四、导出HTTP对象
- 五、统计模块使用
- 六、HTTP状态码
- 七、菜刀通讯特征
- 1.通过POST方式发送攻击者的控制指令
- 2.菜刀流量的简单分析
- 3.通过回显判断菜刀执行的操作
- 八、蚁剑流量简单分析
- 九、USB协议分析
- 十、其他协议分析
- 十一、提数wireshark数据中的文件
- 1.提取zip文件
- 2.提取 doc文件
一、wireshark捕获过滤器
捕获过滤器就是一个表达式,配置与抓包之前,只有那些满足给定表达式的数据包才会被捕获。
捕获过滤器的语法
捕获过滤器表达式的语法为一个或多个限定词,然后跟着一个ID名字或者数字。
([Proto] | [Dir] | [Type]) 数字
src host 10.10.10.1
tcp dst port 80
还可以使用逻辑运算符(与(&&)、或(||)、非(!))来对表达式进行组合, ;
从而创建更高级的表达式。
host 192.168.1.1 && port 80;
常用捕获过滤器
1.基于IP地址进行捕获
host 10.3.1.1
dst host 10.3.1.1
net 192.168.1.0/24
net 192.168.1.0 mask 255.255.255.0
dst net 192.168.1.0/24
2.基于Mac地址进行捕获
ether host 02:0A:42:23:41:AC
ether src 02:0A:42:23:41:AC
3.基于端口号进行过滤
port 80
!port 8080
udp dst port 53
4.基于协议进行过滤
icmp
!ip6
二、显示过滤器
显示过滤器就是一个表达式,配置于抓包之后,可以利用显示过滤器过滤出感兴趣的流量。
常用显示过滤器
补充:常用的http显示过滤器
http
• http port 80
• http.request
• http.request.method==”GET”/http.request.method==”POST”
• http.host==”www.baidu.com”
• http.host contains “baidu”
三、跟踪TCP流
Wireshark的“跟踪TCP流”功能能够将TCP流重组成容易阅读的格式,这在查看HTTP、FTP等纯文本应用层协议时非常好用。
四、导出HTTP对象
当分析HTTP会话时,导出HTTP对象可以帮助我们了解页面中传输的元素,如重组HTML、图片、JavaScript、视频和样式表等对象。
五、统计模块使用
六、HTTP状态码
七、菜刀通讯特征
1.通过POST方式发送攻击者的控制指令
• 请求中含有eval、base64_decode等字样
• 返回的数据有固定的格式:
“->|返回的数据|<-”
2.菜刀流量的简单分析
• 菜刀的流量进行了url编码
• 菜刀通信流量是经过base64加密的
• 菜刀通信流量中的z0参数中存放是菜刀的功能代码
• 菜刀通信流量中的z1、z2(如果有)则是执行菜刀功能代码时所需要的参数
菜刀下载文件
• z0参数存放的是菜刀实现查看目录功能的代码
• z1参数存放的是菜刀想要下载的文件名称
菜刀列目录
• z0参数存放的是菜刀实现下载操作功能的代码
• z1参数存放是菜刀想要查看的目录名称
菜刀上传文件
• z0参数存放的是菜刀实现上传操作功能的代码
• z1参数存放的是上传文件的名称
• z2参数存放的是上传文件的内容(十六进制形式)
菜刀执行命令
• z0参数存放的是菜刀实现命令执行操作功能的代码
• z1参数存放的是菜刀实现命令执行操作功能的一个固定参数
• z2参数存放的是想要被执行的具体命令
3.通过回显判断菜刀执行的操作
八、蚁剑流量简单分析
数据包中蚁剑请求流量如下:
将eval中内容扔到php运行环境中echo下:
分析如下代码,发现真正回显的内容应位于字符"18da5"和"7a420"之间(首尾个去掉5个字符)。
蚁剑执行命令文件流中的部分如下:
通过逐个http流分析,可以看到黑客执行了这个语句:
查看回显流量包字符(去到收尾各5个字符),根据之前的加密算法写出解密算法。
解密算法如下:
<?
function asdec($out){
@session_start();
$key='f5045b05abe6ec9b1e37fafa851f5de9';
return @base64_decode(openssl_decrypt(base64_decode($out), 'AES-128-ECB', $key, OPENSSL_RAW_DATA));
};
$out = 'kRD1eD+vSZ81FAJ6XClabCR0xNFklup5/x+gixas3l0kdMTRZJbqef8foIsWrN5dJHTE0WSW6nn/H6CLFqzeXSR0xNFklup5/x+gixas3l0kdMTRZJbqef8foIsWrN5dZOTFg4DW9MYwG6k3rEvAAR8oFStGnfMRtUJOqc0mgokfKBUrRp3zEbVCTqnNJoKJHygVK0ad8xG1Qk6pzSaCiR8oFStGnfMRtUJOqc0mgokfKBUrRp3zEbVCTqnNJoKJ1qI47Cz1/qfnNoNARGhLfVhC0RJlfeKCvbPwpjFn//BSFY8RJlZyxz1a+TPy0D3cUhWPESZWcsc9Wvkz8tA93FIVjxEmVnLHPVr5M/LQPdxSFY8RJlZyxz1a+TPy0D3cUhWPESZWcsc9Wvkz8tA93GnMvJfVbvphfWnt17IOkzYjvv91k2fnYDR7u4nlGM3YitxGYGs9mn+HS5iJBXORtYrcRmBrPZp/h0uYiQVzkbWK3EZgaz2af4dLmIkFc5G1itxGYGs9mn+HS5iJBXORtUq4dBjDRFhDqDyzs9CScJhrd3yMusQ+qsnZkq4Ey7NVJHTE0WSW6nn/H6CLFqzeXSR0xNFklup5/x+gixas3l0kdMTRZJbqef8foIsWrN5dJHTE0WSW6nn/H6CLFqzeXSR0xNFklup5/x+gixas3l2hDPuDhVN4TaDLzp9bXyfGeCVhvglAaNo2rA/ovnRTTtfA5ZywMOOijj6md5RItqjXwOWcsDDjoo4+pneUSLao18DlnLAw46KOPqZ3lEi2qNfA5ZywMOOijj6md5RItqgS0b9hS7r5TX9YNZo2awgUAyqVacVgwr1NlNQ2k/kihhh0QQfnjeGdZhkz0N0jAKiMzFmAMa7xQ1URxTaHoHjDg3NaWl/8+PVG+pyaKrbNDjfl77POeQE8+0MCHpz6YxWLJ6mwCe1X3uzz/HSHcHSvQBB8FxjOhugOErOXkd3LZi/60Gr4gIEc1JIxA5A2pE/V6Z/DFwNOR4M/IIIWdGr5';
echo(asdec($out));
?>
base64解密得到flag:
九、USB协议分析
tshark -r 1.pcapng -T fields -e usb.capdata > usbdata.txt
键盘流量分析
USB协议的数据部分在Leftover Capture Data域之中,键盘数据包的数据长度为8个字节,击键信息集中在第3个字节,每次key stroke都会产生一个keyboard event usb packet
解密脚本:
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:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5", 0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 0x28:"n", 0x2a:"[DEL]", 0X2B:" ", 0x2C:" ", 0x2D:"-", 0x2E:"=", 0x2F:"[", 0x30:"]", 0x31:"\\", 0x32:"~", 0x33:";"}
nums = []
keys = open('1.txt')
for line in keys:
if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':
continue
nums.append(int(line[6:8],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
鼠标流量分析
解密脚本:
nums = []
keys = open('data.txt','r’)
posx = 0
posy = 0
for line in keys:
if len(line) != 12 :
continue
x = int(line[3:5],16)
y = int(line[6:8],16)
if x > 127 :
x -= 256
if y > 127 :
y-= 256
posx += x
posy += y
btn_flag = int(line[0:2],16)
if btn_flag == 1 :
print posx , posy keys.close()
十、其他协议分析
HTTPS协议:
HTTPS=HTTP + SSL / TLS
常见考点:
寻找解密密钥文件SSL.log
使用wireshark,可以解密TLS协议,在首选项中。
WPA-PSK协议:
802.11是现今无线局域网通用的标准,常见认证方式
-不启用
- WEP
- WPA/WPA2-PSK(预共享密钥)
常见考点:
aircrack-ng爆破密钥解密流量包
aircrack-ng -w password.txt wifi.pcap
airdecap-ng -e ESSID -p 12345678 wifi.pcap
十一、提数wireshark数据中的文件
1.提取zip文件
z2参数为上传的文件内容
保存为原始数据
用winhex打开导出的文件yuanshi.zip
虽然我们保存为.zip文件,但是并没有按照我们预计的直接可以正常打开zip文件,原因是z2参数的值16进制的,所以我们应当将z2参数的16进制数据直接复制到winhex中,方法如下:
新建文档
右键edit,clipboard,write
选择ASCII HEX,16进制数据被写入16进制区域
保存文件为.zip,可以正常打开压缩包。
2.提取 doc文件
找到doc文件所在的流
导出原始数据
此时打开一定是乱码,需要删除多余数据,用winhex打开导出的文件,删除多余部分
此时打开doc文件正常。