admin 管理员组

文章数量: 887017

Nmap端口扫描

  • Nmap端口扫描
    • 目标规范:
      • -iL 从一个文件中扫描主机列表
      • --exclude 排除一些远程主机后再扫描
      • --excludefile 排除文件中的列表
    • 端口扫描状态:
      • open(开放的)
      • closed(关闭的)
      • filtered(被过滤的)
      • unfiltered(未被过滤的)
      • open|filtered(开放或者被过滤的)
      • closed|filtered(关闭或者被过滤的)
    • 主机发现:
      • -sP:Ping 扫描 - 只需确定主机是否在线
      • -P0:无Ping扫描 - 常用于防火墙禁止ping的情况下
      • -Pn 扫描之前不需要⽤ping命令
      • -PS:TCP SYN扫描
      • -PA: TCP ACK Ping
        • -PS -PA联用
      • -PU:UDP Ping
      • -PE; -PP; -PM (ICMP Ping Types)
      • -PR:ARP Ping
      • -n:不用域名解析
      • -R:为所有目标解析域名
    • 扫描技术:
      • -sS (TCP SYN扫描)
      • -sT (TCP扫描,建立完整连接)
      • -sU (UDP扫描)
        • -sS -sU联用
        • -sS --host-timeout跳过慢速的主机
      • -sN; -sF; -sX (TCP Null,FIN,and Xmas扫描)
      • -sM (TCP Maimon扫描)
      • -sA (TCP ACK扫描)
      • -sW (TCP窗口扫描)
      • --scanflags (定制的TCP扫描)
      • -sI (空闲扫描)
      • -sO (IP协议扫描)
      • -b (FTP弹跳扫描)
      • -p (只扫描指定的端口)
      • -F 扫描100个最有可能开放的端口
      • -r (不要按随机顺序扫描端口)
    • 服务/版本检测:
      • -sV (版本探测)
      • --allports (不为版本探测排除任何端口)
      • --version-intensity (设置 版本扫描强度)
      • --version-light (打开轻量级模式)
      • --version-all (尝试每个探测)
      • --version-trace (跟踪版本扫描活动)
      • -sR (RPC扫描)
    • 操作系统检测:
      • -O (启用操作系统检测)
      • --osscan-limit (针对指定的目标进行操作系统检测)
      • --osscan-guess; --fuzzy (推测操作系统检测结果)
    • 时间和性能:
      • --min-hostgroup ;--max-hostgroup (调整并行扫描组的大小)
      • --min-parallelism ; --max-parallelism (调整探测报文的并行度)
      • --min-rtt-timeout , --max-rtt-timeout ,--initial-rtt-timeout (调整探测报文超时时间)
      • --scan-delay; --max-scan-delay (调整探测报文的时间间隔)
      • --host-timeout (放弃低速目标主机)
      • -T 6种时间模板 (设置时间模板)
    • 防火墙/IDS 逃避和欺骗:
      • -f (报文分段); --mtu(使用指定的MTU)
      • -D <decoy1,decoy2,ME...> (使用诱饵隐蔽扫描)
      • -S (源地址哄骗)
      • -e (使用指定的接口)
      • --source-port ;-g (源端口哄骗)
      • --data-length (发送报文时 附加随机数据)
      • --ttl (设置IP time-to-live域)
      • --randomize-hosts (对目标主机的顺序随机排列)
      • --spoof-mac <mac address,prefix,or vendor name> (MAC地址哄骗)
    • 输出
        • -oN (标准输出)
        • -oX (XML输出)
        • -oS (ScRipT KIdd|3 oUTpuT)
        • -oG (Grep输出)
        • -oA (输出至所有格式)
      • **细节和调试选项**
        • -v (提高输出信息的详细度)
        • -d [level] (提高或设置调试级别)
        • --packet-trace (跟踪发送和接收的报文)
        • --iflist (列举接口和路由)
      • **其它输出选项**
        • --append-output (在输出文件中添加)
        • --resume (继续中断的扫描)
        • --stylesheet (设置XSL样式表,转换XML输出)
        • --no-stylesheet (忽略XML声明的XSL样式表)
    • 其它选项
      • -6 (启用IPv6扫描)
      • -A (激烈扫描模式选项)
      • --datadir (说明用户Nmap数据文件位置)
      • --send-eth (使用原以太网帧发送)
      • --send-ip (在原IP层发送)
      • --privileged (假定用户具有全部权限)
      • -V; --version (打印版本信息)
      • -h; --help (打印帮助摘要面)
    • 脚本扫描:
      • -sC:
      • --script= <Lua 脚本>
      • --script-args=<n1=v1,[n2=v2,...]>:
      • --script-args-file=filename:
      • --script-trace:
      • --script-updatedb:
      • --script-help=<Lua 脚本>:
  • 常用命令:
    • 确定操作系统和版本号:-O -sV

  • 忘记什么时候做的笔记了,怕放忘了,仅供参考

Nmap端口扫描

用法:nmap [扫描类型] [选项] {目标规范}

目标规范:

可以传递主机名、IP 地址、网络等。

-iL 从一个文件中扫描主机列表

如果你有多台主机需要扫描且所有主机信息都写在一个文件中,那么你可以直接让nmap读取该文件来执行扫描,让我们来看看如何做到这一点。

  • 创建一个名为“nmaptest.txt ”的文本文件,并定义所有你想要扫描的服务器IP地址或主机名。
[root@server1 ~]# cat > nmaptest.txt 
localhost
server2.tecmint
192.168.0.101
  • 接下来运行带**-iL** 选项的nmap命令来扫描文件中列出的所有IP地址
[root@server1 ~]# nmap -iL nmaptest.txt 
Starting Nmap 4.11 ( http://www.insecure/nmap/ ) at 2013-11-18 10:58 EST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1675 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
111/tcp open  rpcbind
631/tcp open  ipp
857/tcp open  unknown
 
Interesting ports on server2.tecmint (192.168.0.101):
Not shown: 1674 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
958/tcp  open  unknown
3306/tcp open  mysql
8888/tcp open  sun-answerbook
MAC Address: 08:00:27:D9:8E:D7 (Cadmus Computer Systems) 

Interesting ports on server2.tecmint (192.168.0.101):
Not shown: 1674 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
958/tcp  open  unknown
3306/tcp open  mysql
8888/tcp open  sun-answerbook
MAC Address: 08:00:27:D9:8E:D7 (Cadmus Computer Systems) 
Nmap finished: 3 IP addresses (3 hosts up) scanned in 2.047 seconds

–exclude 排除一些远程主机后再扫描

如果在您指定的扫描范围有一些主机或网络不是您的目标, 那就用该选项加上以逗号分隔的列表排除它们。

在执行全网扫描或用通配符扫描时你可以使用“-exclude”选项来排除某些你不想要扫描的主机。

[root@server1 ~]# nmap 192.168.0.* --exclude 192.168.0.100
 
Starting Nmap 4.11 ( http://www.insecure/nmap/ ) at 2013-11-11 16:16 EST
Interesting ports on server2.tecmint (192.168.0.101):
Not shown: 1674 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
957/tcp  open  unknown
3306/tcp open  mysql
8888/tcp open  sun-answerbook
MAC Address: 08:00:27:D9:8E:D7 (Cadmus Computer Systems)
 
Nmap finished: 255 IP addresses (1 host up) scanned in 5.313 seconds
You have new mail in /var/spool/mail/root

–excludefile 排除文件中的列表

这和--exclude 选项的功能一样,只是所排除的目标是用以 换行符,空格,或者制表符分隔,而不是在命令行上输入的。

端口扫描状态:

open(开放的)

应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描 的主要目标。安全意识强的人们知道每个开放的端口 都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。 而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。 非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。

closed(关闭的)

关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。 它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行up 也对部分操作系统探测有所帮助。 因为关闭的关口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。 系统管理员可能会考虑用防火墙封锁这样的端口。 那样他们就会被显示为被过滤的状态,下面讨论。

filtered(被过滤的)

由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则 或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供 任何信息。有时候它们响应ICMP错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧, 不做任何响应。 这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的。 这使得扫描速度明显变慢。

unfiltered(未被过滤的)

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。

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

当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。 UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。

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

该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。

主机发现:

-sL:列表扫描 - 简单列出要扫描的目标

-sP:Ping 扫描 - 只需确定主机是否在线

该选项告诉Nmap仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。 没有进一步的测试 (如端口扫描或者操作系统探测)。 这比列表扫描更积极,常常用于 和列表扫描相同的目的。它可以得到些许目标网络的信息而不被特别注意到。 对于攻击者来说,了解多少主机正在运行比列表扫描提供的一列IP和主机名往往更有价值。

系统管理员往往也很喜欢这个选项。 它可以很方便地得出 网络上有多少机器正在运行或者监视服务器是否正常运行。常常有人称它为 地毯式ping,它比ping广播地址更可靠,因为许多主机对广播请求不响应。

-sP选项在默认情况下, 发送一个ICMP回声请求和一个TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文 (用connect()系统调用)到目标机的80端口。 当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR), ,除非使用了--send-ip选项。

-sP选项可以和除-P0)之外的任何发现探测类型-P* 选项结合使用以达到更大的灵活性。 一旦使用了任何探测类型和端口选项,默认的探测(ACK和回应请求)就被覆盖了。 当防守严密的防火墙位于运行Nmap的源主机和目标网络之间时, 推荐使用那些高级选项。否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。

nmap -sP 192.168.31.*
nmap -sP 192.168.31.0/24

D:\attack\nmap-7.92>nmap -sP 192.168.31.0/24

Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 10:22 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0086s latency).
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)
Nmap scan report for iPhone (192.168.31.93)
Host is up (0.035s latency).
MAC Address: 22:A5:45:5F:9A:3D (Unknown)
Nmap scan report for 192.168.31.166
Host is up (0.17s latency).
MAC Address: BC:E2:65:39:84:29 (Huawei Technologies)
Nmap scan report for 192.168.31.222
Host is up (0.21s latency).
MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)
Nmap scan report for lantekiiPad (192.168.31.224)
Host is up (0.078s latency).
MAC Address: C2:EB:D6:8D:4D:FE (Unknown)
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up.
Nmap done: 256 IP addresses (6 hosts up) scanned in 3.75 seconds

-P0:无Ping扫描 - 常用于防火墙禁止ping的情况下

该选项完全跳过Nmap发现阶段。 通常Nmap在进行高强度的扫描时用它确定正在运行的机器。 默认情况下,Nmap只对正在运行的主机进行高强度的探测如 端口扫描,版本探测,或者操作系统探测。用-P0禁止 主机发现会使Nmap对每一个指定的目标IP地址 进行所要求的扫描。所以如果在命令行指定一个B类目标地址空间(/16), 所有 65,536 个IP地址都会被扫描。 -P0的第二个字符是数字0而不是字母O。 和列表扫描一样,跳过正常的主机发现,但不是打印一个目标列表, 而是继续执行所要求的功能,就好像每个IP都是活动的。

  • 可以手动设置扫描的协议

  • 用TCP,UDP,IGMP协议向目标主机发包判断是否存活;

  • TCP:对应协议编号为6。
    ICMP:对应协议编号为1
    IGMP:对应协议编号为2
    UDP:对应协议编号为17
    
D:\attack\nmap-7.92>nmap -p0 6,17,2 192.168.31.1/24

Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 10:28 中国标准时间
Failed to resolve "6,17,2".
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0089s latency).

PORT  STATE  SERVICE
0/tcp closed unknown
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap scan report for iPhone (192.168.31.93)
Host is up (0.036s latency).

PORT  STATE  SERVICE
0/tcp closed unknown
MAC Address: 22:A5:45:5F:9A:3D (Unknown)

Nmap scan report for 192.168.31.166
Host is up (0.46s latency).

PORT  STATE  SERVICE
0/tcp closed unknown
MAC Address: BC:E2:65:39:84:29 (Huawei Technologies)

Nmap scan report for 192.168.31.222
Host is up (0.20s latency).

PORT  STATE  SERVICE
0/tcp closed unknown
MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)

Nmap scan report for lantekiiPad (192.168.31.224)
Host is up (0.040s latency).

PORT  STATE  SERVICE
0/tcp closed unknown
MAC Address: C2:EB:D6:8D:4D:FE (Unknown)

Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00s latency).

PORT  STATE  SERVICE
0/tcp closed unknown

Nmap done: 256 IP addresses (6 hosts up) scanned in 5.06 seconds

D:\attack\nmap-7.92>

-Pn 扫描之前不需要⽤ping命令

  • 有些防⽕墙禁⽌ping命令扫描。可以使⽤此选项进⾏扫描

-PS:TCP SYN扫描

该选项发送一个设置了SYN(请求建立连接)标志位的空TCP报文。 默认目的端口为80 (可以通过改变nmap.h) 文件中的DEFAULT-TCP-PROBE-PORT值进行配置,但不同的端口也可以作为选项指定。 甚至可以指定一个以逗号分隔的端口列表(如 -PS22,23,25,80,113,1050,35000), 在这种情况下,每个端口会被并发地扫描。

SYN标志位告诉对方您正试图建立一个连接。 通常目标端口是关闭的,一个RST (复位) 包会发回来。 如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应 一个SYN/ACK TCP报文。然后运行Nmap的机器则会扼杀这个正在建立的连接, 发送一个RST而非ACK报文,否则,一个完全的连接将会建立。 RST报文是运行Nmap的机器而不是Nmap本身响应的,因为它对收到 的SYN/ACK感到很意外。

Nmap并不关心端口开放还是关闭。 无论RST还是SYN/ACK响应都告诉Nmap该主机正在运行。

在UNIX机器上,通常只有特权用户 root 能否发送和接收 原始的TCP报文。因此作为一个变通的方法,对于非特权用户, Nmap会为每个目标主机进行系统调用connect(),它也会发送一个SYN 报文来尝试建立连接。如果connect()迅速返回成功或者一个ECONNREFUSED 失败,下面的TCP堆栈一定已经收到了一个SYN/ACK或者RST,该主机将被 标志位为在运行。 如果连接超时了,该主机就标志位为down掉了。这种方法也用于IPv6 连接,因为Nmap目前还不支持原始的IPv6报文。

  • 通常情况下Nmap 默认ping扫描是使用TCP ACK和ICMP Echo请求对目标进行扫描.目标主机的防火墙阻止这些请求时,可以用TCP SYN Ping扫描进行对目标主机存活的判断
