渗透测试工具 —— Nmap

Nmap 是一款网络扫描和主机检测的工具。数据库

Nmap 的功能不局限于收集信息和枚举,同时能够用来做为一个漏洞探测器或安全扫描器。安全

Nmap 适用于 Winodws、Linux、Mac 等操做系统。Nmap 可用于:网络

检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操做系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap 的脚本)tcp

 

Nmap 使用不一样的技术来执行扫描,包括:TCP 的 connect() 扫描,TCP 反向的 ident 扫描,FTP 反弹扫描等。ide

Nmap 的使用取决于目标主机,由于有一个简单的(基本)扫描和预先扫描之间的差别。工具

咱们须要使用一些先进的技术来绕过防火墙和入侵检测/防护系统,以得到正确的结果。测试

#nmap cnblogs.com      (扫描单一的一个主机)操作系统

#nmap 192.168.1.2     (扫描单一的一个主机)日志

#nmap 192.168.1.1/24   (扫描整个子网)blog

#nmap 192.168.1.2 192.168.1.5(扫描多个目标)

#nmap 192.168.1.1-100     (扫描IP地址为192.168.1.1-192.168.1.100内的全部主机)

#nmap -iL target.txt    (若是你有一个 ip 地址列表,将这个保存为一个 txt 文件,和 namp 在同一目录下,扫描这个 txt 内的全部主机)

#nmap -sL 192.168.1.1/24  (扫描的全部主机的列表)

#nmap 192.168.1.1/24 -exclude 192.168.1.1(扫描除过某一个 ip 外的全部子网主机

#nmap 192.168.1.1/24 -exclude file xxx.txt  (xxx.txt 中的文件将会从扫描的主机中排除)

#nmap -p80,21,23 192.168.1.1  (扫描特定主机上的 80、2一、23 端口)

渗透测试工具Nmap从初级到高级 - 第1张  | 阿德马Web安全

从上面咱们已经了解了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从初级到高级 - 第2张  | 阿德马Web安全

 

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从初级到高级 - 第3张  | 阿德马Web安全

这种状况是很是不理想的,应该是远程主机作了针对操做系统检测的防范。

若是 Nmap 不能检测到远程操做系统类型,那么就没有必要使用 -osscan_limit 检测。

渗透测试工具Nmap从初级到高级 - 第4张  | 阿德马Web安全

想好经过Nmap准确的检测到远程操做系统是比较困难的,须要使用到 Nmap 的猜想功能选项, –osscan-guess 猜想认为最接近目标的匹配操做系统类型。

# nmap -O –osscan-guess 192.168.1.1

相关文章
相关标签/搜索