NMAP详解

1. 概述

Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字Nmap是Network Mapper的简称。Nmap最初是由Fyodor在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。
一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

2. Nmap特点

主机探测:探测网络上的主机,例如列出响应TCP和ICMP请求、icmp请求、开放特别端口的主机。

  • 端口扫描:探测目标主机所开放的端口。
  • 版本检测:探测目标主机的网络服务,判断其服务名称及版本号。
  • 系统检测:探测目标主机的操作系统及网络设备的硬件特性。

3. Nmap用途

  1. 通过对设备或者防火墙的探测来审计它的安全性。
  2. 测目标主机所开放的端口。
  3. 网络存储,网络映射,维护和资产管理。
  4. 通过识别新的服务器审计网络的安全性。
  5. 探测网络上的主机。

4. Nmap安装

4.1 环境准备

  1. 操作系统:centos
  2. 环境工具:Nmap7.40
  3. 环境依赖 gcc编译器

4.2. 环境检测

靶机IP:10.20.65.175
主机IP:10.20.65.176
用户名:root
密码:password
如果在线下本地环境中安装Nmap时,先安装gcc编译器,否则编译时会出现错误,centos安装命令:yum install gcc-c++,ubuntu安装命令:apt-get build-depgcc
使用ls命令查看nmap是否在当前目录下,如下图:

image.png

使用解压命令tar -zxvf将nmap-7.40.tgz包进行解压,如下图:


image.png

解压成功之后,进入到nmap目录,使用命令cd nmap-7.40,如下图:


image.png

对nmap进行安装,使用./configure命令进行检测,./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,如下图:


image.png

4.3. 源码编译

使用make命令进行nmap源代码编译,生成目标文件,可执行文件。当 make 命令第一次执行时,它扫描 Makefile 找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立其依赖关系,然后编译它们,如下图:


image.png

4.4. 源码安装

编译完成之后,使用make install进行安装,make install命令是将生成后的目标可执行文件进行安装,如下图:


image.png

当安装结束会提示NMAP SUCCESSFULLY INSTALLED 表示nmap安装成功,如下图:


image.png

2.4. Nmap验证
使用nmap –v命令进行验证nmap是否安装成功,运行nmap -v会返回nmap的版本及相关信息,如下图:


image.png

使用nmap –h 可以看到nmap的相关帮助信息,其中列出了nmap的所有命令,使用这些命令可以进行主机探测,端口扫描等操作,如下图:


image.png

5. Nmap语法

5.1. 主机发现

  • -sL (列表扫描):列表扫描是主机发现的退化形式,它仅仅列出指定网络上的每台主机,不发送任何报文到目标主机。
  • -sP (Ping扫描):该选项告诉Nmap仅仅进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。
  • -A (复合参数)同时探测操作系统指纹和版本检测
  • -P0/Pn (无ping):该选项完全跳过Nmap主机发现阶段,通常Nmap在进行高强度的扫描时用它确定正在运行的机器。
  • -sn (Ping Scan) 只进行主机发现,不进行端口扫描。
  • -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
  • -PE/PP/PM: 使用ICMP echo,timestamp,and netmask 请求包发现主机。
  • -PU (portlist) (UDP Ping):使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
  • -n (不用域名解析):-n表示不进行DNS解析;-R表示总是进行DNS解析。
  • --system-dns (使用系统域名解析器):指定使用系统的DNS服务器。
  • --traceroute: 追踪每个路由节点。

5.2. 端口状态

  • Open (开放的):应用程序正在该端口接收TCP 连接或者UDP报文。
  • Closed (关闭的):关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。
  • Filtered (被过滤的):由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。
  • Unfiltered (未被过滤的):未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。
  • open|filtered(开放或者被过滤的):当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。
  • closed|filtered(关闭或者被过滤的):该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。

5.3. 端口扫描

  • -sS/sT/sA/sW/sM:指定使用TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
  • -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
  • -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
  • -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
  • -sO: 使用IP protocol 扫描确定目标机支持的协议类型。
  • -p : 只扫描指定的端口。
  • -F: 快速 (有限的端口) 扫描。
  • -r:不要按随机顺序扫描端口。
  • --scanflags: 定制TCP包的flags。

5.4. 服务和版本探测

  • -sV (版本探测):打开版本探测,也可以用-A同时打开操作系统探测和版本探测。
  • --allports:不为版本探测排除任何端口。
  • --version-intensity :设置版本扫描强度。
  • --version-light:打开轻量级模式。

5.5. 操作系统探测

  • -O:启用操作系统检测,也可以使用-A来同时启用操作系统检测和版本检测。
  • --osscan-limit: 针对指定的目标进行操作系统检测,如果发现一个打开和关闭的TCP端口时,操作系统检测会更有效。
  • --osscan-guess;--fuzzy:推测操作系统检测结果,当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,Nmap默认进行这种匹配。

5.6. 状态输出和保存

  • -v :详细输出扫描状态
  • -oN :标准输出,将标准的输出直接写入指定文件。
  • -oX :XML输出,以XML输出格式直接写入指定文件。
  • -oA :所有格式输出,将所有格式以指定文件名进行输出。

6. Nmap扫描

6.1. 主机扫描

nmap –sL 192.168.90.100-150 //列表扫描
支持IP列表和C段扫描,范围可自定义1/24扫描整个C段。


image.png

nmap -sP 192.168.90.100-150 //ping扫描
nmap -sP 192.168.90.0/24 //寻找网络内所有在线主机
-sP方式是先对主机进行ping测试,Ping 指定范围内的 IP 地址。


image.png

nmap -P0 192.168.90.213 //无ping扫描
-P0方式是无需ping直接对目标进行扫描。


image.png

nmap –sn 192.168.90.100-110 //只进行主机扫描
–sn方式只对主机进行扫描获取主机名,不扫描其端口。


image.png

6.2. 端口扫描

nmap –sS 192.168.90.213 //TCP sys方式扫描,快速和隐蔽的扫描。
使用-sS方式可以快速和隐蔽的扫描,不易被主机发现。


image.png

nmap –sU 192.168.90.213 //使用UDP扫描方式


image.png

nmap –sN 192.168.90.218 //探测对方TCP端口状态


image.png

nmap -p 80 192.168.90.213 //指定端口扫描,如多个端口中间用,逗号分隔


image.png

nmap –F 192.168.90.213 //快速扫描


image.png

6.3. 服务和版本探测

nmap -sV 192.168.90.213 //版本探测
使用-sV可以探测出主机的端口服务类型,具体版本等

image.png

6.4. 操作系统探测

nmap –O 192.168.90.213 //操作系统扫描
-O方式是扫描主机的操作系统,获取主机具体的操作系统及版本。


image.png

6.5. 综合扫描方式

nmap -sS -P0 -sV -O 192.168.90.213
-sS TCP SYN 扫描 (又称半开放,或隐身扫描)
-P0 允许你关闭 ICMP pings,不进行主机发现,直接扫描
-sV 打开系统版本检测
-O 尝试识别远程操作系统
进行隐蔽扫描,探测主机的端口安装服务及服务具体版本,探测出主机所使用的操作系统版本。


image.png

nmap -sS -P0 -A -v 192.168.90.213
使用隐秘扫描模式,不进行主机发现,直接进行扫描,使用复合参数扫描模式对目标主机进行探测。


image.png

6.6. 状态输出及保存

nmap -sS -v 192.168.90.213 -oN /root/text
输出正在扫描的状态,并将扫描结果以普通文本格式保存到指定的文件中。


image.png

image.png

使用linux命令查看文件中的内容 cat /root/text

image.png

你可能感兴趣的:(NMAP详解)