Nmap

nmap的介绍使用

Posted by Sprint#51264 on January 31, 2021

引言

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

  • Nmap的优点:

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

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

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

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

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

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

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

基本功能

  • 主机发现功能

    向目标计算机发送特制的数据包组合,然后根据目标的饭应来确定她是否处于开机并连接到网络的状态

  • 端口扫描

    向目标计算机的指定端口发送特制的数据包组合,然后根据目标端口的饭应来判断它是否开放

  • 服务及版本检测

    向目标计算机的目标端口发送特别的数据包组合,然后根据目标的反应来检测它运行服务类型和版本

  • 操作系统检测

    向目标计算机发送特制的数据包组合,然后根据目标的饭应来检测它的操作系统类型和版本

除了这些,nmap还能实现一些高级审计技术,例如伪造发起扫描端的身份,进行隐蔽赛秒,规避目标的安全防御设备(例如防火墙),对系统进行安全漏洞检测,并提供晚上的报告选项等。

如果用nmap对一台计算机进行审计,最终可以获得目标如下的信息:

目标主机是否在线

目标主机所在的网络结构

目标主机上开放的端口

目标主机所使用的操作系统

目标主机上所运行的服务以及版本

目标主机上所存在的漏洞

基本操作

  • Nmap [IP地址]

  • Nmap -sn [IP地址范围]

    对整个子网进行扫描

    nmap -sn 192.168.0.1-255

    nmap -sn 192.168.0.1/24

  • Nmap -sn [IP地址 IP地址 IP地址…]

    对多个不连续的目标进行扫描

  • Nmap -sn [目标] –exclude [目标]

    将某个地址排除在扫描结果之外

  • Nmap -sn -iL [文本文件]

    直接从文本文件中读取IP地址

  • Nmap -sn -iR [目标数量]

    对随机的几个目标进行扫描

-sn 参数可以简化信息

活跃主机发现技术

网络协议与活跃主机发现技术

  • 概念

    现实生活中如果拜访某人的家就要先敲门,房子中的人就会询问是谁,来访者就会知道房中有人。

    这样敲门并且有屋子里的人会作出回应。居心不良的人就能借此”踩点”

    那么来理解活跃主机发现技术。如果想知道某台主机是否处于活跃状态,同样可以采用这种”敲门”的方式,只不过需要以发送数据包的形式来代替”敲门”,如果主机收到了数据包,并给出了回应,就可以判断这台主机是活跃主机。

基于ARP协议的活跃主机发现技术

  • 概念

    ARP主要处于TCP/IP协议族中的网络层,这个协议的目的主要是解决逻辑地址和物理地址的转换关系。

    网络上的通信要使用到两个地址:物理地址和逻辑地址。

    同一网段中的通信一般使用物理地址,不同网段之间的通信一般使用逻辑地址。

  • 举例

    送礼物例子

  • 具体

    同一网段之中所有的主机都会连接到交换机上,交换机有很多接口,每个决口1与一个主机通过网线相连,交换机中有一个内容寻址寄存器,这个寄存器中存储了每个接口所连接的主机的物理地址表。它会使用这张表来确定应该向哪一个接口发送数据包。如果目标的物理地址是未知的话,这个地址就需要通过额外的通信进行解析了。

    A主机192.168.0.1的物理地址为22:22:22:22:22:22

    B主机192.168.0.2的物理地址为33:33:33:33:33:33

    A主机要与一台逻辑地址为192.168.0.2的主机通信,但是不知道它的物理地址,这时候就需要一个可以将逻辑地址转换为物理地址的协议,这个协议就是地址解析协议(ARP)。

    A主机通过广播的形式寻找B的物理地址,B收到广播后回应自己的物理地址。

    如此就可以用来发现活跃主机。

  • 命令

    nmap -sn -PR

  • 原理

    将“who has 192.168.0.1 tell 192.168.0.4”的ARP请求广播

    如果主机给出”ARP reply 192.168.0.1 is at "那么它就是活跃主机

基于TCP协议的活跃主机发现技术

  • 原理

TCP三次握手

ACK,直接向主机发一个SYNACK包,主机不清楚怎么回事,也不能建立TCP连接,就会发RST标志数据包,标识无法建立连接

  • 命令

    Nmap -sn -PS

    Nmap -sn -PA

  • 过程

发SYN包,收SYNACK,发RST结束

发SYNACK, 收RST包

基于UDP协议的活跃主机发现技术

  • 原理

    UDP不需要建立可靠连接,向某个UDP协议开放的端口发送数据包,如果不可达就会返回一个ICMP端口不可达数据包,如果是开放的它就会忽略这个数据包,不返回任何信息。

  • 命令

    Nmap -sn -PU <>

基于SCTP协议的活跃主机发现技术

端口扫描

  • SYN扫描

    Nmap -sS [target]

常见扫描