WireShark简介和抓包原理及过程
wireshark简介
wireshark是一个网络封包分析软件,网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换
wireshark的应用
网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用wireshark来为新的通讯协议除错,普通使用者使用wireshark来学习网络协议的相关知识,当然,有的人据悉叵测的使用它来寻找一些敏感信息
常见协议包
ARP协议
ICMP协议
TCP协议
UDP协议
DNS协议
HTTP协议
FTP协议
ip.dir == 192.168.68.53 查找有这个ip的所有数据包
ip.src_host = = 192.168.68.53 or ip.dst_host = = 192.168.68.1
ip.src_host = = 192.168.68.53 表示源ip地址
ip.dst_host = = 192.168.68.1 表示目的地址
实战:使用wireshark对常用协议抓包并分析原理
常用协议分析: arp协议
地址解析协议(缩写arp) 是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要,ARP是通过网络地址来定位MAC地址
ICMP 协议
通过xshell远程连接kali linux 就会捕获到完整的TCP3次握手的链接
四次挥手
第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1状态
第二次挥手:客户端收到FIN后,知道不会再有数据从服务端传来,发送ACK进行确认,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),客户端进入CLOSE_WAIT状态
第三次挥手:客户端发送【FIN+ACK】给对方,表示自己没有数据要发送了,客户端进入LAST_ACK状态,然后直接断开TCP会话的连接,释放相应的资源
第四次挥手:服务端收到了客户端的FIN信令后,进入TIMED_WAIT状态,并发送ACK确认消息,服务端在TIMED_WAIT状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK并正确关闭了进入CLOSE状态,自己也断开了TCP连接,释放所有资源,当客户端收到服务端的ACK回应后,会进入CLOSE状态并关闭本端的会话接口,释放相应资源
WireShark抓包解决服务器被黑上不了网
场景:服务器被黑上不了网,可以ping通网关,但是不能上网
模拟场景
修改主机TTL值为1,下面的方式是我们临时修改内核参数
TTL:数据报文的生存周期
默认linux操作系统值:64,每经过一个路由节点,TTL值减1.TTL值为0时,说明目标地址不可达并返回 Time to live exceeded
MTR可以检测我们到达目标网络之间的所有网络设备的网络质量
apt install -y mtr
用mtr看经过几个包 mtr 8.8.8.8
NMAP高级使用技巧
NMAP概述
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息,nmap支持很多扫描技术,例如:UDP.TCP connect(),TCP SYN(半开扫描),ftp代理(bounce攻击),反向标志,ICMPM,FIN,ACK扫描,圣诞树(Xmas Tree),SYN扫描和null扫描。还可以探测操作系统类型
Nmap可用于
检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)
NMAP端口状态解析
open:应用程序在该端口接收TCP连接或者UDP报文
closed:关闭的端口对于nmap也是可访问的,它接收nmap探测报文并作出响应,但没有应用程序在其上监听
filtered:由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放,过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙
unfiltered:未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这个状态
open|filtered:无法确定端口时开放还是被过滤,开放的端口不响应就是一个例子,没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应,UDP,IP协议,FIN,Null等扫描会引起
close|filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的
Nmap语法及示例
使用NMAP扫描一台服务器
nmap 192.168.68.1
扫描一台机器,查看它打开的端口及详细信息
nmap -v 192.168.68.1
总过有65536个端口,范围 1~65535
扫描一个范围:端口1~65535
nmap -p 1-65535 192.168.68.1
扫描一台机器:查看此服务器开放的端口号和操作系统类型
nmap -sS -O 192.168.68.1
-O:显示出操作系统的类型,每一种操作系统都有一个指纹
-sS:半开扫描(half-open):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描,你可以发出一个TCP同步包(SYN),然后等待回应,如果对方返回syn|ack(响应)包就表示目标端口正在监听,如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上由我们的操作系统内核主动完成的
扫描一个网段中所有机器是什么类型的操作系统
nmap -sS -O 192.168.1.0/24
查找一些有特点的ip地址中,开启80端口的服务器
nmap -v -p 80 192.168.68.15-65
如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定IP地址
–randomize_hosts #随机扫描,对目标主机的顺序随机划分
–scan-delay #延时扫描,单位秒,调整探针之间的延迟
nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.68.62-69
dnmap
用户在服务器端设定好nmap执行的命令,dnmap会自动的分配给客户端进行扫描,并将扫描结果提交给服务器
dnmap有两个可执行文件,分别是dnmap_client和dnmap_server。在进行一个分布式nmap扫描之前,我们可以用dnmap_server来生成一个dnmap的服务端,然后在其他机器用dnmap_client进行连接,然后就能进行分布式的nmap扫描了
这里我们可以使用KALI linux 自带有dnmap
生成证书文件
因为dnmap自带的用于TLS连接的pem文件证书太过久远,必须要重新生成一个pem证书客户端和服务器才能正常连接
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out server.pem