★特别说明★

使用Nmap命令做测试时,不要扫描未经授权的IP或网站,避免给自己带来一些不必要的麻烦。请使用自己搭建的虚拟机环境进行测试。

1、Nmap简介

Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(也称fingerprinting)。它是网络管理员必用的软件之一,可以用来评估网络系统安全。

官网为:www.nmap.org。

一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

1.1、Nmap优点

  • 灵活:支持数十种不同的扫描方式,支持多种目标对象的扫描

  • 强大:Nmap可以用于扫描互联网上大规模的计算机

  • 可移植:支持主流操作系统:Windows/Linux/Unix/MacOS等等;源码开放,方便移植

  • 简单:提供默认的操作能覆盖大部分功能,基本端口扫描nmap targetip,全面的扫描nmap –A targetip

  • 自由:Nmap作为开源软件,在GPL License的范围内可以自由的使用

  • 文档丰富:Nmap官网提供了详细的文档描述。Nmap作者及其他安全专家编写了多部Nmap参考书籍

  • 社区支持:Nmap背后有强大的社区团队支持

2、基本功能

Nmap包含四项基本功能:

  • 主机发现 (Host Discovery)

  • 端口扫描 (Port Scanning)

  • 版本侦测 (Version Detection)

  • 操作系统侦测 (Operating System Detection)

而这四项功能之间,又存在大致的依赖关系(通常情况下的顺序关系,但特殊应用另外考虑),首先需要进行主机发现,随后确定端口状态,然后确定端口上运行的具体应用程序和版本信息,然后可以进行操作系统的侦测。而在这四项功能的基础上,nmap还提供防火墙和 IDS 的规避技巧,可以综合运用到四个基本功能的各个阶段。另外nmap还提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。

3、扫描原理

3.1、TCP SYN扫描(-sS)

Nmap默认扫描方式,通常被称为半开放扫描。发送SYN包到目标端口,若收到SYN/ACK回复,则端口被认为开放状态;若收到RST回复,则端口被认为关闭状态;若没有收到回复,则认为该端口被屏蔽。因为仅发送SYN包对目标主机的特定端口,但不建立完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。

3.2. TCP connect扫描(-sT)

使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标主机上留下记录信息,不够隐蔽。

3.3. TCP ACK 扫描(-sA)

向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

3.4. TCP FIN/Xmas/NULL扫描(sF/sX/-sN)

这三种扫描方式被称为秘密扫描,因为相对比较隐蔽。FIN扫描向目标主机的端口发送的TCP FIN 包括Xmas tree包或NULL包,如果收到对方的RST回复包,那么说明该端口是关闭的;没有收到RST包说明该端口可能是开放的或被屏蔽了。其中Xmas tree包是指flags中FIN URG PUSH被置为1的TCP包;NULL包是指所有的flags都为0的TCP包。

3.5. UDP扫描(-sU)

UDP扫描用于判断UDP端口的情况,向目标主机的UDP端口发送探测包,如果收到回复ICMP port unreachable就说明该端口是关闭的;如果没有收到回复,那说明该UDP端口可能是开放的或者屏蔽的。因此,通过反向排除法的方式来判断哪些UDP端口是可能处于开放状态的。

3.6. 其他方式(-sY/-sZ)

除了以上几种常用的方式外,Nmap还支持多种其他的探测方式。例如使用SCTP INIT/Cookie-ECHO方式是来探测SCTP的端口开放情况;使用IP protocol方式来探测目标主机支持的协议类型(tcp/udp/icmp/sctp等等);使用idle scan方式借助僵尸主机来扫描目标主机,以达到隐蔽自己的目的;或使用FTP bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐蔽自己的目的。

4、常用命令操作

4.1、工具使用说明

在kali系统,我提供的虚拟机环境默认是自带nmap工具,如果自己安装的系统可能是需要自己安装。在kali系统使用时记得切换管理员权限。

# 切换管理员权限,需要输入密码
sudo su

# 输入正确密码后,切换成功
┌──(root💀kali)-[/home/kali]
└─# 

4.2、常见参数解读

如果输入命令后,一直没有响应,可以按Enter键看请求百分比。查询过程中如果想终止,可按Ctrl + C。

