一、Nmap简介:

Namp是一款开源免费的网络发现(Network Discovery)和安全审计(Security)工具

软件名字Nmap是Network Mapper的简称

Nmap最初是由Fyodor在1997年开始创建的,随后在开源社区的志愿者参与下,该工具逐渐成为最流行安全必备工具之一

黑客入侵大体可以分为3个过程:信息收集、弱点分析、执行入侵

Namp既可以用于黑客前期收集主机信息,也可以用于管理员了解网络情况,甚至还可以弱点扫描

总体而言,Namp提供这几种功能:主机发现,端口扫描,操作系统识别,服务识别,脚本扫描

二、Nmap原理:

1、主机发现技术

主机发现是为了发现网段内的活跃主机(活跃主机是指这台主机是运行状态)

这是黑客扫描第一步。主机发现原理如表:

扫描方式发送报文活跃响应不活跃响应被过滤响应备注
ARP扫描ARP请求报文ARP响应报文超时不会被过滤精准
ICMP扫描ICMP Type=8 Code=0 Type=13 Code=0 Type=17 Code=0ICMP Type=0 Cody=0 Type=14 Code=0 Type=18 Code=0超时超时可能会被防火墙过滤
端口扫描TCP synTCP syn+ack超时超时或 ICMP Type=3 Code=3或13可能会被过滤

由此可以看出来:

ARP扫描:是最精准的扫描方式,并不会被过滤,因此会被强制使用。

ICMP扫描:是最常见的扫描方式,和ping命令原理一致,但现在很多防火墙和IPS设备会禁用ICMP扫描,使得ICMP主机发现失败

端口扫描:是另一种发现主机的方式,准确且不容易被防火墙过滤,这种方式经常被使用

2、端口扫描技术

端口扫描可以分为TCP端口扫描和UDP端口扫描

由于TCP能够提供更多的协议字段,因此TCP端口扫描更精准,如今的端口扫描技术主要是指TCP端口扫描

在TCP端口扫描技术中,探测报文组合不同flags位,不同的flags在端口开放、端口关闭、防火墙过滤时的响应是不一样的

通过区分不同的响应来探测端口的状态,具体如下所示 (tcp flags有syn、ack、rst、fin、psh、urg共6种位置)

扫描方式TCP Flag开放时响应关闭时响应过滤时响应特征
-sT TCP全连接扫描报文1:syn 报文2:ackSyn+ack 完成3次握手Rst+ack一般不会被过滤精准、费时,可能会被日志记录
-sS TCP半连接扫描SynSyn+ackRst+ackICMP type=3 Code=3、13 或超时精准、快速,无日志记录,最常见且默认的扫描方式
-sA TCP ack扫描AckRstRst不准确,只能判断是否加防火墙filtered或 unfiltered
-sW TCP window扫描AckRst,window不为0Rst,window为0不准确,有的情况下window都为0
-sMFin+ack未收到rstRst不准确
-sN无位置无响应RstICMP Type=3 Code=3或13 或超时无响应不准确,只能判断 closed和open
-sFFin无响应Rst
-sXFin+psh+urg无响应Rst
-sU UDP端口扫描不相关有UDP响应或无响应ICMP Type=3 Code=3ICMP Type=3 Code=1,29,10,13不准确,只能判断 closed和open

由此可以看出,最常用的扫描方式是-sS扫描,快速、精准,且无日志

-sT方式最精准,但有日志记录

-sA/-sW能够识别是否有防火墙,对于识别windows防火墙非常有效

3、其他技术

Nmap还包括操作系统指纹识别技术、服务识别技术、防火墙绕过技术以及NSE(Namp Scripting Engine)脚本引擎

三、Nmap命令使用

1、Nmap命令格式

Namp [Scan Types] [options] {target specification}

Namp 主机发现参数 端口扫描参数 其他参数 目标主机/网段


例如:

Nmap -PS80 -sS -sV -v 1.1.1.0/24

主机发现参数使用-PS参数

端口扫描参数用-sS参数

另外使用-sV参数探测服务版本

-v开启可视模式

目标网段为1.1.1.0/24

主要注意的是:

