nmap扫描工具学习笔记


参考文档:2019.3_Kali man namp手册。


Namp简介

Namp概述:

nmap - 网络探测工具和安全/端口扫描器

Namp是一个综合性的工具,并且特性丰富的端口扫描工具。

Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,端口列表是关键,那张表列出端口号,协议,服务名称和状态。状态可能是 open(开放的),filtered(被过滤的), closed(关闭的),或者unfiltered(未被过滤的)。 Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。 filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是open(开放的) 还是 closed(关闭的)。 closed(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。 当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是 unfiltered(未被过滤的) 如果Nmap报告状态组合 open|filtered 和closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。 当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议扫描时 (-sO),Nmap提供关于 所支持的IP协议而不是正在监听的端口的信息。

除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。

Namp主要功能:

  1. 主机发现
  2. 服务器版本探测
  3. 操作系统探测
  4. 网络追踪
  5. Nmap脚本引擎

Nmap使用方式

用法:

语法:nmap [扫描类型…][选项] {扫描目标说明}

目标说明:

Namp扫描的目标可以是一个主机地址,一个网段,多个地址,或者域名。同时支持CIDR风格地址。支持类似10.1-5.1-255.1-255的扫描。可同时接收多种类型的目标。

IPv6只能用规范地址或主机名指定。

常见用法:

  • -iL <inputfilename> (从列表中输入)

    可将文件中的一堆主机名或地址读取出来进行扫描。

  • -iR <hostnum> (随机选择目标)

    可以指定随机生成多少个IP地址。如果为0,意味着无休止的扫描。

  • –exclude

    可以排除多个不需要扫描的主机。

  • –excludfile <excludefile> (排除文件中的列表)

    排除文件中的主机列表

主机发现:

利用namp可以发现网络中存活的主机。可以通过-sL扫描主机列表。 关闭ping(-P0)跳过ping的步骤,也可以使用多个端口把TCP SYN/ACK, UDP和ICMP等组合起来用来探测。

常见用法:

  • -sL(列表扫描)

    扫描指定列表中存活的主机。

  • -sP (ping扫描)

    仅仅进行ping扫描。可以快速发现存活主机。

    -sP默认情况下,发送一个ICMP回声请求和一个TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文 (用connect()系统调用)到目标机的80端口。

    当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR), ,除非使用了–send-ip选项。

  • -P0(无ping)

    跳过发现阶段。通常Namp只对确定这在运行的主机进行高强度扫描。而P0,不进行活动主机确认,直接对每个主机的每个端口等进行扫描。

  • -PS [portlist] (TCP SYN Ping)

    发送TCP 的SYN报文。默认端口号80,也可指定多个端口号22,23,35。

    如果目标端口是关闭的,会收到RST(复位)包。如果是开启的,会收到SYN/ACK的包。Nmap会发送RST扼杀这个连接。

  • -PA [portlist] (TCP ACK Ping)

    发送的是ACK报文。会受到RST报文。

  • -PU [portlist] (UDP Ping)

    默认发送空的UDP报文,目的端口31338。可以通过–data-length指定数据大小。

    如果目标端口是关闭的,会收到ICMP端口不可达报文。如果可达,则没回应。

  • -PE; -PP; -PM (ICMP Ping Types)

    利用ICMP报文的时间戳请求,信息请求,和掩码请求。代码分为为13,15,17.

  • -PR (ARP Ping)

    在相同网段上时使用ARP进行扫描。

  • -n (不用域名解析)

    让Nmap不对发现的活动IP地址进行反向域名解析。可是使扫描速度更快。

  • -R (为所有目标解析域名)

    让Nmap对目标IP地址做反向域名解析。

  • –system-dns (使用系统域名解析器)

    使用指定的域名解析服务器。

端口扫描基础:

端口扫描是Nmap的一个核心功能。Nmap会把端口扫描结果分为6个状态。

open(开放的), closed(关闭的),filtered(被过滤的), unfiltered(未被过滤的), open|filtered(开放或者被过滤的),或者 closed|filtered(关闭或者被过滤的)。

  • open(开放的):

    说明对应的TCP或UDP端口是开放的。

  • closed(关闭的)

    端口状态被关闭。

  • filtered(被过滤的)

    由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。

  • unfiltered(未被过滤的)

    端口可以访问,但Nmap不能确定它是开放还是关闭。

  • open|filtered(开放或者被过滤的)

    当无法确定端口是开放还是被过滤,就为这种状态。

  • closed|filtered(关闭或者被过滤的)

选项:

  • -sS(TCP SYN扫描)
  • -sT(TCP connect()扫描)
  • -sU(UDP扫描)
  • -sN; -sF, -sX(TCP Full, FIN, and Xmas扫描)
  • -sA (TCP ACK扫描)
  • -sW(TCP窗口扫描)
  • -scanflags(定制的TCP扫描)
  • -sO(IP协议扫描)

端口说明和扫描顺序:

  • -p(port ranges)(只扫描指定的端口)
  • -F(快速扫描)
  • -r(不按随机顺序扫描端口)

操作系统探测:

  • -O(启用操作系统检查)

  • –ossacn-limit(针对指定的目标进行操作系统检测)

  • –osscan-guess; –fuzzy(推测操作系统的检测结果)

    当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配。

Nmap常用命令

获取远程主机的系统类型及开放端口:

nmap -sS -P0 -sV -O。

这里的 < target > 可以是单一 IP, 或主机名,或域名,或子网

-sS TCP SYN 扫描 (又称半开放,或隐身扫描)
-P0 允许你关闭 ICMP pings.
-sV 打开系统版本检测
-O 尝试识别远程操作系统

其它选项:

-A 同时打开操作系统指纹和版本检测
-v 详细输出扫描情况.

nmap -sS -P0 -A -v < target >

列出开放了指定端口的主机列表:

nmap -sT -p 80 -oG – 192.168.1.* | grep open

在网络寻找所有在线主机:

nmap -sP 192.168.0.*

或者也可用以下命令:

nmap -sP 192.168.0.0/24

指定 subnet

ping指定范围内的IP地址:

nmap -sP 192.168.1.100-254

在某段子网上查找未占用的IP:

nmap -T4 -sP 192.168.2.0/24 && egrep “00:00:00:00:00:00″ /proc/net/arp

探测操作端口的服务和版本:

nmap -O 1.1.1.1 或 nmap -A 1.1.1.1


参考文档:2019.3_Kali man namp手册。

https://www.cnblogs.com/Acmen/p/5190391.html


坚持原创技术分享,您的支持将鼓励我继续创作!