nmap是一个扫描工具,可通过https://nmap.org网站下载。
用法:可通过主机名, IP, 网络扫描,如soso.com、soso.com/24, 192.168.0.1,10.0.0-255.1-254扫描。
-iR iplist.txt:随机扫描
-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探测
-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
--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用三种扫描类型来利用这一点
--send-ip:指定源IP
-n:不解析域名
-R:解析域名
--system-dns 使用系统DNS解析域名
--dns-servers
--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
-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(打印机端口会被排除)
--script:使用某个或者某类脚本进行扫描
--script-args:脚本的默认参数
--script-args-file
--script-trace:显示执行过程中发送和接收的数据
--script-updatedb
-f | --mtu
-D
-S
-e
-g | --source-port
--proxies
--data
--data-string
--data-length
--ip-options
--ttl
--spoof-mac
--badsum: 虚假的 TCP/UDP/SCTP 校验
------------------------------------
BTW:如果出现NSOCK ERROR错误,请在powerShell下,重置一下winsock:
$>netsh winsock reset