端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关),但是端口扫描不但可以为黑客所利用,同时端口扫描还是网络安全工作者的必备的利器,通过对端口的扫描,了解网站中出现的漏洞以及端口的开放情况,对网站安全方面有着不可或缺的贡献。
端口的几种状态
扫描对于黑客和安全人员来说,扫描的流程是这样的:
Nmap,也就是Network Mapper,最早是Linux下的网络扫描和工具包。nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
其基本功能有三个,一是探测一组主机是否在线;其次是扫描主机端口,所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中,供进一步分析操作。
Nmap使用TCP/IP协议栈指纹准确地判断目标主机的操作系统类型。首先,Nmap通过对目标主机进行端口扫描,找出有哪些端口正在目标主机上监听。当侦测到目标主机上有多于一个开放的TCP端口、一个关闭的TCP端口和一个关闭的UDP端口时,Nmap的探测能力是最好的。Nmap工具的工作原理如表所示。
Nmap对目标主机进行一系列测试。利用得出的测试结果建立相应目标主机的Nmap指纹。最后,将此Nmap指纹与指纹库中指纹进行查找匹配,从而得出目标主机的操作系统类型。
Nmap常用扫描类型
1. TCP扫描(-sT)
这是一种最为普通的扫描方法,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现
运行的原理:通过建立TCP的三次握手连接来进行信息的传递
- Client端发送SYN;
- Server端返回SYN/ACK,表明端口开放;
- Client端返回ACK,表明连接已建立;
- Client端主动断开连接。
2. SYN扫描(-sS)
这是一种秘密的扫描方式之一,因为在SYN扫描中Client端和Server端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会再目标主机上留下任何的痕迹,但是这种扫描是需要root权限(对于windows用户来说,是没有root权限这个概念的,root权限是linux的最高权限,对应windows的管理员权限)
运行的原理图如下:
3. NULL扫描
NULL扫描是一种反向的扫描方法,通过发送一个没有任何标志位的数据包给服务器,然后等待服务器的返回内容。这种扫描的方法比前面提及的扫描方法要隐蔽很多,但是这种方法的准确度也是较低的, 主要的用途是用来判断操作系统是否为windows,因为windows不遵守RFC 793标准,不论端口是开启还是关闭的都返回RST包
但是虽然NULL具有这样的一些用处,但是本人却认为不宜使用NULL:
- NULL方法的精确度不高,端口的状态返回的不是很准确
- 要获取目标主机的运行系统,可以使用参数(-O),来获取对于一些操作系统无法准确判断的,可以加上参数(-osscan-guess)
- NULL扫描易被过滤
- FIN扫描
FIN扫描的原理与NULL扫描的原理基本上是一样的在这里就不重复了。
4. ACK扫描
ACK扫描的原理是发送一个ACK包给目标主机,不论目标主机的端口是否开启,都会返回相应的RST包,通过判断RST包中的TTL来判断端口是否开启
运行原理图:
TTL值小于64端口开启,大于64端口关闭。
大致上主要的扫描方法就是这些,除了我们可以按照这样些参数去执行扫描外,还可以自己定义一个TCP扫描包。
5. 自定义TCP扫描包的参数为(--scanflags)
例如:定制一个包含ACK扫描和SYN扫描的安装包。
命令:nmap --scanflags ACKSYN nmap.org
好了,接下来还有各种扫描方法的端口列表参数。
- PS 端口列表用,隔开[tcp80 syn 扫描]-PA 端口列表用,隔开[ack扫描](PS+PA测试状态包过滤防火墙【非状态的PA可以过】)【默认扫描端口1-1024】-PU 端口列表用,隔开[udp高端口扫描 穿越只过滤tcp的防火墙]
其他的常见命令
输出命令
- oN 文件名 输出普通文件
- oX 文件名 输出xml文件
错误调试:
- log-errors 输出错误日志
- packet-trace 获取从当前主机到目标主机的所有节点