Wireshark and tcpdump
Wireshark
显示过滤器
针对已经捕获的报文进行过滤。 一条基本的表达式由过滤项、过滤关系、过滤值组成 ,例如:
过滤项 关系 过滤值 ip.src == 192.168.1.1 协 协议 确定值 议 字段
过滤项
- 协议
- 协议字段
常用字段
- address
- 源、目的 IP
- 源、目的 MAC
- 网段
- port
- 源、目的 IP
- length
- 报文长度
- contains
- 查询 payload 中的关键字
过滤关系
- 大于
- gt
- >
- 大于等于
- ge
- >=
- 小于
- lt
- <
- 小于等于
- le
- <=
- 等于
- eq
- ==
- 不等于
- ne
- !=
复合表达式
- 与
- and
- &&
- 或
- or
- ||
- 非
- not
- !
- 异或
- xor
- ^^
- 分片
- [..]
过滤值
- 应满足过滤项的格式
例子:
eth.src == 04:f9:38:ad:13:26 即筛选源 MAC 是 04:f9:38:ad:13:26 的包 eth.type == 0x00 筛选网络层使用 ip 协议的数据包 ip.src != 192.168.1.1 筛选源地址是 192.168.1.1 之外的数据包 ip.addr = 192.168.1.0/24 筛选出这一网段的数据包 http contains "xxx" 查询 http payload 报文中包含 xxx 字符串的包 http.request.method == GET 筛选 http 包中的 get 请求数据包 ip.src == 192.168.1.1 && tcp[13]&2 筛选源地址为 192.168.1.1 并且类型为 SYN 的数据包
捕获过滤器
提前设置好规则,只捕获符合过滤规则的报文。伯克利包捕获表达式: 一条基本的表达式由捕获项、捕获参数、捕获值组成 ,例如:
捕获项 参数 捕获值 ip src host 192.168.1.1 协 数据 确定值 议 流向
捕获项
- 协议
- 数据流向
协议默认为所有协议,流向默认为 src or dst
。
捕获参数
- host (default)
- net
- port
- …
捕获值
应满足捕获项的格式
例子:
tcp src portrange 0-65535 and tcp dst port 80 捕获源端口为 0-65535 且目的端口为 80 的流量 vlan 10 and ip src net 192.168.1.0/24 捕获 vlan id 为 10 且源网段为 192.168.1.0/24 的所有流量 port 25 and portrange 110-143 捕获电子邮件流量
数据包解析
- Protocol in frame
数据包整体架构,与五层模型相对应
- Type
代表网络层应使用何种协议模块来处理
- Protocol
代表传输层应使用何种模块来处理
- Dst Port
代表应用层应使用的协议及标识连接符
- User-Agent
用户标识
- Server
中间件类型
追踪流 -> http 流
捕获远程主机数据包
- 需要在被远程捕获的设备上安装 WinPcap,并且该程序运行此应用程序
- 网络可达,默认 2002 端口
捕获->选项->管理接口->远程接口
认证方为 Windows 用户名及密码, 必须使用账密登录?
HTTPS 取证
- 用服务端的私钥 编辑->首选项->Protocol->TLS->RSA keys list
- 用客户端的私钥
通过设置环境变量截取浏览器的
master_secret
, 进而实现解密 HTTPS 的目的,具体方式(Windows)环境变量中新建用户变量SSLKEYLOGFILE=C:\path\sslkey.log
文件,之后再 Wireshark 中 TLS 配置中制定该文件位置即可
抓到的包可参照 SSL Handshake 阶段交换的信息 进行分析。
AIM 取证
前置问题
- What is the name of Ann’s IM buddy?
- What was the first comment in the captured IM conversation?
- What is the name of the file Ann transferred?
- What is the magic number of the file you want to extract(first four bytes)?
- What was the MD5sum of the file?
- What is the secret recipe?
1
解密 AIM 数据包后,找到协议为 AIM Message 的数据包

Buddy 为 Sec558user1
2
从 1 中的包中的 Message Block 中可以得到第一条消息的内容,即
ValueMessage: Here's the secret recipe... I just downloaded it from the file server. Just copy to a thumb drive and you're good to go >:-)
3
4
选择 Ann 发送的数据,以原始数据 save as -> recipe.bin


magic number 为 50 4B 03 04
5
计算文件 MD5。
6
删除 magic number 之前的数据,另存为 docx 文件即可

邮件取证
以 SMTP 为例子,若要解决用户认证,如果没加密的话可根据 334 状态码可以找到用户名和密码, base64 解码后就可得到用户名和密码
YW5uQGFiYy5kZWY= YWRtaW4=
base64 解码后得到
ann@abc.def admin

邮件基本信息、正文

邮件附件

附件
tcpdump
Linux 系统下的抓包程序,数据包流程: packet -> tcpdump -> iptables -> application -> iptables -> tcpdump -> packet
。
tcpdump <option> <proto> <dir> <type>
常用参数:
Argument | | Caption |
---|---|---|
-i [interface] | 指定网络接口(网卡) | |
-n | 不进行主机解析,还可以 -nn, -N |
|
-c [cnt] | --count |
指定抓取的包数 |
-w [file.pcap] | --write |
将抓到的包写入指定文件 |
-r [file.pcap] | --read |
读取抓包文件 |
-t | 时间的显示,还可以 -tt, -ttt, -tttt |
|
-v | --verbose |
详细输出,还可以 -v, -vv, -vvv |
-x | 数据包头部显示为十六进制,还可以 -x, -xx, -X, -XX |
|
-Q [in,out,inout] | --direction |
指定入方向或出方向或不限 |
-A | 以 ASCII 码显示数据包 | |
-l | 基于行的输出 | |
-q | 简洁地打印输出 | |
-s [number] | 指定截取的字节数,为 0 表示截取全部报文 | |
-S | 使用绝对序列号 | |
-C [file-size] | 保存到文件中时检查此文件的大小,超过就另建文件 | |
-F [file] | 使用文件中的内容作为过滤表达式 | |
-D | 列出可用网络接口 | |
-e | 每行打印输出将包含数据包的数据链路层头部信息 | |
-E | 解密 IPsec 数据 | |
-L [interface] | 列出指定网络接口所支持的数据链路层 | |
-Z [user] | 抓包时受权限的限制 | |
-d | 打印易读格式,还可以 -dd, -ddd ,分别为 C ,十进制 |
捕获过滤器可以抓取符合条件的数据包。
还有一些关键字可以使用,如:
if
: 网络接口名proc
: 进程名pid
: 进程 pidsvc
: service classdir
: 方向 in, outeproc
: effective process nameepid
: effective process ID