网站首页 > 博客文章 正文
一:tcpdump的输出结果介绍
tcpdump -i eth0 -e -nn -X -c 2 'port 1111' 所截获包内容如下:
第一行:“tcpdump: verbose output suppressed, use -v or -vv for fullprotocol decode”
提示使用选项-v和-vv,可以看到更全的输出内容。
第二行“listening on eth0, link-type EN10MB (Ethernet), capture size 65535bytes”
我们监听的是通过eth0这个NIC设备的网络包,且它的链路层是基于以太网的,要抓的包大小限制是65535字节。包大小限制值可以通过-s选项来设置。
第三行”12:40:33.569037 00:19:e0:b5:10:94 > 00:1a:a0:31:39:d4, ethertypeIPv4 (0x0800),”
12:40:33.569037 分别对应着这个包被抓到的“时”、“分”、“秒”、“微妙”。
00:19:e0:b5:10:94 > 00:1a:a0:31:39:d4 表示MAC地址00:19:e0:b5:10:94发送到MAC地址为00:1a:a0:31:39:d4的主机,ethertype IPv4 (0x0800)表示
Ethernet帧的协议类型为ipv4(即代码为0x0800)。
第四行”length 66: 210.45.123.249.27236 > 172.16.0.11.1111: Flags [S],seq 1624463808,
length 66表示以太帧长度为66。 210.45.123.249.27236表示这个包的源IP为210.45.123.249,源端口为27236,’>’表示数据包的传输方向, 172.16.0.11.1111,
表示这个数据包的目的端ip为172.16.0.11,目标端口为1111,1111端口是我的一个web服务器监听端口。Flags是[S],表明是syn建立连接包(即三次握手的第一次
握手),seq1624463808 序号为1624463808,这个其实就是TCP三次握手的第一次握手:client(210.45.123.249)发送syn请求建立连接包。
第五行” win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0”
win 8192 表示窗口大小为8192字节。options[mss 1460,nop,wscale 2,nop,nop,sackOK]为tcp首部可选字段mss 1460表示mss是发送端(客户端)通告的最大
报文段长度,发送端将不接收超过这个长度的TCP报文段(这个值和MTU有一定关系)。nop是一个空操作选项, wscale指出发送端使用的窗口扩大因子为2, sackOK
表示发送端支持并同意使用SACK选
二:tcpdump flag
1.下面这条命令就是查看80端口的访问量,进行排序,取前20位
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
2.抓取SQL内容
tcpdump -i eth0 -c 100000 -s 0 -A -nnn 'dst 10.30.80.220 and port 3306 and tcp[13]&8!=0' -w 3306.txt
3.flag说明
tcp数据报头,有8位标识位部分
CWR | ECE | URG | ACK | PSH | RST | SYN | FIN
- 显示所有的URG包
# tcpdump 'tcp[13] & 32!=0'
- 显示所有的ACK包
# tcpdump 'tcp[13] & 16!=0'
- 显示所有的PSH包
# tcpdump 'tcp[13] & 8!=0'
- 显示所有的RST包
# tcpdump 'tcp[13] & 4!=0'
- 显示所有的SYN包
# tcpdump 'tcp[13] & 2!=0'
- 显示所有的FIN包
# tcpdump 'tcp[13] & 1!=0'
- 显示所有的SYM/ACK包
# tcpdump 'tcp[13]=18'
过滤器之所以能找到各种类型的包是因为tcp[13]观察的是tcp首部偏移量为13的位置(tcp的标志位为TCP报文的第13个字节),&后面的数字 是字节中的位,不等于0代表该位被打开
3.抓指定tcp标识的包的方法
- 用tcpflags选项(表示TCP报文中标志位字节的偏移量 )抓取tcp标识
# 'tcp[tcpflags] = tcp-syn' //匹配只有syn标志设置为1的 tcp报文
# 'tcp[tcpflags] & (tcp-syn |tcp-ack |tcp-fin) !=0' //匹配含有syn,或ack或fin标志位的TCP报文
TCP中标志位字节的值可以是:
tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg
Flags值说明:
FIN: "finished"简写。表示发送者以及发送完数据。通常用在发送者发送完数据的最后一个包中。
SYN: "Synchronisation"简写。表示三次握手建立连接的第一步,在建立连接时发送者发送的第一个包中设置flag值为SYN。
RST: "reset"简写。重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者发送包发送到一个不是期望的目的主机时,接收端发送reset 重置连接标志的包。
PSH: "push"简写。通知接收端处理接收的报文,而不是将报文缓存到buffer中。
ACK: "Acknowledgment"简写。表示包已经被成功接收。
URG: "urgent"简写。通知接收端处理在处理其他包前优先处理接收到的紧急报文(urgent packets)。详见RFC6093。
ECE: "ECN-Echo"简写。ECN表示Explicit Congestion Notification。表示TCP peer有ECN能力。详见RFC3168。
CWR: "Congestion Window Reduced"简写。发送者在接收到一个带有ECE flag包时,将会使用CWR flag。 详见RFC3168。
NS: "nonce sum"简写。该标签用来保护不受发送者发送的突发的恶意隐藏报文的侵害。详见 RFC 3540
4.使用tcpdump抓取响应flag值得报文
因为TCP Flags 位于TCP头的第14个字节中。所有可以通过如下命令进行抓取:
抓取FIN包: tcpdump -i eth0 "tcp[13] & 1" -ennnv
抓取SYN包: tcpdump -i eth0 "tcp[13] & 2" -ennnv
抓取RST包: tcpdump -i eth0 "tcp[13] & 4" -ennnv
抓取PSH包: tcpdump -i eth0 "tcp[13] & 8" -ennnv
抓取ACK包: tcpdump -i eth0 "tcp[13] & 16" -ennnv
抓取URG包: tcpdump -i eth0 "tcp[13] & 32" -ennnv
因此第13个八位组结构为
- - + + + + + +
前面2个是保留的,都为0,后面的6个根据不同情况有不同值,例如syn 包 则为
00 0 0 0 0 1 0
这是二进制转化为十进制就是2
因此 tcpdump -ni eth0 tcp[13]==2 就表示syn包
同理,syn+ack包为
00 0 1 0 0 1 0
化为十进制就是18,因此tcpdump -ni eth0 tcp[13]==18 表示syn+ack包
如果想同时抓syn和syn+ack包,则进行tcp[13]位值与掩码进行与运算:
tcp[13] & 2 == 2
- 上一篇: Linux awk实现group by分组统计功能
- 下一篇: linux应急响应及入侵排查全面总结
猜你喜欢
- 2024-12-16 Linux这17个操作技巧是每个运维工程师应知必会的吧?
- 2024-12-16 Linux部分经常使用的命令(SUSE 服务器)
- 2024-12-16 Linux Shell
- 2024-12-16 干货分享:shell脚本批量telnet ip 端口
- 2024-12-16 Linux 系统日常巡检脚本
- 2024-12-16 Linux故障排查思路及常用命令(收藏)
- 2024-12-16 在linux 下怎么查看服务器的cpu和内存的硬件信息
- 2024-12-16 Linux 安全与运维指南,安全第一!
- 2024-12-16 Linux环境中使用netstat和awk命令监控网络连接情况
- 2024-12-16 Linux命令学习神器!命令看不懂直接给你解释
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)