本帖最后由 新手887402 于 2022-12-7 17:47 编辑
今天分享一个自己总结的抓包技巧,都是比较简单基础且实用的。分为两部分,一个是Windows的wireshark一个是Linux的tcpdump:先说Wireshark吧,Wireshark主要用于抓Windows终端上网卡的包,同时也常用于打开来自Linux抓的数据包而进行分析。为了精确的分析问题,抓包都会抓的比较全面,此时过滤表达式可以帮我们准确的在杂乱的数据包中找到自己钟意的那一个。接下来就介绍一下自己用到的一些表达式: (1)地址过滤 ip.src == x.x.x.x ---- 抓指定源ip ip.dst == x.x.x.x ---- 抓指定目的ip的包
(2)端口过滤 tcp.port == xx ---- 抓指定端口的数据包,可以是80,443,这个参数是针对输入的端口去抓,不限制源目。需要针对源目过滤的话(tcp.dstport是目)(tcp.srcport是源)
(3)协议过滤 直接输入协议名称,比如http、ssh等 也可以根据字段具体检索,比如:http.request.method == "get"
(4)判断网络延迟 icmp.resptime > 4 and ip.addr == x.x.x.x ---- 这个4是时间,也可以换成别的。这条表达式是抓ip为x.x.x.x的ping包且延迟大于4ms。常用于客户反馈流量过AF、AC等设备后延迟增大的场景。通过这个可以排查流量是过到那里延迟增大的,可缩小排查范围。
(5)逻辑运算符and/or/not 过滤多个条件组合时,使用and/or,比如获取ip地址为x.x.x.x的icmp数据包表达式为 ip.addr == x.x.x.x and icmp
这样罗列出来在实战中也没有具体的概念,举个例子: 比如现在要排查atrust代理网关到内网资源的连接是否有正常建立。 第一步:先nslookup下域名,解析出资源的IP 第二步:atrust看日志确认客户端IP 第三步:因为该资源为https的,所以可以通过源目IP过滤后查看ssl协议,ssl的交互第一个包是client hello包,然后可以根据这个包的stream流来进行定位。(stream是标识tcp流顺序,一般是先找自己要找的然后再根据这个流来找完整的数据交互过程) 第四步:根据stream标识过滤出整个tcp流,然后看到三次握手成功建立连接,tcp连接建立成功后开始ssl四次握手建立连接。发现整个建立连接的过程没有问题,说明代理网关到内网资源的连通性没有问题,但却没有数据产生。 然后让客户找了一台内网终端去访问该资源测试,发现能够弹出网络连接的页面,但获取资源的时候出现问题。说明问题并没有出现在atrust上可能资源本身存在问题或者有中间设备做了限制。具体现象如下: 至此,初步推断中间设备做了某些限制或者是服务器本身的存在问题。
然后再来简单说下tcpdump命令的常用参数: 这里简单介绍一个自己常用的:tcpdump -i ethx host x.x.x.x -vs0 -w zhuabao.pcap -i是指定自己的网卡 host后指的是目的IP -v是实时显示抓的数据包的一些信息 -s0是指不限制抓取数据包的大小,不加0默认抓68个字节,有可能导致抓的数据包不全 -w是保存改数据包一般后缀跟pcap
以上分享就是自己在工作中遇到的一些抓包分析的总结,如存在问题,欢迎指正。 |