nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定。
注意:nmap命令大小写有区别。
-sS 隐秘的TCP Syn扫描
-Pn 不要使用ping命令判断主机(默认所有主机存活)
-A 获取深入的服务枚举和旗标获取
-oX 生成xml文件
-sI 使用某空闲主机进行扫描(借用他人的IP地址,可以隐蔽自身)
-sT 隐秘的TCP连接扫描
--script=XXX 扫描XXX漏洞
-p[端口号] 扫描端口
命令:(大小写有区别)
s:Scan
V:版本号
前言:针对防火墙和入侵检测系统(IDS)
基于主机的防火墙(一个运行在单独目标计算机上的防火墙,比如,你的计算机中现在运行的防火墙)
基于网络的防火墙(一个用于保护整个网络,并且被部署在网络节点上的防火墙)
1.Open(端口开放)
2.Closed(端口关闭)
3.Filtered(Nmap不确定端口是否打开或者关闭)
4.Unfiltered(Nmap能够访问这个端口,但是不清楚这个端口打开的状态)
1、TCP ACK Scan (-sA)
使用这个命令将发送ACK包,而不是SYN包,因为如果远程计算机中有防火墙在工作的话,ACK包是不会被防火墙记录的,而且防火墙对待ACK包和对待SYN包的响应是一样的。TCP ACK扫描开始时需要root权限(Nmap启动时使用root权限启动),并且他对于对付无状态的防火墙和IDS有很好的效果。
2、Fragment Packets (-f)
这是一个非常通用的概念,并且可以被用在许多不同的情况下,例如:如果目标机器没有能力处理大量的包,那么碎片技术可以有效的绕过防火墙。这个技术的参数是-f,它将提交分成小段的IP包,这些小的包被称为碎片IP包。如果你想机一部的打散IP头的话,可以使用双-f(即:-ff)。
3、Spoof MAC Address
这是个更简单的技术,你可以伪造你的MAC(攻击者的MAC)地址。MAC地址欺骗造成了受害者检测提交来源困难的局面。Nmap可以每个扫描选择一个完整的随机MAC地址,并且这些MAC地址都是基于不同厂商的,另外的设置是手工的指定MAC地址(通过这样,攻击者能够在相同网络中伪造一台计算机地址)。Nmap有一个叫做nmap-mac-prefixes的数据库,当把厂商的名字提供给这个数据库时,它会从中找到满足条件的MAC地址。
4、Nmap Timing Option
时间参数是Nmap的一个非常重要和有趣的功能,因为,有时你需要在两次提交之间有一定的延时。这样的情况有很多原因,但是最重要的原因是网络;有时,受害者的计算机和实际网络不能处理大量的提交。作为一个渗透测试人员,你需要确定你的扫描不会造成拒绝服务攻击(DoS),所以适时的响应和提交在扫描中是非常重要的。Nmap有非常多的功能和参数,对适时的扫描目标是非常有帮助的,碎片技术(-f)对于拆分你的提交也是一个非常有用的技术。
5、Delay (–scan_delay)
这是用户控制每次提交之间时间的做好参数,因为你可以使用整数形式控制你每次探查所需要的间隔,不过不要忘记时间的单位:
毫秒e.g. 5ms
秒 e.g. 5s
分 e.g. 5m
时 e.g. 5h
6、Host Timeout Option (–host-timeout)
当你扫描一个局域网络时,有时会有一个主机要很长时间才响应,等待着单独以的一台是很痛苦的。有很多原因造成响应缓慢,像网络连通性或者防火墙,如果你不想浪费他多时间在这上面的话,可以设置一个时间限制。
7、Nmap Scripting
Nmap Scripting是Nmap最好的功能之一。Nmap的脚本对渗透测试者是非常有用的,因为他们可以节省喝多的时间与操作。在写这篇文章时,Nmap Scripting引擎已经超过了400个脚本,并且你也可以构造你自己的脚本,而且每个人都可以构造脚本,提交到脚本引擎中来帮助社区中的渗透测试人员。
这是一个用于检测以下漏洞的重要脚本:
1.MS08-067 Windows vulnerability that can be exploited
2.Conficker malware on the target machine
3.Denial of service vulnerability of Windows 2000
4.MS06-025 Windows vulnerability
5.MS07-029 Windows vulnerability
如果你想在web server中枚举出web站点的目录,这个Nmap脚本可以帮你很好的达到这个目的。http-enum脚本也可以发现打开的端口和每个端口软件的版本。
这个脚本可以用于查看目标机器是否存在Samba堆溢出CVE-2012-1187。
许多机构在运行SMTP服务时,考虑到安全的因素,没有使用默认端口。Smtp-strangeport是一个可以判断SMTP是否运行在默认端口的脚本
顾名思义,这个脚本可以从web server获得PHP版本信息。这个软件版本信息对于渗透测试人员发现漏洞很重要,所以这个脚本对于web应用程序渗透测试非常有帮助。