文章目录
网络扫描技术
- 网络扫描技术:使用网络扫描软件对特定目标进行各种试探性通信,以获取目标信息的行为。
- 网络扫描的目的
类型说明 | 说明 |
---|---|
主机扫描 | 识别目标主机的工作状态(开/关机) |
端口扫描 | 识别目标主机端口的状态(监听/关闭) |
操作系统识别 | 识别目标主机的操作系统类型 |
漏洞扫描 | 识别目标系统可能存在的漏洞 |
主机扫描
- 主机扫描:向目标主机发送探测数据包,根据是否收到响应来判断主机的工作状态。
- ICMP(Internet控制报文协议):ICMP Echo、ICMP Non-Echo。ICMP的作用:提高IP报文交付成功的机会。网关或者目标机器利用ICMP与源通信。当出现问题时,提供反馈信息用于报告错误。
- IP:异常的IP数据报首部、错误的分片
- ICMP报文的结构:
- ICMP报文种类
ICMP Echo扫描
bash
ping baidu.com
正在 Ping baidu.com [110.242.68.66] 具有 32 字节的数据:
来自 110.242.68.66 的回复: 字节=32 时间=24ms TTL=50
来自 110.242.68.66 的回复: 字节=32 时间=33ms TTL=50
来自 110.242.68.66 的回复: 字节=32 时间=26ms TTL=50
来自 110.242.68.66 的回复: 字节=32 时间=32ms TTL=50
110.242.68.66 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 24ms,最长 = 33ms,平均 = 28ms
- Broadcast ICMP扫描:将ICMP请求包的目标地址设为广播地址或网络地址,则可以探测广播域或整个网络范围内的主机。
- 缺点:只适合于UNIX/Linux系统,Windows 会忽略这种请求包。扫描方式容易引起广播风暴。
ICMP扫描的问题
- 问题
- 很多企业防火墙对ICMP回送请求报文进行过滤,使其无法到达目标主机。
- 主机上安装的个人防火墙往往也对ICMP报文进行阻断。
- 解决办法:使用IP数据报进行扫描
基于IP异常分组的扫描
异常的IP数据报首部:参数错误
- 主机在收到首部异常( Header Length Field、IP Options Field 、Version Number)的IP数据报时应当返回"参数问题"的ICMP报文。
异常的IP数据报首部:目标不可达
- 向目标主机发送的IP包中填充错误的字段值,目标主机或过滤设备会反馈ICMP Destination Unreachable信息。
错误的IP数据报分片
- 由于缺少分片而无法完成IP数据报重组(超时)时,主机应当回应"分片重组超时"的ICMP报文。
超长包探测内部路由器
- 若构造的数据包长度超过目标系统所在路由器的PMTU且设置禁止分段标志, 该路由器会反馈
Fragmentation Needed and Don't Fragment Bit was Set
差错报文。
反向映射探测
- 目标主机无法从外部直接到达,采用反向映射技术,通过目标系统的路由设备探测被过滤设备或防火墙保护的网络和主机。
端口扫描
- 端口:潜在的通信信道,也就是入侵通道。
- 当确定目标主机可达后,使用端口扫描技术,发现目标主机的开放端口,包括网络协议和各种应用监听的端口。
- 向目标端口发送探测数据包,根据收到的响应来判断端口的状态。(TCP 扫描、UDP扫描)
端口扫描:方法
- 向目标端口发送探测数据包,根据收到的响应来判断端口的状态。TCP 扫描、FTP代理扫描、UDP扫描。
TCP扫描
TCP报文段的结构
TCP连接建立过程
- 尝试同目标端口建立正常的TCP连接(直接调用系统提供的connect()函数)。
- 连接建立成功:目标端口开放
- 连接建立失败:目标端口关闭
- TCP Connect扫描特点
- 优点:稳定可靠,不需要特殊的权限
- 缺点:扫描方式不隐蔽,服务器会记录下客户机的连接行为。
SYN扫描
- SYN扫描的特点
- 优点:很少有系统会记录SYN扫描
- 缺点:需要管理员权限才可以构造这样的SYN数据包。
FIN扫描
- FIN扫描的优点:不是TCP建立连接的过程,比较隐蔽
- 缺点:需要构造专门的数据包、只适用于Unix系统的目标主机,Windows系统总是发送RST报文段。
FTP代理扫描
FTP proxy扫描
- FTP代理选项允许客户端控制一个FTP服务器向另一个服务器传输数据。利用这一特点可以实现端口扫描的功能。
- 优点:不但难以跟踪,而且可以穿越防火墙
- 缺点:一些FTP服务器禁止这种特性
UDP扫描
- 判断UDP端口是否打开:扫描主机向目标主机的UDP端口发送UDP数据包,如果目标端口处于监听状态,将不会做出任何响应;而如果目标端口处于关闭状态,将会返回ICMP_PORT_UNREACH错误。
- 从表面上看,目标端口工作状态不同对扫描数据包将做出不同响应,区分度很好。但实际应用中必须考虑到UDP数据包和ICMP错误消息在通信中都可能丢失,不能保证到达,这将使得判断出现偏差
扫描策略
- 随机端口扫描(Random Port Scan):随机选择端口进行扫描,可降低被检测的可能性,但扫描效率较低
- 慢扫描(Slow Scan):在较长时间内缓慢地执行扫描操作,目的是尽量减少在短时间内产生的流量,避免触发警报。
- 分片扫描(Fragmentation Scanning):将TCP连接控制报文分成多个短IP报文段传送,隐蔽性好,可穿越防火墙,躲避安全检测。缺点:可能被进行排队过滤的防火墙丢弃;某些程序在处理这些小数据包时会出现异常。
- 诱骗(Decoy):同时使用多个伪造的源地址和真实的扫描源地址发起扫描。这种方法可以迷惑防御者,使其难以确定哪个扫描活动是真正的威胁。
- 分布式协调扫描(Coordinated Scans):通过多个源从不同的地理位置发起扫描,可以更好地规避单点检测,提高扫描的隐蔽性。
- 全端口扫描(Full Port Scan):扫描所有65535个TCP/UDP端口,以获取尽可能全面的开放端口信息,但消耗时间较长,容易被检测。
- 特定范围扫描(Specific Range Scan):针对特定端口范围进行扫描,这种方法在对目标系统的服务有一定了解时使用,可以提高扫描的效率。
- 版本探测扫描(Version Detection Scan):通过发送特定的请求来识别服务版本信息,这对于发现具体的软件漏洞非常有用。
- 操作系统探测(OS Detection):通过分析响应的特征(如TCP/IP栈的特定行为)来推测目标系统的操作系统类型和版本,对于选择攻击手段具有指导意义。
- 僵尸网络扫描(Zombie Network Scan):利用已经被控制的机器(僵尸机)来发起扫描,可以有效隐藏攻击者的真实位置和身份。
操作系统识别
- 根据使用的信息可分为三类:通过获取旗标信息,利用端口信息,通过TCP/IP协议栈指纹
旗标信息
- 旗标(banner):客户端向服务器端提出连接请求时服务器端所返回的欢迎信息。
bash
____ _ __ ____ _ _ __ ______
| _ \| |/ / | _ \ __ _ _ __ | |_| |__ ___ _ __ \ \/ /___ \
| |_) | ' /_____| |_) / _` | '_ \| __| '_ \ / _ \ '__|____\ / __) |
| _ <| . \_____| __/ (_| | | | | |_| | | | __/ | |_____/ \ / __/
|_| \_\_|\_\ |_| \__,_|_| |_|\__|_| |_|\___|_| /_/\_\_____|
Welcome to Armbian 23.08.0-trunk Bullseye with Linux 6.1.36-ophub
System load: 4% Up time: 4 days 2:22
Memory usage: 25% of 3.84G IP: 172.20.0.1 172.19.0.1 172.18.0.1 172.17.0.1 192.168.1.18
CPU temp: 35°C Usage of /: 48% of 29G
RX today: 199.4 KiB
[ 0 security updates available, 3 updates total: apt upgrade ]
Last check: 2024-05-29 00:00
[ General system configuration (beta): armbian-config ]
端口信息
- 端口扫描的结果在操作系统检测阶段也可以加以利用。
- 不同操作系统通常会有一些默认开放的服务,这些服务使用特定的端口进行网络监听。例如,Windows XP、Windows 2003等系统默认开放了TCP 135端口、TCP 139端口以及TCP 445端口,而Linux系统通常不会使用这些端口。
- 端口工作状态的差异能够为操作系统检测提供一定的依据。
TCP/IP协议栈指纹
- 根据OS在TCP/IP协议栈实现上的不同特点,通过其对各种探测的响应规律形成识别指纹 ,进而识别目标主机运行的操作系统。
主动扫描
- 采用向目标系统发送构造的特殊包并监控其应答的方式来识别操作系统类型。
- 主动扫描具有速度快、可靠性高 等优点,但同样严重依赖于目标系统网络拓扑结构和过滤规则
TCP选项探测
- 不同操作系统对于含有相同TCP 可选项数据包的响应是不同的,差异主要表现在以下三个方面:响应值不同,响应顺序不同,响应值和响应顺序都不同。
被动扫描
- 通过监听工具收集数据包,再对数据包的不同特征(TCP Window-size、 IP TTL、IP TOS、DF位等参数)进行分析,来识别操作系统。
- 被动扫描基本不具备攻击特征,具有很好的隐蔽性,但其实现严格依赖扫描主机所处的网络拓扑结构;和主动探测相比较,具有速度慢、可靠性不高等缺点。
- 常见操作系统的TTL值
操作系统类型 | TTL返回值 |
---|---|
Windows 2000 | 128 |
Windows NT | 107 |
Windows 9X | 128或107 |
Solaris | 252 |
IRIX | 240 |
AIX | 247 |
Linux | 241或240 |
漏洞扫描
- 漏洞存在的原因:实现缺陷、配置不当等。
- 目的:发现服务程序或系统可能存在的漏洞
- 扫描方法:向探测目标发送特定报文,根据响应判断是否存在漏洞
常见扫描软件
软件 | 说明 |
---|---|
Nmap | 支持多种扫描模式以及指纹识别技术 |
Nessus | 安全评估软件 |
X-Scan | 漏洞扫描功能强 |
流光 | 支持自定义字典进行暴力破解 |
- Nessus是一种用来自动检测和发现已知安全问题的强大工具。