计算机安全导论 复习上
Notion
一 引言
CIA!
C:confidentiality 机密性
非授权泄露
- 加密
- 访问控制(访问规则和策略)
- 认证(指纹)
- 授权
- 物理安全 法拉第笼
I:intrgrity 完整性
非授权修改
A:availability 可用性
能及时访问和修改
🔥 设计系统时,三条同时满足
3A!
1A:assurance 保证性
信任如何被提供和管理
确保资源和信息的使用符合设定的策略
- 策略: 对个体行为的预期
- 权限: 被允许的行为
- 保护: 实现权限格策略的机制
例子:在线音乐系统(为用户如何访问歌曲设定策略;为购买特定歌曲的用户提供访问权限;为系统提供保护以防止用户未授权的访问)
2A: authenticity 真实性
确定内容可信
不可抵赖
3A:anonymity 匿名性
不泄露隐私
4种访问控制模型的优点缺点!
主体 → 用户 客体 → 资源
访问控制矩阵
优点:
- 容易确定主客体对的权限
- 管理者视角简单直观
- 控制粒度细,针对每一个主客体对
缺点:
缺乏可扩展性,大小为
(
主体
∗
客体
)
(主体*客体)
(主体∗客体)
访问控制列表
本质上是忽略了空白的矩阵的列
优点:
比矩阵小很多,以元数据形式储存
缺点:
枚举复杂度高(链表)
能力列表
本质上是忽略了空白的矩阵的行
优缺点与上类似
基于角色的访问控制
定义角色,对角色指派权限
优点:
存储高效,降低需要记录的规则数量
缺点:
目前操作系统中未实现
字典攻击
定义
从自定义词典中尝试密码
防御方法
- 密码设置更复杂
- 入侵检测机制
- 更好的加密算法和策略
二 物理安全!!
SIM卡安全及挑战响应协议(3步)
SIM卡具有集成电路卡ID(ICCID)→ 18位id,用于硬件识别
唯一的国际移动用户表示(IMSI)
128位密钥,用于向移动网路验证电话 → 下图的K
指纹
三 操作系统安全
进程安全
引导顺序安全
恶意用户利用引导脆弱点控制计算机执行 第二段引导 加载操作系统
解决方法: 设置BIOS密码
引导设备层次
第二阶段允许指定加载操作系统设备
攻击者从外部介质引导其他操作系统访问硬盘
解决方法: 设置BIOS密码
休眠
休眠时操作系统将内存全部储存到磁盘的休眠文件
攻击者从休眠文件中获取敏感信息
解决方法: 硬盘加密
日志
操作系统监控和记录的主要手段
- 事件日志
- 进程监控
探查计算机上正在运行的进程
- 进程查看
查看器提供进程映像(进程代码的磁盘位置)可以确定进程是否是病毒
攻击者尝试替换合法程序的映像
解决方法: 对映像使用数字签名
内存和文件系统安全
虚拟内存安全
关机时,硬盘上虚拟内存删除
攻击者强制断电,阻止虚拟内存删除,引导另一个操作系统查看虚拟内存文件
解决方法: 硬盘加密
密码盐
密码以单向散列值储存
使字典攻击变得困难
密码文件储存
(
U
,
S
,
h
(
S
∣
∣
P
)
(U,S,h(S||P)
(U,S,h(S∣∣P) , u →username ,S→ salt, P→password
如果攻击者无法获得用户的盐,字典攻击搜索空间为
2
B
∗
D
2^B * D
2B∗D ,B是随机盐位数,D是字典大小
如果攻击者可以获得用户的盐,每一个盐只能攻击一个用户
访问控制
Linux使用文件权限矩阵
Windows使用访问控制列表
setUID操作
如果设置setuid位,程序以其所有者用户ID运行,而不是PID。
解决了无特权情况下访问问题
攻击者可以强制setuid程序执行任意代码
文件描述符
进程创建子进程时,子进程集成父进程打开的所有文件描述符副本
当程序以高权限打开文件描述符,未关闭。创建的低权限进程就能打开该文件。
应用程序安全
DLL注入
DLL注入是指向运行中的其他进程强制插入特定的DLL文件。
DLL被加载到进程后会自动运行DllMain()函数,用户可以把想执行的代码放到DllMain()函数,每当加载DLL时,添加的代码就会自然而然得到执行。
算术溢出
例子:只允许前1000人进入系统,请求人数过多计数值溢出。
缓冲区溢出!
攻击者在栈中注入恶意代码,覆盖调用返回地址,将执行权限传递给恶意程序
困难:
- 进程不能访问其他进程的地址空间,恶意代码必须驻留在被攻击进程的地址空间。(缓冲区和用户shell)
- 给定进程的地址空间不可预测
攻击手段:
NOP指令滑动: 命中一连串的NOP指令,就可将CPU指令流滑动到特定位置
跳转到寄存器:
- 攻击者找到特定代码集中的跳转指令 jump ESP
- 设法将恶意代码放在ESP指定的内存上
- 将当前函数的返回地址写成jump ESP的地址
- jump到恶意代码
返回到libc攻击:
不需要注入恶意代码,重用漏洞程序的函数;避开了对注入的检测
- 用所需库函数地址覆盖返回地址
- 传参使程序按照攻击者期望运行
防止手段:
- 使用更安全的函数
- 操作系统防止攻击者覆盖返回地址:将指针在使用前后使用异或编码,将栈空间设置为非执行权限,随机安排地址空间(ASLR)
- 金丝雀技术:在缓冲区和控制数据之间放canary值,定期检查cancary的完整性,不完整则溢出
格式化字符串攻击
输入格式化字符串,可以将输入写入内存任意位置,覆盖地址
四 恶意软件
计算机病毒!
能自我复制,复制需要某种类型的用户协助,需要向其他文件插入代码
病毒特征
- 传染性
- 隐蔽性
- 潜伏性 : 需要触发
- 多态性: 不断变种,防止查杀
- 破坏性
病毒执行四个阶段
- 潜伏阶段: 避免被检测
- 繁殖阶段: 复制
- 触发阶段:从繁殖转换为危害
- 行动阶段: 开始破坏
隐藏方式
- 加密
- 多态
- 变形
蠕虫!
恶意程序,不需要注入其他程序,自己传播副本,携带有害负载
蠕虫传播!
- 判断主机是否已被感染
- 判断主机是否容易受攻击
木马!
表面上执行有用的任务,隐形地执行具有负面后果的任务
木马代码可分散在整个程序中
有的是宿主程序执行后通过修改一串指令形成的
有的加密存放,执行瞬间解密
组成!
- 硬件: 控制端,服务端,因特网
- 软件: 控制端程序,木马程序,木马配置程序
- 连接部分: 控制端IP,服务器端IP,控制端端口,木马端口
木马入侵的过程!
- 配置木马
- 传播木马
- 运行木马
- 信息反馈
- 建立连接
- 远程控制
防护措施
签名
签名是病毒指纹,文件中包含签名则被感染
黑/白名单
数据库存储相应文件和被感染文件的Hash值,计算每个文件的Hash值,与数据库对比。
启发式分析
- 代码分析
- 仿真:在隔离仿真环境中运行代码
隔离
隔离可疑文件,可疑文件不会造成损害,因为它是加密的
五 网络安全
网络安全影响CIA
机密性
网络协议在任何分层中都没有要求数据传输的机密性
一般在应用层和网络层加密协议
完整性
数据包头部和尾部都有校验和,但不是密码学意义下安全
可用性
网络设计之初考虑的是节点发生故障时保证可用性
没有考虑类似于dos攻击影响系统可用性
网络安全影响3A
保证
任何节点可以接受数据包,可以通过显式措施引入权限和策略
真实性
在应用层引入身份证明,数字签名
匿名
没有用户身份概念,具有内在匿名性
链路层
ARP欺骗
ARP将主机网络层地址(IP)解析为硬件地址(MAC)
ARP无身份认证,中间人攻击
预防措施:
ARP欺骗标标志: 相同MAC地址在局域网中多次出现
静态ARP表: 手动指定ARP缓存
网络层
IP协议
将数据包从一个节点送到另一个节点
TTL: 最大跳数
ICMP
在主机,路由器之间传递控制消息(网络通不通,主机是否可达,路由是否可用)
常用工具:ping,tracerouter
IP地址欺骗
恶意用户源IP地址是伪造的,恶意用户不会受到服务器的响应
应对措施
- 边缘路由器可以阻止:源地址在域内,实际地址是域外;源地址是域外,向域外发送的数据包。
- IP追踪技术: 追踪数据包返回到实际源地址的路径
数据包嗅探(了解)
防止措施:
- 使用以太网交换机代替集线器
- 检测网卡是否为混杂模式: 混杂模式时,处理数据包比较慢。而且会对无效数据包响应。
- 高层协议使用加密(HTTPS)
传输层
TCP
面向连接,可靠,三次握手。
累积确认: 接收方向发送方发送确认
流量控制: 滑动窗口
校验和: 循环冗余校验CRC
UDP
无连接,不可靠,速度快,直接发送数据报。
16位校验和
NAT
局域网机器共享一个公网IP。
解决了IP地址不足
避免来自网络外部攻击,隐藏保护内部计算机
TCP会话劫持
TCP序列号预测
- DOS攻击客户端C
- 向服务器发送SYN,源IP伪造成受害客户端IP(攻击者收不到服务器的响应)
- 向服务器发送ACK数据包,此时预测服务器的序列号
- 攻击者以客户端C名义向服务器发送请求
盲注入
注入包含命令的数据包,可以将响应返回给攻击者,或扰乱系统
ACK风暴
TCP建立时不同步,导致客户端和服务器反复向对方发送ACK。
完全会话劫持
攻击者,服务器,客户端在同一网段时
利用数据包嗅探,获得序列号,则可完全劫持。
先使用ARP欺骗改变消息流向,完全会话劫持截取全部信息
完全会话劫持安全措施:
- 在IP层或者应用层使用认证,加密。如IPSEC或者应用层安全协议
- 避免创建以安全身份验证措施开始,后来切换到未加密交换的会话。(被劫持时明文暴露了)
拒绝服务攻击
带宽消耗型攻击
- ICMP洪水攻击: 向未良好设置的路由器发送广播信息来占用系统资源
- UDP洪水攻击: 大量UDP数据包
- 死亡ping: 超过IP协议能容忍的数据包数
- 泪滴攻击: 捏造组间位移信息,导致重组时发生问题
资源消耗型攻击:
- SYN洪水攻击:大量TCP SYN请求反复发送,导致系统资源耗尽
- LAND攻击: 与上类似
- 分布式HTTP洪水攻击:向服务器发送大量貌似合法的请求,通常使用HTTP GET
- 僵尸网络攻击
ICMP攻击
ping洪水攻击
强大计算机向服务器发送大量回显请求(echo request),服务器被这些流量淹没
smurf攻击
攻击者向广播地址发送ICMP包,将回复地址设置成受害主机IP,ICMP应答请求包淹没受害主机
如何阻止smurf:
- 主机和路由器配置,忽略广播请求
- 避免向广播地址转发数据包
- 忽略ping请求
SYN攻击
延迟或不发送握手确认信息
攻击过程
攻击者向服务器发送SYN消息,服务器发送SYN-ACK,并使连接进入半开状态,占用资源
防范方法
SYN Cookie:发送SYN-ACK 响应时,不分配专门的数据区,根据SYN包计算一个cookie,作为SYN-ACK包的初始序列号
Optimistic TCP ACK 攻击
没收到SYN-ACK时,提前发送ACK,使服务器增加传输速度,淹没带宽
防御方法
限制每个客户端的最大流量
IP地址回溯
不依赖数据包头部IP地址,确定数据包真实来源
数据包标记技术
路由器确定或概率地标注转发数据包,数量足够时可重构路径。
例如: 经过路由器地数据包追加其IP地址
会增加路由器开销
节点采样
路由器概率用自己的IP覆盖数据包的某个字段,数量足够时可重构路径。
版权归原作者 叔本华的尼采 所有, 如有侵权,请联系我们删除。