admin 管理员组

文章数量: 887016

nmap是一个扫描工具,可通过https://nmap网站下载。

用法:可通过主机名, IP, 网络扫描,如soso、soso/24, 192.168.0.1,10.0.0-255.1-254扫描。

1、通过文件中的IP来扫描:-iL iplist.txt

-iR iplist.txt:随机扫描

2、发现:

-sn 10.1.1.0/24:仅做主机的ping扫描,不做端口探测

-sP:仅ping扫描P

-sL:仅打印一个目标主机列表,列出存活主机并进行反向DNS列出主机名,但不发送任何数据包

-sn:不做端口扫描

-P*:选择ping类型扫描,如果没有给出主机发现选项,Nmap发送一个ICMP echo请求,一个TCP SYN包到443端口,一个TCP ACK包到80端口,和一个ICMP时间戳请求。(对于IPv6,ICMP时间戳请求被省略了,因为它不是ICMPv6的一部分。)这些默认值等同于-PE -PS443 -PA80 -PP选项。这方面的例外是ARP(用于IPv4)和Neighbor Discovery(用于IPv6)扫描,这些扫描用于本地以太网上的任何目标。

-PS:TCP/SYN ping

-PA:TCP/ACK ping

-PU:UDP ping(端口不可到达信息,表明主机存活)

-Pn -p80 -oX port80s.xml -oG port80s.gnmap 10.1.1.1/20:探测80端口并保存到port80s.xml (无论是否存活,均进行强制探测)

-PY22,53:SCTP init ping

-PE |-PP | -PM:PE是普通 的echo回声请求0,PP是时间戳14和掩码请求18

-PR:ARP ping

-P0:无ping扫描

-Pn 10.1.1.0/24 野蛮发现

-Pu:UDP探测

3、扫描技巧:

-A:同时打开操作系统版本和版本探测

-O:打开操作系统版本检测

-v:详细扫描

-p port-range :如22,53,3389,0-21,仅扫描指定port,例如,参数-p U:53,111,137,T:21-25,80,139,8080将扫描UDP端口53、111和137,以及列出的TCP端口。注意,要同时扫描UDP和TCP,您必须指定-sU和至少一种TCP扫描类型(如-sS、-sF或-sT)。如果没有给出协议限定符,则端口号将被添加到所有协议列表中。

-v -iR 1000 -Pn -p 80:随机打开1K个主机,检测是否存在80端口开放,-Pn禁用主机枚举

-s*:是端口扫描

-F (Fast (limited port) scan)快速的有限端口扫描

-sV:打开版本探测

-sS:隐蔽的SYN扫描(stealth SYN,半开放扫描)

-sT:常见TCP连接扫描

-sA:TCP ACK scan

-sW:TCP windows 扫描,它利用了某些系统的实现细节来区分开放的端口和关闭的端口,而不是在返回RST时总是不加过滤的打印。它通过检查返回的RST数据包的TCP窗口字段来做到这一点。在一些系统中,开放的端口使用正的窗口大小(即使是RST数据包),而关闭的端口的窗口为零。因此,当它收到RST返回时,Window扫描并不总是将一个端口列为未过滤的端口,而是在该重置的TCP窗口值为正或零时,将该端口列为开放或关闭。

这种扫描依赖于互联网上少数系统的实现细节,所以你不能总是相信它。不支持它的系统通常会返回所有关闭的端口。

-b <FTP relay host> (FTP bounce scan):ftp中继扫描,FTP协议(RFC 959)的一个有趣的特点是支持所谓的代理FTP连接。这允许用户连接到一个FTP服务器,然后要求将文件发送到一个第三方服务器。这样的功能在很多方面都容易被滥用,所以大多数服务器已经停止支持它。这个功能允许的滥用之一是导致FTP服务器对其他主机进行端口扫描。只需要求FTP服务器依次向目标主机的每个感兴趣的端口发送一个文件。错误信息将描述该端口是否开放。

--scanflags (定制TCP scan)

