网络扫描
基于网络的远程服务发现和系统脆弱点检测的一种技术
步骤
- 扫描目标网络找出尽可能多的服务连接
- 扫描目标服务以判定服务类型和版本
- 对服务进行漏洞扫描以确定是否存在可利用的漏洞
基于主机的扫描
- 被动式策略或系统安全扫描
- 运行在被扫描主机之上,对系统中错误的配置、脆弱的口令和其他不符合安全策略的设置进行检测
基于网络的扫描
- 主动式策略
- 向远程主机发送探测数据包,获取响应数据包并对其进行解码饭分析,从而发现网络或主机的各种漏洞
Nmap的功能:
主机发现——》端口扫描——》版本检测——》OS侦测
主机发现
即用于发现目标主机是否在线
原理:与Ping命令类似,发送探测包到目标主机,若收到回复,说明目标主机是开启的。多种主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCP SYN/ACK包、发送SC.TR INIT/COOKIE-ECHO包
用法:
- -sn Ping Scan只进行主机发现,不进行端口扫描
- -Pn:跳过主机发现而进行端口扫描等高级操作
- -PS/PA/PU/PY:使用TCP SYN/ACK或SCTP INIT/ECHO方式进行主机发现
端口扫描
找出目标主机或目标设备开放的端口和提供的服务,为下一步攻击做好准备
是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。默认情况下,Nmap会扫描1000个最有可能开放的TCP端口
TCP端口扫描
- 全连接扫描(TCP扫描)三次握手
nmap -sT ip
- 半连接扫描(SYN扫描)
nmap -sS ip
- ACK扫描
nmap -sA ip
20230926165908013.png&pos_id=img-5HjsXD5C-1696346996327)
向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽。没有收到RST包,说明被屏蔽。
只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。
- FIN扫描、NULL扫描、TCP窗口扫描、自定义扫描
- UDP端口扫描
nmap -sU ip
向目标主机的UDP端口发送探测包,如果收到回复ICMP port unreachable就说明端口是关闭的,如果没有收到回复,那说明UDP端口可能是开放的或屏蔽的。
NMAP使用注意事项
- 避免误解:不要随意Nmap目标。许多单位把端口扫描视为恶意行为,测试Nmap最好在内部网络进行。如有必要,应该告诉同时你正在实验端口扫描,因为可能引发IDS警报以及其他网络问题。
- 关闭不必要的服务:根据Nmap提供的报告,关闭不必要的服务,或者调整路由器的访问控制规则(ACL),禁用网络开放给外界的某些端口
版本扫描
确定目标主机开放端口上运行的具体的应用程序以及版本信息
原理:
- 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
- 如果是TCP端口,尝试建立TCP连接。接受到目标机发送的WelcomeBanner信息。nmap将接收到的Banner与nmap-serveices-probes中的签名进行对比。查找对应应用程序的名字与版本信息
- 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型
用法
- -sV:指定让Nmap进行版本侦测
- nmap -sV 目标
扫描操作系统类型
用于检测目标主机运行的操作系统类型及设备类型等信息
- 被动扫描
- 分析一般通信流量:不准确
- p0f:相对准确,p0f-r数据包文件
- 主动扫描
- nmap
- nmap
主动扫描原理
利用系统数据库nmap-os-db,可以识别2600多种操作系统与设备类型
原理:
利用TCP/IP协议栈指纹来识别不同的操作系统和设备
分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。
将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统
用法:
- -O 指定Nmap进行OS侦测
- –osscan-limit:限制Nmap只对确定的主机进行OS探测(至少需要确知该主机分别有一个open和closed的端口)。
- –osscan-guess:大胆猜测对方的主机的系统类型
端口
21端口:FTP协议服务端口
FTP(文件传输协议)是典型的C/S构架的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能
22端口:SSH
23端口:Talnet协议端口
talnet命令用于启动TALNET服务器,该服务器用于实现网络数据的安全传输。