nmap
扫描4种基本技术:
Network Mapping:网络扫描,扫描网络网段主机
Port Scanning:扫描开放端口
Service and Version Detection:判断服务和版本
OS Detection:判断操作系统版本
端口和服务扫描:
Connect Scan:正式建立三次握手。SYN,SYN-ACK,ACK,RST。耗费资源,很多系统会对正式连接进行LOG记录,而对半开连接不进行log,所以常用半开连接扫描。
Half-open Scan:半开连接扫描。SYN,SYN-ACK,RST。常用扫描方法。容易被IPS发现。
Stealth Scan:隐匿扫描。发送FIN-ACK,ACK,FIN,Null标记位,XMAS等扫描方式。
主机扫描:
nmap -sV 判断操作系统和应用软件版本号。
不加任何参数(默认行为):进行主机发现,然后对每个活动目标执行SYN端口扫描,默认地对本地以太网上的目标执行ARP发现,进行traceroute。然后查本地service表显示服务。
扫描自己:Windows does not allow you to scan your own IP address, 127.0.0.1 loopback or localhost. You must use the -sT and -PN command-line options to scan your own Windows system.
-n:以数字格式显示,不进行域名反解。
-R:进行主机的域名反解。
-sP:主机发现。扫描出主机来。MAC地址(判断厂家)、IP地址。跨网段使用两个包 (tcp/80,icmp/echo),直连网络总是发送 (ARP request),不会使用其他方法。
-PE:通过ICMP echo request,就是PING。
-PS:仅仅发送TCP/80的SYN。收到reset说明端口关闭,收到SYN-ACK说明开放,,如果没响应,说明没有节点活动或被防火墙过滤。
-PA:发送TCP/80的ACK,收到reset说明节点active,或是防火墙给reset。PS和PA结合使用可判断是否存在状态化防火墙。
-PU:连接一个UDP高端口号31338,会收到ICMP端口不可达,如果没回应应该没有该接口,或者开放了这个端口。1.回送ICMP port unreachable表明active;2.回送错误信息,或者没有响应(1.主机不存在,2.开放端口)
-PP:发送ICMP时间请求。
-PM:发送ICMP掩码请求。
-PO:制造协议不可达。扫描协议号。-PO1协议号1。
-PR:ARP ping。
注意:-sP参数表明只做主机发现不做进一步扫描。只配置-sP表示使用默认方式实施主机扫描,也可以跟上-PS -PA -PP -PM...等等参数实施主机扫描,但是如果只配置-PS -PA -PP...参数,不仅仅主机发现,并且会对active主机实施端口扫描。默认-PS选项使用tcp/80端口。-p:指定端口。-p 443 -p 1-65535 -p-(所有端口)
-oG:保存文件。
-A:进行综合扫描,默认端口扫描、发现服务、操作系统版本判断、tracerouting、脚本扫描。
-iL:调用文件,对文件中的IP进行扫描。
--scanflags:指定标记位。nmap --scanflags PSH -p135 10.129.0.196 使用PSH和SYN两种不同的flag扫描相同主机相同服务得到的不同结果。发送PSH会收到reset,nmap会显示端口closed,但不代表端口没有开放。URG, ACK, PSH, RST, SYN, FIN,
--dns-servers:指定DNS服务器。
--system-dns:使用系统配置的DNS服务器。
--reason:显示原因。nmap -n -p 443 --scanflags PSH 172.16.97.35 --reason
--send-ip:直连网络不通过ARP ping而使用IP报文进行发现。
-iR:随机扫描。-iR 10,随机扫描10个主机。
-v vv:详细信息。
-d dd:debug信息。
-packet-trace:trace包信息,查看所有包发送和接收。
-sL:对主机进行DNS解析,来判断是否有这么个主机。不发任何扫描包,只进行DNS。
-P0:关闭主机发现。直接进行发包。一般先判断主机是否存在才会发包扫描探测。
nmap 192.168.1.0/24 192.168.100.10-25 myhost.xyz.com 三种方法指定主机范围!空格隔开。 nmap 192.168.5,10,15-16.10,20 逗号指定不连续主机 nmap -sP --exclude web.xyz.com,dns.xyz.com,mail.xyz.com 192.168.100.0/24 扫描网段,排除几个IP。 nmap –sV –iL windows_servers.txt 指定文件 nmap --excludefile asset_database.txt 192.168.0.0/16 扫描网段,排除文件中的主机 nmap -n -sP 1.1.1.0/24 nmap -n -oG nmapfile -sP 1.1.1.1-1.1.1.200
端口扫描:
NMAP的6种端口状态:
open:TCP打开,UDP打开的。
closed:关闭该端口的主机是可访问的,只是没有应用在侦听。
filtered:没有回应,可能被过滤掉。
unfiltered:没有被过滤的端口的主机是可访问的,无法判断open还是closed。(ACK SCAN专用)。
open|filtered:(UDP, IP Proto, FIN, Null, Xmas scans使用)无法判断是Open还是被过滤掉了。
closed|filtered:(IP ID idle scan专用)无法判断端口是closed还是被过滤掉了。
SYN扫描的不同结果:
1.收到SYN-ACK,说明Open。
2.收到RST,说明closed。
3.如果被过滤,则会收到ICMP unreachable error 或 no response。
扫描后列出的服务名称来源于nmap-service文件。
-sS:半开连接。TCP SYN SCAN。发SYN 收SYN-ACK 发RST
-sT:完整三次握手连接。发SYN 收SYN-ACK 发ACK 发RST
-sU:UDP的扫描。比较慢。
-sV:确认版本。进行版本探测。
-sO:协议扫描。
高级端口扫描:
-sN(tcp null scan):没有任何标记位的扫描。
-sF(fin scan):FIN置位的扫描。
-sX(xmas scan):FIN、PSH、URG置位的扫描。(RFC定义 如果包内不包含SYN,RST,ACK的任何一个flag,回送RST。)
都应该收到reset,一般都会被IDS发现。
-sW:进行tcp window扫描。一般端口要是开放的会回送正常大小窗口,如果窗口是关闭的则会回送0window。该扫描只有ACK被置位。
-sM:FIN和ACK置位的扫描。
--scanflags:如果flag指定冲突,NMAP使用SYN扫描
--traceroute:进行traceroute。
NMAP默认扫描的端口范围:来源于nmap-service中的1-1024端口,实际上不是。
NMAP扫描端口是随机选择端口,不按顺序。
-r:按照端口顺序扫描。
-p:指定扫描端口。
-p -100 :扫描1-100端口。
-p 60000-:扫描60000-65535端口。
-p-:扫描所有端口。
-F:快速扫描,只扫描nmap-services中的端口。
nmap –-servicedb /home/me/my-services 192.168.100.0/24
--servicedb:自定义nmap-services文件。
对协议号进行扫描:
nmap -sO -p 6 192.168.100.0/24
-D:伪装很多源一起进行扫描。
-f:制作很多碎片,每个8字节。
--mtu:它是碎片化的别名,我们可以指定它的大小。
nmap –sU –sS –p U:53,T:80,134–139 192.168.100.0/24 nmap –p ftp,http* 192.168.100.0/24 支持通配符(nmap-services中查询) nmap –p [6000–6100] 192.168.100.0/24(nmap-services中查询)