D:\attack\nmap-7.92>nmap.exe -PS 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 11:10 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00099s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 1.08 seconds
  • 指定端口范围进行的扫描

    D:\attack\nmap-7.92>nmap.exe -PS -p 100-200 192.168.31.213
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 11:20 中国标准时间
    Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
    Host is up (0.00022s latency).
    Not shown: 98 closed tcp ports (reset)
    PORT    STATE    SERVICE
    135/tcp open     msrpc
    137/tcp filtered netbios-ns
    139/tcp open     netbios-ssn
    
    Nmap done: 1 IP address (1 host up) scanned in 2.15 seconds
    
    D:\attack\nmap-7.92>
    

-PA: TCP ACK Ping

TCP ACK ping和刚才讨论的SYN ping相当类似。 也许您已经猜到了,区别就是设置TCP的ACK标志位而不是SYN标志位。 ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。 所以远程主机应该总是回应一个RST报文, 因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话。

-PA选项使用和SYN探测相同的默认端口(80),也可以 用相同的格式指定目标端口列表。如果非特权用户尝试该功能, 或者指定的是IPv6目标,前面说过的connect()方法将被使用。 这个方法并不完美,因为它实际上发送的是SYN报文,而不是ACK报文。

提供SYN和ACK两种ping探测的原因是使通过防火墙的机会尽可能大。 许多管理员会配置他们的路由器或者其它简单的防火墙来封锁SYN报文,除非 连接目标是那些公开的服务器像公司网站或者邮件服务器。 这可以阻止其它进入组织的连接,同时也允许用户访问互联网。 这种无状态的方法几乎不占用防火墙/路由器的资源,因而被硬件和软件过滤器 广泛支持。Linux Netfilter/iptables 防火墙软件提供方便的 --syn选项来实现这种无状态的方法。 当这样的无状态防火墙规则存在时,发送到关闭目标端口的SYN ping探测 (-PS) 很可能被封锁。这种情况下,ACK探测格外有闪光点,因为它正好利用了 这样的规则。

另外一种常用的防火墙用有状态的规则来封锁非预期的报文。 这一特性已开始只存在于高端防火墙,但是这些年类它越来越普遍了。 Linux Netfilter/iptables 通过 --state选项支持这一特性,它根据连接状态把报文 进行分类。

SYN探测更有可能用于这样的系统,由于没头没脑的ACK报文 通常会被识别成伪造的而丢弃。解决这个两难的方法是通过即指定 -PS又指定-PA来即发送SYN又发送ACK。

D:\attack\nmap-7.92>nmap.exe -PA 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 11:22 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00038s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 1.06 seconds
  • 指定端口范围进行的扫描

    D:\attack\nmap-7.92>nmap.exe -PA -p 100-200 192.168.31.213
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 11:22 中国标准时间
    Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
    Host is up (0.00038s latency).
    Not shown: 98 closed tcp ports (reset)
    PORT    STATE    SERVICE
    135/tcp open     msrpc
    137/tcp filtered netbios-ns
    139/tcp open     netbios-ssn
    
    Nmap done: 1 IP address (1 host up) scanned in 2.27 seconds
    
-PS -PA联用
D:\attack\nmap-7.92>nmap.exe -PS -PA 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 11:24 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00099s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 1.00 seconds

-PU:UDP Ping

还有一个主机发现的选项是UDP ping,它发送一个空的(除非指定了--data-length )UDP报文到给定的端口。端口列表的格式和前面讨论过的-PS-PA选项还是一样。 如果不指定端口,默认是31338。该默认值可以通过在编译时改变nmap.h文件中的 DEFAULT-UDP-PROBE-PORT值进行配置。默认使用这样一个奇怪的端口是因为对开放端口 进行这种扫描一般都不受欢迎。

如果目标机器的端口是关闭的,UDP探测应该马上得到一个ICMP端口无法到达的回应报文。 这对于Nmap意味着该机器正在运行。 许多其它类型的ICMP错误,像主机/网络无法到达或者TTL超时则表示down掉的或者不可到达的主机。

没有回应也被这样解释。如果到达一个开放的端口,大部分服务仅仅忽略这个 空报文而不做任何回应。这就是为什么默认探测端口是31338这样一个 极不可能被使用的端口。少数服务如chargen会响应一个空的UDP报文, 从而向Nmap表明该机器正在运行。

该扫描类型的主要优势是它可以穿越只过滤TCP的防火墙和过滤器。

例如。我曾经有过一个Linksys BEFW11S4无线宽带路由器。默认情况下, 该设备对外的网卡过滤所有TCP端口,但UDP探测仍然会引发一个端口不可到达 的消息,从而暴露了它自己。

D:\attack\nmap-7.92>nmap.exe -PU 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 15:52 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00020s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 1.06 seconds

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

除了前面讨论的这些不常见的TCP和UDP主机发现类型, Nmap也能发送世人皆知的ping 程序所发送的报文。Nmap发送一个ICMP type 8 (回声请求)报文到目标IP地址, 期待从运行的主机得到一个type 0 (回声响应)报文。 对于网络探索者而言,不幸的是,许多主机和 防火墙现在封锁这些报文,而不是按期望的那样响应, 参见RFC 1122。因此,仅仅ICMP扫描对于互联网上的目标通常是不够的。 但对于系统管理员监视一个内部网络,它们可能是实际有效的途径。 使用-PE选项打开该回声请求功能。

虽然回声请求是标准的ICMP ping查询, Nmap并不止于此。ICMP标准 (RFC 792)还规范了时间戳请求,信息请求 request,和地址掩码请求,它们的代码分别是13,15和17。 虽然这些查询的表面目的是获取信息如地址掩码和当前时间, 它们也可以很容易地用于主机发现。 很简单,回应的系统就是在运行的系统。Nmap目前没有实现信息请求报文, 因为它们还没有被广泛支持。RFC 1122 坚持 “主机不应该实现这些消息”。 时间戳和地址掩码查询可以分别用-PP-PM选项发送。 时间戳响应(ICMP代码14)或者地址掩码响应(代码18)表示主机在运行。 当管理员特别封锁了回声请求报文而忘了其它ICMP查询可能用于 相同目的时,这两个查询可能很有价值。

使用ICMP Echo扫描方式
例如:nmap -PE 127.0.0.1
使用ICMP时间戳Ping扫描
例如:nmap -PP 127.0.0.1
使用ICMP地址掩码Ping扫描
例如:nmap -PM 127.0.0.1

-PR:ARP Ping

最常见的Nmap使用场景之一是扫描一个以太局域网。 在大部分局域网上,特别是那些使用基于 RFC1918私有地址范围的网络,在一个给定的时间绝大部分 IP地址都是不使用的。 当Nmap试图发送一个原始IP报文如ICMP回声请求时, 操作系统必须确定对应于目标IP的硬件 地址(ARP),这样它才能把以太帧送往正确的地址。 这一般比较慢而且会有些问题,因为操作系统设计者认为一般不会在短时间内 对没有运行的机器作几百万次的ARP请求。

当进行ARP扫描时,Nmap用它优化的算法管理ARP请求。 当它收到响应时, Nmap甚至不需要担心基于IP的ping报文,既然它已经知道该主机正在运行了。 这使得ARP扫描比基于IP的扫描更快更可靠。 所以默认情况下,如果Nmap发现目标主机就在它所在的局域网上,它会进行ARP扫描。 即使指定了不同的ping类型(如 -PI或者 -PS) ,Nmap也会对任何相同局域网上的目标机使用ARP。 如果您真的不想要ARP扫描,指定 --send-ip

  • 通常在扫描局域网时使用,内网使用ARP Ping扫描方式是最有效的
  • nmap 默认情况下扫描局域网内的主机会使用ARP扫描,即使指定了-PS等
  • nmap -PR 192.168.21.1-200
D:\attack\nmap-7.92>nmap.exe -PR 192.168.31.0/24

Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 16:18 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0077s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap scan report for Honor_8X-3e1f4edb9c81b727 (192.168.31.166)
Host is up (0.065s latency).
All 1000 scanned ports on Honor_8X-3e1f4edb9c81b727 (192.168.31.166) are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)
MAC Address: BC:E2:65:39:84:29 (Huawei Technologies)

Nmap scan report for 192.168.31.222
Host is up (0.028s latency).
Not shown: 999 closed tcp ports (reset)
PORT   STATE SERVICE
53/tcp open  domain
MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)

Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.000052s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 256 IP addresses (4 hosts up) scanned in 12.60 seconds

-n:不用域名解析

该选项很少使用,如果是对–台有域名绑定的服务器通常不会使用该选项;
如果是单纯扫描一段IP, 使用该选项可以大幅度减少目标主机的相应时间,从而更快地得到结果。

D:\attack\nmap-7.92>nmap.exe -PS -n 192.168.31.0/24
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 16:22 中国标准时间
Nmap scan report for 192.168.31.1
Host is up (0.013s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap scan report for 192.168.31.166
Host is up (0.12s latency).
All 1000 scanned ports on 192.168.31.166 are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)
MAC Address: BC:E2:65:39:84:29 (Huawei Technologies)

Nmap scan report for 192.168.31.222
Host is up (0.042s latency).
Not shown: 999 closed tcp ports (reset)
PORT   STATE SERVICE
53/tcp open  domain
MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)

Nmap scan report for 192.168.31.213
Host is up (0.00045s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

-R:为所有目标解析域名

该选项多用于绑定域名的服务器主机上,该选项的使用便于我们了解目标的详细信息。

例如,在扫描一个C段的时候,我们更加清楚在哪一段IP上存在哪些网站。

D:\attack\nmap-7.92>nmap.exe -PS -R 192.168.31.0/24

扫描技术:

没有经验的用户和刚入门者总是用默认的SYN扫描解决每个问题。

虽然Nmap努力产生正确的结果,但请记住所有结果都是基于目标机器(或者它们前面的防火墙)返回的报文的

更普遍的是非RFC兼容的主机以不正确的方式响应Nmap探测。FIN,Null和Xmas扫描 特别容易遇到这个问题。

-sS (TCP SYN扫描)

SYN扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的。 它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个 端口。 SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP连接。 它也不像Fin/Null/Xmas,Maimon和Idle扫描依赖于特定平台,而可以应对任何兼容的 TCP协议栈。 它还可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的) 状态

