当前位置: 首页 > Linux

tcpdump抓包mysql建联验证TCP的三次握手

时间:2023-04-06 03:17:41 Linux

TCP的三次握手四次挥手是家常便饭,那么具体的数据包传输过程你真的尝试过吗?今天就通过具体的mysql连接实践来看看如何传递数据包。网络嗅探器和tcpdump是如何完成共享网络中的数据传输的?以及如何找到对应的机器进行数据交互?一般来说,在网络中,信息包会广播到网络中所有主机的网络接口。主机的网络设备通过IP、MAC地址等信息判断该信息包是否应该接收,并丢弃与自身无关的数据包,从而达到我们与互联网上指定机器通信的目的。但是在众多的黑客技术中,嗅探器是一种非常常见的技术,它可以使宿主的网络设备接收到所有到达的信息包,从而达到网络监控的目的。在共享LAN上,嗅探器可以畅通无阻地查看网络上的流量。除了黑客之外,网络管理员还应该学会使用嗅探器来跟踪网络使用情况,并在网络性能急剧下降时找到网络拥塞和问题的根源。具体的嗅探工具包括Windows平台的netxray和snifferpro软件,Linux平台的tcpdump。今天要介绍的是tcpdumpsniffer嗅探工具。安装tcpdumpCpdump是Linux平台上命令行运行的网络流量检测工具。可以拦截网卡上接收到的数据包,通过一定的配置完成对内容的解析分析。检测系统是否安装了tcpdump的方法很简单,就是直接执行:$tcpdump#如果没有安装tcpdump:nosuitabledevicefound#如果已经安装了,会出现很多这样的网络分析数据当有网络请求时21:44:14.109590IPclient.host>server.host:Flags[P.],seq1031520:1031984,ack1393,win95,options[nop,nop,TSval2242702304ecr3381086780],length464最新的tcpdump源码下载地址:http://www.tcpdump.org(tcpdump官网)tcpdump的运行需要pcap的支持,请同时下载安装这两个内容。通常,两者的最新版本相互兼容。笔者这次下载的是最新版本,直接在命令行中使用wget下载即可:#下载tcpdump文件wgetwww.tcpdump.org/release/tcpdump-4.9.2.tar.gz#下载pcap文件wgetwww.tcpdump.org/release/libpcap-1.9.0.tar.gz#安装libpcap,makeinstalltar-zxvflibpcap-1.9.0.tar.gzcdlibpcap-1.9.0.tar.gz./时可能需要root权限configuremakemakeinstall#安装tcpdump的过程tar-zxvftcpdump-4.9.2cdtcpdump-4.9.2./configuremakemakeinstall安装完成后输入tcpdump如上判断是否安装成功:$tcpdump命令行参数及过滤cpdump的规则tcpdump是一个命令行方式的网络嗅探器,如果不使用任何参数,它将继续捕获所有网络请求内容,无法进行有效分析。您可以根据需要使用适当的参数。#查看所有参数$tcpdump--helptcpdumpversion4.9.2libpcapversion1.9.0-PRE-GIT(withTPACKET_V2)OpenSSL1.0.0-fips29Mar2010Usage:tcpdump[-aAbdDefhHIJKlLnNOpqStuUvxX#][-Bsize][-ccount][-Cfile_size][-Ealgo:secret][-Ffile][-Gseconds][-iinterface][-jtstamptype][-Msecret][--number][-Qin|out|inout][-rfile][-ssnaplen][--time-stamp-precisionprecision][--immediate-mode][-Ttype][--version][-Vfile][-wfile][-Wfilecount][-ydatalinktype][-zpostrotate-command][-Zuser][expression]常用参数含义:-a将网络地址转换为易于识别的主机名(默认)-n不将网络地址转换成易于识别的主机名,即直接显示IP地址,省略DNS查询-nn不转换端口名-t不显示时间戳-tttt输出date处理的时间戳-c抓取数据包后指定个数的Exit-e显示数据链路层的头信息,即MAC地址信息:00:8c:fa:f3:e3:04(ouiUnknown)>00:e0:ec:3e:8d:39(ouiUnknown),ethertypeIPv4(0x0800),length71-f以IP格式显示目标internet地址-i监控指定网络NetworkInterface-S将tcp的序号输出为绝对值而不是相对值-r从指定文件中读取数据包-w不分析输出,将截获的数据包写入指定文件-T写入截获的数据包根据指定类型的报文进行解析,如:cnfp/rpc/rtp/snmp/vat/wb-F从指定文件中读取过滤规则,忽略其他参数指定的过滤规则命令行-v输出更详细的信息,如IP包的TTL和协议类型-vv输出详细信息-l将标准输出转换为行缓冲模式-d以汇编格式显示最后捕获的信息包-dd以汇编格式显示最后捕获的信息包C语言格式-ddd以十进制格式显示最后一次抓包除了参数,更重要的是过滤表达式,包含三种关键字:host:10.10.13.15listeninghostnet:10.10.0.0listeningnetworkport:21监听端口四个拦截方向关键字:dst:10.10.13.15目标主机src:10.10.0.0源网络dst和srcdst或src(默认值)多个协议关键字:ether/fddi/tr/ip/ip6/rarp/decnet/tcp/udp还支持组合表达式:not/!/and/&&/or/||。举几个常用的例子:#只抓指定IP的包tcpdumphost10.10.13.15#抓两个IP的包tcpdumphost1010.13.15and\(10.10.13.47\)#抓指定端口和协议的包tcpdumptcpport21andhost10.10.13.15示例测试本示例是机器A(client)向机器B(server)发起mysql实例连接并立即退出的场景。步骤:A机启动嗅探器:tcpdumphost10.92.143.15-tttt-S-nnA机执行mysql-uroot-h10.92.143.15-pA机数据库连接成功,立即退出;退出mysql实例连接消息:#三次握手,其中S代表Syn,.代表Ack,S代表Syn,Ack2018-08-1922:52:42.768100IP10.119.124.24.45298>10.92.143.15.3306:Flags[S],seq864854527,win14600,options[mss1460,sackOK,TSval2246810963ecr0,nop,wscale8],length02018-08-1922:52:42.810055IP10.92.143.15.3306>10.119.124.24.45298.],Flags[Sseq4288771247,ack1248485,选项[mss1460,sackOK,TSval2062159250ecr2246810963,nop,wscale8],长度02018-08-1922:52:42.810065IP10.119.124.24.45298>10.92.143.15。3306:Flags[.],ack4288771248,win58,options[nop,nop,TSval2246811005ecr2062159250],length0#登录验证,传输用户名密码验证阶段,其中P代表Push,数据传输需要。这包括登录验证和版本信息等元数据的交换2018-08-1922:52:42.852102IP10.92.143.15.3306>10.119.124.24.45298:Flags[P.],seq4288771248:4288771308,ack864854528,57,选项[nop,nop,TSval2062159292ecr2246811005],长度602018-08-1922:52:42.852118IP10.119.124.24.45298>10.92.143.15.3306:标志714,0,78win52,8个选项[nop,nop,TSval2246811047ecr2062159292],length02018-08-1922:52:42.853251IP10.119.124.24.45298>10.92.143.15.3306:Flags[P.],seq864:856452ack4288771308,win58,options[nop,nop,TSval2246811048ecr2062159292],length622018-08-1922:52:42.895198IP10.92.143.15.3306>10.119.124.26.5,5,5298标志57,options[Not,TSVal2062159335ECR2246811048],Length02018-08-1922:52:42.895256IP10.92.143.15.3306>10.119.124.245298:Flags[P.],SEQ4288777777777777777777777777777777777777777777777777777777777777713777777777777777777777777771377777713777777777777777777777777777777777777777777777777777713,seq42887713ack864854590,win57、选项[nop,nop,TSval2062159335ecr2246811048],长度112018-08-1922:52:42.895264IP10.119.124.24.45298>10.92.143.15.3306:标志[.],ack4288771319,win58,选项[nop,nop,TSval2246811090ecr2062159335],长度02018-208-129:42.895312IP10.119.124.24.45298>10.92.143.15.3306:Flags[P.],seq864854590:864854627,ack4288771319,win58,options[nop,nop,TSval22468113092ecr18-230-22468112090:864854627]1922:52:42.937268IP10.92.143.15.3306>10.119.124.24.45298:Flags[.],ack864854627,win57,options[nop,nop,TSval2062159377ecr2246811090],长度02018:52:42.937405IP10.92.143.15.3306>10.119.124.24.24.45298:旗帜[P.],SEQ4288771319:428877140908-1922:52:42.937414IP10.119.124.24.45298>10.92.143.15.3306:Flags[.],ack4288771409,win58,选项[nop,nop,TSval2246811132ecr2062159377],length0;正好5个字符2018-08-1922:52:44.366633IP10.119.124.24.45298>10.92.143.15.3306:Flags[P.],seq864854627:864854632,ack4288771409,win58,options[nop,nop,TSval2246812561ecr2062159377],length5#wave四次,其中F代表发送数据208,完成-08-1922:52:44.366649IP10.119.124.24.45298>10.92.143.15.3306:Flags[F.],seq864854632,ack4288771409,win58,options[nop,5nop,TSval226467ec2]长度0##这是exit2018-08-1922:52:44.408575IP10.92.143.15.3306>10.119.124.24.45298的回复:Flags[.],ack864854632,win57,options[nop,nop,TSval2062160848ecr2246812561],长度02018-08-1922:52:44.408618IP10.92.143.15.3306>10.119.124.24.45298:Flags[.],ack864854633,win57,options[nop16054633,nop1604,22246812561],长度02018-08-1922:52:44.408652IP10.92.143.15.3306>10.119.124.24.24.24.24.45298:旗帜[F.长度02018-08-1922:52:44.408657IP10.119.124.24.45298>10.92.143.15.3306:标志[.],ack4288771410,win58,options[nop,nop,TSval2246812603ecr2062160848],length0具体mysql通信内容请查看这篇文章:https://jin-yang.github.io/po...参考资料Tcpdump的安装与使用:https://blog.csdn.net/s_k_yli...Tcpdump(linux)下载、安装、使用说明:http://www.voidcn.com/article...深入剖析mysql登录原理:https://www.cnblogs.com/cchus...TCP/IP详解第一卷:协议第十八章TCP连接建立与终止Mysql通信协议:https://jin-yang.github.io/po...