【安全与风险】计算机系统基本资源安全
计算机系统基本资源安全
- 部分一. 操作系统安全
- 操作系统安全的定义
- 保护方式
- 重点
- 访问控制(Access Control)
- 访问控制矩阵
- 访问控制列表
- 读、写和执行
- Unix访问控制列表
- 权限位
- 特权提升(Privilege escalation)
- 垂直升级的例子
- 缓冲区溢出(Buffer overflows)攻击
- 堆栈(简化)
- 在正常情况下会发生什么?
- 我们把更大的东西放进去?
- 如果我们再聪明一点?
- 缓冲区溢出防御
- 部分二:拒绝服务攻击(DOS):攻击、检测和预防
- 定义
- 实践中的DoS
- 攻击模式
- DoS概述
- DDoS
- 防守必须配合进攻
- 攻击类别
- 自动化程度
- 手动
- 全自动
- 半自动
- 代理商招募策略(漏洞扫描-攻击代码传播)
- 漏洞扫描
- 攻击代码传播
- 利用弱点(拒绝服务)
- 源地址有效性
- 攻击率动态
- 代理集的持久性
- 对受害人的影响
部分一. 操作系统安全
操作系统安全的定义
操作系统安全(OS security)是确保操作系统完整性、机密性和可用性的过程。
操作系统安全是指用于保护操作系统免受威胁、病毒、恶意软件或远程黑客入侵的特定步骤或措施。
保护方式
- 定期更新操作系统补丁
- 安装最新的防病毒引擎和软件
- 通过防火墙控制进出网络流量
- 创建只具有所需权限的安全帐户(即用户管理)
重点
访问控制(Access Control)
访问控制矩阵
- 抽象安全模型
- 描述域(用户)相对于对象(文件、进程等)的权限。
- 显示为二维单元格数组,其中行是主题,列是对象。
- 单元格x,y表示主体x对对象y的权限。
访问控制矩阵只是一种抽象概念——在现实世界中使用并不实际。 - 为整个文件系统存储矩阵将使用大量内存!
- 替代方案-使用文件存储域功能(访问控制列表)。
访问控制列表
- 每个文件都有一个附加的列表
- 列表包含:1)相关的域(所有者、群体、其他人)2)许可(读、写、执行)
- 操作系统在访问对象时检查权限
- 大多数现代操作系统的默认设置
读、写和执行
读®:授予查看文件内容的能力
写(w):授予修改或删除文件的能力
运行(x):授予将文件作为程序运行的能力
Unix访问控制列表
访问控制列表(ACL)有3个域:所有者、群体、其他人
3个权限:读、写、执行
- 对于文件和目录的解释不同
- 对于目录:
2.1 读:可以列出里面的文件
2.2 写:可以编辑内容(例如,删除文件)
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")
返回地址现在指向我们的代码。
返回地址是调用“foo”函数的指令的地址。因此,在重写返回地址后,函数返回到恶意代码的地址。
缓冲区溢出防御
栈金丝雀保护(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
【安全与风险】计算机系统基本资源安全相关推荐
- 分时系统的用户具有独占性,因此一个用户可以独占计算机系统的资源.,课件2016计算机操作系统试题库(判断).doc...
课件2016计算机操作系统试题库(判断) 判断题(共73个题目) 200151. 操作系统属于最重要的.最不可缺少的应用软件. 此题答案为:0 200152. 操作系统完成的主要功能是与硬件相关的. ...
- 卡梅隆大学 深入了解计算机系统lab资源
CS:APP2e, Bryant and O'Hallaron 点击 Self-Study Handout 下载
- 使计算机系统使用方便和_______是操作系统的两个主要设计目标,操作系统练习.doc...
文档介绍: (一)单项选择题1操作系统是计算机系统的一种().A.应用软件B.系统软件c.通用软件D.工具软件2.操作系统目的是提供一个供其他程序执行的良好环境,因此它必须使计算机()A.使用方便B. ...
- 软件测试中的风控,测试过程中会遇到哪些风险和机会?
如果想要做成一件事,就要做好风险控制.风险无处不在. 你若不善待她,就会受到她的惩罚. 我们要做好测试,就要做好测试过程中的风险控制.那么,测试过程中会遇到哪些风险呢?下面从需求.技术.进度.资源等4 ...
- 深入了解计算机系统(CS:APP)思考题
QA1 1.简述C.ASM.ML的关系,各自优缺点? 机器语言是二进制数据表示的语言,机器可以直接识别:汇编语言是与机器指令一一对应的助记符,是一种低级语言,经过汇编和链接之后机器可以运行:C语言在低 ...
- 立即升级 NGINX 以应对漏洞风险
原文作者:NGINX 原文链接:立即升级 NGINX 以应对漏洞风险 转载来源:NGINX 开源社区 今日,我们发布了针对 NGINX Plus.NGINX 开源版.NGINX 企阅版以及 NGINX ...
- 在计算机系统中 接口是什么意思,计算机中操作系统是什么的接口
计算机操作系统是用户与计算机的接口,同时也是计算机硬件和其他软件的接口.在计算机中,操作系统是其最基本也是最为重要的基础性系统软件. 操作系统(Operating System,简称OS)是管理和控制 ...
- 提升资源利用率与保障服务质量,鱼与熊掌不可兼得?
随着云计算时代的到来,大规模资源运营面临着如何在保障服务质量的同时提升资源利用率(降本增效).但这两个目标的达成在当前的软硬件技术水平上,是相互矛盾的.本文介绍的LAR(Load Auto-Regul ...
- 怎么查看台式计算机系统,电脑操作系统版本怎么查看 电脑操作系统版本查看方法...
电脑操作系统版本怎么查看? 操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口.操作系统的功能包括管理计算机系统的硬件.软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持 ...
最新文章
- 利用Jenkins的Pipeline实现集群自动化部署SpringBoot项目
- 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)...
- pip 系统无法将文件移到不同的磁盘驱动器 的问题
- math标准库函数----python
- “全裸”:看向京的雕塑艺术展
- 让TA们告诉你,疫情当下如何更彪悍的成长
- 关于c语言的符号常量以下叙述中正确的是,关于C语言的符号常量,以下叙述中正确的是...
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(10)Pty loves string(Border+二维数点)
- linux重启mysql一直_LINUX重启MYSQL的命令
- 使用ffmpeg进行h.264编码
- Microsoft Visual Studio 2005 怎么更改安装路径?
- 如何使用 Opencv 打开摄像头获取图像信息?
- 2021-0409梦笔记2
- 在头文件中定义或声明变量
- 代码精进之代码规范(二)
- matlab 正交特征向量,关于左右特征向量的正交性问题 求助!!!!
- 国漫的又一次崛起?形成独树一帜的“中国学派”
- java lombok logback 配置日志打印
- Ble Mesh技术(九)之Friendship
- C语言初阶-C语言中static的用法
热门文章
- PointNet-环境搭建:win10、cuda10.1、cudnn7、python3.7、tensorflow-gpu1.13 (详细)
- Intel的东进与ARM的西征(4)--理想的星空,苹果处理器之野望
- Transaction 浅析
- 海康威视工程师谈嵌入式软件
- Windows 10 Build 21332:纯净安装移除 Paint 3D 应用
- 好一朵美丽的永生花,芬芳美丽满枝桠
- 微信O2O,卡在了“连接一切”的迷信上
- 从零学习VINS-Mono/Fusion源代码(五):VIO初始化
- 计算机word插图教案,中学信息技术《配插图》教案
- 取消WordPress主题编码:与世界分享您的创造力