> 文章列表 > 【安全与风险】计算机系统基本资源安全

【安全与风险】计算机系统基本资源安全

【安全与风险】计算机系统基本资源安全

计算机系统基本资源安全

  • 部分一. 操作系统安全
    • 操作系统安全的定义
    • 保护方式
    • 重点
      • 访问控制(Access Control)
        • 访问控制矩阵
        • 访问控制列表
        • 读、写和执行
        • Unix访问控制列表
        • 权限位
      • 特权提升(Privilege escalation)
      • 缓冲区溢出(Buffer overflows)
    • 堆栈(简化)
      • 在正常情况下会发生什么?
      • 我们把更大的东西放进去?
      • 如果我们再聪明一点?
    • 缓冲区溢出防御
  • 部分二:拒绝服务攻击(DOS):攻击、检测和预防
    • 定义
    • 实践中的DoS
    • 攻击模式
    • DoS概述
    • DDoS
    • 防守必须配合进攻
    • 攻击类别
      • 自动化程度
        • 手动
        • 全自动
        • 半自动
      • 代理商招募策略(漏洞扫描-攻击代码传播)
        • 漏洞扫描
        • 攻击代码传播
      • 利用弱点(拒绝服务)
      • 源地址有效性
      • 攻击率动态
      • 代理集的持久性
      • 对受害人的影响

部分一. 操作系统安全

操作系统安全的定义

操作系统安全(OS security)是确保操作系统完整性、机密性和可用性的过程。

操作系统安全是指用于保护操作系统免受威胁、病毒、恶意软件或远程黑客入侵的特定步骤或措施。

保护方式

  1. 定期更新操作系统补丁
  2. 安装最新的防病毒引擎和软件
  3. 通过防火墙控制进出网络流量
  4. 创建只具有所需权限的安全帐户(即用户管理)

重点

访问控制(Access Control)

访问控制矩阵

  1. 抽象安全模型
  2. 描述域(用户)相对于对象(文件、进程等)的权限。
  3. 显示为单元格的2d数组,其中行是主题,列是对象。
  4. 单元格x,y表示主体x对对象y的权限。
    【安全与风险】计算机系统基本资源安全
    访问控制矩阵只是一种抽象——在现实世界中使用并不实际。
  5. 为整个文件系统存储矩阵将使用大量内存!
  6. 替代方案-存储域功能与文件(访问控制列表)。

访问控制列表

  1. 每个文件都有一个附加的列表
  2. 列表包含:1)相关的领域(所有者、群体、其他人)2)许可(读、写、执行)
  3. 操作系统在访问对象时检查权限
  4. 大多数现代操作系统的默认设置
    【安全与风险】计算机系统基本资源安全

读、写和执行

读®:授予查看文件内容的能力
写(w):授予修改或删除文件的能力
运行(x):授予将文件作为程序运行的能力

Unix访问控制列表

访问控制列表(ACL)有三个域:所有者、群体、其他人
3个权限:读、写、执行

  1. 对于文件和目录的解释不同
  2. 对于目录:1)读:可以列出里面的文件 2)可以编辑内容(例如,删除文件) 3)可以改变目录(cd),使其工作目录
  3. 每个用户都有一个默认组

权限位

与名为“LancasterProg”的程序和名为“LancasterData”的数据集相关联的权限位如下:
LancasterProg: 1 1 1 1 0 1 1 0 0
LancasterData: 1 1 1 1 0 0 0 0 0
【安全与风险】计算机系统基本资源安全

特权提升(Privilege escalation)

利用错误或设计不良的程序来访问您没有权限的资源

  1. 垂直升级(Vertical escalation)
    低级用户访问为高级用户(如管理员)保留的功能或内容。
  2. 水平升级(Horizontal escalation)
    正常用户访问的功能或保留给其他正常用户的内容。
    例如:用户A访问用户B的照片目录

垂直的例子:

  1. 在机器上以根用户身份运行的程序(程序接受低级用户的输入)。
  2. 对程序执行缓冲区溢出攻击。
  3. 使程序调用其他函数/访问其他具有高级权限的文件(例如,更改引用文件的地址到目标)。
  4. 是否可以使用metasploit等工具自动完成

缓冲区溢出(Buffer overflows)

  1. 当程序试图在缓冲区中放入比分配给它的内存量更多的数据时,就会发生缓冲区溢出。
  2. 很难利用,但却非常强大。
  3. 由具有内存管理的语言中的编程错误引起(例如,用户输入时不检查大小)。

堆栈(简化)

