计算机系统基本资源安全

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

部分一. 操作系统安全

操作系统安全的定义

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

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

保护方式

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

重点

访问控制(Access Control)

访问控制矩阵

  1. 抽象安全模型
  2. 描述域(用户)相对于对象(文件、进程等)的权限。
  3. 显示为二维单元格数组,其中行是主题,列是对象。
  4. 单元格x,y表示主体x对对象y的权限。

    访问控制矩阵只是一种抽象概念——在现实世界中使用并不实际。
  5. 为整个文件系统存储矩阵将使用大量内存!
  6. 替代方案-使用文件存储域功能(访问控制列表)。

访问控制列表

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

读、写和执行

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

Unix访问控制列表

访问控制列表(ACL)有3个域:所有者、群体、其他人

3个权限:读、写、执行

  1. 对于文件和目录的解释不同
  2. 对于目录:
    2.1 读:可以列出里面的文件
    2.2 写:可以编辑内容(例如,删除文件)
    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")


返回地址现在指向我们的代码。

返回地址是调用“foo”函数的指令的地址。因此,在重写返回地址后,函数返回到恶意代码的地址。

缓冲区溢出防御

栈金丝雀保护(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

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

  1. 分时系统的用户具有独占性,因此一个用户可以独占计算机系统的资源.,课件2016计算机操作系统试题库(判断).doc...

    课件2016计算机操作系统试题库(判断) 判断题(共73个题目) 200151. 操作系统属于最重要的.最不可缺少的应用软件. 此题答案为:0 200152. 操作系统完成的主要功能是与硬件相关的. ...

  2. 卡梅隆大学 深入了解计算机系统lab资源

    CS:APP2e, Bryant and O'Hallaron 点击 Self-Study Handout 下载

  3. 使计算机系统使用方便和_______是操作系统的两个主要设计目标,操作系统练习.doc...

    文档介绍: (一)单项选择题1操作系统是计算机系统的一种().A.应用软件B.系统软件c.通用软件D.工具软件2.操作系统目的是提供一个供其他程序执行的良好环境,因此它必须使计算机()A.使用方便B. ...

  4. 软件测试中的风控,测试过程中会遇到哪些风险和机会?

    如果想要做成一件事,就要做好风险控制.风险无处不在. 你若不善待她,就会受到她的惩罚. 我们要做好测试,就要做好测试过程中的风险控制.那么,测试过程中会遇到哪些风险呢?下面从需求.技术.进度.资源等4 ...

  5. 深入了解计算机系统(CS:APP)思考题

    QA1 1.简述C.ASM.ML的关系,各自优缺点? 机器语言是二进制数据表示的语言,机器可以直接识别:汇编语言是与机器指令一一对应的助记符,是一种低级语言,经过汇编和链接之后机器可以运行:C语言在低 ...

  6. 立即升级 NGINX 以应对漏洞风险

    原文作者:NGINX 原文链接:立即升级 NGINX 以应对漏洞风险 转载来源:NGINX 开源社区 今日,我们发布了针对 NGINX Plus.NGINX 开源版.NGINX 企阅版以及 NGINX ...

  7. 在计算机系统中 接口是什么意思,计算机中操作系统是什么的接口

    计算机操作系统是用户与计算机的接口,同时也是计算机硬件和其他软件的接口.在计算机中,操作系统是其最基本也是最为重要的基础性系统软件. 操作系统(Operating System,简称OS)是管理和控制 ...

  8. 提升资源利用率与保障服务质量,鱼与熊掌不可兼得?

    随着云计算时代的到来,大规模资源运营面临着如何在保障服务质量的同时提升资源利用率(降本增效).但这两个目标的达成在当前的软硬件技术水平上,是相互矛盾的.本文介绍的LAR(Load Auto-Regul ...

  9. 怎么查看台式计算机系统,电脑操作系统版本怎么查看 电脑操作系统版本查看方法...

    电脑操作系统版本怎么查看? 操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口.操作系统的功能包括管理计算机系统的硬件.软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持 ...

最新文章

  1. 利用Jenkins的Pipeline实现集群自动化部署SpringBoot项目
  2. 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)...
  3. pip 系统无法将文件移到不同的磁盘驱动器 的问题
  4. math标准库函数----python
  5. “全裸”:看向京的雕塑艺术展
  6. 让TA们告诉你,疫情当下如何更彪悍的成长
  7. 关于c语言的符号常量以下叙述中正确的是,关于C语言的符号常量,以下叙述中正确的是...
  8. 2021“MINIEYE杯”中国大学生算法设计超级联赛(10)Pty loves string(Border+二维数点)
  9. linux重启mysql一直_LINUX重启MYSQL的命令
  10. 使用ffmpeg进行h.264编码
  11. Microsoft Visual Studio 2005 怎么更改安装路径?
  12. 如何使用 Opencv 打开摄像头获取图像信息?
  13. 2021-0409梦笔记2
  14. 在头文件中定义或声明变量
  15. 代码精进之代码规范(二)
  16. matlab 正交特征向量,关于左右特征向量的正交性问题 求助!!!!
  17. 国漫的又一次崛起?形成独树一帜的“中国学派”
  18. java lombok logback 配置日志打印
  19. Ble Mesh技术(九)之Friendship
  20. C语言初阶-C语言中static的用法

热门文章

  1. PointNet-环境搭建:win10、cuda10.1、cudnn7、python3.7、tensorflow-gpu1.13 (详细)
  2. Intel的东进与ARM的西征(4)--理想的星空,苹果处理器之野望
  3. Transaction 浅析
  4. 海康威视工程师谈嵌入式软件
  5. Windows 10 Build 21332:纯净安装移除 Paint 3D 应用
  6. 好一朵美丽的永生花,芬芳美丽满枝桠
  7. 微信O2O,卡在了“连接一切”的迷信上
  8. 从零学习VINS-Mono/Fusion源代码(五):VIO初始化
  9. 计算机word插图教案,中学信息技术《配插图》教案
  10. 取消WordPress主题编码:与世界分享您的创造力