Nmap常见使用方式大全

2024-08-27 08:27:58 浏览数 (2)

Nmap简介

Nmap是Linux下一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具,软件名字Nmap是Network Mapper的简称。

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

Nmap使用原始IP报文来发现网络上有哪些主机,这些主机提供什么服务(应用程序名和版本),服务运行在什么操作系统,它们使用什么类型的报文过滤器/防火墙,以及一些其他功能。

Nmap基本功能

默认方式扫描

命令格式 :

代码语言:c_cpp复制
nmap <目标地址>

全面扫描

命令格式 :

代码语言:c_cpp复制
nmap -A -T 4 -v <目标地址>

主机发现

目标:确定目标主机是否在线(Alive,处于开启状态原理:与ping命令类似,发送探测包到目标主机,如果收到回复,则说明目标主机是开启的

原理:与ping命令类似,发送探测包到目标主机,如果收到回复,则说明目标主机是开启的

实例1:局域网内执行ping扫描

目标:扫描局域网192.168.40.1-192.168.40.254内哪些IP的主机在线。

命令:

代码语言:c_cpp复制
nmap -sP  192.168.40.1-254,或 nmap -sP 192.168.40.0/24

说明:在局域网内,无论采用哪一种选项Nmap都是通过ARP包来询问IP地址上的主机是否活动的,如果收到ARP回复包,那么说明主机在线。

实例2:跨网段执行ping扫描

目标:扫描跨网段目标主机192.168.50.5是否在线。

命令 :

代码语言:c_cpp复制
nmap -sP 192.168.50.5

说明:扫描跨网段目标主机时,使用-sP或-sn选项,默认情况下Nmap会依次发送4种不同类型的数据包(ICMP echo request、TCP SYNpacket to port 443、TCP ACKpacket to port 80、ICMPtimestamprequest)来探测目标主机是否在线,只要收到其中一个包的回复,就证明目标机在线。

实例3: --packet-trace 的使用

端口扫描

目标 : 确定目标主机的TCP/UDP端口的开放情况

原理 : 发送TCP、UDP等类型的探测包到目标端口,根据收到的回复包判定端

口是否开放

实例4 : -p选项的应用--指定扫描的端口号

关于-p选项的说明:默认情况下,Nmap仅对用-p指定的TCP端口进行扫描,扫描方式为-sS(TCP SYN扫描)。如果既要扫描TCP端口,又要扫描UDP端口,则可以用“T:”“U:”参数指定目标端口,并指定-sU(UDP扫描方式)和至少一种TCP扫描方式,如:

代码语言:c_cpp复制
nmap -p T:139,U:53 -sS -sU 192.168.40.178

TCP SYN扫描(-sS)原理

Nmap向目标端口发送TCP SYN报文,如果目标机返回TCP SYN ACK报文,则说明目标端口处于开放状态,同时Nmap会紧接着向目标机发送TCPRST报文以重置此连接;如果目标机返回TCP RST ACK报文,则说明目标端口处于关闭状态

实例5:-sS选项的应用--TCP SYN扫描

TCP connect扫描(-sT)原理

Nmap向目标端口发送TCP SYN报文,如果目标机返回TCP SYN ACK报文,则说明目标端口处于开放状态,同时Nmap会紧接着向目标机依次发送TCP ACK、TCP RST ACK完成三次握手和重置此连接;如果目标机返回TCP RST ACK报文则说明目标端口处于关闭状态。

实例6:-sT选项的应用--TCPconnect扫描

TCP ACK扫描(-sA)原理

Nmap向目标端口发送TCP ACK报文,无论目标端口是否处于开放状态,目标机都会返回TCP RST报文。如果Nmap主机能收到此TCPRST报文,则说明目标端口未被防火墙屏蔽。

TCP ACK扫描只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

实例7: -sA 选项的应用 --TCP ACK扫描

隐蔽扫描(-sF/-sN/-sX)原理

Nmap向目标端口发送TCP FIN (-SF) / NULL (-SN) / FIN PSH URG (-sX) 报文,对于Linux系统的目标机,如果目标机未响应,则说明目标端口处于开放状态或被防火墙屏蔽;如果目标机返回TCP RST ACK报文,则说明目标端口处于关闭状态。

对于Windows系统的目标机,无论目标端口处于开放还是关闭状态,目标机都会返回TCP RST ACK报文。

因此,隐蔽扫描方式适合于Linux系统的目标机端口扫描。

实例8 : 隐蔽扫描选项(-sF/-SN/-sX)的应用

应用程序与版本信息侦测

识别目标主机开放的TCP/UDP端口上运行的服务及版本信息

nmap-services-probes(服务版本数据库文件)

默认路径:/usr/share/nmap/nmap-services-probes

实例9 : -sV选项的应用

实例10 : --version-trace选项的应用跟踪版本扫描活动

操作系统侦测

目标:识别目标主机操作系统的类型

侦测方法:网络协议栈指纹识别技术

nmap-os-db (操作系统数据库文件)

  • 该数据库包含了超过2600种操作系统的指纹信息,Nmap把TCP和UDP报文发送到目标机器上,然后将检查结果和nmap-os-db数据库进行比对
  • 默认路径:/usr/share/nmap/nmap-os-db

实例11 : -O 选项的应用

实例12 : -A选项的应用

规避FW/IDS技术

实例1 : -T选项的应用--控制扫描速度

使用 -T(0~5)可以启用时序选项,一般来说数字越大,速度越快,精度越低.

实例2 : -D选项的应用--源IP地址欺骗

实例3 : 空闲扫描(-sI)的应用

实例4 : --spoof-mac 选项的应用 -- 源MAC地址欺骗

所用命令:

代码语言:c_cpp复制
nmap --spoof-mac 0 <目标IP>

其中参数0表示随机分配一个MAC地址,也可以手动指定MAC地址,如:

代码语言:c_cpp复制
nmap --spoof-mac aa:bb:cc:dd:ee:ff <目标IP>

NSE脚本的简单应用

除了常规的网络扫描Nmap还可根据NSE(Nmap scripting Engine)的脚本进行大量渗透工作,这种脚本基于Lua语言编写。

脚本存放目录:/usr/share/nmap/scripts/

实例5:暴力破解脚本(--script brute)应用

提供暴力破解的方式,可对数据库、SMB、SNMP等进行简单密码的暴力猜解

实例6:漏洞扫描脚本(--script vuln)应用

扫描结果保存与输出

实例7:以普通模式(-ON)输出Nmap扫描结果

0 人点赞