nmap常用命令记录

不介绍了

详细见:https://nmap.org/

分类及状态

端口分类

  • 公认端口(well-known port):从0至1024,最常用端口,通常与协议绑定;

  • 注册端口(registered port):从1025至49151,这些端口已经注册到服务协议上;

  • 动态或私有端口(dynamic/private port):从49152至65535。

另外,端口还与协议相关;比如:UDP端口53通常用于DNS查询、TCP端口53通常用于DNS记录迁移。

端口状态

  • open:目标端口开启。
  • closed:目标端口关闭。
  • filtered:通常被防火墙拦截,无法判断目标端口开启与否。
  • unfiltered:目标端口可以访问,但无法判断开启与否。
  • open | filtered:无法确定端口是开启还是filtered。
  • closed | filtered:无法确定端口是关闭还是filtered。

基本主机扫描

扫描单台主机

Nmap 默认发送一个arp的ping数据包来探测目标主机在1-10000范围内所开放的端口。

例如:

nmap ip(域名)

输出为:

root@ffeb1523ca2b:~# nmap xxx
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-15 06:24 UTC
Nmap scan report for xxx
Host is up (0.015s latency).
Not shown: 499 closed ports, 499 filtered ports
PORT STATE SERVICE
80/tcp open http
8000/tcp open http-alt

加上-v会有更详细的输出:

