Nmap是一款网络扫描和主机检测的利器。Nmap 的功能不局限于收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。Nmap 适用于 Winodws、Linux、Mac 等操作系统。
Nmap可检测:活在网络上的主机(主机发现)
Nmap可检测:检测主机上开放的端口(端口发现或枚举)
Nmap可检测:检测到相应的端口(服务发现)的软件和版本
Nmap可检测:检测操作系统,硬件地址,以及软件版本
Nmap可检测:检测脆弱性的漏洞(Nmap支持脚本引擎 NSE)
Tcp SYN Scan (sS)
这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得 Nmap 不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话。因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势。
如果 Nmap 命令中没有指出扫描类型,默认的就是Tcp SYN。但是它需要 root/administrator 权限。
nmap -sS 192.168.1.1
Tcp connect() scan(sT)
如果不选择SYN扫描, TCP connect() 扫描就是默认的扫描模式》。不同于 Tcp SYN 扫描,Tcp connect() 扫描需要完成三次握手,并且要求调用系统的 connect()。Tcp connect() 扫描技术只适用于找出 TCP 和 UDP 端口。
Udp scan(sU)
顾名思义,这种扫描技术用来寻找目标主机打开的 UDP 端口。它不需要发送任何的 SYN 包,因为这种技术是针对 UDP 端口的。UDP 扫描发送 UDP 数据包到目标主机,并等待响应,如果返回 ICMP 不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的。
nmap -sU 192.168.1.1
FIN scan (sF)
有时候 Tcp SYN 扫描不是最佳的扫描模式,因为有防火墙的存在。目标主机有时候可能有 IDS 和 IPS 系统的存在,防火墙会阻止掉 SYN 数据包。发送一个设置了 FIN 标志的数据包并不需要完成 TCP 的握手。
FIN 扫描也不会在目标主机上创建日志(FIN 扫描的优势之一)。个类型的扫描都是具有差异性的,FIN 扫描发送的包只包含 FIN 标识,NULL 扫描不发送数据包上的任何字节,XMAS 扫描发送FIN、PSH 和 URG 标识的数据包。
PING Scan (sP)
PING扫描不同于其它的扫描方式,因为它只用于找出主机是否是存在在网络中的。它不是用来发现是否开放端口的。PING 扫描需要 ROOT 权限,如果用户没有 ROOT 权限,PING 扫描将会使用 connect() 调用。
nmap -sP 192.168.1.1
版本检测(sV)
版本检测是用来扫描目标主机和端口上运行的软件的版本。它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本。使用版本检测扫描之前需要先用 TCP SYN 扫描开放了哪些端口。
Idle scan (sL)
Idle scan 是一种先进的扫描技术,它不是用你真实的主机 ip 发送数据包,而是使用另外一个目标网络的主机发送数据包。
nmap -sL 192.168.1.6 192.168.1.1
Idle scan 是一种理想的匿名扫描技术,通过目标网络中的 192.168.1.6 向主机 192.168.1.1 发送数据,来获取 192.168.1.1 开放的端口
有需要其它的扫描技术,如 FTP bounce(FTP反弹), fragmentation scan(碎片扫描), IP protocol scan(IP协议扫描),以上讨论的是几种最主要的扫描方式。
Nmap的OS检测(O)
Nmap最重要的特点之一是能够远程检测操作系统和软件,Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的,通过获取的信息你可以知道已知的漏洞。Nmap有一个名为的nmap-OS-DB数据库,该数据库包含超过2600操作系统的信息。 Nmap把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。
上面的例子清楚地表明,Nmap的首次发现开放的端口,然后发送数据包发现远程操作系统。操作系统检测参数是O(注意是大写哦!)
Nmap的操作系统指纹识别技术:设备类型(路由器,工作组等)运行(运行的操作系统)操作系统的详细信息(操作系统的名称和版本)网络距离(目标和攻击者之间的距离跳数)
如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。
以上命令告诉发信主机远程主机是存活在网络上的,所以没有必要发送ping请求,使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现。
OS Scan 的结果是不可靠的,因为没有发现至少一个开放或者关闭的端口。
这种情况是非常不理想的,应该是远程主机做了针对操作系统检测的防范。
如果 Nmap 不能检测到远程操作系统类型,那么就没有必要使用 -osscan_limit 检测。
想好通过Nmap准确的检测到远程操作系统是比较困难的,需要使用到 Nmap 的猜测功能选项, –osscan-guess 猜测认为最接近目标的匹配操作系统类型。
#nmap -O –osscan-guess 192.168.1.1
联系客服