hacktricks/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md
2023-08-03 19:12:22 +00:00

8 KiB
Raw Blame History

Wireshark技巧

Wireshark技巧

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥

提升你的Wireshark技能

教程

以下教程非常适合学习一些酷炫的基本技巧:

分析信息

专家信息

点击 Analyze --> Expert Information,你将获得对分析的数据包概述

解析的地址

Statistics --> Resolved Addresses你可以找到Wireshark解析的一些信息比如端口/传输协议到协议的映射MAC地址到制造商的映射等。了解通信中涉及的内容非常有趣。

协议层次结构

Statistics --> Protocol Hierarchy 下,你可以找到通信中涉及的协议以及与它们相关的数据。

会话

Statistics --> Conversations 下,你可以找到通信中的会话摘要以及与它们相关的数据。

端点

Statistics --> Endpoints 下,你可以找到通信中的端点摘要以及每个端点的数据。

DNS信息

Statistics --> DNS你可以找到关于捕获的DNS请求的统计信息。

I/O图表

Statistics --> I/O Graph 下,你可以找到通信的图表

过滤器

在这里你可以找到根据协议进行的Wireshark过滤器https://www.wireshark.org/docs/dfref/
其他有趣的过滤器:

  • (http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)
  • HTTP和初始的HTTPS流量
  • (http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)
  • HTTP和初始的HTTPS流量 + TCP SYN
  • (http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)
  • HTTP和初始的HTTPS流量 + TCP SYN + DNS请求

搜索

如果你想在会话的数据包中搜索内容请按下CTRL+f。你可以通过按右键然后编辑列来向主要信息栏添加新的图层编号、时间、源等

练习:https://www.malware-traffic-analysis.net/

识别域名

你可以添加一个显示Host HTTP头的列

还可以添加一个从初始的HTTPS连接中添加服务器名称的列ssl.handshake.type == 1

识别本地主机名

通过DHCP

在当前的Wireshark中不再使用bootp,而是需要搜索DHCP

通过NBNS

解密TLS

使用服务器私钥解密https流量

edit>preference>protocol>ssl>

点击_Edit_并添加服务器和私钥的所有数据IP、端口、协议、密钥文件和密码

使用对称会话密钥解密https流量

事实证明Firefox和Chrome都支持将用于加密TLS流量的对称会话密钥记录到文件中。然后您可以将Wireshark指向该文件即可解密TLS流量。更多信息请参见https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/
要检测此项,请在环境中搜索变量SSLKEYLOGFILE

共享密钥文件的格式如下:

要在Wireshark中导入此文件请转到_edit > preference > protocol > ssl > 并将其导入到(Pre)-Master-Secret log filename:

ADB通信

从ADB通信中提取发送的APK文件

from scapy.all import *

pcap = rdpcap("final2.pcapng")

def rm_data(data):
splitted = data.split(b"DATA")
if len(splitted) == 1:
return data
else:
return splitted[0]+splitted[1][4:]

all_bytes = b""
for pkt in pcap:
if Raw in pkt:
a = pkt[Raw]
if b"WRTE" == bytes(a)[:4]:
all_bytes += rm_data(bytes(a)[24:])
else:
all_bytes += rm_data(bytes(a))
print(all_bytes)

f = open('all_bytes.data', 'w+b')
f.write(all_bytes)
f.close()
☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