欢迎关注博主的公众号:薛定谔的小鱼儿
通常将扫描分为3个步骤:
(1)验证系统是否正在运行:判断目标系统是否已经开启,是否可以与我们的计算机进行相互通信或交互。将所有给响应的活动计算机记录下来。
(2)扫描系统的端口:用于标识在特定主机上开启了哪些端口以及运行了哪些服务。在扫描系统单口时,做好记录并保存所有工具的输出结果。
(3)扫描系统中的漏洞:漏洞扫描是一个定位、识别运行在目标计算机上的服务和软件有哪些已知漏洞的过程。
1.ping
ping是一种特定类型的网络数据包,成为ICMP数据包。
ping包除了告诉我们某台主机是活动的并在接收流量外,还提供其他有价值的信息,包括数据包的往返时间等。
上图的信息中我们得知对方的IP地址为61.135.169.121,并且该设备给我们的计算机发回了相应数据包,字节=32表明了发送的数据包的大小 ,时间=9ms表示数据包到达目标往返一次的时间,TTL=54是一个生存值,它用来限定数据包自动终止前可以经历的最大跳数。
我们在进行ping扫描时可以使用ping工具自动发送一系列的ping包给某一范围的IP地址,而不需要手动逐个输入目标地址。
(不一定每个主机都会相应ping请求,有些主机的防火墙或其他设施会抑制ping包)
2.端口扫描
端口扫描的目的是为了识别在我们的目标系统上哪些端口是开启的以及判断哪些服务是启动的。
端口扫描我们可以使用Nmap
3.三次握手
两台计算机进行通信时,A发送一个SYN数据包给特定端口来连接B,如果B此时处于监听状态,B就会发送一个SYN/ACK响应数据包作为回应。当A收到SYN/ACK数据包,他会回应一个ACK数据包,此时三次握手完成,A,B可以正常通信。
4.使用Nmap进行TCP连接扫描
Nmap试图在其命令指定的每个端口上完成三次握手,完成后,在友好的断开连接。
命令为 nmap -sT 目标IP地址,如图所示,我扫描的是192.168.1.3。
5.使用Nmap进行SYN扫描
SYN扫描时Nmap默认的扫描方式;比TCP连接扫描更快而且更加安全,几乎不会造成DOS攻击或使目标系统瘫痪。SYN扫描没有完成三次握手,只是完成了前两步。
命令为 nmap -sS 主机IP地址
6.使用Nmap进行UDP扫描
TCP连接扫描和SYN扫描是基于TCP进行通信的。但是不是每个服务都是基于TCP的,因此进行UDP扫描是非常有必要的。
使用UDP协议通信不需要接收方做出响应,那么Nmap是如何区分计算机端口是否开放了呢?
对应Nmap来说,很难区分UDP端口是否开启还是扫描数据包被过滤了。当Nmap执行一个UDP扫描去没有收到任何响应信息时,他会反馈“open|filtered(启用或过滤)”。
进行UDP扫描真的非常久(我真的等了很久,久到知乎都刷完了)
为了使目标返回对我们更加有用的响应信息,我们在UDP扫描中可以添加“-sV”参数
nmap -sUV 192.168.1.3
7.使用Nmap进行Xmas扫描
计算机内,RFC是指一个文档,它要么是一个注释文档,要么是关于现有某项技术或标准的技术规格。
RFC为我们提供了大量的特定系统内部运作的细节。Xmas扫描是将数据包中的FIN,PSH,URG标记为on,通过发送这种非常规的数据包来判断目标系统中端口的当前状态。
Xmas扫描和NULL扫利用在RFC中描述的系统潜在漏洞或弱点进行攻击。
Xmas扫描和NULL扫描针对的是LINUX和UNIX系统,而不是Windows系统。
8.使用Nmap进行NULL扫描
想Xmas一样,NULL扫描也是通过发送非常规的TCP数据包对目标计算机进行探测。在很多情况下,NULL扫描使用没有任何标记的数据包。
目标系统的开放端口不会回应响应信息给Nmap,而关闭端口则会发回一个RST数据包。
Xmas和null扫描的主要优点之一就是某些情况它们会绕过简单的过滤器和访问控制列表。
9.ACK scan是一种比较特别的扫描类型,可以判断端口是否被防火墙过滤。通过向远程端口发送TCP ACK数据帧即可实现。如果目标没有响应,可以判断是被防火墙过滤的端口;如果目标返回的是RST(连接重置)数据包,则可以判断改端口是未被过滤的端口。
上图可以看出所有的端口都被过滤了。
10.nmap -O 目标主机IP地址
可以通过执行上述命令检测出目标主机的操作系统类型。
(以上总结部分来自《渗透测试实践指南》)