nmap命令

来源:互联网 发布:云端数据库的搭建 编辑:程序博客网 时间:2024/06/06 03:35

nmap是一个网络连接扫描软件,用来扫描目标主机开放的网络连接端,确定哪些服务运行在哪些连接端,并且推断计算机的操作系统(又称指纹识别),是网络安全领域一个常用的工具。

1 nmap下载

windows、Linux、Mac下载地址

2 目标说明

(1)nmap支持指定目标IP地址或主机名。

(2)nmap支持CIDR风格的地址,可以附加 一个/numbit在一个IP地址或主机名后面, Nmap将会扫描所有和该参考IP地址具有numbit相同比特的所有IP地址或主机。

  • 192.168.10.0/24会扫描192.168.10.0-192.168.10.255之间的256台机器(24代表24个1,相当于子网掩码255.255.255.0)
  • 192.168.10.40/24会扫描192.168.10.0-192.168.10.255之间的256台机器
  • 假设主机 scanme.nmap.org的IP地址是205.217.153.62, scanme.nmap.org/16 将扫描205.217.0.0和205.217.255.255之间的65,536 个IP地址
  • 所允许的最小值是/1, 这将会扫描半个互联网。最大值是/32,这将会扫描该主机或IP地址

(3)nmap支持用逗号分开的数字或范围列表为IP地址的每个八位字节指定扫描的范围。

  • 192.168.0-255.1-254 将略过在该范围内以.0和.255结束的地址(以.0或者.255 结束的IP地址通常是广播地址)
  • 范围不必限于最后的8位:0-255.0-255.13.37 将在整个互联网范围内扫描所有以13.37结束的地址

(4)IPv6地址只能用规范的IPv6地址或主机名指定,CIDR 和八位字节范围不支持IPv6。

(5)nmap命令行接受多个主机说明,它们不必是相同类型。
例:nmap scanme.nmap.org 192.168.0.0/8

3 主机发现

3.1 原理

(1)使用ping发送ICMP回声请求报文
(2)使用TCP SYN/ACK、UDP探测端口以确定主机是否活跃
(3)ARP扫描

3.2 命令选项

-P*选项(用于选择ping的类型,可以被结合使用)

-sL(列表扫描)

列表扫描是主机发现的退化形式,它仅仅列出指定网络上的每台主机,不发送任何报文到目标主机。默认情况下,nmap仍然对主机进行反向域名解析以获取它们的名字。

-sP(Ping扫描)

  • 该选项告诉Nmap仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。 没有进一步的测试 (如端口扫描或者操作系统探测)。
  • 比列表扫描更积极,了解多少主机正在运行比列表扫描提供的一列IP和主机名往往更有价值。
  • 地毯式ping,比ping广播地址更可靠,因为许多主机对广播请求不响应。
  • 默认情况下,发送一个ICMP回声请求和一个TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文 (用connect()系统调用)到目标机的80端口。

-P0(无ping)

  • 跳过主机发现,把所有主机当作活跃主机对待
  • 用-P0禁止 主机发现会使Nmap对每一个指定的目标IP地址 进行所要求的扫描。

-PI

  • nmap使用真正的ping(ICMPecho请求)来扫描目标主机是否正在运行。
  • 使用这个选项让nmap发现正在运行的主机的同时,nmap也会对你的直接子网广播地址进行观察。
  • 直接子网广播地址一些外部可达的IP地址,把外部的包转换为一个内向的IP广播包,向一个计算机子网发送。这些IP广播包应该删除,因为会造成拒绝服务攻击(例如smurf)。

-PS [portlist] (TCP SYN Ping)

  • 该选项发送一个设置了SYN标志位的空TCP报文,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报文。

参考文献
http://www.nmap.com.cn/doc/manual.shtm
http://www.xuexila.com/diannao/anquan/fanghuoqiang/792696.html
http://jingyan.baidu.com/article/47a29f24312010c0142399f1.html
http://www.freebuf.com/articles/network/32302.html

原创粉丝点击