网络欺骗 - 50%
概述:局域网内,结合数据传播特点,伪造数据,欺骗机器网卡
模型:
主机:维护ARP缓存,内容为 [IP:MAC]
协议:ARP:Address Resolution Protol:根据IP获取MAC
主机网卡:
- 网卡工作模式:
- 混杂:接收所有数据
- 广播:接收dest_addr为广播地址的数据
- 多播:接收dest_addr为多播地址的数据
- 单播:接收dest_addr为本机地址的数据
- 链路层:需要MAC地址
- 网卡工作模式:
交换机
- 分类:二层、三层、四层交换机
- 二层交换机:根据MAC,找到端口,发送数据,维护MAC缓存,内容为 [MAC:端口]
示意图
帧[mac][ip] 帧[mac][ip] [主机1] -----------> [交换机] -------------> [主机2] | IP | MAC | | 端口 | MAC | | IP | MAC | | 端口 | MAC |
攻击方式:
- 1 攻击机:发送大量 虚假MAC 的帧,占满交换机缓存,让交换机广播数据
- 2 攻击机:发送虚假的ARP:欺骗局域网内的主机
- 3 受害机:把数据发到错误的地方,比如攻击机
解决:
- 预防:主机静态ARP表、进制ARP
- 检测:看某台主机的ARP缓存,判断是否有主机发送大量ARP包
- 检测:看无通信主机的ARP缓存,检测是否缓存了ARP包
信息收集 - ok
- 概述:在进行攻击之前,收集受害者的信息
- 攻击方式:
- 主机状态
- ICMP Echo攻击:发送ICMP Echo包,如果回复,则主机开启
- Non-Echo ICMP:发送其他类型的ICMP包,如果回复,则主机开启
- IP异常包头:发送异常IP包(无效字段、错误分片、静止分片),判断主机返回信息
- TCP扫描
- UDP扫描
- 操作系统版本
- 被动栈指纹识别:嗅探,收集网络中数据包,判断IP的TTL、TOS、DF和TCP 的Windows-size等特征
- 主动栈指纹识别:TCP三次握手,ACK序号相等还是加一
- TCP ISN取样:向目标主机多次握手,多次取样返回的ISN
- ICMP包错误信息发送速率:向目标主机连续发送大量icmp错误包
- ICP消息引用:向目标主机发送ICMP错误包,判断返回的错误引用长度
- 端口
- TCP 连接(开放):tcp三次握手后,tcp反向ident协议可查看:对方进程pid和角色
- TCP SYN(半开放):发送tcp syn包,端口关闭:返回rst,开启:返回syn+ack
- TCP FIN(隐蔽):发送fin包,关闭:返回rst,开启:无返回
- TCP Xmax(隐蔽):发送fin、urg、push标记的包,关闭:返回rst,开启:返回
- TCP NULL (隐蔽):发送关闭无标记包
- FTP PROXY (隐藏):请求ftp服务向目标主机建立连接
- UDP:发送UDP包,关闭:ICMP port unreachable,开启:无返回
- 软件版本
- 漏洞
- 操作系统漏洞:基于漏洞库,扫描CGI漏洞、POP3漏洞、FTP漏洞、SSH漏洞等
- 主机状态
拒绝服务 - ok
概述:合法用户无法访问服务
模型:
[主机1] ----> [主机2]攻击方式:
- 基于系统漏洞
- ping of death:构造超长ICMP包,受害系统无法识别此类异常,未分配足够内存
- tear drop:构造重复的IP分片包,受害系统合并分片时,导致越界
- 基于软件漏洞
- 基于协议漏洞
- 基于有限资源
- smurf:构造ICMP ECHO请求,src_addr设置为受害机地址,在目标网络广播,每台主机都会向受害机回复ICMP REPLAY
- tcp syn flood:构造TCP SYN请求,使受害机保留大量半开TCP连接
- tcp syn land:构造TCP SYN请求,src_addr和dst_addr都是受害机,受害机自己与自己建立半开连接
- http flood:构造大量HTTP GET请求
- 基于系统漏洞
攻击检测
- 基于误用的DDOS检测
- 提取攻击特征:进行特征匹配,模型推理,状态转换和专家系统
- 基于异常的DDOS检测
- 建立模型:统计检测、模式检测、人工智能检测、机器学习检测
- 基于误用的DDOS检测
安全协议 - 50%
概述
- 网络层:IPSEC (https://zhuanlan.zhihu.com/p/603923686)
- 传输层:SSL
客户端 --+--------------------------- |1. SSL版本、加密套件、随机数 --> | | <-- 2. 选择的加密套件、随机数 | | <-- 3. 证书 | | <-- 4. 密钥交换参数 | | <-- 5. 请求客户端证书 | | <-- 6. 结束 | | 7. 证书 --> | | 8. 密钥交换参数:使用对方证书,加密1个随机数 --> | (一共3个随机数,关键在这第3个) | 9. 证书验证:对随机数进行签名 --> | (使用7的证书,可验证本步的签名) | 10. 编码改变通知:后续都加密传输 --> | | 11. 握手结束:已发送消息的hash --> | | <-- 12. 编码改变通知:后续都加密传输 | | <-- 13. 握手结束:加密消息,发送给客户端,验证密钥成功 |- 应用层:HTTPS