-sN-sF-sX (TCP NULL, FIN, and Xmas scans)这三种扫描类型(下一节描述的--scanflags选项甚至可以实现更多)利用了TCP RFC中一个微妙的漏洞来区分开放和关闭的端口。RFC 793的第65页说,"如果[目的]端口状态是CLOSED ....,一个不包含RST的传入段会导致一个RST被发送作为响应"。然后,下一页讨论了发送到开放端口的数据包,没有设置SYN、RST或ACK位,指出:"你不太可能到达这里,但如果你到达了,就放弃这个网段,然后返回。"

当扫描符合这个RFC文本的系统时,任何不包含SYN、RST或ACK位的数据包,如果端口关闭,将导致返回RST,如果端口开放,则根本没有响应。只要不包括这三个位,其他三个位的任何组合(FIN, PSH, 和URG)都是可以的。Nmap用三种扫描类型来利用这一点

-sl:<zombie host[:probeport]> (Idlescan)

--send-ip:指定源IP

-n:不解析域名

-R:解析域名

--system-dns 使用系统DNS解析域名

--dns-servers <server1>[,<server2>[,...]]用于反向DNS的服务器

--disable-arp-ping:Nmap通常对本地连接的以太网主机进行ARP或IPv6邻居发现(ND)发现,即使使用其他主机发现选项如-Pn或-PE。要禁用这个隐含行为,使用--disable-arp-ping选项。

--discovery-ignore-rst:附加选项,防止被防火墙欺骗

--traceroute :跟踪路由的工作原理是发送低TTL(生存时间)的数据包,试图从扫描器和目标主机之间的中间跳数中获取ICMP超时消息。标准的traceroute实现从TTL为1开始,然后递增TTL直到到达目标主机。Nmap的traceroute从高TTL开始,然后递减TTL直到它达到0。这样做可以让Nmap采用聪明的缓存算法来加速对多个主机的追踪。

--exclude 10.1.1.1,10.1.1.3

-b <ftp relay host> (FTP弹跳扫描)

4、端口扫描:

-p 1-65536 ,-p U:53,111,137,T:21-25,80,139,8080,S:9,--exclude-ports 22-23

-F,快速模式

-sS:TCP/SYN扫描(半开放扫描,发送几个SYN无响应,则被标记为filtered,如果收到icmp不可到达,类型3,代码3,该端口是关闭的,代码1、2、9、10或者13则被标记为filtered)

-sT:TCP connect()扫描,也就是默认的TCP扫描,调用berkeley sockets API编程接口,nmap用API获得每个连接尝试的状态信息,而不是读取响应的原始报文

-sU:UDP扫描

--allports:不为版本探测排除任何端口,默认情况下,9100(打印机端口会被排除)

5、脚本扫描:

--script:使用某个或者某类脚本进行扫描

--script-args:脚本的默认参数

--script-args-file

--script-trace:显示执行过程中发送和接收的数据

--script-updatedb

6、逃避和欺骗:

  -f | --mtu <val>: fragment packets (optionally w/given MTU),不能同时使用
  -D <decoy1,decoy2[,ME],...>: 用诱饵隐蔽扫描,这使得远程主机认为你指定为诱饵的主机也在扫描目标网络。因此,他们的IDS可能会报告5-10个来自不同IP地址的端口扫描,但他们不会知道哪个IP在扫描他们,哪个是无辜的诱饵
  -S <IP_Address>: 源地址欺骗,注意,您通常不会收到回复数据包(它们会被发送到您欺骗的IP),所以Nmap不会产生有用的报告
  -e <iface>: 使用指定网卡接口,一个令人惊讶的常见错误配置是只根据源端口号来信任流量
  -g | --source-port <portnum>: 使用指定源端口,或者
  --proxies <url1,[url2],...>:通过代理中继连接
  --data <hex string>: 添加一个指定的payload到发送包
  --data-string <string>: 添加一个指定的ASCII字串到发送包
  --data-length <num>: 添加一个指定的随机数据到发送包
  --ip-options <options>: Send packets with specified ip options
  --ttl <val>: Set IP time-to-live field
  --spoof-mac <mac address/prefix/vendor name>: 虚拟MAC
  --badsum: 虚假的 TCP/UDP/SCTP 校验

7、输出:

------------------------------------

BTW:如果出现NSOCK ERROR错误,请在powerShell下,重置一下winsock:

$>netsh winsock reset

本文标签: nmap