它常常被称为半开放扫描, 因为它不打开一个完全的TCP连接。它发送一个SYN报文, 就像您真的要打开一个连接,然后等待响应。 SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者。如果数次重发后仍没响应, 该端口就被标记为被过滤。如果收到ICMP不可到达错误 (类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.222
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 18:26 中国标准时间
Nmap scan report for MiAiSoundbox-LX05A (192.168.31.222)
Host is up (0.010s latency).
Not shown: 999 closed tcp ports (reset)
PORT   STATE SERVICE
53/tcp open  domain
MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 2.20 seconds

-sT (TCP扫描,建立完整连接)

当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。 当用户没有权限发送原始报文或者扫描IPv6网络时,就是这种情况。 Instead of writing raw packets as most other scan types do,Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。 这是和Web浏览器,P2P客户端以及大多数其它网络应用程序用以建立连接一样的 高层系统调用。它是叫做Berkeley Sockets API编程接口的一部分。Nmap用 该API获得每个连接尝试的状态信息,而不是读取响应的原始报文。

**当SYN扫描可用时,它通常是更好的选择。**因为Nmap对高层的 connect()调用比对原始报文控制更少, 所以前者效率较低。 该系统调用完全连接到开放的目标端口而不是像SYN扫描进行 半开放的复位。**这不仅花更长时间,需要更多报文得到同样信息,目标机也更可能 记录下连接。**IDS(入侵检测系统)可以捕获两者,但大部分机器没有这样的警报系统。 当Nmap连接,然后不发送数据又关闭连接, 许多普通UNIX系统上的服务会在syslog留下记录,有时候是一条加密的错误消息。 此时,有些真正可怜的服务会崩溃,虽然这不常发生。如果管理员在日志里看到来自同一系统的 一堆连接尝试,她应该知道她的系统被扫描了。

-sU (UDP扫描)

虽然互联网上很多流行的服务运行在TCP 协议上,UDP服务也不少。

DNS,SNMP,和DHCP (注册的端口是53,161/162,和67/68)是最常见的三个。 因为UDP扫描一般较慢,比TCP更困难,一些安全审核人员忽略这些端口。 这是一个错误,因为可探测的UDP服务相当普遍,攻击者当然不会忽略整个协议。 所幸,Nmap可以帮助记录并报告UDP端口。

UDP扫描用-sU选项激活。它可以和TCP扫描如 SYN扫描 (-sS)结合使用来同时检查两种协议。

UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。 偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。 如果几次重试后还没有响应,该端口就被认为是 open|filtered(开放|被过滤的)。 这意味着该端口可能是开放的,也可能包过滤器正在封锁通信。 可以用版本扫描(-sV)帮助区分真正的开放端口和被过滤的端口。

UDP扫描的巨大挑战是怎样使它更快速。 开放的和被过滤的端口很少响应,让Nmap超时然后再探测,以防探测帧或者 响应丢失。关闭的端口常常是更大的问题。 它们一般发回一个ICMP端口无法到达错误。但是不像关闭的TCP端口响应SYN或者Connect 扫描所发送的RST报文,许多主机在默认情况下限制ICMP端口不可到达消息。 Linux和Solaris对此特别严格。例如, Linux 2.4.20内核限制一秒钟只发送一条目标不可到达消息 (见net/ipv4/icmp。c)。

Nmap探测速率限制并相应地减慢来避免用那些目标机会丢弃的无用报文来阻塞 网络。不幸的是,Linux式的一秒钟一个报文的限制使65,536个端口的扫描要花 18小时以上。加速UDP扫描的方法包括并发扫描更多的主机,先只对主要端口进行快速 扫描,从防火墙后面扫描,使用--host-timeout跳过慢速的 主机。

D:\attack\nmap-7.92>nmap.exe -sU 192.168.31.1/24
-sS -sU联用
D:\attack\nmap-7.92>nmap.exe -sS -sU 192.168.31.1/24
-sS --host-timeout跳过慢速的主机
D:\attack\nmap-7.92>nmap.exe -sU --host-timeout 192.168.31.1/24

-sN; -sF; -sX (TCP Null,FIN,and Xmas扫描)

这三种扫描类型 (甚至用下一节描述的 --scanflags 选项的更多类型) 在TCP RFC 中发掘了一个微妙的方法来区分open(开放的)和 closed(关闭的)端口。第65页说“如果 [目标]端口状态是关闭的… 进入的不含RST的报文导致一个RST响应。” 接下来的一页 讨论不设置SYN,RST,或者ACK位的报文发送到开放端口: “理论上,这不应该发生,如果您确实收到了,丢弃该报文,返回。 ”

如果扫描系统遵循该RFC,当端口关闭时,任何不包含SYN,RST,或者ACK位的报文会导致 一个RST返回,而当端口开放时,应该没有任何响应。只要不包含SYN,RST,或者ACK, 任何其它三种(FIN,PSH,and URG)的组合都行。Nmap有三种扫描类型利用这一点:

  • Null扫描 (-sN)

    不设置任何标志位(tcp标志头是0)

  • FIN扫描 (-sF)

    只设置TCP FIN标志位。

  • Xmas扫描 (-sX)

    设置FIN,PSH,和URG标志位,就像点亮圣诞树上所有的灯一样。

除了探测报文的标志位不同,这三种扫描在行为上完全一致。 如果收到一个RST报文,该端口被认为是 closed(关闭的),而没有响应则意味着 端口是open|filtered(开放或者被过滤的)。 如果收到ICMP不可到达错误(类型 3,代号 1,2,3,9,10,或者13),该端口就被标记为 被过滤的

这些扫描的关键优势是它们能躲过一些无状态防火墙和报文过滤路由器。

另一个优势是这些扫描类型甚至比SYN扫描还要隐秘一些但是别依赖它 – 多数 现代的IDS产品可以发现它们

一个很大的不足是并非所有系统都严格遵循RFC 793。 许多系统不管端口开放还是关闭,都响应RST。 这导致所有端口都标记为closed(关闭的)。

这样的操作系统主要有Microsoft Windows,许多Cisco设备,BSDI,以及IBM OS/400。 但是这种扫描对多数UNIX系统都能工作。这些扫描的另一个不足是 它们不能辨别open(开放的)端口和一些特定的 filtered(被过滤的)端口,从而返回 open|filtered(开放或者被过滤的)

D:\attack\nmap-7.92>nmap.exe -sN -sF -sX  192.168.31.222
You specified more than one type of TCP scan.  Please choose only one of -sA, -b, -sT, -sF, -sI, -sM, -sN, -sS, -sW, and -sX
QUITTING!
请仅选择 -sA、-b、-sT、-sF、-sI、-sM、-sN、-sS、-sW 和 -sX 之一;
  • -sS SYN 扫描结果(请求建立连接)

    D:\attack\nmap-7.92>nmap.exe -sS  192.168.31.222
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 18:47 中国标准时间
    Nmap scan report for MiAiSoundbox-LX05A (192.168.31.222)
    Host is up (0.0087s latency).
    Not shown: 999 closed tcp ports (reset)
    PORT   STATE SERVICE
    53/tcp open  domain
    MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)
    
    Nmap done: 1 IP address (1 host up) scanned in 42.19 seconds
    
  • -sN Null 扫描结果

    D:\attack\nmap-7.92>nmap.exe -sN  192.168.31.222
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 18:46 中国标准时间
    Nmap scan report for MiAiSoundbox-LX05A (192.168.31.222)
    Host is up (0.0070s latency).
    Not shown: 999 closed tcp ports (reset)
    PORT   STATE         SERVICE
    53/tcp open|filtered domain
    MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)
    
    Nmap done: 1 IP address (1 host up) scanned in 3.04 seconds
    
    
  • -sF FIN 请求断开连接

    D:\attack\nmap-7.92>nmap.exe -sF  192.168.31.222
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 18:46 中国标准时间
    Nmap scan report for MiAiSoundbox-LX05A (192.168.31.222)
    Host is up (0.0081s latency).
    Not shown: 999 closed tcp ports (reset)
    PORT   STATE         SERVICE
    53/tcp open|filtered domain
    MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)
    
    Nmap done: 1 IP address (1 host up) scanned in 3.02 seconds
    
  • -sX and Xmas扫描

    D:\attack\nmap-7.92>nmap.exe -sX  192.168.31.222
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 18:48 中国标准时间
    Nmap scan report for MiAiSoundbox-LX05A (192.168.31.222)
    Host is up (0.025s latency).
    Not shown: 999 closed tcp ports (reset)
    PORT   STATE         SERVICE
    53/tcp open|filtered domain
    MAC Address: 28:D1:27:6D:FD:09 (Beijing Xiaomi Mobile Software)
    
    Nmap done: 1 IP address (1 host up) scanned in 4.16 seconds
    

-sM (TCP Maimon扫描)

Maimon扫描是用它的发现者Uriel Maimon命名的。他在 Phrack Magazine issue #49 (November 1996)中描述了这一技术。 Nmap在两期后加入了这一技术。 这项技术和Null,FIN,以及Xmas扫描完全一样,除了探测报文是FIN/ACK。 根据RFC 793 (TCP),无论端口开放或者关闭,都应该对这样的探测响应RST报文。 然而,Uriel注意到如果端口开放,许多基于BSD的系统只是丢弃该探测报文。

D:\attack\nmap-7.92>nmap.exe -sM 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:12 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00022s latency).
All 1000 scanned ports on DESKTOP-1K49IFO (192.168.31.213) are in ignored states.
Not shown: 1000 closed tcp ports (reset)

Nmap done: 1 IP address (1 host up) scanned in 0.88 seconds

-sA (TCP ACK扫描)

这种扫描与目前为止讨论的其它扫描的不同之处在于 它不能确定open(开放的)或者 open|filtered(开放或者过滤的))端口

它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。

ACK扫描探测报文只设置ACK标志位(除非您使用 --scanflags)。当扫描未被过滤的系统时, open(开放的)和closed(关闭的) 端口 都会返回RST报文。Nmap把它们标记为 unfiltered(未被过滤的),意思是 ACK报文不能到达,但至于它们是open(开放的)或者 closed(关闭的) 无法确定。不响应的端口 或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10, 或者13)的端口,标记为 filtered(被过滤的)。

D:\attack\nmap-7.92>nmap.exe -sA  192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:05 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.0010s latency).
All 1000 scanned ports on DESKTOP-1K49IFO (192.168.31.213) are in ignored states.
Not shown: 1000 unfiltered tcp ports (reset)

Nmap done: 1 IP address (1 host up) scanned in 0.94 seconds


D:\attack\nmap-7.92>nmap.exe -sA 192.168.31.213
启动 Nmap 7.92 ( https://nmap )2021-11-23 19:05 中国标准时间
DESKTOP-1K49IFO 的 Nmap 扫描报告 (192.168.31.213)
主机已启动(0.0010 秒延迟)。
DESKTOP-1K49IFO (192.168.31.213) 上的所有 1000 个扫描端口都处于忽略状态。
未显示:1000 个未过滤的 tcp 端口(重置)

Nmap 完成:1 个 IP 地址(1 个主机启动)在 0.94 秒内扫描 

-sW (TCP窗口扫描)

  • 可以理解为滑动窗口协议

除了利用特定系统的实现细节来区分开放端口和关闭端口,当收到RST时不总是打印unfiltered窗口扫描和ACK扫描完全一样。 它通过检查返回的RST报文的TCP窗口域做到这一点。 在某些系统上,开放端口用正数表示窗口大小(甚至对于RST报文) 而关闭端口的窗口大小为0。因此,当收到RST时,窗口扫描不总是把端口标记为 unfiltered, 而是根据TCP窗口值是正数还是0,分别把端口标记为open或者 closed

该扫描依赖于互联网上少数系统的实现细节, 因此您不能永远相信它。不支持它的系统会通常返回所有端口closed。 当然,一台机器没有开放端口也是有可能的。 如果大部分被扫描的端口是 closed,而一些常见的端口 (如 22, 25,53) 是 filtered,该系统就非常可疑了。 偶尔地,系统甚至会显示恰恰相反的行为。 如果您的扫描显示1000个开放的端口和3个关闭的或者被过滤的端口, 那么那3个很可能也是开放的端口。

D:\attack\nmap-7.92>nmap.exe -sW  192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:07 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.000085s latency).
All 1000 scanned ports on DESKTOP-1K49IFO (192.168.31.213) are in ignored states.
Not shown: 1000 closed tcp ports (reset)

Nmap done: 1 IP address (1 host up) scanned in 0.88 seconds

–scanflags (定制的TCP扫描)

真正的Nmap高级用户不需要被这些现成的扫描类型束缚。 --scanflags选项允许您通过指定任意TCP标志位来设计您自己的扫描。 让您的创造力流动,躲开那些仅靠本手册添加规则的入侵检测系统!

--scanflags选项可以是一个数字标记值如9 (PSH和FIN), 但使用字符名更容易些。 只要是URGACKPSHRSTSYN,and FIN的任何组合就行。例如,--scanflags URGACKPSHRSTSYNFIN设置了所有标志位,但是这对扫描没有太大用处。 标志位的顺序不重要。

除了设置需要的标志位,您也可以设置 TCP扫描类型(如-sA或者-sF)。 那个基本类型告诉Nmap怎样解释响应。例如, SYN扫描认为没有响应意味着 filtered端口,而FIN扫描则认为是 open|filtered。 除了使用您指定的TCP标记位,Nmap会和基本扫描类型一样工作。 如果您不指定基本类型,就使用SYN扫描。

例如:定制一个包含ACK扫描和SYN扫描的安装包

命令:

D:\attack\nmap-7.92>nmap.exe --scanflags ACKSYN 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:17 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00016s latency).
All 1000 scanned ports on DESKTOP-1K49IFO (192.168.31.213) are in ignored states.
Not shown: 1000 closed tcp ports (reset)

Nmap done: 1 IP address (1 host up) scanned in 0.99 seconds

如果指定数据包为:SYN,就变成-sS扫描了

D:\attack\nmap-7.92>nmap.exe --scanflags SYN 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:17 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00058s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 0.98 seconds

-sI (空闲扫描)

这种高级的扫描方法允许对目标进行真正的TCP端口盲扫描 (意味着没有报文从您的真实IP地址发送到目标)。

相反,side-channel攻击 利用zombie主机上已知的IP分段ID序列生成算法来窥探目标上开放端口的信息。 IDS系统将显示扫描来自您指定的zombie机(必须运行并且符合一定的标准)。 这种奇妙的扫描类型太复杂了,不能在此完全描述,所以我写一篇非正式的论文, 发布在https://nmap/book/idlescan.html。

除了极端隐蔽(由于它不从真实IP地址发送任何报文), 该扫描类型可以建立机器间的基于IP的信任关系。 端口列表*从zombie 主机的角度。*显示开放的端口。 因此您可以尝试用您认为(通过路由器/包过滤规则)可能被信任的 zombies扫描目标。

如果您由于IPID改变希望探测zombie上的特定端口, 您可以在zombie 主机后加上一个冒号和端口号。 否则Nmap会使用默认端口(80)。

  • https://www.2cto/Article/201505/396631.html

-sO (IP协议扫描)

IP 协议扫描可以让您确定目标机支持哪些IP协议 (TCP,ICMP,IGMP,等等)。从技术上说,这不是端口扫描 ,既然它遍历的是IP协议号而不是TCP或者UDP端口号。 但是它仍使用 -p选项选择要扫描的协议号, 用正常的端口表格式报告结果,甚至用和真正的端口扫描一样 的扫描引擎。因此它和端口扫描非常接近,也被放在这里讨论。

除了本身很有用,协议扫描还显示了开源软件的力量。 尽管基本想法非常简单,我过去从没想过增加这一功能也没收到任何对它的请求。 在2000年夏天,Gerhard Rieger孕育了这个想法,写了一个很棒的补丁程序,发送到nmap-hackers邮件列表。 我把那个补丁加入了Nmap,第二天发布了新版本。 几乎没有商业软件会有用户有足够的热情设计并贡献他们的改进。

协议扫描以和UDP扫描类似的方式工作。它不是在UDP报文的端口域上循环, 而是在IP协议域的8位上循环,发送IP报文头。 报文头通常是空的,不包含数据,甚至不包含所申明的协议的正确报文头 TCP,UDP,和ICMP是三个例外。它们三个会使用正常的协议头,因为否则某些系 统拒绝发送,而且Nmap有函数创建它们。协议扫描不是注意ICMP端口不可到达消息, 而是ICMP 协议不可到达消息。如果Nmap从目标主机收到 任何协议的任何响应,Nmap就把那个协议标记为open。 ICMP协议不可到达 错误(类型 3,代号 2) 导致协议被标记为 closed。其它ICMP不可到达协议(类型 3,代号 1,3,9,10,或者13) 导致协议被标记为 filtered (虽然同时他们证明ICMP是 open )。如果重试之后仍没有收到响应, 该协议就被标记为open|filtered

D:\attack\nmap-7.92>nmap.exe -sO 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:41 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00042s latency).
Not shown: 249 closed n/a protocols (proto-unreach)
PROTOCOL STATE         SERVICE
1        open          icmp
2        open|filtered igmp
6        open          tcp
17       open          udp
50       open|filtered esp
51       open|filtered ah
58       open|filtered ipv6-icmp

-b (FTP弹跳扫描)

FTP协议的一个有趣特征(RFC 959) 是支持所谓代理ftp连接。它允许用户连接到一台FTP服务器,然后要求文件送到一台第三方服务器。 这个特性在很多层次上被滥用,所以许多服务器已经停止支持它了。其中一种就是导致FTP服务器对其它主机端口扫描。 只要请求FTP服务器轮流发送一个文件到目标主机上的所感兴趣的端口。 错误消息会描述端口是开放还是关闭的。

这是绕过防火墙的好方法,因为FTP服务器常常被置于可以访问比Web主机更多其它内部主机的位置。 Nmap用-b选项支持ftp弹跳扫描。参数格式是 :@: 是某个脆弱的FTP服务器的名字或者IP地址。 您也许可以省略:, 如果服务器上开放了匿名用户(user:anonymous password:-wwwuser@)。 端口号(以及前面的冒号) 也可以省略,如果使用默认的FTP端口(21)。

