抓包
抓包(Packet Capture)是一种网络数据监控和分析技术,用于捕获和记录通过网络传输的数据包。通过抓包,你可以查看网络上的数据流量,分析网络协议,诊断网络问题,甚至进行安全审计。
常见的抓包工具有:Wireshark、tcpdump、Fiddler、Burp Suite 等
tcpdump
网络上的流量、数据包,非常的多,因此要想抓到我们所需要的数据包,就需要我们定义一个精准的过滤器,把这些目标数据包,从巨大的数据包网络中抓取出来。
tcpdump 的各种参数:
- option 可选参数:将在后边一一解释。
- proto 类过滤器:根据协议进行过滤,可识别的关键词有: tcp, udp, icmp, ip, ip6, arp, rarp,ether,wlan, fddi, tr, decnet
- type 类过滤器:可识别的关键词有:host, net, port, portrange,这些词后边需要再接参数。
- direction 类过滤器:根据数据流向进行过滤,可识别的关键字有:src, dst,同时你可以使用逻辑运算符进行组合,比如 src or dst
输出的内容结构
|
|
Flags 标识符
在 TCP 报文Flags,会有:
S
:SYNP
:PSHF
:FINR
:RST.
:没有 Flag,可能是ACK
或URG
常规过滤规则
-
基于 IP 地址过滤:host
1 2 3 4 5 6 7
$ tcpdump host 192.168.10.100 # 根据源ip进行过滤 $ tcpdump -i eth2 src 192.168.10.100 # 根据目标ip进行过滤 $ tcpdump -i eth2 dst 192.168.10.200
-
基于网段过滤:net
1 2 3 4 5 6 7
$ tcpdump net 192.168.10.0/24 # 根据源网段进行过滤 $ tcpdump src net 192.168 # 根据目标网段进行过滤 $ tcpdump dst net 192.168
-
基于端口过滤:port
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
$ tcpdump port 8088 # 根据源端口进行过滤 $ tcpdump src port 8088 # 根据目标端口进行过滤 $ tcpdump dst port 8088 # 同时指定两个端口 $ tcpdump port 80 or port 8088 $ tcpdump port 80 or 8088 # 指定一个端口范围 $ tcpdump portrange 8000-8080 $ tcpdump src portrange 8000-8080 $ tcpdump dst portrange 8000-8080 # 常见协议 $ tcpdump tcp port http
-
基于协议:proto
1
$ tcpdump icmp
protocol 可选值:ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui
可选参数解析
-
设置不解析域名提升速度
-n
:不把ip转化成域名,直接显示 ip,避免执行 DNS lookups 的过程,速度会快很多-nn
:不把协议和端口号转化成名字,速度也会快很多-N
:不打印出host 的域名部分.
-
过滤结果输出到文件
1
$ tcpdump icmp -w icmp.pcap
再使用 wireshark 打开
-
从文件中读取包数据
1
$ tcpdump icmp -r all.pcap
-
控制详细内容的输出
v
: 详细vv
: 更详细vvv
: 更更详细
-
控制时间的显式
-t
: 不输出时间-tt
: 会输出时间戳-ttt
: 输出每两行打印的时间间隔(以毫秒为单位)-tttt
: 在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)
-
显式数据包头部
-x
-xx
-X
-XX
-
过滤指定网卡的数据包
-i
……
我常用的
|
|