主机发现 >> 端口扫描、操作系统识别 >> 漏洞扫描
主机发现
判断目标主机工作状态(存活/关机),针对主机IP地址。
基于ICMP(ICMP查询报文)
操作:向目标主机发送ICMP查询报文,如回送请求(ping命令)、地址掩码请求,
目标主机应答,该主机存活。
优点:简单易行
缺点:目标主机无应答的多种可能性(大部分防火墙对于ICMP查询报文过滤)
基于IP(ICMP差错报告报文)
操作:向目标IP地址发送精心设计的IP数据包,诱使目标IP对应的存活主机返回ICMP差错报文, 暴露存活状态。
(1)向目标主机发送首部异常的IP报文
目标主机若存活,回复ICMP差错报告报文作为反馈
(2)利用MTU属性,向目标主机发送分片时有意漏发
目标主机若存活,返回“分片重组超时”的ICMP差错报告报文
优点:判定结果准确。ICMP差错报告报文不会被防火墙过滤拦截,否则,被保护的主机丧失ICMP差错报告能力
缺点:?
端口扫描
判断目标主机端口的工作状态(监听状态/关闭状态),基于常用应用程序的熟知端口,推断网络服务,为高效精准的网络攻击奠定基础。
TCP扫描
(待补充链接:TCP协议及其安全性分析)
- TCP全连接扫描
操作:利用TCP三次握手建立连接的全过程。
- 在扫描主机上确定目标主机及目标端口,利用操作系统提供的connect函数与目标端口进行TCP连接建立三次握手。
- 端口处于监听状态,connect函数成功返回0;端口关闭,connect函数失败,返回SOCKET_ERROR信息。
优点:得到结果准确、稳定可靠;connect函数对于调用者无权限要求。
缺点:(1)对于失败的TCP连接请求,目标主机会把失败的TCP连接请求及产生的错误信息记录到日志,若短时间内对目标主机大量端口扫描,会产生大量错误信息,暴露扫描行为;(2)对于成功的TCP连接,目标主机记录成功的TCP连接,若攻击者利用扫描确定开发的端口进行攻击,攻击成功后易被追溯。
- TCP SYN 扫描
操作:利用TCP三次握手的一半过程,刻意不建立完整的TCP连接,避免暴露。
- 扫描主机向目标主机发送请求连接的TCP报文 SYN=1(相同于第一次握手)
- 目标端口若处于监听状态,返回响应报文SYN=1,ACK=1(相同于第二次握手), 扫描主机收到响应报文后发送RST=1报文,终断连接建立过程。
- 目标端口若处于关闭状态,回复RST=1报文。
优点: 隐匿性好,一般系统不会记录这种不完整的TCP连接,扫描不易暴露。
缺点:攻击者自行构造TCP SYN数据包需管理员权限;一些防火墙和包过滤软件不断增强对于发送到各端口SYN数据包监视力度,谨防利用TCP连接建立过程进行扫描。
- TCP FIN扫描
操作:不依赖TCP连接建立过程,利用数据包FIN标志位。
- 扫描主机向目标端口发送FIN=1的数据包
- 目标端口若处于监听状态,不进行回应;若处于关闭状态,回复RST=1报文,复位连接。
优点:比TCP SYN扫描更隐蔽,不易暴露。
缺点:(1)构造数据包需要管理员权限;(2)当目标端口处于监听状态,不会做出任何响应,这意味着扫描主机必须等待超时,增加了扫描时间;(3)无回应的多种可能性,丢包;(4)不是所有系统都遵循RFC 793规定,如windows操作系统无论端口是否处于监听状态,均返回RST=1的连接复位报文。
- TCP NULL和TCP Xmas扫描
操作:与TCP FIN扫描过程相似,数据包标志位全部设置为0,其余过程包括目标主机响应与TCP FIN扫描相同。
UDP扫描
操作:基于UDP端口的通信特性,ICMP错误消息
- 扫描主机向目标端口发送UDP数据包
- 目标端口处于监听状态,不做响应;目标端口处于关闭状态,将返回ICMP_PROT_UNREACH消息。
优点:?
缺点:(1)UDP数据包和ICMP错误消息都可能丢包,判断不准确;(2)根据RFC 1812建议,多数操作系统限制ICMP错误信息的比例。
基于FTP代理连接
操作:利用FTP服务器的代理连接选项,通过FTP服务器对目标端口进行TCP扫描。
- 扫描主机与FTP服务器建立FTP会话
- 扫描主机使用PORT命令确定目标主机的端口P
- 扫描主机使用LIST命令让FTP服务器尝试启动一个到目标主机端口P的数据传输
- 若目标端口处于监听状态,则数据传输成功;目标端口处于关闭状态,扫描主机收到数据连接无法建立的回应
- 扫描主机利用PORT和LIST命令继续扫描目标主机端口,获取所有指定端口信息。
优点:难以跟踪监测;如果FTP服务器和目标主机处于同一局域网,则该扫描行为可绕过该局域网防火墙。
缺点:多数FTP服务器关闭代理连接选项。
端口扫描的隐蔽性策略:
- 调整扫描次序。打乱扫描的IP地址及端口次序,增强扫描活动随机性,降低扫描活动被检测概率。
- 减缓扫描速度。大部分扫描检测软件在固定窗口时间内进行通信信息收集分析,如果减缓扫描速度,判定慢速扫描行为需要相当多时间窗口,以此提高隐蔽性。
- 对数据包中字段进行随机化处理。传统扫描软件构造发送的数据包通常序号、确认号、源端口号或者标志位通常固定,这种行为一般不在正常网络通信中出现,检测软件基于此特征易发现扫描行为。在扫描报文首部随机填入合理数值,增加检测难度。
- 利用虚假的源地址。扫描主机源地址信息真实,则扫描必将暴露,因此采用虚假的源地址。冒充主机需要和扫描主机在网络拓扑上接近,使得扫描主机可以通过网络嗅探监视目标主机通信,获取目标主机扫描反馈信息。
- 采用分布式方法进行扫描。扫描任务交给多态主机协同进行,将多个扫描分散。多台主机分别负责目标主机不同端口的扫描活动,同时在时间上将各主机扫描活动分隔开,如果每台主机的扫描活动都非常隐蔽,则很难检测。
操作系统识别
操作系统不同,存在的漏洞大相径庭,判断目标主机操作系统类型(Windows/Linux/Solaris...),便于精准攻击。
旗标识别
旗标是客户端向服务器发送连接请求时,服务器返回的欢迎信息,欢迎信息中没有直接说明操作系统类型,但根据某些信息可以推测出操作系统类型。
近几年,用户在启用网络服务时往往过滤旗、修改标信息,避免暴露系统信息及版本信息。
端口识别
利用不同操作系统默认开放的端口不同。如Windows XP、Windows 2003等系统默认开放TCP 135、TCP139、TCP 445端口,Linux不开放这些端口。
管理员可以随意修改默认开放端口的状态,以误导攻击行为。
TCP/IP协议栈指纹识别(精确)
(待完善)
漏洞扫描
判断目标主机可能存在的漏洞,以目标主机的操作系统、开放的服务为依托。
两种方法测试是否存在漏洞:①根据端口扫描和操作系统识别判推断出端口上的网络服务,将这些相关信息与网络漏洞扫描系统提供的漏洞库匹配,看是否有满足匹配条件的漏洞;②模拟黑客攻击方法,对目标主机进行攻击性安全漏洞扫描(测试弱口令),模拟攻击成功,表明目标主机存在安全漏洞。
基于主机的漏洞扫描
需要在被检查系统上安装特定的扫描程序,并赋予管理员权限,从而使得扫描程序可以访问系统内核、系统配置文件以及系统中各类应用程序。扫描程序依据特定规则对系统进行分析,以发现各类安全漏洞,并对发现的漏洞提供相应补丁信息(如微软MBSA)。
攻击者在攻击成功之前,往往不具备足够的权限,因此攻击者常利用基于网络的漏洞扫描。
基于网络的漏洞扫描
要求扫描主机与目标系统通过互联网相连。
- 利用端口扫描结果、操作系统识别结果与漏洞库匹配,若漏洞库存在该漏洞,则进一步依据漏洞信息向目标系统发送探测数据包,根据对方返回结果,判断是否存在该漏洞。(必须考虑到网络服务使用的监听端口任意指定的情况,一些设计完善的漏洞扫描程序会在获得开放的端口信息后,对端口进行探测,确定端口对应的网络服务)
- 对目标系统模拟一些简单的攻击活动。
基于网络的漏洞扫描软件通常由:扫描控制台、漏洞库、扫描引擎构成。