4.2.1、目标规格
# 扫描一个IP
nmap 192.168.1.1
# 扫描IP段
nmap 192.168.1.1 192.168.2.1       
# 扫描一个范围
nmap 192.168.1.1-254  
# 扫描一个域名
nmap nmap.org      
# 使用CIDR表示法扫描,/24表示子网掩码,扫描整个网段
nmap 192.168.1.0/24     
# 扫描文件中的目标
nmap -iL target.txt      
# 扫描100个随机主机
nmap -iR 100      
# 排除列出的主机
nmap --exclude 192.168.1.1 
4.2.2、扫描手法
# TCP SYN半开放扫描,端口扫描 (有root权限默认)
nmap 192.168.1.1 -sS      
# TCP连接扫描,建立完整的TCP连接扫描端口(没有root权限默认)
nmap 192.168.1.1 -sT      
# UDP端口扫描
nmap 192.168.1.1 -sU    
# TCP ACK端口扫描
nmap 192.168.1.1 -sA    
# 滑动窗口扫描
nmap 192.168.1.1 -sW   
# TCP Maimon扫描
nmap 192.168.1.1 -sM
# 不扫描,仅列出目标
nmap 192.168.1.1-3 -sL     
# 只进行主机发现,禁用端口扫描
nmap 192.168.1.1/24 -sn    
# 跳过主机发现,直接扫描端口
nmap 192.168.1.1-5 -Pn     
# 端口X上的TCP SYN发现,默认80
nmap 192.168.1.1-5 -PS22-25,80 
# 端口X上的TCP ACK发现,默认80
nmap 192.168.1.1-5 -PA22-25,80  
# 端口X上的UDP发现,默认40125
nmap 192.168.1.1-5 -PU53      
# 本地网络上的ARP发现
nmap 192.168.1.1/24 -PR       
# 不做DNS解析
nmap 192.168.1.1 -n  
4.2.3、端口规格
# 扫描特定端口
nmap 192.168.1.1 -p 21     
# 扫描端口范围
nmap 192.168.1.1 -p 21-100   
# 扫描多个TCP和UDP端口
nmap 192.168.1.1 -p U:53,T:21-25,80  
# 扫描所有端口
nmap 192.168.1.1 -p-     
# 基于服务名称的端口扫描
nmap 192.168.1.1 -p http,https  
# 快速扫描(100个端口)
nmap 192.168.1.1 -F    
# 扫描前2000个端口
nmap 192.168.1.1 --top-ports 2000 
# 从端口1开始扫描
nmap 192.168.1.1 -p-65535 
4.2.4、时间和性能
# 非常非常慢,用于IDS逃逸
nmap 192.168.1.1 -T0 
# 相当慢,用于IDS逃逸
nmap 192.168.1.1 -T1   
# 降低速度以up消耗更小的带宽,比默认慢十倍
nmap 192.168.1.1 -T2 
# 正常的,默认,根据目标的反应自动调整时间模式
nmap 192.168.1.1 -T3    
# 在一个很好的网络环境,请求可能会淹没目标
nmap 192.168.1.1 -T4 
# 很可能会淹没目标端口或是漏掉一些开放端口
nmap 192.168.1.1 -T5 
4.2.5、NSE脚本
# 使用默认的NSE脚本进行扫描
nmap 192.168.1.1 -sC    
# 使用单个脚本扫描,banner示例
nmap 192.168.1.1 --script=banner     
# 使用两个脚本扫描
nmap 192.168.1.1 --script=http,banner 
# 使用通配符扫描,http示例
nmap 192.168.1.1 --script=http*     
# 扫描默认值,删除侵入性脚本
nmap 192.168.1.1 --script "not intrusive"   
#  扫描所有smb漏洞
nmap 192.168.1.1 --script=smb-vuln*  
# 扫描常见漏洞
nmap 192.168.1.1 --script=vuln 
4.2.6、输出
# 增加详细程度,-vv效果更好
nmap 192.168.1.1 -v  
# 标准输出写入到指定文件中
nmap 192.168.1.1 -oN test.txt    
# 将输入写成xml的形式
nmap 192.168.1.1 -oX test.xml   
# 将输出写成特殊格式
nmap 192.168.1.1 -oG grep.txt  
# 将输出所有格式,有三种 .xml/.gnmap/.nmap
nmap 192.168.1.1 -oA results    
# 仅显示开放的端口
nmap 192.168.1.1 --open 
# 显示所有发送和接收的数据包
nmap 192.168.1.1 -T4 --packet-trace  
# 恢复扫描,配合-oG等命令使用
nmap --resume test.txt   

5、扫描结果端口状态

  • open:端口是开放的

  • closed:端口是关闭的

  • filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态

  • unfiltered:端口没有被屏蔽,但是否开放需要进一步确定

  • open|filtered:端口是开放的或被屏蔽

  • closed|filtered :端口是关闭的或被屏蔽

6、资料获取

如果需要kali和win7系统虚拟机,进行测试(如果在渗透测试实战已有下载过,不需要再下载了),请关注我的公众号:大象只为你,后台回复:虚拟机。文件有些大下载耗时会比较久。

posted on 2023-10-08 23:23  大象只为你  阅读(761)  评论(0编辑  收藏  举报