主动扫描:
相对被动扫描而言,主动扫描的范围要小得多。主动扫描一般都是针对目标发送特制的数据包,然后根据目标的反应来获得一些信息。这些信息主要包括目标主机是否在线,目标主机的指定端口是否开放,目标主机的操作系统,目标主机上运行的服务等等。
1、目标主机是否在线
2、目标主机上开放的端口
3、目标主机所使用的操作系统
4、目标主机上运行的程序
5、对Web服务进行扫描
一、Nmap常用扫描命令
— 常用命令(1)
-sS:TCP SYN扫描
-p:指定端口号扫描
-v:显示扫描过程
-F:快速扫描
-Pn:禁止ping后扫描:跳过主机发现的过程进行端口扫描
-A:全面的系统扫描:包括打开操作系统探测、版本探测、脚本探测、路径跟踪探测
扫描指定的IP开放端口:
nmap -sS -p 端口号 -v 192.168.1.2
使用半开扫描,指定端口号1-65535,显示扫描过程
穿透防火墙扫描:
nmap -Pn -A 192.168.1.2
服务器禁止ping命令,试试-Pn,nmap参数配合使用
— 常用命令(2)
-sU:UDP扫描
-sT:TCP扫描
-sV:扫描系统和程序版本号检测
--scrpt=vuln:全面的漏洞扫描
-n:禁止反向域名解析
-R:反向域名解析
-6:启用IPV6扫描
漏洞扫描:
nmap -script=vuln 192.168.1.2
使用vuln脚本进行全面的漏洞扫描
指纹识别扫描:
nmap -sV -v 192.168.1.2
扫描系统和程序版本号检测,并且输出详细信息
二、Nmap端口扫描状态
— 端口扫描状态
Open:端口开启
Closed:端口关闭
Filtered:端口被过滤,数据没有到达主机,返回的结果为空,数据被防火墙拦截
Unfiltered:未被过滤,数据没有到达主机,但是不能识别端口的当前状态
Open|filtered:开放或者被过滤,端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmac扫描中
Closed|filtered:关闭或者被过滤,只发生在IP、ID、idle扫描
三、Nmap漏洞扫描 - 信息收集
使用Nmap中的脚本进行信息收集
1、whois信息查询
nmap --script=whois-domain www.zkaq.cn
2、DNS解析查询
nmap --script=dns-brute shop.aqlab.cn
四、Nmap报告保存
1、标准保存
命令:nmap -oN test.txt shop.aqlab.cn
标准保存会把输出的结果保存到指定文件中
2、保存为xml格式
命令:nmap -oX test.xml shop.aqlab.cn
保存为xml格式需要用浏览器打开,查看结果
五、Nmap的基本用法
主动扫描一般都是针对目标发送特制的数据包,然后根据目标的反应来获得一些信息。这些信息主要包括目标主机是否在线,目标主机的指定端口是否开放,目标主机的操作系统,目标主机上运行的服务等等。
但是这些信息相当的重要,试想一下如果一台主机根本没有连上网络,那么我们对其进行网络安全渗透测试还有什么意义呢?测试目标主机是否在线可以帮助我们过滤掉无意义的主机,另外这些信息还可以帮助我们建立目标的网络拓扑。而目标端口、操作系统和服务测试则是我们进行进一步渗透测试的重要依据。可以进行主动扫描的工具也有很多,其中最为优秀的一定是非Nmap莫属。
1、对单个主机的扫描
使用Nmap最简单的方式就是在命令行中输入“nmap”以及<目标IP地址>
例如: kali@kali:~#nmap 192.168.157.131
2、对多个不连续的主机
对192.168.157.1、192.168.157.10、192.168.157.100这3台主机进行扫描
就可以使用以下命令: kali@kali:~#nmap 192.168.157.1 192.168.157.2 192.168.157.100
3、对连续范围内的主机进行扫描
以下命令来选择扫描192.168.157.1-255的主机
kali@kali:~#nmap -sn 192.168.157.1-255
4、对整个子网进行扫描
扫描整个192.168.157.1 ~192.168.157.255范围
你还可以使用以下命令: Kali@kali:nmap -sn 192.168.157.0/24
六、使用Nmap进行主机发现
— 使用Nmap进行主机发现(1)
我们经常有这样的经验,就是当网络不通的时候,要去ping一下网关,来检查网关是否正常。这其实和主机发现的原理是一样的。当测试的目标是一个网络时,那么显然只有其中在线(也就是开机并联网)的主机才是我们的目标,那么我们就需要使用主机发现技术来找出这些目标。Nmap中提供了很多种的主机发现方法,这些方法大都与TCP/IP协议族中的协议相对应。
我们经常有这样的经验,就是当网络不通的时候,要去ping一下网关,来检查网关是否正常。这其实和主机发现的原理是一样的。当测试的目标是一个网络时,那么显然只有其中在线(也就是开机并联网)的主机才是我们的目标,那么我们就需要使用主机发现技术来找出这些目标。Nmap中提供了很多种的主机发现方法,这些方法大都与TCP/IP协议族中的协议相对应。
— 使用ARP协议进行主机发现(2)
ARP活跃主机发现技术的原理:如果我们想要知道处在同一网段的IP地址为*.*.*.*的主机是否为活跃主机,只需要构造一个ARP 请求数据包,并广播出去,如果得到了回应,则说明该主机为活跃主机。 Nmap7.8中基于ARP协议的扫描技术会在可能使用的地方默认启用,例如扫描同一子网下的设备时,就会自动启用。但是注意这种扫描方式仅能用于与Nmap所在主机在同一子网的目标,例如执行: kali@kali:~$ nmap -sn 192.168.157.0/24
— 使用ICMP协议进行主机发现(3)
ICMP协议也位于TCP/IP协议族中的网络层,它的目的是在用于在IP主机、路由器之间传递控制消息。没有任何系统是完美的,互联网也一样。所以互联网也经常会出现各种的错误,为了发现和处理这些错误的ICMP(Internet Control Message Protocol,互联网控制报文协议)也就应运而生了。这种协议也可以用来实现活跃主机发现。
语法规则:Nmap -PE [目标]
语法规则:Nmap -PP [目标]
语法规则:Nmap -PM [目标]
— 使用TCP协议进行主机发现(4)
TCP协议的主要过程由三次握手构成:主动端先发送SYN报文,被动端回应SYN+ACK报文,然后主动端再回应ACK。利用这个过程,Nmap向目标发送SYN报文,如果对方回应了SYN+ACK,则说明目标在线。
1.TCP SYN扫描 Nmap -sn –PS 10000 60.2.22.35
2.TCP ACK扫描 Nmap -sn -PA 60.2.22.35
七、使用Nmap进行端口发现
如果我们把每一台网络设备看做是一间房子的话,那么这间房子应该有能够进去和出来的出入口,不过一般的房子只有一个出入口,这些出入口是供人们进出房子使用的。但是每个网络设备却有很多个出入口,最多可以达到65536(2^16)个,而这些出入口是供数据进出网络设备的。
八、使用Nmap进行扫描目标操作系统
目标的操作系统类型是一个十分重要的信息,如果我们知道了目标所使用的操作系统之后就可以大大的减小工作量。例如我们知道了目标系统为Windows XP,那么就不必再进行一些针对Linux系统的渗透测试方法了。同样如果目标系统为Windows 10,那么之前的MS08—067这些针对Windows XP系统的渗透模块也就不需要测试了。通常,越老旧的系统也就意味着越容易被渗透,所以我们在进行渗透测试的时候往往希望能找到目标网络中那些比较老的系统。
九、使用Nmap进行扫描目标服务
相对操作系统而言,那些安装在操作系统之上的软件更是网络安全的重灾区。所以在对目标进行渗透测试的时候,要尽量的检测出目标系统运行的各种软件。
十、将Nmap的扫描结果保存为XML文件
我们需要将Nmap扫描的结果保存起来,Nmap支持多种保存格式,这里我们只介绍其中最为常用的一种格式。目前最为流行的格式是XML格式。
十一、对Web服务进行扫描
我们以Kali中的dirb工具为例来演示一下获取Web应用程序所有目录和文件的方法。dirb是一个Web应用程序内容扫描工具,它可以按照字典来逐个测试某个目录或者文件是否存在。
由于现在很多网站并没有使用自行开发的web应用程序,而是使用了专门的建站程序。这样一来就有很多web服务器都运行着相同的源代码,例如比较出名的WordPress、Discuz等。比较危险的是一旦某一种建站程序出现了漏洞的话,将会影响到成千上万的web服务器。我们在进行渗透测试的时候,也需要获取一些关于web应用程序是否使用了建站程序的信息,这时可以考虑使用whatweb工具,这是一款优秀网络指纹识别软件,不仅有丰富的命令参数,还有上千个集成的插件。
总结:
1、初识Nmap
2、Nmap常用扫描指令
3、Nmap扫描状态
4、Nmap漏洞扫描
5、Nmap报告输出