当Nmap1997年发布时,这个弱点被广泛利用,但现在大部分已经被fix了。 脆弱的服务器仍然存在,所以如果其它都失败了,这也值得一试。 如果您的目标是绕过防火墙,扫描目标网络上的开放的21端口(或者 甚至任何ftp服务,如果您用版本探测扫描所有端口), 然后对每个尝试弹跳扫描。Nmap会告诉您该主机脆弱与否。 如果您只是试着玩Nmap,您不必(事实上,不应该)限制您自己。 在您随机地在互联网上寻找脆弱的FTP服务器时,考虑一下系统管理员不太喜欢您这样滥用他们的服务器。

-p (只扫描指定的端口)

该选项指明您想扫描的端口,覆盖默认值。 单个端口和用连字符表示的端口范围(如 1-1023)都可以。 范围的开始以及/或者结束值可以被省略, 分别导致Nmap使用1和65535。所以您可以指定 -p-从端口1扫描到65535。 如果您特别指定,也可以扫描端口0。 对于IP协议扫描(-sO),该选项指定您希望扫描的协议号 (0-255)。

当既扫描TCP端口又扫描UDP端口时,您可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效您直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。注意,要既扫描 UDP又扫描TCP,您必须指定 -sU ,以及至少一个TCP扫描类型(如 -sS-sF,或者 -sT)。如果没有给定协议限定符, 端口号会被加到所有协议列表。

D:\attack\nmap-7.92>nmap.exe -p 100-200 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:51 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.0010s latency).
Not shown: 98 closed tcp ports (reset)
PORT    STATE    SERVICE
135/tcp open     msrpc
137/tcp filtered netbios-ns
139/tcp open     netbios-ssn

Nmap done: 1 IP address (1 host up) scanned in 2.12 seconds

-F 扫描100个最有可能开放的端口

在nmap的nmap-services 文件中(对于-sO,是协议文件)指定您想要扫描的端口。 这比扫描所有65535个端口快得多。 因为该列表包含如此多的TCP端口(1200多),这和默认的TCP扫描 scan (大约1600个端口)速度差别不是很大。如果您用--datadir选项指定您自己的 小小的nmap-services文件 ,差别会很惊人。

D:\attack\nmap-7.92>nmap.exe -F 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:51 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00097s latency).
Not shown: 96 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 0.86 seconds

-r (不要按随机顺序扫描端口)

默认情况下,Nmap按随机顺序扫描端口 (除了出于效率的考虑,常用的端口前移)。这种随机化通常都是受欢迎的, 但您也可以指定-r来顺序端口扫描。

D:\attack\nmap-7.92>nmap.exe -r 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 19:54 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00067s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 0.98 seconds

D:\attack\nmap-7.92>

服务/版本检测:

-sV (版本探测)

打开版本探测。 您也可以用-A同时打开操作系统探测和版本探测。

D:\attack\nmap-7.92>nmap.exe -sT -sV 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 20:46 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00076s latency).
Not shown: 994 filtered tcp ports (no-response)
PORT    STATE SERVICE         VERSION
135/tcp open  msrpc           Microsoft Windows RPC
139/tcp open  netbios-ssn     Microsoft Windows netbios-ssn
443/tcp open  ssl/https       VMware Workstation SOAP API 16.0.0
445/tcp open  microsoft-ds?
902/tcp open  ssl/vmware-auth VMware Authentication Daemon 1.10 (Uses VNC, SOAP)
912/tcp open  vmware-auth     VMware Authentication Daemon 1.0 (Uses VNC, SOAP)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows, cpe:/o:vmware:Workstation:16.0.0

Service detection performed. Please report any incorrect results at https://nmap/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 185.32 seconds

D:\attack\nmap-7.92>

–allports (不为版本探测排除任何端口)

默认情况下,Nmap版本探测会跳过9100 TCP端口,因为一些打印机简单地打印送到该端口的 任何数据,这回导致数十页HTTP get请求,二进制 SSL会话请求等等被打印出来。这一行为可以通过修改或删除nmap-service-probes 中的Exclude指示符改变, 您也可以不理会任何Exclude指示符,指定--allports扫描所有端口

–version-intensity (设置 版本扫描强度)

当进行版本扫描(-sV)时,nmap发送一系列探测报文 ,每个报文都被赋予一个1到9之间的值。 被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文 一般没什么用。强度水平说明了应该使用哪些探测报文。数值越高, 服务越有可能被正确识别。 然而,高强度扫描花更多时间。强度值必须在0和9之间。 默认是7。当探测报文通过nmap-service-probes ports指示符 注册到目标端口时,无论什么强度水平,探测报文都会被尝试。这保证了DNS 探测将永远在任何开放的53端口尝试, SSL探测将在443端口尝试,等等。

–version-light (打开轻量级模式)

这是 --version-intensity 2的方便的别名。轻量级模式使 版本扫描快许多,但它识别服务的可能性也略微小一点。

–version-all (尝试每个探测)

–version-intensity 9的别名, 保证对每个端口尝试每个探测报文。

–version-trace (跟踪版本扫描活动)

这导致Nmap打印出详细的关于正在进行的扫描的调试信息。 它是您用--packet-trace所得到的信息的子集。

-sR (RPC扫描)

这种方法和许多端口扫描方法联合使用。 它对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图 确定它们是否RPC端口,如果是, 是什么程序和版本号。因此您可以有效地获得和rpcinfo -p一样的信息, 即使目标的端口映射在防火墙后面(或者被TCP包装器保护)。Decoys目前不能和RPC scan一起工作。 这作为版本扫描(-sV)的一部分自动打开。 由于版本探测包括它并且全面得多,-sR很少被需要。

操作系统检测:

-O (启用操作系统检测)

也可以使用-A来同时启用操作系统检测和版本检测。

D:\attack\nmap-7.92>nmap.exe -O 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-23 20:52 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00037s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh
Device type: general purpose

Running: Microsoft Windows 10
OS CPE: cpe:/o:microsoft:windows_10
OS details: Microsoft Windows 10 1809 - 1909
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.30 seconds

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

如果发现一个打开和关闭的TCP端口时,操作系统检测会更有效。 采用这个选项,Nmap只对满足这个条件的主机进行操作系统检测,这样可以 节约时间,特别在使用-P0扫描多个主机时。这个选项仅在使用 -O-A 进行操作系统检测时起作用。

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

当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,Nmap默认 进行这种匹配,使用上述任一个选项使得Nmap的推测更加有效。

时间和性能:

  • 改善扫描时间的技术有:忽略非关键的检测、升级最新版本的Nmap(性能增强不断改善)。

–min-hostgroup ;–max-hostgroup (调整并行扫描组的大小)

Nmap具有并行扫描多主机端口或版本的能力,Nmap将多个目标IP地址 空间分成组,然后在同一时间对一个组进行扫描。通常,**大的组更有效。缺点是只有当整个组扫描结束后才会提供主机的扫描结果。**如果组的大小定义为50,则只有当前50个主机扫描结束后才能得到报告(详细模式中的补充信息 除外)。

默认方式下,Nmap采取折衷的方法。开始扫描时的组较小, 最小为5,这样便于尽快产生结果;随后增长组的大小,最大为1024。确切的 大小依赖于所给定的选项。为保证效率,针对UDP或少量端口的TCP扫描,Nmap 使用大的组

--max-hostgroup选项用于说明使用最大的组,Nmap不会超出这个大小。--min-hostgroup选项说明最小的组,Nmap 会保持组大于这个值。如果在指定的接口上没有足够的目标主机来满足所 指定的最小值,Nmap可能会采用比所指定的值小的组。这两个参数虽然很少使用, 但都用于保持组的大小在一个指定的范围之内。

这些选项的主要用途是说明一个最小组的大小,使得整个扫描更加快速。

  • 通常 选择256来扫描C类网段。对于端口数较多的扫描,超出该值没有意义。
  • 对于端口数较少的扫描,2048或更大的组大小是有帮助的。

–min-parallelism ; --max-parallelism (调整探测报文的并行度)

这些选项控制用于主机组的探测报文数量,可用于端口扫描和主机发现。默认状态下, Nmap基于网络性能计算一个理想的并行度,这个值经常改变。如果报文被丢弃, Nmap降低速度,探测报文数量减少。随着网络性能的改善,理想的探测报文数量会缓慢增加。 这些选项确定这个变量的大小范围。默认状态下,当网络不可靠时,理想的并行度值 可能为1,在好的条件下,可能会增长至几百。

最常见的应用是--min-parallelism值大于1,以加快性能不佳的主机或网络的扫描。这个选项具有风险,如果过高则影响准确度,同时 也会降低Nmap基于网络条件动态控制并行度的能力。这个值设为10较为合适, 这个值的调整往往作为最后的手段。

--max-parallelism选项通常设为1,以防止Nmap在同一时间 向主机发送多个探测报文,和选择--scan-delay同时使用非常有用,虽然 这个选项本身的用途已经很好。

–min-rtt-timeout , --max-rtt-timeout ,–initial-rtt-timeout (调整探测报文超时时间)

Nmap使用一个运行超时值来确定等待探测报文响应的时间,随后会放弃或重新 发送探测报文。Nmap基于上一个探测报文的响应时间来计算超时值,如果网络延迟比较显著 和不定,这个超时值会增加几秒。初始值的比较保守(高),而当Nmap扫描无响应 的主机时,这个保守值会保持一段时间。

这些选项以毫秒为单位,采用小的--max-rtt-timeout值,使 --initial-rtt-timeout值大于默认值可以明显减少扫描时间,特别 是对不能ping通的扫描(-P0)以及具有严格过滤的网络。如果使用太 小的值,使得很多探测报文超时从而重新发送,而此时可能响应消息正在发送,这使得整个扫描的时 间会增加。

如果所有的主机都在本地网络,对于--max-rtt-timeout值来 说,100毫秒比较合适。如果存在路由,首先使用ICMP ping工具ping主机,或使用其 它报文工具如hpings,可以更好地穿透防火墙。查看大约10个包的最大往返时间,然后将 --initial-rtt-timeout设成这个时间的2倍,--max-rtt-timeout 可设成这个时间值的3倍或4倍。通常,不管ping的时间是多少,最大的rtt值不得小于100ms, 不能超过1000ms。

–min-rtt-timeout这个选项很少使用,当网络不可靠时, Nmap的默认值也显得过于强烈,这时这个选项可起作用。当网络看起来不可靠时,Nmap仅将 超时时间降至最小值,这个情况是不正常的,需要向nmap-dev邮件列表报告bug。

–scan-delay; --max-scan-delay (调整探测报文的时间间隔)

这个选项用于Nmap控制针对一个主机发送探测报文的等待时间(毫秒),在带宽 控制的情况下这个选项非常有效。Solaris主机在响应UDP扫描探测报文报文时,每秒 只发送一个ICMP消息,因此Nmap发送的很多数探测报文是浪费的。--scan-delay 设为1000,使Nmap低速运行。Nmap尝试检测带宽控制并相应地调整扫描的延迟,但 并不影响明确说明何种速度工作最佳。

  • --scan-delay的另一个用途是躲闭基于阈值的入侵检测和预防 系统(IDS/IPS)。

–host-timeout (放弃低速目标主机)

由于性能较差或不可靠的网络硬件或软件、带宽限制、严格的防火墙等原因, 一些主机需要很长的时间扫描。这些极少数的主机扫描往往占 据了大部分的扫描时间。因此,最好的办法是减少时间消耗并且忽略这些主机,使用 --host-timeout选项来说明等待的时间(毫秒)。

通常使用1800000 来保证Nmap不会在单个主机上使用超过半小时的时间。需要注意的是,Nmap在这半小时中可以 同时扫描其它主机,因此并不是完全放弃扫描。超时的主机被忽略,因此也没有针对该主机的 端口表、操作系统检测或版本检测结果的输出。

  • 如果设置的超时时间非常短的话,会使精度下降非常多,慎用
D:\attack\nmap-7.92>nmap.exe -host-timeout 5 192.168.31.213
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 09:33 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00098s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 0.97 seconds

-T 6种时间模板 (设置时间模板)

  • <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
  • 使用时采用-T选项及数字(0 - 5) 或名称。
  • 默认模式为Normal,因此-T3 实际上是未做任何优化
  • 建议在扫描可靠的网络时使用 -T4;

上述优化时间控制选项的功能很强大也很有效,但有些用户会被迷惑。

此外, 往往选择合适参数的时间超过了所需优化的扫描时间。因此,Nmap提供了一些简单的 方法,使用6个时间模板,使用时采用-T选项及数字(0 - 5) 或名称。

模板名称有paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)。前两种模式用于IDS躲避,Polite模式降低了扫描速度以使用更少的带宽和目标主机资源。

默认模式为Normal,因此-T3 实际上是未做任何优化

  • -T4 Aggressive模式假设用户具有合适及可靠的网络从而加速扫描。

  • -T5 Insane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。

用户可以根据自己的需要选择不同的模板,由Nmap负责选择实际的时间值。 模板也会针对其它的优化控制选项进行速度微调。例如,-T4 针对TCP端口禁止动态扫描延迟超过10ms,-T5对应的值为5ms。 模板可以和优化调整控制选项组合使用,但模板必须首先指定,否则模板的标准值 会覆盖用户指定的值。

  • 建议在扫描可靠的网络时使用 -T4,即使在自己要增加优化控制选项时也使用(在命令行的开始),从而从这些额外的较小的优化 中获益。

  • 如果用于有足够的带宽或以太网连接,仍然建议使用-T4选项。

  • 有些用户喜欢-T5选项,但这个过于强烈。

  • 有时用户考虑到避免使主机崩溃或者希望更礼貌一些会采用-T2选项。他们并没意识到-T Polite选项是如何的慢,这种模式的扫描比默认方式实际上要多花10倍的时间。

  • 默认时间 选项(-T3)很少有主机崩溃和带宽问题,比较适合于谨慎的用户。不进行 版本检测比进行时间调整能更有效地解决这些问题。

虽然-T0-T1选项可能有助于避免IDS告警,但 在进行上千个主机或端口扫描时,会显著增加时间。对于这种长时间的扫描,宁可设定确切的时间 值,而不要去依赖封装的-T0-T1选项。

T0选项的主要影响是对于连续扫描,在一个时间只能扫描一个端口, 每个探测报文的发送间隔为5分钟。