如果在同一网段,则无论主机发现参数如何指定,Nmap都是用ARP扫描完成主机发现

如果未指定主机发现方式,则使用-sn 参数进行主机发现

如果未指定端口扫描方式,则使用-sS 参数进行端口扫描

-Pn参数可忽略主机发现阶段

不指定端口,默认值扫描最有可能的1000个端口

2、防火墙的影响
了解防火墙相关技术会帮助更好的使用Nmap,防火墙的以下技术会影响Nmap使用


ICMP探测阻断:
现有很多防火墙会阻止ICMP探测。因此主机发现尽量使用-Pn、-PS参数

首包非TCP syn丢弃:
防火墙检测每个会话的首包是否是TCP syn报文,如果不是则丢弃,此种技术普遍存在于硬件防火墙中但不经常开启

限速功能:
防火墙会限制单IP连接速率,如果Nmap频繁扫描可能会触发这种策略。通过 -scan-delay 方法绕过

TCP Proxy:
有的TCP Proxy会先和Nmap完成所有TCP三次握手,然后才向真正的目标主机发起TCP连接
在这种情况下,Nmap可能完全失效,但该请非常少见

防火墙的这种技术会造成除-sT、-sS之外的其他大多数端口扫描方式无效,因此尽量使用-sT、sS参数进行端口扫描

3、主要参数
  • 主机发现参数:
参数描述是否常用
-sL仅列出指定参数有那些IP,不发送报文到目标主机,并反向查询域名信息一般
-snPing扫描,禁用端口扫描常用
-Pn不进行主机发现,直接进入端口扫描阶段,能绕过ICMP过滤,老版本为 -P0常用
-PS/PA/PU/PY分别使用TCP SYN/TCP ACK/UDP/SCTP进行主机发现常用
-PE/PP/PM分别使用ICMP ECHO/ICMP TIMESTAMP/ICMP MASK 技术进行主机发现一般
-PO使用参数指定的协议(如TCP)对主机进行ping扫描不常用
  • 端口扫描:
参数描述是否常用
-sS/sTTCP全连接/半连接常用
-sA/-sWTCP ACK/TCP WINDOW扫描,用于确定目标主机是否有开防火墙一般
-sMFIN、ACP同时置位的扫描一般
-sN/sF/sXNULL/FIN/XMAS扫描一般
-sUUDP扫描常用
-sI僵尸扫描,很好的隐蔽扫描主机本身不常用
-sO协议扫描,用于确定目标主机支持哪些协议一般
-sY/sZSCTP/COOKIE-ECHO扫描不常用
-bFTP代理扫描不常用
  • 端口参数与扫描顺序:
参数详细描述
-p扫描指定的端口,实例:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)
-F快速模式(Fast mode),仅扫描常用的100个端口
-r不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)
–top-ports扫描开放率最高的number个端口
–port-ratio扫描指定频率以上的端口,与上述–top-ports类似,这里以概率作为参数,让概率大于–port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。
  • 其他主要参数:
参数描述是否常用
-OOS指纹识别扫描常用
-sV探测主机提供的服务的版本一般
-AOS指纹识别、服务版本扫描、脚本扫描、traceroute常用
-oN/oX 输出扫描结果到普通文件或XML文件中常用
-v显示详细信息,使用-vv显示更详细信息常用
-sA/-sW探测主机是否开启防火墙常用
-f使用分片报文扫描目标主机常用
-sC使用脚本对目标主机进行安全扫描一般
-iL [LIST.TXT]将要扫描的ip或主机保存文件中进行读取扫描一般

四、Nmap常用语句

扫描目标网段中有哪些主机是活跃的,可以快速收集到活跃主机

Nmap -sn 192.168.0.1/24

快速定位目标网段中的WEB服务器

Nmap -Pn -p 80,443,8080 192.168.0.1/23

对目标主机进行完整扫描,包括知名端口的TCP、UDP扫描

操作系统探测、服务探测,常见漏洞探测

Nmap -sS -sU -A -v -T4 host

对目标主机进行端口进行TCP端口扫描

Namp -sS -p 1-65535 -v -T4 host

识别目标主机是否存在防火墙

Nmap -sA/-sW host

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