tcpdump
Linux Unix 默认安装的命令行的抓包工具
-i 指定接口
-s 指定大小
-w 指定保存到哪个文件
0 完整大小
抓包命令
tcpdump -i eth0 -s 0 -w a.cap
查看命令
tcpdump -r a.cap 显示摘要信息
tcpdump -r -a a.cap 显示详细内容(assical码)
高级筛选
tcpdump -A -n 'tcp[13] = 24' -r http.cap
tcpdump
Linux Unix 默认安装的命令行的抓包工具
-i 指定接口
-s 指定大小
-w 指定保存到哪个文件
0 完整大小
抓包命令
tcpdump -i eth0 -s 0 -w a.cap
查看命令
tcpdump -r a.cap 显示摘要信息
tcpdump -r -a a.cap 显示详细内容(assical码)
高级筛选
tcpdump -A -n 'tcp[13] = 24' -r http.cap
TCPDUMP是Unix、Linux自带的工具,纯命令行
Tcpdump -r file.pcap
tcp ip 还有二层包头 还有包头信息通常可以抓完整的
默认情况下只抓数据包的前68个字节
通常情况下 内容有ip地址
源地址 目的地址
tcpdump -i+0(接口) -s(大小) 0(有多大就要多大) -w(保存) a. cap(文件名)
tcpdump -r a.cap 查看这个包
12>11 12向11发送icmp包
tcpdump -A -r a.cap 以acess吗打开 -x 以16进制
sort -u清除重复的地方
每一行表示4个字节 一个32位
tcp三次握手建立 之后 数据开始传输 为是ack+push标志物为一 代表着数据的传输的完成
基于这个特信可以筛选包中任何一处条件
tcpdump:
- 抓取所有经过 eth1,目的或源地址是 192.168.1.1 的网络数据
# tcpdump -i eth1 host 192.168.1.1
- 源地址
# tcpdump -i eth1 src host 192.168.1.1
- 目的地址
# tcpdump -i eth1 dst host 192.168.1.1
过滤端口
--------
- 抓取所有经过 eth1,目的或源端口是 25 的网络数据
# tcpdump -i eth1 port 25
- 源端口
# tcpdump -i eth1 src port 25
- 目的端口
# tcpdump -i eth1 dst port 25
网络过滤
--------
# tcpdump -i eth1 net 192.168
# tcpdump -i eth1 src net 192.168
# tcpdump -i eth1 dst net 192.168
协议过滤
--------
# tcpdump -i eth1 arp
# tcpdump -i eth1 ip
# tcpdump -i eth1 tcp
# tcpdump -i eth1 udp
# tcpdump -i eth1 icmp
常用表达式
非 : ! or "not" (去掉双引号)
且 : && or "and"
或 : || or "or"
- 抓取所有经过 eth1,目的地址是 192.168.1.254 或 192.168.1.200 端口是 80 的 TCP 数据
# tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host
192.168.1.200)))'
- 抓取所有经过 eth1,目标 MAC 地址是 00:01:02:03:04:05 的 ICMP 数据
# tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'
- 抓取所有经过 eth1,目的网络是 192.168,但目的主机不是 192.168.1.200 的 TCP 数据
# tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'
只抓 SYN 包
# tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'
抓 SYN, ACK
# tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'
抓 SMTP 数据
----------
# tcpdump -i eth1 '((port 25) and (tcp[(tcp[12]>>2):4] = 0x4d41494c))'
抓取数据区开始为"MAIL"的包,"MAIL"的十六进制为 0x4d41494c。
抓 HTTP GET 数据
--------------
# tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x47455420'
"GET "的十六进制是 47455420
抓 SSH 返回
---------
# tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x5353482D'
"SSH-"的十六进制是 0x5353482D
- 抓 DNS 请求数据
# tcpdump -i eth1 udp dst port 53
实时抓取端口号8000的GET包,然后写入GET.log
tcpdump -i eth0 '((port 8000) and (tcp[(tcp[12]>>2):4]=0x47455420))' -nnAl -w /tmp/GET.log
tcpdump:
默认只抓68个字节
tcpdump -i eth0 网卡
-s 0 抓取任意大小的包
-w file.pcap 保存到文件
-r file.pcap 读取文件
-A -r 以ASCII码形式读(X 16进制形式)
- i eth0 tcp port 22 22端口,TCP协议的包
信息统计
菜单下的statistics
统计节点数/协议分布/包大小分布/会话连接/解码方式
Summary:数据包摘要信息
Endpoints:查看数据包列表里一共有多少ip地址通信
Ethernet 2: 二层包头 可排序可看哪个ip大量发送接收包
Protocol hierarchy:查看什么类型的协议包占比
Packet length:按包的长度查看流量
Conversations:查看通讯的机器之间流量
wireshark实践
抓包对比nc、ncat加密与不加密的流量
例:NC的传输
A端:nc -lp 333 -c bash
B端:nc -nv 10.1.1.11 333
B端执行ls pwd等命令
使用wireshark Follow TCP Stream 可查看到传输内容
例:Ncat传输
A端:ncat -nvl 333 -c bash --ssl
B端:ncat -nv 10.1.1.11 333 --ssl
使用wireshark Follow TCP Stream 只能看到少量ncat特征信息
抓包
默认只抓68个字节
tcpdump -i eth0 -s 0 -w file.pcap
tcpdump -i eth0 port 22
读取抓包文件
tcpdump -r file.pcap
tcpdump -n -r http.pcap | awk'{print $3 }' | sort -u
tcpdump -n src host 145.254.160.237 -r http.cap
tcpdump -n dst host 145.254.160.237 -r http.cap
tcpdump -n port 53 -r http.cap
tcpdump -nX port 80 -r http.cap
tcpdump -A -b 'tcp[13]=24' -r http.cap