【安全与风险】计算机系统基本资源安全
计算机系统基本资源安全
- 部分一. 操作系统安全
-
- 操作系统安全的定义
- 保护方式
- 重点
-
- 访问控制(Access Control)
-
- 访问控制矩阵
- 访问控制列表
- 读、写和执行
- Unix访问控制列表
- 权限位
- 特权提升(Privilege escalation)
- 缓冲区溢出(Buffer overflows)
- 堆栈(简化)
-
- 在正常情况下会发生什么?
- 我们把更大的东西放进去?
- 如果我们再聪明一点?
- 缓冲区溢出防御
- 部分二:拒绝服务攻击(DOS):攻击、检测和预防
-
- 定义
- 实践中的DoS
- 攻击模式
- DoS概述
- DDoS
- 防守必须配合进攻
- 攻击类别
-
- 自动化程度
-
- 手动
- 全自动
- 半自动
- 代理商招募策略(漏洞扫描-攻击代码传播)
-
- 漏洞扫描
- 攻击代码传播
- 利用弱点(拒绝服务)
- 源地址有效性
- 攻击率动态
- 代理集的持久性
- 对受害人的影响
部分一. 操作系统安全
操作系统安全的定义
操作系统安全(OS security)是确保操作系统完整性、机密性和可用性的过程。
操作系统安全是指用于保护操作系统免受威胁、病毒、恶意软件或远程黑客入侵的特定步骤或措施。
保护方式
- 定期更新操作系统补丁
- 安装最新的防病毒引擎和软件
- 通过防火墙控制进出网络流量
- 创建只具有所需权限的安全帐户(即用户管理)
重点
访问控制(Access Control)
访问控制矩阵
- 抽象安全模型
- 描述域(用户)相对于对象(文件、进程等)的权限。
- 显示为单元格的2d数组,其中行是主题,列是对象。
- 单元格x,y表示主体x对对象y的权限。
访问控制矩阵只是一种抽象——在现实世界中使用并不实际。 - 为整个文件系统存储矩阵将使用大量内存!
- 替代方案-存储域功能与文件(访问控制列表)。
访问控制列表
- 每个文件都有一个附加的列表
- 列表包含:1)相关的领域(所有者、群体、其他人)2)许可(读、写、执行)
- 操作系统在访问对象时检查权限
- 大多数现代操作系统的默认设置
读、写和执行
读®:授予查看文件内容的能力
写(w):授予修改或删除文件的能力
运行(x):授予将文件作为程序运行的能力
Unix访问控制列表
访问控制列表(ACL)有三个域:所有者、群体、其他人
3个权限:读、写、执行
- 对于文件和目录的解释不同
- 对于目录:1)读:可以列出里面的文件 2)可以编辑内容(例如,删除文件) 3)可以改变目录(cd),使其工作目录
- 每个用户都有一个默认组
权限位
与名为“LancasterProg”的程序和名为“LancasterData”的数据集相关联的权限位如下:
LancasterProg: 1 1 1 1 0 1 1 0 0
LancasterData: 1 1 1 1 0 0 0 0 0
特权提升(Privilege escalation)
利用错误或设计不良的程序来访问您没有权限的资源
- 垂直升级(Vertical escalation)
低级用户访问为高级用户(如管理员)保留的功能或内容。 - 水平升级(Horizontal escalation)
正常用户访问的功能或保留给其他正常用户的内容。
例如:用户A访问用户B的照片目录
垂直的例子:
- 在机器上以根用户身份运行的程序(程序接受低级用户的输入)。
- 对程序执行缓冲区溢出攻击。
- 使程序调用其他函数/访问其他具有高级权限的文件(例如,更改引用文件的地址到目标)。
- 是否可以使用metasploit等工具自动完成
缓冲区溢出(Buffer overflows)
- 当程序试图在缓冲区中放入比分配给它的内存量更多的数据时,就会发生缓冲区溢出。
- 很难利用,但却非常强大。
- 由具有内存管理的语言中的编程错误引起(例如,用户输入时不检查大小)。
堆栈(简化)
void foo(char *s){char buf[10];strcpy(buf, s);...
在正常情况下会发生什么?
foo ("Hello")
我们把更大的东西放进去?
foo(“Hello worldXXXXXXXXX”)
返回地址和堆栈指针被覆盖
如果我们再聪明一点?
在地址1234加载一些代码
foo("Hello worldXXX1234")
返回地址现在指向我们的代码
缓冲区溢出防御
堆栈金丝雀(Stack canaries)
- 放置在堆栈周围的值(通常在缓冲区和控制数据之间),稍后可以对其进行测试。
- 如果堆栈被覆盖,值将会改变并且可以被检测到。
随机化(Randomisation)
- 内存的布局是随机的。
- 使它更难找到正确的内存地址来攻击/跳转。
- 不是100%有效(只会增加难度)。
金丝雀在矿井中被用来探测煤气泄漏。类似地,可以在堆栈中使用金丝雀值来检测缓冲区溢出/泄漏。
随机化并非100%有效。例如,在一个32位的应用程序中,虚拟地址空间相对较小,所以我们可以创建一个暴力方法来动态发现一个随机内存地址。发现很难,但并非不可能。
部分二:拒绝服务攻击(DOS):攻击、检测和预防
定义
拒绝服务(DOS):一种通过耗尽诸如中央处理器(CPU)、内存、带宽和磁盘空间等资源来阻止或损害网络、系统或应用程序的授权使用的操作。
攻击可能是针对
- 网络带宽
- 系统资源
- 应用资源
DoS是互联网上已经存在并持续存在的威胁。
实践中的DoS
“我告诉过你,如果你试图和我们一起,你的网站将永远关闭…你住院的借口对我来说不重要。
所以这里有你的选择:
1)你必须在今天下午4点之前把我们的4万美元寄给我们。
2)如果你今天不能寄40K美元,你必须在美国东部时间周三下午4点之前寄给我们50K美元。
3)如果您不付款,您的网站将从周四开始关闭4天,周一恢复将花费75,000美元。
4)您什么都不做,也没有在一小时内回复这封电子邮件,我们将确保您永远关闭…”
攻击模式
勒索者有2万多僵尸。
受害者需要他们的ISP的大力帮助,他们在攻击中遭受了严重的损失,影响了其他客户和目标受害者。
攻击的目标是:DNS服务器、邮件服务器和网站。
流量增加到1.5Gb,爆发达到3Gb。
受害者的ISP准备了6Gb,但攻击最终停留在1Gb。袭击者在4周后放弃了。
DoS概述
网络优化,只是尽最大努力数据包交付-不警察交通:
- 互联网安全是高度相互依存的。
- 互联网资源有限
- 情报和资源没有配置好
- 问责制没有得到执行
- 控制是分布式的
DDoS
分布式拒绝服务攻击(DDoS攻击),
- 涌入受害者的流量来自许多不同的来源。
- 这有效地使得仅仅通过阻止单个源来阻止攻击变得不可能。
防守必须配合进攻
对攻击类型进行分类非常重要。
可能被认出:
- 攻击报文头信息 (IP地址或分片ID和TTL字段)。
- 攻击报文流动态(快速启动行为/缓慢的升级意味着有多个攻击者)。
- 数据包跟踪的频率分析。
攻击类别
- 自动化程度
- 代理商招募策略
- 利用弱点(拒绝服务)
- 源地址有效性
- 攻击率动态
- 代理集的持久性
- 对受害人的影响
自动化程度
手动
- 攻击者手动扫描,入侵,安装攻击代码,然后引导攻击。
- 仅用于早期DDoS攻击。
全自动
- 利用/招募阶段和攻击阶段都是自动化的。
- 一切都是预先安排好的(事先安排好的)。
- 主代理之间不需要进一步的通信。
- 攻击者暴露最小。
- 刚性攻击规范是硬编码的。
- 自动/半自动混合。
- 完全编程提前为自动的,但留下一个后门,以供将来修改。
半自动
- 招募阶段自动启动,攻击阶段手动启动。
- 需要主代理之间的通信来发起攻击:
- 直接通讯:
1)主机和代理之间交换的网络数据包。
2)需要知道对方的IP地址。
3)增加了被发现的风险。
4)如果特工在监听,也许网络扫描器能发现。
5)只能在事先安排好的时间听。 - 间接沟通:
1)使用一些已经存在的合法通信通道。
2)IRC常用。
3)代理的发现可能只告诉我们IRC服务器和频道。
4) 切换频道用来进一步伪装。
代理商招募策略(漏洞扫描-攻击代码传播)
漏洞扫描
- 水平(查找受害者机器中的特定端口/漏洞)。
- 竖直(在同一系统上查找多个端口/漏洞)。
- 协调一致的(扫描同一子网上的多台计算机以查找特定漏洞)。
- 秘密(以上任何一种,但要慢慢来,以免被发现)。
攻击代码传播
- 中央服务器(li0n蠕虫)
1)所有新招募的特工联系中央服务器获取攻击代码。
2)单点故障(能被发现并关闭/中央服务器的高负载可能会限制效率或启用检测)。 - 背链(拉面,莫里斯蠕虫)
从用于利用新主机的机器下载的攻击代码。 - 自主(红色代码,沃霍尔,各种邮件蠕虫)
同时下载攻击代码。
利用弱点(拒绝服务)
- 语义(TCP SYN, NAPTHA)
1)在受害者身上利用协议或应用程序的特定特性或错误,以消耗过多的资源。
2)是否可以通过部署修改过的协议/应用程序来缓解。 - 强力(Brute Force)
1)中间网络比受害者拥有更多的资源-可以交付比受害者可以处理的更高数量的数据包。
2)使用看似合法的数据包淹没受害者资源(很难在不损害合法流量的情况下进行过滤)。
3)需要更大的攻击报文量。
源地址有效性
-
欺骗地址
1)避免问责,有助于避免被发现。
2)反射器攻击需要。
3)使蛮力攻击困难(否则,可以通过智能地分配用于各种流的资源进行管理)。 -
有效地址
一些攻击(NAPTHA)需要一个有效的源地址,因为攻击机制需要代理和受害者之间进行多次请求/应答交换。
欺骗改变源IP来隐藏攻击者的身份/来源。改变IP会导致其他实体(不同于攻击者)攻击受害者。
攻击率动态
- 固定费率(最多)
1)攻击开始后,代理尽可能快地发送数据包。
2)大流量可能有助于检测。 - 可变利率
1)用来逃避或延迟被发现的。
2)增加率:开始缓慢,逐渐增加,可能需要很长一段时间;很难和合法的流量增长区分开来。
3)波动汇率:能对受害者行为或预先设定的时间做出反应/可以用来提高攻击强度。
代理集的持久性
常量——所有代理的行为都是一样的(同时进行攻击)
变量:
- 特工们的行动并不一致。
- 可分为组,不是所有组同时活跃。
- 不同的团体可能会轮流攻击受害者。
对受害人的影响
破坏性:完全拒绝访问。
可自恢复的服务破坏:
- 攻击报文流入结束后,生活恢复正常,无需人为干预。
- 及时的辩护(即识别和过滤)可能会使这些对法律客户透明。
可人类恢复的服务破坏:
攻击报文流入结束后,需要重新启动或重新配置。
无效(不可恢复的):
- 对硬件造成永久性损坏。
- 可以想象,但目前还不清楚。
Acknowledgements: Jiangtao Wang