Nmap 学习手册

nmap学习手册

nmap 描述

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



nmap语法

nmap [扫描类型&选项] (目标)


nmap目标

nmap的目标可以传递主机名 , IP地址 , 网段



nmap扫描类型&选项

快速扫描

nmap 192.168.50.148

nmap会发送一个ping包 , 来检测目标主机上以开放的端口(范围暂不清楚) , 不推荐此方法检测,因为结果比较模糊

nmap 扫描


主机发现

-sL : 列表发现

​ 仅对发现主机列出来,不进行任何扫描

nmap -sL扫描

-sP : Ping扫描

​ 只确定是否在线,不进行更深一步扫描

nmap -sP扫描


扫描技巧

-sS : 半开放扫描

​ 使用频率比较高的扫描类型 , SYN扫描 , 又称为半开放扫描 , 它不需要建立一个完整TCP连接(建立一次TCP需要进行三次握手 , 而第一次握手则是发送SYN报文),因此 TCP SYN Scan(sS) 被称为半开放扫描

  • 优点 : nmap 发送 SYN包到目标是不会产生任何会话 , 目标主机几乎不会把连接记入系统日志(并非一定 ! ! ! , 能有效阻止目标判断为扫描攻击) , 扫描速度快 , 效率高 , 在工作中使用频率较高

  • 缺点 : 执行命令需要系统最高权限,即 root 或者 Administrator 权限

    nmap -sS扫描

-sT : TCP扫描

​ TCP connect() Scan (sT) , 相对于TCP SYN Scan , TCP connect() Scan 是默认的扫描模式,使用TCP connect()扫描需要调用系统的connect()

  • 优点 : 执行命令无需系统最高权限 , 普通用户亦可执行命令

  • 缺点 : 由于扫描会产生会话 , 所以目标主机会记录大量的连接请求记入系统日志 , 并且若有防护程序则会识别出扫描攻击 , 因为要进行三次握手 , 所以速度较慢 , 效率较低

    nmap -sT扫描

-sU : UDP扫描

UDP Scan(sU) 相对于 SYN扫描和TCP扫描 , UDP扫描无需进行三次握手和发送SYN包 , 因为 UDP Scan是针对UDP端口扫描的,只需发送UDP数据包到目标 , 然后等待响应即可

​ 如果返回是ICMP的错误信息 , 这说明端口是关闭的 , 若返回是正确的回应 , 则说明端口是开放的 , UDP扫描速度会很慢 , 比TCP扫描慢😓

nmap -sU扫描

-sF : FIN扫描

​ FIN扫描也是TCP的一种扫描 , 发送一个FIN标志的数据包 , 有时候目标主机可能存在IDS和IPS系统,会阻止掉SYN数据包 , 因此FIN标志的数据包一般不会阻止 , 而且FIN标志的数据包也是无需进行TCP的三次握手 , 因此FIN扫描也是大概率不会被目标把连接记入系统日志 , 扫描的信息相对较少

nmap -sF扫描

-sF -sX -sN : 原理类似

​ 原理大致相同 -sF 是 发送FIN数据包扫描 -sX 是 圣诞树(XmasTree)扫描 -sN是 空(NULL)扫描

​ 有的防火墙可能会阻止 -sS扫描 , 使用这些扫描类型可以绕过阻止进行扫描 , 他们也是没有进行TCP三次握手 , 目标主机大概率不会被目标把连接记入系统日志,且扫描速度比 -sT 块

  • 优点 : 能躲过一些无状态防火墙和报文过滤路由器,比SYN还要隐秘
  • 缺点 : 现代的IDS产品可以发现,并非所有的系统严格遵循RFC 793

服务版本识别

-sV : Version版本扫描检测

​ Version 版本检测是用来扫描目标主机上的端口服务版本 , 不过此扫描选项不能用来扫描目标开放端口 , 因此使用此选项之前 , 请使用TCPSYN进行端口开放扫描

  • –version-intensity “Level” : 设置版本扫描强度 , Level范围为0~9 默认为7

  • –version-light : 轻量级扫描 , 即 –version-intensity 2

  • –version-all : 重度扫描 : 即 –version-intensity 9

  • version-trace : 显示详细的扫描过程 ()

    nmap -sV扫描


操作系统识别

-O : OS操作系统扫描检测

OS操作系统扫描检测 , 可以远程轿车操作系统信息 , 这些信息是十分有用的 , 通过获取的信息可以知道已知的漏洞

  • –osscan-guess : 猜测匹配操作系统
  • –osscan-limit : 针对指定的目标进行系统检测

nmap -O扫描


脚本扫描

nmap --script 具体的脚本 目标

nmap官方脚本文档 : https://nmap.org/nsedoc/

左侧列出了脚本的分类,点击分类 可以看到每一个分类下有很多具体的脚本供我们使用。14大分类具体对应为

  • auth : 负责处理鉴权证书的脚本
  • broadcast : 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
  • brute : 提供暴力破解方式,针对常见的应用如http/snmp等
  • default : 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
  • discovery : 对网络进行更多的信息,如SMB枚举、SNMP查询等
  • dos : 用于进行拒绝服务攻击
  • exploit : 利用已知的漏洞入侵系统
  • external : 利用第三方的数据库或资源,例如进行whois解析
  • fuzzer : 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
  • intrusive : 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
  • malware : 探测目标机是否感染了病毒、开启了后门等信息
  • safe : 此类与intrusive相反,属于安全性脚本
  • version : 负责增强服务与版本扫描(Version Detection)功能的脚本
  • vuln : 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067

对SSH进行暴力破解

账号密码不是弱口令,所以结果是跑不出来🤣

nmap -sC-SSH


时间模板

-T<0-5> 设置时间模板

nmap -sS -T<0-5> 192.168.1.148

优化时间控制选项的功能很强大也很有效,但有些用户会被迷惑。此外, 往往选择合适参数的时间超过了所需优化的扫描时间。因此,Nmap提供了一些简单的 方法,使用6个时间模板,使用时采用-T选项及数字(0 - 5) 或名称。模板名称有paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)

  • paranoid、sneaky模式用于IDS躲避
  • Polite模式降低了扫描 速度以使用更少的带宽和目标主机资源。
  • Normal为默认模式,因此-T3 实际上是未做任何优化。
  • Aggressive模式假设用户具有合适及可靠的网络从而加速 扫描.
  • nsane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。

nmap -T

其他选项

-A 综合扫描

此选项包含了 1-10000端口ping扫描 , 操作系统扫描 , 脚本扫描 , 路由追踪 , 服务探测

nmap -A 192.168.50.148

nmap -A