void foo(char *s){char buf[10];strcpy(buf, s);...

在正常情况下会发生什么?

foo ("Hello")

【安全与风险】计算机系统基本资源安全
【安全与风险】计算机系统基本资源安全

我们把更大的东西放进去?

foo(“Hello worldXXXXXXXXX”)

【安全与风险】计算机系统基本资源安全
【安全与风险】计算机系统基本资源安全
返回地址和堆栈指针被覆盖

如果我们再聪明一点?

在地址1234加载一些代码

foo("Hello worldXXX1234")

【安全与风险】计算机系统基本资源安全
返回地址现在指向我们的代码

缓冲区溢出防御

堆栈金丝雀(Stack canaries)

  1. 放置在堆栈周围的值(通常在缓冲区和控制数据之间),稍后可以对其进行测试。
  2. 如果堆栈被覆盖,值将会改变并且可以被检测到。

随机化(Randomisation)

  1. 内存的布局是随机的。
  2. 使它更难找到正确的内存地址来攻击/跳转。
  3. 不是100%有效(只会增加难度)。

金丝雀在矿井中被用来探测煤气泄漏。类似地,可以在堆栈中使用金丝雀值来检测缓冲区溢出/泄漏。

随机化并非100%有效。例如,在一个32位的应用程序中,虚拟地址空间相对较小,所以我们可以创建一个暴力方法来动态发现一个随机内存地址。发现很难,但并非不可能。

部分二:拒绝服务攻击(DOS):攻击、检测和预防

定义

拒绝服务(DOS):一种通过耗尽诸如中央处理器(CPU)、内存、带宽和磁盘空间等资源来阻止或损害网络、系统或应用程序的授权使用的操作。

攻击可能是针对

  1. 网络带宽
  2. 系统资源
  3. 应用资源

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概述

网络优化,只是尽最大努力数据包交付-不警察交通:

  1. 互联网安全是高度相互依存的。
  2. 互联网资源有限
  3. 情报和资源没有配置好
  4. 问责制没有得到执行
  5. 控制是分布式的

DDoS

分布式拒绝服务攻击(DDoS攻击),

  1. 涌入受害者的流量来自许多不同的来源。
  2. 这有效地使得仅仅通过阻止单个源来阻止攻击变得不可能。

防守必须配合进攻

对攻击类型进行分类非常重要。

可能被认出:

  1. 攻击报文头信息 (IP地址或分片ID和TTL字段)。
  2. 攻击报文流动态(快速启动行为/缓慢的升级意味着有多个攻击者)。
  3. 数据包跟踪的频率分析。

攻击类别

  1. 自动化程度
  2. 代理商招募策略
  3. 利用弱点(拒绝服务)
  4. 源地址有效性
  5. 攻击率动态
  6. 代理集的持久性
  7. 对受害人的影响

自动化程度

手动

  1. 攻击者手动扫描,入侵,安装攻击代码,然后引导攻击。
  2. 仅用于早期DDoS攻击。

全自动

  1. 利用/招募阶段和攻击阶段都是自动化的。
  2. 一切都是预先安排好的(事先安排好的)。
  3. 主代理之间不需要进一步的通信。
  4. 攻击者暴露最小。
  5. 刚性攻击规范是硬编码的。
  6. 自动/半自动混合。
  7. 完全编程提前为自动的,但留下一个后门,以供将来修改。

半自动

  1. 招募阶段自动启动,攻击阶段手动启动。
  2. 需要主代理之间的通信来发起攻击:
  3. 直接通讯:
    1)主机和代理之间交换的网络数据包。
    2)需要知道对方的IP地址。
    3)增加了被发现的风险。
    4)如果特工在监听,也许网络扫描器能发现。
    5)只能在事先安排好的时间听。
  4. 间接沟通:
    1)使用一些已经存在的合法通信通道。
    2)IRC常用。
    3)代理的发现可能只告诉我们IRC服务器和频道。
    4) 切换频道用来进一步伪装。

代理商招募策略(漏洞扫描-攻击代码传播)

漏洞扫描

  1. 水平(查找受害者机器中的特定端口/漏洞)。
  2. 竖直(在同一系统上查找多个端口/漏洞)。
  3. 协调一致的(扫描同一子网上的多台计算机以查找特定漏洞)。
  4. 秘密(以上任何一种,但要慢慢来,以免被发现)。

攻击代码传播

  1. 中央服务器(li0n蠕虫)
    1)所有新招募的特工联系中央服务器获取攻击代码。
    2)单点故障(能被发现并关闭/中央服务器的高负载可能会限制效率或启用检测)。
  2. 背链(拉面,莫里斯蠕虫)
    从用于利用新主机的机器下载的攻击代码。
  3. 自主(红色代码,沃霍尔,各种邮件蠕虫)
    同时下载攻击代码。

利用弱点(拒绝服务)

  1. 语义(TCP SYN, NAPTHA)
    1)在受害者身上利用协议或应用程序的特定特性或错误,以消耗过多的资源。
    2)是否可以通过部署修改过的协议/应用程序来缓解。
  2. 强力(Brute Force)
    1)中间网络比受害者拥有更多的资源-可以交付比受害者可以处理的更高数量的数据包。
    2)使用看似合法的数据包淹没受害者资源(很难在不损害合法流量的情况下进行过滤)。
    3)需要更大的攻击报文量。

源地址有效性

  1. 欺骗地址
    1)避免问责,有助于避免被发现。
    2)反射器攻击需要。
    3)使蛮力攻击困难(否则,可以通过智能地分配用于各种流的资源进行管理)。

  2. 有效地址
    一些攻击(NAPTHA)需要一个有效的源地址,因为攻击机制需要代理和受害者之间进行多次请求/应答交换。

欺骗改变源IP来隐藏攻击者的身份/来源。改变IP会导致其他实体(不同于攻击者)攻击受害者。

攻击率动态

  1. 固定费率(最多)
    1)攻击开始后,代理尽可能快地发送数据包。
    2)大流量可能有助于检测。
  2. 可变利率
    1)用来逃避或延迟被发现的。
    2)增加率:开始缓慢,逐渐增加,可能需要很长一段时间;很难和合法的流量增长区分开来。
    3)波动汇率:能对受害者行为或预先设定的时间做出反应/可以用来提高攻击强度。

代理集的持久性

常量——所有代理的行为都是一样的(同时进行攻击)

变量:

  1. 特工们的行动并不一致。
  2. 可分为组,不是所有组同时活跃。
  3. 不同的团体可能会轮流攻击受害者。

对受害人的影响

破坏性:完全拒绝访问。

可自恢复的服务破坏

  1. 攻击报文流入结束后,生活恢复正常,无需人为干预。
  2. 及时的辩护(即识别和过滤)可能会使这些对法律客户透明。

可人类恢复的服务破坏
攻击报文流入结束后,需要重新启动或重新配置。

无效(不可恢复的)

  1. 对硬件造成永久性损坏。
  2. 可以想象,但目前还不清楚。

Acknowledgements: Jiangtao Wang