【中级】网络攻击原理与常用方法
本文是软考中级信息安全工程师第二章《网络攻击原理与常用方法》的 B 站视频笔记。
网络攻击类型
网络攻击是指损害网络系统安全的危害行为。常见的危害行为有四个基本类型:
- 信息泄漏攻击——破坏机密性
- 完整性破坏攻击——破坏完整性
- 拒绝服务攻击——破坏可用性
- 非法使用攻击——破坏可用性
根据对信息的破坏性,可以分为:
- 主动攻击:篡改数据、拒绝服务攻击、假冒
- 被动攻击:嗅探、窃听、流量分析
网络攻击模型
攻击树模型
攻击树方法起源于故障树分析方法。故障树分析方法主要用于系统风险分析和系统可靠性分析,之后扩展为软件故障树,用于辅助识别软件设计和实现中的错误。用 AND-OR 形式的树结构对目标对象进行网络安全威胁分析。攻击数使用 AND、OR 两类节点:
- AND 节点:攻击目标的子条件,如要攻击成功,所有条件必须满足。
- OR 节点:攻击目标的子条件,如药攻击成功,其中一个条件满足即可。
MITRE ATT&CK 模型
MITRE 根据真实观察到的网络攻击数据提炼形成攻击矩阵模型 MITRE ATT&CK。基于 MITRE ATT&CK 常见的应用场景主要有网络红蓝对抗模拟、网络安全渗透测试、网络防御差距评估和网络威胁情报收集等。该模型的战术有:
- 初始访问
- 执行
- 常驻
- 特权提升
- 防御规避
- 凭据访问
- 发现
- 横向移动
- 收集
- 数据获取
- 命令
- 控制
网络杀伤链(Kill Chain)模型
该模型将网络攻击活动分成七个阶段:
- 目标侦查
- 武器构造
- 载荷投送
- 漏洞利用
- 安装植入
- 指挥和控制
- 目标行动
网络攻击一般过程
- 隐藏攻击源:隐藏黑客主机位置使得系统管理无法追踪
- 收集攻击目标信息:确定攻击目标并收集目标系统的有关信息
- 挖掘漏洞信息:从收集到的目标信息中提取可使用的漏洞信息
- 获取目标访问权限:获取目标系统的普通或特权账户的权限
- 隐藏攻击行为:隐蔽在目标系统中的操作,防止入侵行为被发现
- 实施攻击:进行破坏活动或者以目标系统为跳板向其他系统发起新的攻击
- 开辟后门:在目标系统中开辟后门,方便以后入侵
- 清除攻击痕迹:避免安全管理员的发现、追踪以及法律部门取证
端口扫描
端口扫描的目的是找出目标系统上提供的服务列表。根据端口扫描利用的战术,扫描可以分为多种类型
完全连接扫描
完全连接扫描:TCP 全连接扫描,利用 TCP/IP 协议的三次握手连接机制,使源主机和目的主机的某个端口建立一次完整的连接。如果建立成功,则表明该端口开放。否则,表明该端口关闭。
半连接扫描
半连接扫描是指在源主机和目的主机的三次握手连接过程中,只完成前两次握手,不建立一次完整的连接。
SYN 扫描
首先向目标主机发送连接请求,当目标主机返回响应后,立即切断连接过程,并查看响应情况:
- 目标主机返回 ACK 信息:表明目标主机的该端口开放
- 目标主机返回 RESET 信息:表示该端口没有开放
ID 头信息扫描
首先由源主机 A 向 dump 主机 B 发出连续的 PING 数据包,并且查看主机 B 返回的数据包的 ID 头信息(一般每个顺序数据包的 ID 头的值会增加 1)。然后由源主机 A 假冒主机 B 的地址向目的主机 C 的任意端口(1-65535)发送 SYN 数据包。这时,主机 C 向主机 B 发送的数据包有两种可能的结果:
- SYN|ACK:表示该端口处于监听状态
- RST|ACK:表示该端口处于非监听状态
后续的 PING 数据包响应信息的 ID 头信息中:
- 如果主机 C 的某个端口是开放的,则主机 B 返回 A 的数据包中,ID 头的值大于 1
- 如主机 C 的某个端口是非开放的,则主机 B 返回 A 的数据包中,ID 头的值递增 1
隐蔽扫描
隐蔽扫描是指能够成功地绕过 IDS、防火墙和监视系统等安全机制,取得目标主机端口信息的一种扫描方式。
SYN|ACK 扫描
由源主机向目标主机的某个端口直接发送 SYN|ACK 数据包,而不是先发送 SYN 数据包。由于这一方法不发送 SYN 数据包,目标主机会认为这是一次错误的连接,从而报错:
- 如果目标主机的该端口没有开放,则会返回 RST 信息
- 如果目标主机的该端口开放,则不会返回任何信息,而是直接将数据包抛弃掉
FIN 扫描
源主机 A 向目标主机 B 发送 FIN 数据包,然后查看反馈信息:
- 如果端口返回 RESET 信息,则说明该端口关闭
- 如果端口没有返回任何信息,则说明该端口开放
ACK 扫描
首先由主机 A 向主机 B 发送 ACK 标志的 TCP 分组数据包,然后查看反馈数据包的 TTL 值和 WIN 值:
- 开放端口返回的数据包:TTL<64,WIN>0
- 关闭端口的返回值:TTL>64,WIN=0
NULL 扫描
将源主机发送的数据包中的 ACK、FIN、RST、SYN、URG、PSH 等标志位全部置空:
- 如果目标主机没有返回任何信息,则表明该端口是开放的
- 如果返回 RST 信息,则表明该端口是关闭的
XMAS 扫描
XMAS 扫描的原理和 NULL 扫描相同,只是将要发送的数据包中的 ACK、FIN、RST、SYN、URG、PSH 等标志位全部置成 1:
- 如果目标主机没有返回任何信息,则表明该端口是开放的
- 如果返回 RST 信息,则表明该端口是关闭的
| 隐蔽扫描 | 原理 | 端口开放 | 端口关闭 |
|---|---|---|---|
| SYN|ACK 扫描 | 由源主机向目标主机的某个端口直接发送 SYN|ACK 数据包,而不是先发送 SYN 数据包。由于这一方法不发送 SYN 数据包,目标主机会认为这是一次错误的连接,从而报错 | / | 返回 RST 信息 |
| FIN 扫描 | 源主机 A 向目标主机 B 发送 FIN 数据包,然后查看反馈信息 | / | 返回 RESET 信息 |
| ACK 扫描 | 首先由主机 A 向主机 B 发送 ACK 标志的 TCP 分组数据包,然后查看反馈数据包的 TTL 值和 WIN 值 | TTL<64,WIN>0 | TTL>64,WIN=0 |
| NULL 扫描 | 将源主机发送的数据包中的 ACK、FIN、RST、SYN、URG、PSH 等标志位全部置空 | / | 返回 RST 信息 |
| XMAS 扫描 | 将要发送的数据包中的 ACK、FIN、RST、SYN、URG、PSH 等标志位全部置成 1 | / | 返回 RST 信息 |
拒绝服务攻击的种类
- SYN Flood(同步包风暴):利用 TCP 协议缺陷发送大量伪造的 TCP 连接请求,使得被攻击者资源耗尽。三次握手,进行了两次(SYN 和 SYN/ACK),不进行第三次握手(ACK),连接队列处于等待状态,大量的这样的等待,占满全部队列空间,导致系统挂起。
- Ping of Death(死亡之 Ping):攻击者故意发送大于 65535 字节(64KB)的 IP 数据包给对方,导致内存溢出,这时主机就会出现内存分配错误而导致 TCP/IP 堆栈崩溃,导致死机!
- Teardrop Attack(泪滴攻击):分段攻击。伪造数据报文向目标主机发送含有重叠偏移的数据分段,通过将各个分段重叠来使目标系统崩溃或挂起。
- UDP Flood(UDP 洪水):利用简单的 TCP/IP 服务,如用 Chargen 和 Echo 传送毫无用处的占满宽带的数据。通过伪造与某一主机的 Chargen 服务之间的一次 UDP 连接,回复地址指向开放 Echo 服务的一台主机,生成在两台主机之间的足够多的无用数据流。
- Smurt 攻击:攻击者伪装目标主机向局域网的广播地址发送大量欺骗性的 ICMP ECHO 请求,这些包被放大,并发送到被欺骗的地址,大量的计算机向同一台计算机回应 ECHO 包,目标系统将会崩溃。
- 垃圾邮件:针对服务端口(SMTP 端口,即 25 端口)的攻击方式,攻击者通过连接到邮件服务器的 25 端口,按照 SMTP 协议发送几行头信息加上一堆文字垃圾,反复发送形成邮件轰炸。
- 消耗 CPU 和内存资源的拒绝服务攻击:利用目标系统的计算算法漏洞,构造恶意数据集,导致目标系统的 CPU 或内存资源耗尽,从而使目标系统瘫痪,如 Hash DoS。
- 分布式拒绝服务攻击(DDoS):引入了分布式攻击和 C/S 结构,客户端运行在攻击者的主机上,用来发起控制代理端;代理端运行在已被攻击者侵入并获得控制的主机上,从主控制端接收命令,负责对目标实施实际的攻击。利用 C/S 技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。
黑客常用工具种类
- 扫描器
- NMAP 网络地图
- Nessus 远程安全扫描器
- SuperScan
- 远程监控
- 冰河
- 网络精灵
- Netcat
- 密码破解
- John the Ripper:用于检查 Unix/Linux 系统的弱口令
- LOphtCrack:常用于破解 Windows 系统口令
- 网络嗅探器
- Tcpdum
- WireShark
- DSniff
- 安全渗透工具箱
- Metasploit
- BackTrack5