root@ffeb1523ca2b:~# nmap -v <target ip>
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-15 06:51 UTC
Initiating Ping Scan at 06:51
Scanning <target ip> [4 ports]
Completed Ping Scan at 06:51, 0.03s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 06:51
Completed Parallel DNS resolution of 1 host. at 06:51, 0.02s elapsed
Initiating SYN Stealth Scan at 06:51
Scanning <target ip> [1000 ports]
Discovered open port 80/tcp on xxx
Completed SYN Stealth Scan at 06:51, 4.25s elapsed (1000 total ports)
Nmap scan report for xxx
Host is up (0.0028s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 4.39 seconds
Raw packets sent: 2006 (88.228KB) | Rcvd: 7 (284B)

扫描多台主机

直接将主机名放进nmap参数中即可

nmap sisa.tencent.com careers.tencent.com cp.tencent.com

输出为:

root@ffeb1523ca2b:~# nmap sisa.tencent.com careers.tencent.com cp.tencent.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-15 06:55 UTC
Nmap scan report for sisa.tencent.com (183.3.235.175)
Host is up (0.0030s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https

Nmap scan report for careers.tencent.com (212.64.46.90)
Host is up (0.0029s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https

Nmap scan report for cp.tencent.com (113.96.232.125)
Host is up (0.0029s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https

Nmap done: 3 IP addresses (3 hosts up) scanned in 10.12 seconds

也可以*表示,扫描整个子网域

nmap 192.168.0.*

或者用以下也可以达到同样的效果。

nmap 192.168.0.0/24

增加端口和网段:

nmap  -p 22,21,80 192.168.31.13

nmap -p 22,21,80 192.168.31.1-253

扫描列表里的多台主机

在渗透测试中常常要扫描大把子域名,以之前对tencent.com的信息收集为例

就可以利用以下命令进行获取文件内容扫描

nmap -iL tencent_result.txt

常用选项

  1. 猜测匹配操作系统(-O),识别目标主机的操作系统。

  2. 服务版本识别(-sV),Nmap可以在进行端口扫描的时候检测服务端软件的版本信息。版本信息将使后续的漏洞识别工作更有针对性。

root@ffeb1523ca2b:~# nmap -sV xxx
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-15 06:26 UTC
Nmap scan report for 192.168.1.102
Host is up (0.0047s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.19.0
8000/tcp open http Apache httpd 2.4.25 ((Debian))
  1. 禁用主机检测(-Pn),如果主机屏蔽了ping请求,Nmap可能会认为该主机没有开机。这将使得Nmap无法进行进一 步检测,比如端口扫描、服务版本识别和操作系统识别等探测工作。因此可能需要禁用Nmap的主机检测功能。在指定这个选项之后,Nmap会认为目标主机已经开机并会进行全套的检测工作。

  2. 快速扫描(-F),将仅扫描100个常用端口。

  3. 强力检测选项(-A),启用-A选项之后,Nmap将检测目标主机的下述信息

  • 服务版本识别(-sV)
  • 操作系统识别(-O)
  • 脚本扫描(-sC)
  • Traceroute(–traceroute)
  1. 输出选项

    nmap支持以下几种输出:

    • 正常输出(-oN):不显示runtime信息和警告信息。

    • XML文件(-oX):比较建议。生成的XML格式文件可以转换成HTML,还可被Nmap的图形界面解析,也便于导入数据库。

    • 生成便于Grep使用的文件(-oG):这种格式的文件的内容由注释(由#开始)和信息行组成。信息行包含6个字段,每个字段的字段名称和字段值以冒号分割,字段之间使用制表符隔开,便于 grep或awk之类的UNIX指令整理扫描结果。

      输出示例:

      root@ffeb1523ca2b:~# cat hhh.php
      # Nmap 7.80 scan initiated Wed Jul 15 08:25:08 2020 as: nmap -O -oG hhh.php buuoj.cn
      Host: 111.123.50.83 () Status: Up
      Host: 111.123.50.83 () Ports: 80/open/tcp//http///, 443/open/tcp//https///, 8080/open/tcp//http-proxy///, 10002/open/tcp//documentum/// Ignored State: filtered (996) Seq Index: 132 IP ID Seq: Randomized
      # Nmap done at Wed Jul 15 08:25:17 2020 -- 1 IP address (1 host up) scanned in 9.97 seconds

      由此可见,注释行包含了我们的输入。

    • 输出至所有格式(-oA):包含以上三种格式,分别以.nmap.xml.gnmap结尾。

  2. 时间排程控制选项(-T)

    nmap可通过-T选项指定时间排程控制的模式。它有6种扫描模式。

    • paranoid(0):每5分钟发送一次数据包,且不会以并行方式同时发送多组数据。这种模式 的扫描不会被IDS检测到。
    • sneaky(1):每隔15秒发送一个数据包,且不会以并行方式同时发送多组数据。
    • polite(2):每0.4 秒发送一个数据包,且不会以并行方式同时发送多组数据。
    • normal(3):此模式同时向多个目标发送多个数据包,为Nmap默认的模式,该模式能自 动在扫描时间和网络负载之间进行平衡。
    • aggressive(4):在这种模式下,Nmap对每个既定的主机只扫描5分钟,然后扫描下一 台主机。它等待响应的时间不超过1.25秒。
    • insane(5):在这种模式下,Nmap对每个既定的主机仅扫描75秒,然后扫描下一台主机。它等待响应的时间不超过0.3秒。

扫描类型

TCP

  1. -sT

TCP connect()扫描:指定这个选项后,程序将和目标主机的每个端口都进行完整的三次握手。如果成功建立连接,则判定该端口是开放端口。由于在检测每个端口时都需要进行三次握手,所以这种扫描方式比较慢,而且扫描行为很可能被目标主机记录下来。如果启动 Nmap的用户的权限不足,那么默认情况下Nmap程序将以这种模式进行扫描。

  1. -sS

SYN扫描:该选项也称为半开连接或者SYN stealth。采用该选项后,Nmap将使用含有SYN标志位的数据包进行端口探测。如果目标主机回复了SYN/ACK包,则说明该端口处于开放状态:如果回复的是RST/ACK包,则说明这个端口处于关闭状态;如果没有任何响应 或者发送了ICMP unreachable信息,则可认为这个端口被屏蔽了。SYN模式的扫描速度非常 好。而且由于这种模式不会进行三次握手,所以是一种十分隐蔽的扫描方式。如果启动Nmap 的用户有高级别权限,那么在默认情况下Nmap程序将以这种模式进行扫描。

  1. -sN -sF -sX

TCP NULL(-sN)、FIN(-sF)及XMAS(-sX)扫描:NULL 扫描不设置任何控制位; FIN扫描仅设置FIN标志位:XMAS扫描设置FIN、PSH和URG的标识位。如果目标主机返回 了含有RST标识位的响应数据,则说明该端口处于关闭状态;如果目标主机没有任何回应, 则该端口处于打开|过滤状态。

  1. -sM

TCP Maimon扫描:Uriel Maimon 首先发现了TCP Maimom扫描方式。这种模式的 探测数据包含有FIN/ACK标识。对于BSD衍生出来的各种操作系统来说,如果被测端口处于 开放状态,主机将会丢弃这种探测数据包;如果被测端口处于关闭状态,那么主机将会回复 RST。

  1. -sA

TCPACK扫描:这种扫描模式可以检测目标系统是否采用了数据包状态监测技术 (stateful)防火墙,并能确定哪些端口被防火墙屏蔽。这种类型的数据包只有一个ACK标识位。如果目标主机的回复中含有RST标识,则说明目标主机没有被过滤。

  1. -sW

TCP窗口扫描:这种扫描方式检测目标返回的RST数据包的TCP窗口字段。如果目 标端口处于开放状态,这个字段的值将是正值;否则它的值应当是0。

  1. -sL

TCP Idle扫描:采用这种技术后,您将通过指定的僵尸主机发送扫描数据包。本机并不与目标主机直接通信。如果对方网络里有IDS,IDS将认为发起扫描的主机是僵尸主机。

UDP

Nmap有多种TCP扫描方式,而UDP扫描仅有一种扫描方式(-sU)。虽然UDP扫描结果没有 TCP扫描结果的可靠度高,但渗透测试人员不能因此而轻视UDP扫描,毕竟UDP端口代表着 可能会有价值的服务端程序。但是UDP扫描的最大问题是性能问题。由干Linux内核限制1秒内最多发送一次ICMP Port Unreachable信息。按照这个速度,对一台主机的65536个UDP端口进行完整扫描,总耗时必 定会超过18个小时。

算了我看不太懂,要用的时候在官网查就好了,复制粘贴好累哈哈哈哈哈。

脚本引擎

nmap --script 类别

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

左边为脚本分类,点击分类之后就会看到右边出现很多具体脚本。

以上的“类别”可以为脚本分类及类别里的具体脚本。

用法举例

扫描服务器的常见漏洞

nmap --script vuln <target>

这里有好多例子

好了基本用法就以上这些了!想记录好久了一直都鸽了 这次可算完成了!

Author: Neorah
Link: https://neorah.me/web/nmap-use/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.