T1T2选项比较类似, 探测报文间隔分别为15秒和0.4秒。T3是Nmap的默认选项,包含了并行扫描。

T4选项与 --max-rtt-timeout 1250 --initial-rtt-timeout 500 等价,最大TCP扫描延迟为10ms。

T5等价于 --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000,最大TCP扫描延迟为5ms。

  • 设置超时时间8秒,精度下降少出现一处端口情况;
D:\attack\nmap-7.92>nmap.exe -sS -T4 -host-timeout 20 192.168.31.0/24
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 09:39 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0066s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap scan report for iPhone (192.168.31.93)
Host is up (0.029s latency).
Skipping host iPhone (192.168.31.93) due to host timeout
Nmap scan report for 192.168.31.166
Host is up (0.085s latency).
Skipping host 192.168.31.166 due to host timeout
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00067s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 256 IP addresses (4 hosts up) scanned in 13.18 seconds
  • 不设置超时时间:55秒
D:\attack\nmap-7.92>nmap.exe -sS -T4 192.168.31.0/24
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 09:36 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0089s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap scan report for iPhone (192.168.31.93)
Host is up (0.0083s latency).
Not shown: 996 closed tcp ports (reset)
PORT      STATE    SERVICE
1310/tcp  filtered husky
5550/tcp  filtered sdadmind
61900/tcp filtered unknown
62078/tcp open     iphone-sync
MAC Address: 22:A5:45:5F:9A:3D (Unknown)

Nmap scan report for 192.168.31.104
Host is up (0.16s latency).
All 1000 scanned ports on 192.168.31.104 are in ignored states.
Not shown: 1000 closed tcp ports (reset)
MAC Address: 64:DD:E9:73:11:13 (Xiaomi Communications)

Nmap scan report for 192.168.31.166
Host is up (0.094s latency).
All 1000 scanned ports on 192.168.31.166 are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)
MAC Address: BC:E2:65:39:84:29 (Huawei Technologies)

Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00019s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 256 IP addresses (5 hosts up) scanned in 55.23 seconds

防火墙/IDS 逃避和欺骗:

-f (报文分段); --mtu(使用指定的MTU)

-f选项要求扫描时(包挺ping扫描)使用 小的IP包分段。其思路是将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难。必须小心使用这个选项,有些系 统在处理这些小包时存在问题,例如旧的网络嗅探器Sniffit在接收 到第一个分段时会立刻出现分段错误。该选项使用一次,Nmap在IP 头后将包分成8个字节或更小。因此,一个20字节的TCP头会被分成3个 包,其中2个包分别有TCP头的8个字节,另1个包有TCP头的剩下4个字 节。当然,每个包都有一个IP头。再次使用-f可使用 16字节的分段(减少分段数量)。使用--mtu选项可 以自定义偏移的大小,使用时不需要-f,偏移量必须 是8的倍数。包过滤器和防火墙对所有的IP分段排队,如Linux核心中的 CONFIG-IP-ALWAYS-DEFRAG配置项,分段包不会直接使用。一些网络无法 承受这样所带来的性能冲击,会将这个配置禁止。其它禁止的原因有分段 包会通过不同的路由进入网络。一些源系统在内核中对发送的报文进行 分段,使用iptables连接跟踪模块的Linux就是一个例子。当使用类似Ethereal 的嗅探器时,扫描必须保证发送的报文要分段。如果主机操作系统会产 生问题,尝试使用--send-eth选项以避开IP层而直接 发送原始的以太网帧。

  • 如果在无法获取目标主机的端口是否开发 此时尝试使用报文分段进行扫描

  • D:\attack\nmap-7.92>nmap.exe -sS -T4 -f 192.168.31.0/24
    Warning: Packet fragmentation selected on a host other than Linux, OpenBSD, FreeBSD, or NetBSD.  This may or may not work.
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 09:52 中国标准时间
    Nmap scan report for XiaoQiang (192.168.31.1)
    Host is up (0.0068s latency).
    Not shown: 996 closed tcp ports (reset)
    PORT     STATE SERVICE
    53/tcp   open  domain
    80/tcp   open  http
    443/tcp  open  https
    8080/tcp open  http-proxy
    MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)
    
    Nmap scan report for iPhone (192.168.31.93)
    Host is up (0.0092s latency).
    Not shown: 935 closed tcp ports (reset), 64 filtered tcp ports (no-response)
    PORT      STATE SERVICE
    62078/tcp open  iphone-sync
    MAC Address: 22:A5:45:5F:9A:3D (Unknown)
    
    Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
    Host is up.
    All 1000 scanned ports on DESKTOP-1K49IFO (192.168.31.213) are in ignored states.
    Not shown: 1000 filtered tcp ports (no-response)
    
    Nmap done: 256 IP addresses (3 hosts up) scanned in 271.66 seconds
    

-D <decoy1,decoy2,ME…> (使用诱饵隐蔽扫描)

为使诱饵扫描起作用,需要使远程主机认为是诱饵在扫描目标网络。 IDS可能会报个某个IP的5-10个端口扫描,但并不知道哪个IP在扫描以及 哪些不是诱饵。但这种方式可以通过路由跟踪、响应丢弃以及其它主动 机制在解决。这是一种常用的隐藏自身IP地址的有效技术。

使用逗号分隔每个诱饵主机,也可用自己的真实IP作为诱饵,这时可使用 ME选项说明。如果在第6个位置或 更后的位置使用ME选项,一些常用 端口扫描检测器(如Solar Designer’s excellent scanlogd)就不会报告 这个真实IP。如果不使用ME选项,Nmap 将真实IP放在一个随机的位置

注意,作为诱饵的主机须在工作状态,否则会导致目标主机的SYN洪水攻击。 如果在网络中只有一个主机在工作,那就很容易确定哪个主机在扫描。也可 使用IP地址代替主机名(被诱骗的网络就不可能在名字服务器日志中发现)。

诱饵可用在初始的ping扫描(ICMP、SYN、ACK等)阶段或真正的端口扫描 阶段。诱饵也可以用于远程操作系统检测(-O)。在进行版 本检测或TCP连接扫描时,诱饵无效。

使用过多的诱饵没有任何价值,反而导致扫描变慢并且结果不准确。 此外,一些ISP会过滤哄骗的报文,但很多对欺骗IP包没有任何限制。

  • 使用-D选项可以指定多个IP地址,指定的几个IP地址之间用逗号分割;或者使用RND随机生成几个地址。

  • 需要注意的是,在进行版本探测或者TCP扫描的时候诱饵是无效的;诱饵主机必须是工作状态,否则会导致目标主机的SYN洪水攻击。

nmap -D 192.168.2.3,192.168.3.4 192.168.31.0/24
  • 随机生成1个ip地址
D:\attack\nmap-7.92>nmap.exe -D RND:1 192.168.31.0/24
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 10:06 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.029s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap scan report for 192.168.31.166
Host is up (0.011s latency).
Not shown: 999 closed tcp ports (reset)
PORT     STATE    SERVICE
7000/tcp filtered afs3-fileserver
MAC Address: BC:E2:65:39:84:29 (Huawei Technologies)

Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.0012s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

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

-S (源地址哄骗)

在某些情况下,Nmap可能无法确定你的源地址(如果这样,Nmap会给出 提示)。此时,使用-S选项并说明所需发送包的接口IP地址。

这个标志的另一个用处是哄骗性的扫描,使得目标认为是另 一个地址在进行扫描。可以想象某一个竞争对手在不断扫描某个公司! -e选项常在这种情况下使用,也可采用-P0选项。

  • 失败

  • D:\attack\nmap-7.92>nmap.exe -e eth0 192.168.31.213 -S 192.168.31.1 -Pn
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 10:28 中国标准时间
    setup_target: failed to determine route to 192.168.31.213
    WARNING: No targets were specified, so 0 hosts scanned.
    Nmap done: 0 IP addresses (0 hosts up) scanned in 0.60 seconds
    

-e (使用指定的接口)

告诉Nmap使用哪个接口发送和接收报文,Nmap可以进行自动检测, 如果检测不出会给出提示。

–source-port ;-g (源端口哄骗)

仅依赖于源端口号就信任数据流是一种常见的错误配置,这个问题非常 好理解。例如一个管理员部署了一个新的防火墙,但招来了很多用户的不满,因为 他们的应用停止工作了。可能是由于外部的UDP DNS服务器响应无法进入网络,而导致 DNS的崩溃。FTP是另一个常见的例子,在FTP传输时,远程服务器尝试和内部用 建立连接以传输数据。

对这些问题有安全解决方案,通常是应用级代理或协议分析防火墙模块。 但也存在一些不安全的方案。注意到DNS响应来自于53端口,FTP连接 来自于20端口,很多管理员会掉入一个陷阱,即允许来自于这些端口的数据进入 网络。他们认为这些端口里不会有值得注意的攻击和漏洞利用。此外,管理员 或许认为这是一个短期的措施,直至他们采取更安全的方案。但他们忽视了安全的 升级。

不仅仅是工作量过多的网络管理员掉入这种陷阱,很多产品本身也会有这类 不安全的隐患,甚至是微软的产品。Windows 2000和Windows XP中包含的IPsec过滤 器也包含了一些隐含规则,允许所有来自88端口(Kerberos)的TCP和UDP数据流。另 一个常见的例子是Zone Alarm个人防火墙到2.1.25版本仍然允许源端口53(DNS)或 67(DHCP)的UDP包进入。

Nmap提供了-g--source-port选项(它们是 等价的),用于利用上述弱点。只需要提供一个端口号,Nmap就可以从这些 端口发送数据。为使特定的操作系统正常工作,Nmap必须使用不同的端口号。 DNS请求会忽略--source-port选项,这是因为Nmap依靠系 统库来处理。大部分TCP扫描,包括SYN扫描,可以完全支持这些选项,UDP扫 描同样如此。

  • –source-port

  • D:\attack\nmap-7.92>nmap.exe --source-port 53 192.168.31.1
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 10:45 中国标准时间
    Nmap scan report for XiaoQiang (192.168.31.1)
    Host is up (0.010s latency).
    Not shown: 996 closed tcp ports (reset)
    PORT     STATE SERVICE
    53/tcp   open  domain
    80/tcp   open  http
    443/tcp  open  https
    8080/tcp open  http-proxy
    MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)
    
    Nmap done: 1 IP address (1 host up) scanned in 1.50 seconds
    
    D:\attack\nmap-7.92>
    
  • -g

  • D:\attack\nmap-7.92>nmap.exe -g 53 192.168.31.1
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 10:43 中国标准时间
    Nmap scan report for XiaoQiang (192.168.31.1)
    Host is up (0.0051s latency).
    Not shown: 996 closed tcp ports (reset)
    PORT     STATE SERVICE
    53/tcp   open  domain
    80/tcp   open  http
    443/tcp  open  https
    8080/tcp open  http-proxy
    MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)
    
    Nmap done: 1 IP address (1 host up) scanned in 1.51 seconds
    

–data-length (发送报文时 附加随机数据)

正常情况下,Nmap发送最少的报文,只含一个包头。因此TCP包通常 是40字节,ICMP ECHO请求只有28字节。这个选项告诉Nmap在发送的报文上 附加指定数量的随机字节。操作系统检测(-O)包不受影响, 但大部分ping和端口扫描包受影响,这会使处理变慢,但对扫描的影响较小。

  • 该选项可以指定发送报文的长度。通常情况下TCP包是40字节,ICMP Echo是28字节。所以可以在原来的报文基础上附加随机数据来达到规避防火墙的效果。

  • 下面是对目标主机发送30个字节大小的包。

D:\attack\nmap-7.92>nmap.exe --data-length 30 192.168.31.1
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 10:47 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0041s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.57 seconds

–ttl (设置IP time-to-live域)

设置IPv4报文的time-to-live域为指定的值。

  • 某些防火墙针对发送过于频繁的数据包会进行严格的侦查,而且某些系统限制错误报文产生的频率。所以,我们可以降低发包的频率和发包延时以此降低目标主机的审查强度。
  • 扫描延时
D:\attack\nmap-7.92>nmap.exe --ttl 128 192.168.31.1
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 10:49 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0040s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.48 seconds

–randomize-hosts (对目标主机的顺序随机排列)

告诉Nmap在扫描主机前对每个组中的主机随机排列,最多可达 8096个主机。这会使得扫描针对不同的网络监控系统来说变得不是很 明显,特别是配合值较小的时间选项时更有效。如果需要对一个较大 的组进行随机排列,需要增大nmap.h文件中 PING-GROUP-SZ的值,并重新编译。另一种方法是使用列表扫描 (-sL -n -oN **),产生目标IP的列表, 使用Perl脚本进行随机化,然后使用-iL提供给Nmap。

  • 该选项用来对目标主机的顺序进行随机的排序,最多可达8096个主机。单方面使用这个选项对防火墙/IDS逃逸的效果不大,如果配合时间选项则会有很好的效果。
nmap --randomize-hosts 192.168.31.1-200

–spoof-mac <mac address,prefix,or vendor name> (MAC地址哄骗)

要求Nmap在发送原以太网帧时使用指定的MAC地址,这个选项隐含了 --send-eth选项,以保证Nmap真正发送以太网包。

MAC地址有几 种格式。如果简单地使用字符串“0”,Nmap选择一个完全随机的MAC 地址。如果给定的字符品是一个16进制偶数(使用:分隔),Nmap将使用这个MAC地址。 如果是小于12的16进制数字,Nmap会随机填充剩下的6个字节。如果参数不是0或16进 制字符串,Nmap将通过nmap-mac-prefixes查找 厂商的名称(大小写区分),如果找到匹配,Nmap将使用厂商的OUI(3字节前缀),然后 随机填充剩余的3个节字。

