Nmap是一款网络扫描和主机检测的很是有用的工具。 Nmap是不局限于仅仅收集信息和枚举,同时能够用来做为一个漏洞探测器或安全扫描器。它能够适用于winodws,linux,mac等操做系统。Nmap是一款很是强大的实用工具,可用于:linux
检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操做系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)
Nmap是一个很是广泛的工具,它有命令行界面和图形用户界面。本人包括如下方面的内容:数据库
介绍Nmap安全
扫描中的重要参数网络
操做系统检测tcp
Nmap使用教程ide
Nmap使用不一样的技术来执行扫描,包括:TCP的connect()扫描,TCP反向的ident扫描,FTP反弹扫描等。全部这些扫描的类型有本身的优势和缺点,咱们接下来将讨论这些问题。工具
Nmap的使用取决于目标主机,由于有一个简单的(基本)扫描和预先扫描之间的差别。咱们须要使用一些先进的技术来绕过防火墙和入侵检测/防护系统,以得到正确的结果。下面是一些基本的命令和它们的用法的例子:测试
扫描单一的一个主机,命令以下:操作系统
#nmap cnblogs.com命令行
#nmap 192.168.1.2
扫描整个子网,命令以下:
#nmap 192.168.1.1/24
扫描多个目标,命令以下:
#nmap 192.168.1.2 192.168.1.5
扫描一个范围内的目标,以下:
#nmap 192.168.1.1-100 (扫描IP地址为192.168.1.1-192.168.1.100内的全部主机)
若是你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的全部主机,命令以下:
#nmap -iL target.txt
若是你想看到你扫描的全部主机的列表,用如下命令:
#nmap -sL 192.168.1.1/24
扫描除过某一个ip外的全部子网主机,命令:
#nmap 192.168.1.1/24 -exclude 192.168.1.1
扫描除过某一个文件中的ip外的子网主机命令
#nmap 192.168.1.1/24 -exclude file xxx.txt (xxx.txt中的文件将会从扫描的主机中排除)
扫描特定主机上的80,21,23端口,命令以下
#nmap -p80,21,23 192.168.1.1
从上面咱们已经了解了Nmap的基础知识,下面咱们深刻的探讨一下Nmap的扫描技术.
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端口.
#nmap -sT 192.168.1.1
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的握手.
root@bt:~# nmap -sF 192.168.1.8
Starting Nmap 5.51 at 2012-07-08 19:21 PKT
Nmap scan report for 192.168.1.8
Host is up (0.000026s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
111/tcp open|filtered rpcbind
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扫描开放了哪些端口.
#nmap -sV 192.168.1.1
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数据包发送到目标机器上,而后检查结果和数据库对照。
Initiating SYN Stealth Scan at 10:21
Scanning localhost (www.nxadmin.com) [1000 ports]
Discovered open port 111/tcp on www.nxadmin.com
Completed SYN Stealth Scan at 10:21, 0.08s elapsed (1000 total ports)
Initiating OS detection (try #1) against localhost (www.nxadmin.com)
Retrying OS detection (try #2) against localhost (www.nxadmin.com)
上面的例子清楚地代表,Nmap的首次发现开放的端口,而后发送数据包发现远程操做系统。操做系统检测参数是O(大写O)
Nmap的操做系统指纹识别技术:
设备类型(路由器,工做组等)
运行(运行的操做系统)
操做系统的详细信息(操做系统的名称和版本)
网络距离(目标和攻击者之间的距离跳)
若是远程主机有防火墙,IDS和IPS系统,你可使用-PN命令来确保不ping远程主机,由于有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。
# nmap -O -PN 192.168.1.1/24
以上命令告诉发信主机远程主机是存活在网络上的,因此没有必要发送ping请求,使用-PN参数能够绕过PING命令,可是不影响主机的系统的发现.
Nmap的操做系统检测的基础是有开放和关闭的端口,若是OS scan没法检测到至少一个开放或者关闭的端口,会返回如下错误:
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
OS Scan的结果是不可靠的,由于没有发现至少一个开放或者关闭的端口.
这种状况是很是不理想的,应该是远程主机作了针对操做系统检测的防范。若是Nmap不能检测到远程操做系统类型,那么就没有必要使用-osscan_limit检测。
想好经过Nmap准确的检测到远程操做系统是比较困难的,须要使用到Nmap的猜想功能选项, –osscan-guess 猜想认为最接近目标的匹配操做系统类型。
# nmap -O –osscan-guess 192.168.1.1
总结
Nmap是一个很是强大的工具,它具备覆盖渗透测试的第一方面的能力,其中包括信息的收集和统计。本文从初级到高级的讲解了Nmap入侵扫描工具的使用.但愿对你们有所帮助.