本文将介绍网络层,传输层,应用层的常见网络扫描方式及其原理。包括主机存活探测、端口扫描、目录扫描以及漏洞扫描。

1、主机探测

主机扫描通常是从网络层开始,到应用层。

其中较为知名的就是ICMP协议,即ping指令,通过ping探测主机存活状态。但由于有些主机为了安全起见,禁用了ICMP Echo,就得不到回应,所以著名的扫描工具Nmap,在ICMP Echo的基础上,添加了TCP和ICMP Timestamp扫描,即扫描了常见的80和443两个端口,以及更容易被忽视的ICMP Timestamp,其中443端口用SYN探测,80端口用ACK探测。Nmap用不同包探测不同端口是一种有策略的、多样化探测手段设计,用于平衡探测成功率、隐蔽性与信息量。具体指令和流量如下所示:

nmap -sn shl528.cn

image.png

Nmap也支持单一的ICMP Echo、SYN、ACK等探测,这要指定不同的参数。Nmap默认不会建立完整的TCP握手,即半开扫描,而且会等到TCP握手超时后才会返回探测结果,其目的也是为了避免被目标主机检测到。若要使用单一的ICMP Echo扫描,可以考虑fping等工具,也可以写脚本调用Windows上的ping工具,但是它只能发送ICMP Echo包。

若要用Nmap进行局域网主机探测,其默认使用更快的ARP协议,这里附上Nmap常用的扫描参数。

image.png

当然,除了Nmap还有一些别的工具也可以进行TCP主机探测,如Tcping,它不同Nmap,Tcping默认会建立完整的TCP三次握手,而Nmap只会发送一个包,便不再回应。

2、端口扫描

端口扫描是运输层次的扫描。端口扫描原理同TCP主机探测一样,都是通过主机的TCP回应包。常见的端口扫描工具有Tcping、Nmap、masscan和Zmap[1]。Nmap注重细致扫描,而masscan则注重速度,但是masscan不能做ICMP主机探测。二者常常一起使用,一般是先用masscan快速找到开放端口,再用Nmap精确识别服务和漏洞。而Zmap原生并不支持Windows,但是据说某些场景下比masscan还要快。而Tcping则一般用于单一端口SYN探测。

3、子域名探测

子域名探测通常包含两种方式,即通过网络空间测绘引擎与爆破。常用工具有OneForAll、Layer等。

当某个域名对应唯一IP时,用域名访问的80端口和直接用IP:Port访问的网站可能不一样,因为虽然在传输层两者并无差异,但在应用层,二者的HTTP Host不同,导致Web服务器会根据此区分不同的服务。所以更为全面的探测方法为子域名收集与端口扫描同时进行。

4、目录扫描

目录扫描是应用层次的扫描。通过枚举和请求常见或猜测的URL路径,判断服务器上是否存在敏感或隐藏的文件和目录。常用工具包括御剑、Dirb、Dirsearch、FFUF等等。

5、Web漏洞扫描

原理类似目录扫描,只是字典不一样,它整合了一些漏洞Poc,并根据目标响应判断是否存在漏洞。向Web应用发送特定构造的恶意请求,分析响应以识别潜在的安全漏洞,如XSS、SQL注入。常用工具有Burpsuite、AWVS等

6、主机漏洞扫描

不同于web漏洞扫描,只会扫描Web相关的漏洞,主机扫描更侧重于扫描主机存在的漏洞,如永恒之蓝等非HTTP协议的漏洞。识别主机开放的端口和服务,结合已知漏洞数据库,如CVE,检测系统和软件是否存在可利用的安全问题。常用工具有Nessus、OpenVAS等。

References

[1] Durumeric Z, Wustrow E, Halderman J A. {ZMap}: Fast internet-wide scanning and its security applications[C]//22nd USENIX Security Symposium (USENIX Security 13). 2013: 605-620.

标签: Scan

添加新评论