正确的--spoof-mac参数有, Apple001:02:03:04:05:06deadbeefcafe0020F2, 和Cisco.

  • 指定mac地址,扫描方式必须为-sT,不然失效;

  • 随机指定mac地址

    D:\attack\nmap-7.92>nmap.exe -sT  --spoof-mac 0 -Pn 192.168.31.1
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 10:53 中国标准时间
    Spoofing MAC address C8:B3:28:E5:98:1C (No registered vendor)
    You have specified some options that require raw socket access.
    These options will not be honored for TCP Connect scan.
    Nmap scan report for XiaoQiang (192.168.31.1)
    Host is up (0.0037s latency).
    Not shown: 996 filtered tcp ports (no-response)
    PORT     STATE SERVICE
    53/tcp   open  domain
    80/tcp   open  http
    443/tcp  open  https
    8080/tcp open  http-proxy
    
    Nmap done: 1 IP address (1 host up) scanned in 45.00 seconds
    
  • 指定mac地址为:Apple

    D:\attack\nmap-7.92>nmap.exe -sT --spoof-mac Apple 192.168.31.1 -P0
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 10:58 中国标准时间
    Spoofing MAC address 00:03:93:23:A3:AB (Apple)
    You have specified some options that require raw socket access.
    These options will not be honored for TCP Connect scan.
    Nmap scan report for XiaoQiang (192.168.31.1)
    Host is up (0.0048s latency).
    Not shown: 996 filtered tcp ports (no-response)
    PORT     STATE SERVICE
    53/tcp   open  domain
    80/tcp   open  http
    443/tcp  open  https
    8080/tcp open  http-proxy
    
    Nmap done: 1 IP address (1 host up) scanned in 46.66 seconds
    

输出

-oN (标准输出)

要求将标准输出直接写入指定 的文件。如上所述,这个格式与交互式输出 略有不同。

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 -oN d:/attack/nmap.txt
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 11:39 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0049s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.51 seconds

D:\attack\nmap-7.92>
  • 格式输出为:
# Nmap 7.92 scan initiated Wed Nov 24 11:57:22 2021 as: nmap.exe -sS -oN d:/attack/nmap.txt 192.168.31.1
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0042s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

# Nmap done at Wed Nov 24 11:57:23 2021 -- 1 IP address (1 host up) scanned in 1.50 seconds

-oX (XML输出)

要求XML输出直接写入指定 的文件。Nmap包含了一个文档类型定义(DTD),使XML解析器有效地 进行XML输出。这主要是为了程序应用,同时也可以协助人工解释 Nmap的XML输出。DTD定义了合法的格式元素,列举可使用的属性和 值。最新的版本可在 https://nmap/data/nmap.dtd获取。XML提供了可供软件解析的稳定格式输出,主要的计算机 语言都提供了免费的XML解析器,如C/C++,Perl,Python和Java。 针对这些语言有一些捆绑代码用于处理Nmap的输出和特定的执行程序。 例如perl CPAN中的Nmap::Scanner 和Nmap::Parser。 对几乎所有与Nmap有接口的主要应用来说,XML是首选的格式。XML输出引用了一个XSL样式表,用于格式化输出结果,类似于 HTML。最方便的方法是将XML输出加载到一个Web浏览器,如Firefox 或IE。由于nmap.xsl文件的绝对 路径,因此通常只能在运行了Nmap的机器上工作(或类似配置的机器)。 类似于任何支持Web机器的HTML文件,--stylesheet 选项可用于建立可移植的XML文件。

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 -oX d:/attack/nmap.xml
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 11:40 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0052s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.51 seconds

D:\attack\nmap-7.92>
  • 格式输出为:

    略,用户浏览器打开xml

-oS (ScRipT KIdd|3 oUTpuT)

脚本小子输出类似于交互工具输出,这是一个事后处理,适合于 'l33t HaXXorZ, 由于原来全都是大写的Nmap输出。这个选项和脚本小子开了玩笑,看上去似乎是为了 “帮助他们”。

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 -oS d:/attack/nmap.txt
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 11:52 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0045s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.57 seconds
  • 格式输出为:
starting Nmap 7.92 ( hTTpz://Nmap ) at 2021-11-24 11:52 中国标准时间
NmAp $caN rEP0rt F0r XiaoQ!ang (192.168.31.1)
HOSt 1s uP (0.0045s lat3ncy).
Not $h0wn: 996 CL0$3d tcp poRTs (r3$3T)
PORT     $TaT3 $3RV!c3
53/tCp   Op3n  dOMain
80/tcp   0pEn  http
443/tcp  0p3n  Httpz
8080/tCP 0Pen  http-proxy
MAC 4ddre$z: 64:64:44:9C:59:8B (B3Ij|ng x!aom! M0B|l3 S0ftware)

nmap d0n3: 1 IP addr3sS (1 h0St up) $cann3d |n 1.57 s3c0ndz
-oG (Grep输出)

这种方式最后介绍,因为不建议使用。XML输格式很强大,便于有经验 的用户使用。XML是一种标准,由许多解析器构成,而Grep输届更简化。XML 是可扩展的,以支持新发布的Nmap特点。使用Grep输出的目的是忽略这些 特点,因为没有足够的空间。然面,Grep输出仍然很常使用。它是一种简单格式,每行一个主机,可以 通过UNIX工具(如grep、awk、cut、sed、diff)和Perl方便地查找和分解。常可 用于在命令行上进行一次性测式。查找ssh端口打开或运行Sloaris的主机,只需 要一个简单的grep主机说明,使用通道并通过awk或cut命令打印所需的域。Grep输出可以包含注释(每行由#号开始)。每行由6个标记的域组成,由制表符及 冒号分隔。这些域有主机端口协议忽略状态操作系统序列号IPID状态。这些域中最重要的是Ports,它提供 了所关注的端口的细节,端口项由逗号分隔。每个端口项代表一个所关注的端口, 每个子域由/分隔。这些子域有:端口号状态协议拥有者服务SunRPCinfo版本信息。对于XML输出,本手册无法列举所有的格式,有关Nmap Grep输出的更详细信息可 查阅http://www.unspecific/nmap-oG-output。

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 -oG d:/attack/nmap.txt
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 11:51 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0036s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.56 seconds

D:\attack\nmap-7.92>
  • 格式输出为:
# Nmap 7.92 scan initiated Wed Nov 24 11:58:43 2021 as: nmap.exe -sS -oG d:/attack/nmap.txt 192.168.31.1
Host: 192.168.31.1 (XiaoQiang)	Status: Up
Host: 192.168.31.1 (XiaoQiang)	Ports: 53/open/tcp//domain///, 80/open/tcp//http///, 443/open/tcp//https///, 8080/open/tcp//http-proxy///	Ignored State: closed (996)
# Nmap done at Wed Nov 24 11:58:45 2021 -- 1 IP address (1 host up) scanned in 1.45 seconds

-oA (输出至所有格式)

为使用方便,利用-oA**选项 可将扫描结果以标准格式、XML格式和Grep格式一次性输出。分别存放在 <basename>.nmap,<basename>.xml和 <basename>.gnmap文件中。也可以在文件名前 指定目录名,如在UNIX中,使用~/nmaplogs/foocorp/, 在Window中,使用c:\hacking\sco on Windows。

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 -oA d:/attack/
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 11:59 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0053s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.45 seconds

D:\attack\nmap-7.92>
  • 格式输出为:一次性生成三种文件,对应上面的除oS外的,其他格式;
.gnmap
.nmap
.xml

细节和调试选项

-v (提高输出信息的详细度)

通过提高详细度,Nmap可以输出扫描过程的更多信息。 输出发现的打开端口,若Nmap认为扫描需要更多时间会显示估计 的结束时间。这个选项使用两次,会提供更详细的信息。这个选 项使用两次以上不起作用。大部分的变化仅影响交互式输出,也有一些影响标准和脚本 小子输出。其它输出类型由机器处理,此时Nmap默认提供详细的信 息,不需要人工干预。然而,其它模式也会有一些变化,省略一些 细节可以减小输出大小。例如,Grep输出中的注释行提供所有扫描 端口列表,但由于这些信息过长,因此只能在细节模式中输出。

  • 不加-v输出

    D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:05 中国标准时间
    Nmap scan report for XiaoQiang (192.168.31.1)
    Host is up (0.0042s latency).
    Not shown: 996 closed tcp ports (reset)
    PORT     STATE SERVICE
    53/tcp   open  domain
    80/tcp   open  http
    443/tcp  open  https
    8080/tcp open  http-proxy
    MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)
    
    Nmap done: 1 IP address (1 host up) scanned in 1.53 seconds
    
    D:\attack\nmap-7.92>
    
  • -v

    D:\attack\nmap-7.92>nmap.exe -sS -v 192.168.31.1
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:04 中国标准时间
    Initiating ARP Ping Scan at 12:04
    Scanning 192.168.31.1 [1 port]
    Completed ARP Ping Scan at 12:04, 0.12s elapsed (1 total hosts)
    Initiating Parallel DNS resolution of 1 host. at 12:04
    Completed Parallel DNS resolution of 1 host. at 12:04, 0.01s elapsed
    Initiating SYN Stealth Scan at 12:04
    Scanning XiaoQiang (192.168.31.1) [1000 ports]
    Discovered open port 53/tcp on 192.168.31.1
    Discovered open port 80/tcp on 192.168.31.1
    Discovered open port 8080/tcp on 192.168.31.1
    Discovered open port 443/tcp on 192.168.31.1
    Completed SYN Stealth Scan at 12:04, 0.69s elapsed (1000 total ports)
    Nmap scan report for XiaoQiang (192.168.31.1)
    Host is up (0.0079s latency).
    Not shown: 996 closed tcp ports (reset)
    PORT     STATE SERVICE
    53/tcp   open  domain
    80/tcp   open  http
    443/tcp  open  https
    8080/tcp open  http-proxy
    MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)
    
    Read data files from: D:\attack\nmap-7.92
    Nmap done: 1 IP address (1 host up) scanned in 1.53 seconds
               Raw packets sent: 1001 (44.028KB) | Rcvd: 1001 (40.044KB)
    
-d [level] (提高或设置调试级别)

当详细模式也不能为用户提供足够的数据时,使用调试可以得到更 多的信息。

使用细节选项(-v)时,可启用命令行参数 (-d),多次使用可提高调试级别。也可在-d 后面使用参数设置调试级别。例如,-d9设定级别9。这是 最高的级别,将会产生上千行的输出,除非只对很少的端口和目标进行简单扫描。如果Nmap因为Bug而挂起或者对Nmap的工作及原理有疑问,调试输出 非常有效。

主要是开发人员用这个选项,调试行不具备自我解释的特点。

例如,Timeoutvals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000

如果对某行输出不明白, 可以忽略、查看源代码或向开发列表(nmap-dev)求助。有些输出行会有自 我解释的特点,但随着调试级别的升高,会越来越含糊。

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 -d 1
wpcap.dll present, library version: Npcap version 1.50, based on libpcap version 1.10.1-PRE-GIT
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:08 中国标准时间
PORTS: Using top 1000 ports found open (TCP:1000, UDP:0, SCTP:0)
--------------- Timing report ---------------
  hostgroups: min 1, max 100000
  rtt-timeouts: init 1000, min 100, max 10000
  max-scan-delay: TCP 1000, UDP 1000, SCTP 1000
  parallelism: min 0, max 0
  max-retries: 10, host-timeout: 0
  min-rate: 0, max-rate: 0
---------------------------------------------
Failed to resolve "1".
Initiating ARP Ping Scan at 12:08
Scanning 192.168.31.1 [1 port]
Packet capture filter (device eth7): arp and arp[18:4] = 0x00E18CA9 and arp[22:2] = 0x4034
Completed ARP Ping Scan at 12:08, 0.13s elapsed (1 total hosts)
Overall sending rates: 7.75 packets / s, 325.58 bytes / s.
mass_rdns: Using DNS server 114.114.114.114
mass_rdns: Using DNS server 8.8.8.8
mass_rdns: Using DNS server 192.168.31.1
mass_rdns: Using DNS server 192.168.31.1
Initiating Parallel DNS resolution of 1 host. at 12:08
mass_rdns: 0.08s 0/1 [#: 4, OK: 0, NX: 0, DR: 0, SF: 0, TR: 1]
Completed Parallel DNS resolution of 1 host. at 12:08, 0.00s elapsed
DNS resolution of 1 IPs took 0.08s. Mode: Async [#: 4, OK: 1, NX: 0, DR: 0, SF: 0, TR: 1, CN: 0]
Failed to resolve "1".
Initiating SYN Stealth Scan at 12:08
Scanning XiaoQiang (192.168.31.1) [1000 ports]
Packet capture filter (device eth7): dst host 192.168.31.213 and (icmp or icmp6 or ((tcp) and (src host 192.168.31.1)))
Discovered open port 53/tcp on 192.168.31.1
Discovered open port 443/tcp on 192.168.31.1
Discovered open port 8080/tcp on 192.168.31.1
Discovered open port 80/tcp on 192.168.31.1
Completed SYN Stealth Scan at 12:08, 0.64s elapsed (1000 total ports)
Overall sending rates: 1569.86 packets / s, 69073.78 bytes / s.
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up, received arp-response (0.0046s latency).
Scanned at 2021-11-24 12:08:27 中国标准时间 for 0s
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE    REASON
53/tcp   open  domain     syn-ack ttl 64
80/tcp   open  http       syn-ack ttl 64
443/tcp  open  https      syn-ack ttl 64
8080/tcp open  http-proxy syn-ack ttl 64
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)
Final times for host: srtt: 4638 rttvar: 3175  to: 100000

Failed to resolve "1".
Read from D:\attack\nmap-7.92: nmap-mac-prefixes nmap-payloads nmap-services.
Nmap done: 1 IP address (1 host up) scanned in 8.35 seconds
           Raw packets sent: 1001 (44.028KB) | Rcvd: 1001 (40.044KB)

D:\attack\nmap-7.92>
–packet-trace (跟踪发送和接收的报文)

要求Nmap打印发送和接收的每个报文的摘要,通常用于 调试,有助于新用户更好地理解Nmap的真正工作。为避免输出过 多的行,可以限制扫描的端口数,如-p20-30。 如果只需进行版本检测,使用--version-trace

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 --packet-trace

Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:10 中国标准时间
SENT (0.7250s) ARP who-has 192.168.31.1 tell 192.168.31.213
RCVD (0.7290s) ARP reply 192.168.31.1 is-at 64:64:4A:9C:59:8B
NSOCK INFO [0.8200s] nsock_iod_new2(): nsock_iod_new (IOD #1)
NSOCK INFO [0.8210s] nsock_connect_udp(): UDP connection requested to 192.168.31.1:53 (IOD #1) EID 8
NSOCK INFO [0.8220s] nsock_read(): Read request from IOD #1 [192.168.31.1:53] (timeout: -1ms) EID 18
NSOCK INFO [0.8220s] nsock_iod_new2(): nsock_iod_new (IOD #2)
NSOCK INFO [0.8240s] nsock_connect_udp(): UDP connection requested to 192.168.31.1:53 (IOD #2) EID 24
NSOCK INFO [0.8250s] nsock_read(): Read request from IOD #2 [192.168.31.1:53] (timeout: -1ms) EID 34
NSOCK INFO [0.8250s] nsock_iod_new2(): nsock_iod_new (IOD #3)
NSOCK INFO [0.8250s] nsock_connect_udp(): UDP connection requested to 8.8.8.8:53 (IOD #3) EID 40
NSOCK INFO [0.8260s] nsock_read(): Read request from IOD #3 [8.8.8.8:53] (timeout: -1ms) EID 50
NSOCK INFO [0.8260s] nsock_iod_new2(): nsock_iod_new (IOD #4)
NSOCK INFO [0.8270s] nsock_connect_udp(): UDP connection requested to 114.114.114.114:53 (IOD #4) EID 56
NSOCK INFO [0.8270s] nsock_read(): Read request from IOD #4 [114.114.114.114:53] (timeout: -1ms) EID 66
NSOCK INFO [0.8280s] nsock_write(): Write request for 43 bytes to IOD #1 EID 75 [192.168.31.1:53]
NSOCK INFO [0.8280s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [192.168.31.1:53]
NSOCK INFO [0.8280s] nsock_trace_handler_callback(): Callback: WRITE SUCCESS for EID 75 [192.168.31.1:53]
NSOCK INFO [0.8280s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 24 [192.168.31.1:53]
NSOCK INFO [0.8280s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 40 [8.8.8.8:53]
NSOCK INFO [0.8280s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 56 [114.114.114.114:53]
NSOCK INFO [0.8330s] nsock_trace_handler_callback(): Callback: READ SUCCESS for EID 18 [192.168.31.1:53] (66 bytes): ~............1.31.168.192.in-addr.arpa..................XiaoQiang.
NSOCK INFO [0.8330s] nsock_read(): Read request from IOD #1 [192.168.31.1:53] (timeout: -1ms) EID 82
NSOCK INFO [0.8330s] nsock_iod_delete(): nsock_iod_delete (IOD #1)
NSOCK INFO [0.8330s] nevent_delete(): nevent_delete on event #82 (type READ)
NSOCK INFO [0.8330s] nsock_iod_delete(): nsock_iod_delete (IOD #2)
NSOCK INFO [0.8330s] nevent_delete(): nevent_delete on event #34 (type READ)
NSOCK INFO [0.8330s] nsock_iod_delete(): nsock_iod_delete (IOD #3)
NSOCK INFO [0.8330s] nevent_delete(): nevent_delete on event #50 (type READ)
NSOCK INFO [0.8330s] nsock_iod_delete(): nsock_iod_delete (IOD #4)
NSOCK INFO [0.8330s] nevent_delete(): nevent_delete on event #66 (type READ)
SENT (0.8370s) TCP 192.168.31.213:42277 > 192.168.31.1:8888 S ttl=46 id=34212 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8370s) TCP 192.168.31.213:42277 > 192.168.31.1:139 S ttl=37 id=3705 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8380s) TCP 192.168.31.213:42277 > 192.168.31.1:23 S ttl=53 id=42414 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8380s) TCP 192.168.31.213:42277 > 192.168.31.1:3389 S ttl=52 id=49547 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8390s) TCP 192.168.31.213:42277 > 192.168.31.1:993 S ttl=41 id=32529 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8400s) TCP 192.168.31.213:42277 > 192.168.31.1:445 S ttl=53 id=46989 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8400s) TCP 192.168.31.213:42277 > 192.168.31.1:113 S ttl=51 id=16551 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8410s) TCP 192.168.31.213:42277 > 192.168.31.1:3306 S ttl=37 id=63068 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8410s) TCP 192.168.31.213:42277 > 192.168.31.1:143 S ttl=46 id=34718 iplen=44  seq=3764036876 win=1024 <mss 1460>
SENT (0.8410s) TCP 192.168.31.213:42277 > 192.168.31.1:53 S ttl=57 id=50679 iplen=44  seq=3764036876 win=1024 <mss 1460>
RCVD (0.8420s) TCP 192.168.31.1:139 > 192.168.31.213:42277 RA ttl=64 id=26319 iplen=40  seq=0 win=0
RCVD (0.8420s) TCP 192.168.31.1:8888 > 192.168.31.213:42277 RA ttl=64 id=25813 iplen=40  seq=0 win=0
RCVD (0.8420s) TCP 192.168.31.1:23 > 192.168.31.213:42277 RA ttl=64 id=26320 iplen=40  seq=0 win=0
RCVD (0.8420s) TCP 192.168.31.1:3389 > 192.168.31.213:42277 RA ttl=64 id=26321 iplen=40  seq=0 win=0
RCVD (0.8430s) TCP 192.168.31.1:993 > 192.168.31.213:42277 RA ttl=64 id=26322 iplen=40  seq=0 win=0
RCVD (0.8430s) TCP 192.168.31.1:445 > 192.168.31.213:42277 RA ttl=64 id=26324 iplen=40  seq=0 win=0
RCVD (0.8430s) TCP 192.168.31.1:113 > 192.168.31.213:42277 RA ttl=64 id=26323 iplen=40  seq=0 win=0
RCVD (0.8440s) TCP 192.168.31.1:3306 > 192.168.31.213:42277 RA ttl=64 id=26325 iplen=40  seq=0 win=0
RCVD (0.8440s) TCP 192.168.31.1:143 > 192.168.31.213:42277 RA ttl=64 id=26326 iplen=40  seq=0 win=0
RCVD (0.8440s) TCP 192.168.31.1:53 > 192.168.31.213:42277 SA ttl=64 id=0 iplen=44  seq=3042966459 win=29200 <mss 1460>
...
...
–iflist (列举接口和路由)

输出Nmap检测到的接口列表和系统路由,用于调试路由问题或设备描述失误(如Nmap把PPP连接当作以太网对待)。

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 --iflist
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:12 中国标准时间
************************INTERFACES************************
DEV  (SHORT) IP/MASK                                  TYPE     UP   MTU   MAC
eth0 (eth0)  fe80::a58c:1e6a:b9c6:d14/64              ethernet down 1500  8C:EC:4B:1B:22:F8
eth0 (eth0)  169.254.13.20/16                         ethernet down 1500  8C:EC:4B:1B:22:F8
eth1 (eth1)  fe80::f141:607a:72e9:a90/64              ethernet down 65535 00:00:00:00:00:00
eth1 (eth1)  169.254.10.144/16                        ethernet down 65535 00:00:00:00:00:00
eth2 (eth2)  fe80::18b6:b042:14db:aac6/64             ethernet down 1500  00:FF:F1:DE:73:4A
eth2 (eth2)  169.254.170.198/16                       ethernet down 1500  00:FF:F1:DE:73:4A
eth3 (eth3)  fe80::d570:3d69:ab89:32ea/64             ethernet down 1500  00:E1:8C:A9:40:35
eth3 (eth3)  169.254.50.234/16                        ethernet down 1500  00:E1:8C:A9:40:35
eth4 (eth4)  fe80::c055:e626:e5fc:af28/64             ethernet down 1500  02:E1:8C:A9:40:34
eth4 (eth4)  169.254.175.40/16                        ethernet down 1500  02:E1:8C:A9:40:34
eth5 (eth5)  fe80::6867:970e:3c53:14b1/64             ethernet up   1500  00:50:56:C0:00:01
eth5 (eth5)  192.168.71.1/24                          ethernet up   1500  00:50:56:C0:00:01
eth6 (eth6)  fe80::c56:903b:3bc5:e9c0/64              ethernet up   1500  00:50:56:C0:00:08
eth6 (eth6)  192.168.138.10/24                        ethernet up   1500  00:50:56:C0:00:08
eth7 (eth7)  fd00:6868:6868::290/128                  ethernet up   1500  00:E1:8C:A9:40:34
eth7 (eth7)  fd00:6868:6868:0:19dc:f93b:56ec:660/64   ethernet up   1500  00:E1:8C:A9:40:34
eth7 (eth7)  fd00:6868:6868:0:25f0:bb7e:bf20:48c7/128 ethernet up   1500  00:E1:8C:A9:40:34
eth7 (eth7)  fe80::19dc:f93b:56ec:660/64              ethernet up   1500  00:E1:8C:A9:40:34
eth7 (eth7)  192.168.31.213/24                        ethernet up   1500  00:E1:8C:A9:40:34
eth8 (eth8)  fe80::a4b7:5323:9a32:4c77/64             ethernet down 1500  00:E1:8C:A9:40:38
eth8 (eth8)  169.254.76.119/16                        ethernet down 1500  00:E1:8C:A9:40:38
lo0  (lo0)   ::1/128                                  loopback up   -1
lo0  (lo0)   127.0.0.1/8                              loopback up   -1

DEV    WINDEVICE
eth0   \Device\NPF_{9E46C5C3-5F59-47B3-B7C8-48DE81F3ADA2}
eth0   \Device\NPF_{9E46C5C3-5F59-47B3-B7C8-48DE81F3ADA2}
eth1   \Device\NPF_{357538CF-9E88-4733-A105-E4891D87E2AE}
eth1   \Device\NPF_{357538CF-9E88-4733-A105-E4891D87E2AE}
eth2   \Device\NPF_{F1DE734A-F90A-4F21-B57C-02EB83CB16D0}
eth2   \Device\NPF_{F1DE734A-F90A-4F21-B57C-02EB83CB16D0}
eth3   \Device\NPF_{834D5DFD-A49D-43C4-8C71-94F5D6E3212E}
eth3   \Device\NPF_{834D5DFD-A49D-43C4-8C71-94F5D6E3212E}
eth4   \Device\NPF_{D810FC85-8C48-4F71-8FCC-312775270251}
eth4   \Device\NPF_{D810FC85-8C48-4F71-8FCC-312775270251}
eth5   \Device\NPF_{1D81013E-16C0-46A0-9789-113BB3EBD195}
eth5   \Device\NPF_{1D81013E-16C0-46A0-9789-113BB3EBD195}
eth6   \Device\NPF_{30F725B3-1A18-4991-972C-B12F7471EF56}
eth6   \Device\NPF_{30F725B3-1A18-4991-972C-B12F7471EF56}
eth7   \Device\NPF_{CFC638DB-C681-4340-9E51-AF1A4259D4C7}
eth7   \Device\NPF_{CFC638DB-C681-4340-9E51-AF1A4259D4C7}
eth7   \Device\NPF_{CFC638DB-C681-4340-9E51-AF1A4259D4C7}
eth7   \Device\NPF_{CFC638DB-C681-4340-9E51-AF1A4259D4C7}
eth7   \Device\NPF_{CFC638DB-C681-4340-9E51-AF1A4259D4C7}
eth8   \Device\NPF_{4BFF2928-8179-4FE7-8E6A-EF569B11ADFC}
eth8   \Device\NPF_{4BFF2928-8179-4FE7-8E6A-EF569B11ADFC}
lo0    \Device\NPF_Loopback
lo0    \Device\NPF_Loopback
<none> \Device\NPF_{B263434B-A1A2-4A62-9A26-8BCA58ED9D26}
<none> \Device\NPF_{854F6ECB-617C-40FF-8E3D-C03C45D66773}
<none> \Device\NPF_{5BE6ED8F-7EBA-4FAD-8EBA-1A8334477540}

**************************ROUTES**************************
DST/MASK                                 DEV  METRIC GATEWAY
255.255.255.255/32                       eth1 261
255.255.255.255/32                       eth0 261
255.255.255.255/32                       eth3 281
255.255.255.255/32                       eth4 281
255.255.255.255/32                       eth2 281
192.168.71.255/32                        eth5 291
192.168.138.10/32                        eth6 291
192.168.138.255/32                       eth6 291
192.168.71.1/32                          eth5 291
255.255.255.255/32                       eth5 291
255.255.255.255/32                       eth6 291
192.168.31.255/32                        eth7 306
255.255.255.255/32                       eth7 306
192.168.31.213/32                        eth7 306
255.255.255.255/32                       eth8 321
127.255.255.255/32                       lo0  331
255.255.255.255/32                       lo0  331
127.0.0.1/32                             lo0  331
192.168.71.0/24                          eth5 291
192.168.138.0/24                         eth6 291
192.168.31.0/24                          eth7 306
127.0.0.0/8                              lo0  331
224.0.0.0/4                              eth0 261
224.0.0.0/4                              eth1 261
224.0.0.0/4                              eth4 281
224.0.0.0/4                              eth3 281
224.0.0.0/4                              eth2 281
224.0.0.0/4                              eth6 291
224.0.0.0/4                              eth5 291
224.0.0.0/4                              eth7 306
224.0.0.0/4                              eth8 321
224.0.0.0/4                              lo0  331
0.0.0.0/0                                eth7 50     192.168.31.1
fe80::f141:607a:72e9:a90/128             eth1 261
fe80::a58c:1e6a:b9c6:d14/128             eth0 261
fe80::18b6:b042:14db:aac6/128            eth2 281
fe80::c055:e626:e5fc:af28/128            eth4 281
fe80::d570:3d69:ab89:32ea/128            eth3 281
fe80::6867:970e:3c53:14b1/128            eth5 291
fe80::c56:903b:3bc5:e9c0/128             eth6 291
fd00:6868:6868:0:19dc:f93b:56ec:660/128  eth7 306
fd00:6868:6868:0:25f0:bb7e:bf20:48c7/128 eth7 306
fd00:6868:6868::290/128                  eth7 306
fe80::19dc:f93b:56ec:660/128             eth7 306
fe80::a4b7:5323:9a32:4c77/128            eth8 321
::1/128                                  lo0  331
fe80::/64                                eth0 261
fe80::/64                                eth1 261
fe80::/64                                eth3 281
fe80::/64                                eth2 281
fe80::/64                                eth4 281
fe80::/64                                eth6 291
fe80::/64                                eth5 291
fe80::/64                                eth7 306
fd00:6868:6868::/64                      eth7 306
fe80::/64                                eth8 321
ff00::/8                                 eth1 261
ff00::/8                                 eth0 261
ff00::/8                                 eth4 281
ff00::/8                                 eth2 281
ff00::/8                                 eth3 281
ff00::/8                                 eth6 291
ff00::/8                                 eth5 291
ff00::/8                                 eth7 306
ff00::/8                                 eth8 321
ff00::/8                                 lo0  331
::/0                                     eth7 306    fe80::6664:4aff:fe9c:598b


D:\attack\nmap-7.92>

其它输出选项

–append-output (在输出文件中添加)

当使用文件作为输出格式,如-oX-oN, 默认该文件被覆盖。如果希望文件保留现有内容,将结果添加在现 有文件后面,使用--append-output选项。所有指 定的输出文件都被添加。但对于XML(-oX)扫描输出 文件无效,无法正常解析,需要手工修改。

  • nmap每次导出文件,如果存在文件名称重复的情况,都会覆盖,添加–append-output参数会使原有的参数保存,并追加在最后面。
D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.1 -oN d:\attack\nmap.txt
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:17 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0048s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.213 -oN d:\attack\nmap.txt --append-output
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:17 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00017s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 0.84 seconds

D:\attack\nmap-7.92>
# Nmap 7.92 scan initiated Wed Nov 24 12:17:09 2021 as: nmap.exe -sS -oN d:\\attack\\nmap.txt 192.168.31.1
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0048s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

# Nmap done at Wed Nov 24 12:17:10 2021 -- 1 IP address (1 host up) scanned in 1.60 seconds
# Nmap 7.92 scan initiated Wed Nov 24 12:17:19 2021 as: nmap.exe -sS -oN d:\\attack\\nmap.txt --append-output 192.168.31.213
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00017s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

# Nmap done at Wed Nov 24 12:17:20 2021 -- 1 IP address (1 host up) scanned in 0.84 seconds
–resume (继续中断的扫描)

一些扩展的Nmap运行需要很长的时间 – 以天计算,这类扫描 往往不会结束。可以进行一些限制,禁止Nmap在工作时间运行,导致 网络中断、运行Nmap的主机计划或非计划地重启、或者Nmap自己中断。 运行Nmap的管理员可以因其它原因取消运行,按下ctrl-C 即可。从头开始启动扫描可能令人不快,幸运的是,如果标准扫描 (-oN)或Grep扫描(-oG)日志 被保留,用户可以要求Nmap恢复终止的扫描,只需要简单地使用选项 --resume并说明标准/Grep扫描输出文件,不允许 使用其它参数,Nmap会解析输出文件并使用原来的格式输出。使用方式 如nmap --resume *<logfilename>*。 Nmap将把新地结果添加到文件中,这种方式不支持XML输出格式,原因是 将两次运行结果合并至一个XML文件比较困难。

继续中断扫描:nmap –oG 1.txt –v 192.168.1.1/24

作用:-oG将扫描结果保存为TXT,Ctrl+C中断扫描。

Nmap --resume 1.txt

作用:继续扫描
–stylesheet (设置XSL样式表,转换XML输出)

Nmap提从了XSL样式表nmap.xsl,用于查看 或转换XML输出至HTML。XML输出包含了一个xml-stylesheet, 直接指向nmap.xml文件, 该文件由Nmap安装(或位于Windows当前工作目录)。在Web浏览器 中打开Nmap的XML输出时,将会在文件系统中寻找nmap.xsl文件, 并使用它输出结果。如果希望使用不同的样式表,将它作为 --stylesheet的参数,必段指明完整的路 径或URL,常见的调用方式是--stylesheet https://nmap/data/nmap.xsl。 这告诉浏览器从Insecire.Org中加载最新的样式表。这使得 没安装Nmap(和nmap.xsl) 的机器中可以方便地查看结果。因此,URL更方便使用,本地文件系统 的nmap.xsl用于默认方式。

  • 该选项是将,原先xml样式表由本地nmap默认自带的,更改为我们手动指定的样式地址;
<?xml-stylesheet href="https://nmap/data/nmap.xsl" type="text/xsl"?>

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.213 -oX d:\attack\nmap.xml --stylesheet https://nmap/data/nmap.xsl
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:22 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00099s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 0.84 seconds

D:\attack\nmap-7.92>
  • 原先默认样式位置:

  • <?xml-stylesheet href="file:///D:/attack/nmap-7.92/nmap.xsl" type="text/xsl"?>
    
    D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.213 -oX d:\attack\nmap.xml
    Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:24 中国标准时间
    Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
    Host is up (0.00067s latency).
    Not shown: 994 closed tcp ports (reset)
    PORT    STATE SERVICE
    135/tcp open  msrpc
    139/tcp open  netbios-ssn
    443/tcp open  https
    445/tcp open  microsoft-ds
    902/tcp open  iss-realsecure
    912/tcp open  apex-mesh
    
    Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds
    
    
–no-stylesheet (忽略XML声明的XSL样式表)

使用该选项禁止Nmap的XML输出关联任何XSL样式表。 xml-stylesheet指示被忽略。

  • 禁用加载样式
<!-- Nmap 7.92 scan initiated Wed Nov 24 12:25:30 2021 as: nmap.exe -sS -oX d:\\attack\\nmap.xml -&#45;no-stylesheet 192.168.31.213 -->
<nmaprun scanner="nmap" args="nmap.exe -sS -oX d:\\attack\\nmap.xml -&#45;no-stylesheet 192.168.31.213" start="1637727930" startstr="Wed Nov 24 12:25:30 2021" version="7.92" xmloutputversion="1.05">

D:\attack\nmap-7.92>nmap.exe -sS 192.168.31.213 -oX d:\attack\nmap.xml --no-stylesheet
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:25 中国标准时间
Nmap scan report for DESKTOP-1K49IFO (192.168.31.213)
Host is up (0.00019s latency).
Not shown: 994 closed tcp ports (reset)
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds
902/tcp open  iss-realsecure
912/tcp open  apex-mesh

Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds

D:\attack\nmap-7.92>

其它选项

本节描述一些重要的(和并不重要)的选项,这些选项 不适合其它任何地方。

-6 (启用IPv6扫描)

从2002年起,Nmap提供对IPv6的一些主要特征的支持。ping扫描(TCP-only)、 连接扫描以及版本检测都支持IPv6。除增加-6选项外, 其它命令语法相同。当然,必须使用IPv6地址来替换主机名,如 3ffe:7501:4819:2000:210:f3ff:fe03:14d0。 除“所关注的端口”行的地址部分为IPv6地址。IPv6目前未在全球广泛采用,目前在一些国家(亚洲)应用较多, 一些高级操作系统支持IPv6。使用Nmap的IPv6功能,扫描的源和目 的都需要配置IPv6。如果ISP(大部分)不分配IPv6地址,Nmap可以采用 免费的隧道代理。一种较好的选择是BT Exact,位于https://tb.ipv6.btexact/。 此外,还有Hurricane Electric,位于http://ipv6tb.he/。6to4隧道是 另一种常用的免费方法。

D:\attack\nmap-7.92>nmap.exe -6 192.168.31.1
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:29 中国标准时间
Warning: Hostname 192.168.31.1 resolves, but not to any IPv6 address. Try scanning without -6
Failed to resolve "192.168.31.1".
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.07 seconds

警告:主机名 192.168.31.213 可以解析,但不能解析为任何 IPv6 地址。 尝试不使用 -6 进行扫描
无法解析“192.168.31.213”。
警告:未指定目标,因此扫描了 0 个主机。
Nmap 完成:0.07 秒内扫描了 0 个 IP 地址(0 个主机)

-A (激烈扫描模式选项)

这个选项启用额外的高级和高强度选项,目前还未确定代表的内容。目前,这个选项启用了操作系统检测(-O) 和版本扫描(-sV),以后会增加更多的功能。 目的是启用一个全面的扫描选项集合,不需要用户记忆大量的 选项。这个选项仅仅启用功能,不包含用于可能所需要的 时间选项(如-T4)或细节选项(-v)。

  • 使用-A选项后我们可以获取更加详细的信息和更加直观的方式。
D:\attack\nmap-7.92>nmap.exe -A 192.168.31.1
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:30 中国标准时间
Stats: 0:00:43 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 75.00% done; ETC: 12:31 (0:00:12 remaining)
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0041s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE  VERSION
53/tcp   open  domain?
| fingerprint-strings:
|   DNSVersionBindReqTCP:
|     version
|_    bind
| dns-nsid:
|_  bind.version: \xA8\x1F\x01
80/tcp   open  http     nginx 1.12.2
|_http-title: Did not follow redirect to http://miwifi/diagnosis/index.html
|_http-server-header: nginx/1.12.2
443/tcp  open  ssl/http nginx 1.12.2
|_http-title: Did not follow redirect to http://miwifi/diagnosis/index.html
| ssl-cert: Subject: commonName=www.miwifi/organizationName=XiaoMi/stateOrProvinceName=ShenZhen/countryName=CN
| Not valid before: 2020-06-28T08:08:17
|_Not valid after:  2030-06-26T08:08:17
|_http-server-header: nginx/1.12.2
|_ssl-date: TLS randomness does not represent time
| tls-alpn:
|_  http/1.1
| tls-nextprotoneg:
|_  http/1.1
8080/tcp open  http     nginx 1.12.2
|_http-title: Redmi\xE8\xB7\xAF\xE7\x94\xB1\xE5\x99\xA8
|_http-open-proxy: Proxy might be redirecting requests
|_http-server-header: nginx/1.12.2
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap/cgi-bin/submit.cgi?new-service :
SF-Port53-TCP:V=7.92%I=7%D=11/24%Time=619DC00A%P=i686-pc-windows-windows%r
SF:(DNSVersionBindReqTCP,30,"\0\.\0\x06\x85\x80\0\x01\0\x01\0\0\0\0\x07ver
SF:sion\x04bind\0\0\x10\0\x03\xc0\x0c\0\x01\0\x01\0\0\0\x01\0\x04\xc0\xa8\
SF:x1f\x01")%r(DNSStatusRequestTCP,1E,"\0\x1c\0\0\x94\x80\0\0\0\x01\0\0\0\
SF:0\xc0\x0c\0\x01\0\x01\0\0\0\x01\0\x04\xc0\xa8\x1f\x01");
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)
No exact OS matches for host (If you know what OS is running on it, see https://nmap/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.92%E=4%D=11/24%OT=53%CT=1%CU=39778%PV=Y%DS=1%DC=D%G=Y%M=64644A%
OS:TM=619DC0AA%P=i686-pc-windows-windows)SEQ(SP=104%GCD=1%ISR=10C%TI=Z%CI=I
OS:%II=I%TS=7)SEQ(CI=I%II=I)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11N
OS:W6%O4=M5B4ST11NW6%O5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=7120%W2=7120%W3=7120
OS:%W4=7120%W5=7120%W6=7120)ECN(R=Y%DF=Y%T=40%W=7210%O=M5B4NNSNW6%CC=N%Q=)T
OS:1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0
OS:%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6
OS:(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=16
OS:4%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)

Network Distance: 1 hop

TRACEROUTE
HOP RTT     ADDRESS
1   4.11 ms XiaoQiang (192.168.31.1)

OS and Service detection performed. Please report any incorrect results at https://nmap/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 177.54 seconds

–datadir (说明用户Nmap数据文件位置)

Nmap在运行时从文件中获得特殊的数据,这些文件有 nmap-service-probesnmap-servicesnmap-protocolsnmap-rpcnmap-mac-prefixesnmap-os-fingerprints。Nmap首先 在--datadir选项说明的目录中查找这些文件。 未找到的文件,将在BMAPDIR环境变量说明的目录中查找。 接下来是用于真正和有效UID的~/.nmap 或Nmap可执行代码的位置(仅Win32);然后是是编译位置, 如/usr/local/share/nmap/usr/share/nmap。 Nmap查找的最后一个位置是当前目录。

–send-eth (使用原以太网帧发送)

要求Nmap在以太网(数据链路)层而不是IP(网络层)发送 报文。默认方式下,Nmap选择最适合其运行平台的方式,原套接 字(IP层)是UNIX主机最有效的方式,而以太网帧最适合Windows操作 系统,因为Microsoft禁用了原套接字支持。在UNIX中,如果没有其 它选择(如无以太网连接),不管是否有该选项,Nmap都使用原IP包。

–send-ip (在原IP层发送)

要求Nmap通过原IP套接字发送报文,而不是低层的以 太网帧。这是--send-eth选项的补充。

–privileged (假定用户具有全部权限)

告诉Nmap假定其具有足够的权限进行源套接字包发送、 报文捕获和类似UNIX系统中根用户操作的权限。默认状态下, 如果由getuid()请求的类似操作不为0,Nmap将退出。 --privileged在具有Linux内核性能的类似 系统中使用非常有效,这些系统配置允许非特权用户可以进行 原报文扫描。需要明确的是,在其它选项之前使用这些需要权 限的选项(SYN扫描、操作系统检测等)。Nmap-PRIVILEGED变量 设置等价于--privileged选项。

D:\attack\nmap-7.92>nmap.exe --privileged 192.168.31.1
Starting Nmap 7.92 ( https://nmap ) at 2021-11-24 12:38 中国标准时间
Nmap scan report for XiaoQiang (192.168.31.1)
Host is up (0.0038s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy
MAC Address: 64:64:4A:9C:59:8B (Beijing Xiaomi Mobile Software)

Nmap done: 1 IP address (1 host up) scanned in 1.61 seconds

-V; --version (打印版本信息)

打印Nmap版本号并退出。

-h; --help (打印帮助摘要面)

打印一个短的帮助屏幕,列出大部分常用的 命令选项,这个功能与不带参数运行Nmap是相同的。

脚本扫描:

-sC:

相当于–script=default

–script= <Lua 脚本>

<Lua 脚本> 是逗号分隔的列表目录、脚本文件或脚本类别

  • –script=all 扫描系统漏洞

–script-args=<n1=v1,[n2=v2,…]>:

为脚本提供参数

–script-args-file=filename:

在文件中提供 NSE 脚本参数

–script-trace:

显示所有发送和接收的数据

–script-updatedb:

更新脚本数据库。

–script-help=<Lua 脚本>:

显示有关脚本的帮助。
<Lua 脚本> 是一个逗号分隔的脚本文件列表或脚本类别。

常用命令:

确定操作系统和版本号:-O -sV

nmap -O -sV 82.156.14.67

-O:操作系统探测
-sV:版本探测

本文标签: 详解 用途 意义 参数 关键