先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
橘皮书(The Orange Book)是美国国家安全局(NSA)的国家计算机安全中心(NCSC)于1985年颁发的官方标准,其正式名称是"受信任计算机系统评量基准”,其将计算机系统的安全性能由高到低划分为ABCD四个等级,每个大等级又以安全性高低依次编号细分成数个小等级,编号越大安全性越高。
C2级是当前最主要的系统级别,即商业系统安全级别,现在不难理解为什么我们的系统这么脆弱了,操作系统安全级别是C2。
第二章 身份识别
保护的对象
内存、存储设备(如硬盘)、输入输出设备(如打印机)、共享的程序、网络、共享数据
隔离
• 物理隔离。要求进程使用不同的物理实体。例如将不同的打印机设置成具有不同的安全级别。
• 时间隔离。具有不同安全要求的进程在不同的时间运行。
• 逻辑隔离。操作系统通过限制程序的存取,使得程序不能存取其允许范围外的实体,从而使用户感觉自己的操作是在没有其他进程的情况下独立进行。
• 密码隔离。进程以一种其他进程不可知的方式隐藏数据及计算
• 可以两种或多种隔离形式结合
• 隔离策略的实现复杂度递增
• 前三种所提供的安全性递减
• 前两种方法将导致资源利用率严重下降
• 因此为了提高操作系统的性能,要求必须移去操作系统保护的这些沉重包袱,并且允许具有不同安全需求的进程并发执行
操作系统安全的主要目标
• 依据系统安全策略对用户的操作进行访问控制,防止用户对计算机资源的非法存取(窃取、篡改和破坏);
• 标识系统中的用户并进行身份认证;
• 监督系统运行的安全性;
• 保证系统自身的安全性和完整性。
n为了实现这些目标,需要建立相应的安全机制,包括硬件安全机制、标识与认证、访问控制、最小特权管理、可信通路、安全审计等
硬件安全机制
优秀的硬件保护性能是高效、可靠的操作系统的基础。
计算机硬件安全的目标是保证其自身的可靠性并为系统提供基本安全机制。
其中基本安全机制包括存储保护、内存与地址保护、运行保护、I/O保护等。
存储保护
• 存储保护是一个最基本的要求,主要是指保护用户在存储器中的数据。
– 保护单元为存储器中的最小数据范围,可为字、字块、页面或段。
– 保护单元越小,则存储保护精度越高。
– 对于代表单个用户,在内存中一次运行一个进程的系统,存储保护机制应该防止用户程序对操作系统的影响。
– 在允许多道程序并发运行的多任务操作系统中,还进一步要求存储保护机制对进程的存储区域实行互相隔离。
– 存储保护负责保证系统各个任务之间互不干扰;
– 存储器管理则是为了更有效地利用存储空间。
内存与地址保护
……看不懂
运行保护
• 安全操作系统很重要的一点是进行分层设计,而运行域正是这样一种基于保护环的等级式结构。运行域是进程运行的区域,在最内层具有最小环号的环具有最高特权,而在最外层具有最大环号的环是最小的特权环。一般的系统不少于3~4个环。
• 等级域机制应该保护某一环不被其外层环侵入,并且允许在某一环内的进程能够有效地控制和利用该环以及该环以外的环
I/O保护
• I/O是仅由操作系统完成的一个特权操作,所有操作系统都对读写文件操作提供一个相应的高层系统调用,在这些过程中,用户不需要控制I/O操作的细节。
•(硬件I/O保护的局限性)只靠硬件不能提供充分的保护手段,必须由操作系统的安全机制与适当的硬件相结合才能提供强有力的保护。
标识与认证的定义
• **标识就是系统要标识用户的身份,并为每个用户取一个系统可以识别的内部名称——用户标识符。**用户标识符必须是惟一的且不能被伪造,防止一个用户冒充另一个用户。
• 将用户标识符与用户联系的过程称为认证,认证过程主要用以识别用户的真实身份,认证操作总是要求用户具有能够证明他的身份的特殊信息,并且这个信息是秘密的或独一无二的,任何其他用户都不能拥有它。
认证方法
• 用户知道的事情。
– 口令、PIN数字、秘密的握手、以及母亲的名字都是用户可能知道的事情。
• 用户拥有的物品。
– 身份标志、公钥、驾驶证、或者制服都是一些常见的可以区分用户身份的物品。
• 用户的所属。
– 又为生物特征,以用户的物理特征为基础,比如指纹、用户声音的形式、人脸。
口令
针对口令的攻击:密码嗅探、记录、暴力穷举破解、密码字典、肩窥(最常见的是偷看密码)、社会工程
安全的口令方式
存储安全
• 基于单向函数的口令认证
– f是单向函数,p是口令,id是身份
– Alice提供p||id
– 计算机计算f§
– 计算机与存储的值f§||id 作比较
传输安全
通过加密和动态口令实现
S/KEY认证协议
基本的S/KEY认证协议
改进的S/KEY认证协议
身份验证令牌(智能卡)
图像密码
生物特征
特点
可能会产生错误。即可能有相似生物特点的人也可以解开或者说本人因为各种原因解不开
– False Rejection Rate ( Type I Error)
– False Acceptance Rate (Type II Error)
– Crossover Error Rate:强调某个率高一点或者两者平衡
双因子认证
认证机制中包含有两个认证因子即被称作双因子认证。(常见的是结合密码以及用户手中的USB Key、动态口令牌等进一步验证身份)
USB Key认证
• 外型跟U盘相似
• 内置了CPU、存储器、芯片操作系统(COS),可以存储用户的私钥或数字证书,利用USB Key内置的密码算法实现对用户身份的认证
• 采用软硬件相结合一次一密的强双因子认证模式
• 是目前网上银行客户端安全级别最高的一种安全工具
基于USB Key身份认证系统主要的两种应用模式
• 基于挑战/应答的认证方式
• 基于PKI体系的认证方式
挑战应答
认证协议
单向认证
- 基于共享密钥
- 基于用户名和口令
- 基于公钥和证书
双向认证
- 基于共享密钥
- 基于用户名和口令
- 基于公钥和证书
可信的第三方认证(Kerberos协议)
• Kerberos是一种计算机网络认证协议,用于在非安全网络中对访问者以安全的手段进行身份认证
• Kerberos实现AAA:认证(Authentication)、授权(Authorization)、审计(Audit)。
• 运用对称密钥加密体制进行密钥管理,其扩展方法也可使用公开密钥加密方法
• 当有N个用户使用该系统时,为确保在任意两方之间进行秘密对话,系统维护与每个用户的共享密钥,所需最少会话密钥数为N个。
• 系统采用C/S结构,支持通信双方的相互认证,可以防止数据窃听、防止重放攻击、保护数据完整性
Kerberos特点
• 安全性
– 能够有效防止攻击者假冒合法用户
• 可靠性
– Kerberos服务自身可采用分布式结构,KDC之间互相备份
• 透明性
– 用户只需要提供用户名和口令,工作站代替用户实施认证的过程
• 可伸缩性
– 能够支持大量用户和服务器
Kerberos基本思想
• 用户只需输入一次身份验证信息就可凭此信息获得票据(ticket)来访问多个服务,即SSO(Single Sign On,单点登录)。
• 用户对应用服务器访问前,必须先从Kerberos认证服务器上获取到访问该应用服务器的票据。
Kerberos认证过程
重点:能够分析对Kerberos的攻击,知道如何攻击Kerberos以及如何防范这些攻击
第三章 访问控制
访问控制是主体对客体提出访问的请求后,对这一申请进行批准、允许、撤销的全过程进行的有效控制,从而确保只有符合控制策略的主体才能合法访问。
是引用监视器实现访问控制。,
访问控制的三要素
访问控制涉及到主体、客体和访问策略,三者之间关系的实现构成了不同的访问模型,访问控制模型是访问控制实现的基础。
主体
• 是指访问的发起者,一个提出访问请求或要求的实体,简记为S。有时也称为用户(User)或访问者(被授权使用计算机资源的用户代理,如进程、程序等)。
• 根据主体权限不同可以分为四类:
– 特殊的用户:系统管理员,具有最高级别的特权,可以访问任何资源,并具有任何类型的访问操作能力
– 一般的用户:最大的一类用户,他们的访问操作受到一定限制,由系统管理员分配
– 作审计的用户:负责整个安全系统范围内的安全控制与资源使用情况的审计
– 作废的用户:被系统拒绝的用户。
客体
• 是接受其他实体访问的被动实体, 也称目标,简记为O。
– 可供访问的各种软硬件资源,通常包括为文件、数据等系统需要保护的资源。
• 主客体的关系是相对的。当一个主体受到另外一个客体的访问时,这个主体也就变成了客体。
访问策略
• 是主体对客体的操作行为集和约束条件集, 简记为KS。简单讲,访问策略是主体对客体的访问规则集,这个规则集直接定义了主体对客体可以操作的行为和客体对主体的条件约束。
• 体现为一种授权行为。任何访问控制策略最终可被模型化为访问矩阵形式。
• 授权(Authorization):规定可对该资源执行的动作(例如读、写、执行或拒绝访问)。
• 未授权的访问包括:未经授权的使用、泄露、修改、销毁信息以及颁发指令等。
– 非法用户进入系统。
– 合法用户对系统资源的非法使用。
访问操作
• 具体操作如:读(R)、写(W)、实际上可读可写(修改),添加(a),删除(d),运行(e)等操作。
• O:是一种特殊的访问权–控制权(O或C,O拥有权owner、C:create) ,指某个主体具有改变其它主体对某客体的访问权限的能力。
访问控制的实现框架
访问控制的任务——
–识别和确认访问系统的用户;
–决定该用户可以对某一系统资源进行何种类型的访问。
对于可用性,访问控制通过对以下信息的有效控制来实现
- (1)谁可以颁发影响网络可用性的网络管理指令
- (2)谁能够滥用资源以达到占用资源的目的
- (3)谁能够获得可以用于拒绝服务攻击的信息
访问控制由两个重要过程组成
–通过认证来检验主体的合法身份;
–通过授权(Authorization)来限制用户对资源的访问级别(权利)。
常见访问控制形式
• 在计算机系统中,安全机制的主要内容是访问控制,包括以下3个任务:
– 授权,即确定可给予哪些主体访问客体的权力;
– 确定访问权限(读、写、执行、删除、追加等访问方式的组合);
– 实施访问权限。
• 访问控制一般都涉及自主访问控制和强制访问控制两种形式。
自主访问控制
• 最常用的一类访问控制机制,用来决定一个用户是否有权访问一些特定客体的一种访问约束机制。需要自主访问控制保护的客体的数量取决于系统环境
• 为了实现完备的自主访问控制机制,系统要将访问控制矩阵相应的信息以某种形式保存在系统中。目前在操作系统中实现的自主访问控制机制是基于矩阵的行或列表达访问控制信息。
基于行的自主访问控制机制
• 在每个主体上都附加一个该主体可访问的客体的明细表,根据表中信息的不同又可分成以下3种形式。
– 能力表(capabilities list)。能力决定用户是否可以对客体进行访问以及进行何种模式的访问(读、写、执行),拥有相应能力的主体可以按照给定的模式访问客体。
– 前缀表(profiles)。对每个主体赋予的前缀表,包括受保护客体名和主体对它的访问权限。当主体要访问某客体时,自主访问控制机制将检查主体的前缀是否具有它所请求的访问权。
– 口令(password)。在基于口令机制的自主访问控制机制中,每个客体都相应地有一个口令。主体在对客体进行访问前,必须向操作系统提供该客体的口令。如果正确,它就可以访问该客体。
基于列的自主访问控制机制
• 每个客体都附加一个可访问它的主体的明细表,它有两种形式,即保护位和访问控制表。
– 保护位(protection bits)。这种方法对所有主体、主体组以及客体的拥有者指明一个访问模式集合。保护位机制不能完备地表达访问控制矩阵,一般很少使用。
– 访问控制列表(access control list, ACL)。国际上流行的一种十分有效的自主访问控制模式
访问控制列表ACL
• 每个客体上都附加一个主体明细表,表示访问控制矩阵。表中的每一项都包括主体的身份和主体对该客体的访问权限
访问控制列表ACL的优化
• 可访问某客体的主体很多时,访问控制表将会变得很长。而在一个大系统中,客体和主体都非常多,访问控制表将占用很多CPU时间。
• 把用户按其所属或其工作性质进行分类,构成相应的组(group),并设置一个通配符(wild card)“*”,代表任何组名或主体标识符。
能力表CL和访问控制列表ACL的区别
• 鉴别方面:二者需要鉴别的实体不同
• 保存位置不同
• 浏览访问权限:ACL容易,CL困难
• 访问权限传递:ACL困难,CL容易
• 访问权限回收:ACL容易,CL困难
• ACL和CL之间转换
– ACL->CL:困难
– CL->ACL:容易
• 多数集中式操作系统使用ACL方法或类似方式
• 由于分布式系统中很难确定给定客体的潜在主体集,在现代OS中CL也得到广泛应用
自主访问控制的实现举例
拥有者/同组用户/其他用户+访问控制列表模式
访问控制表只对“拥有者/同组/其他用户”无法分组的用户才使用。
自主访问控制模型的特点
• 对用户提供的灵活的数据访问方式,应用广泛;
• 在移动过程中其访问权限关系会被改变。
• 当用户数量多、管理数据量大时,由于访问控制的粒度是单个用户,ACL会很庞大。
• 采用ACL机制管理授权处于一个较低级的层次,管理复杂、代价高以至易于出错。
• 它有一个明显的缺点,就是这种控制是自主的。虽然这种自主性为用户提供了很大的灵活性,但缺乏高安全等级所需的高安全性。
强制访问控制(MAC)
• 在强制访问控制机制下,系统中的每个进程、每个文件、每个 IPC 客体( 消息队列、信号量集合和共享存储区)都被赋予了相应的安全属性,这些安全属性是不能改变的,它由管理部门或由操作系统自动地按照严格的规则来设置,不像访问控制表那样由用户或他们的 程序直接或间接地修改。
• MAC是一种多级访问控制策略,它的主要特点是系统对访问主体和受控对象实行强制访问控制,系统事先给访问主体和受控对象分配不同的安全级别属性,在实施访问控制时,系统先对访问主体和受控对象的安全级别属性进行比较,再决定访问主体能否访问该受控对象。
安全级别
• 安全级别由两方面的内容构成。
– 保密级别(或叫做敏感级别或级别)。
– 范畴集。
• 安全级别包括一个保密级别,范畴集包含任意多个范畴。安全级别通常写作保密级别后随一范畴集的形式
• 实际上范畴集常常是空的,而且很少有几个范畴名。
• 在安全级别中保密级别是线性排列的。两个安全级别
之间的关系有以下几种。
– 第一安全级别支配第二安全级别。
– 第二安全级别支配第一安全级别。
– 第一安全级别等于第二安全级别。
– 两个安全级别无关。
安全策略
一个安全策略是对一个系统应该具有的安全性的描述。只有当一个操作系统(或一个可信系统的任意部分)与其安全策略相称,也就是说,该操作系统能够满足对它的安全要求,这个操作系统才是可信的。
军事安全策略
系统内所有信息(如文件)都具有相应的密级,每个人都拥有一个许可证。
军事安全策略的目的是防止用户取得自己不应得到的密级较高的信息。
密级、安全属性、许可证、访问类等含义是一样的,分别对应于主体或客体,一般都统称安全级别。
商业安全策略
• 四个安全等级
– Public
– Sensitive
– Private
– Confidential
Clark-Wilson商业安全策略
为了体现用户完整性,他们提出了职责隔离(seperation of duty)目标;
为了保证数据完整性,他们提出了应用相关的完整性验证进程;
为了建立过程完整性,他们定义了对于变换过程的应用相关验证;
为了约束用户、进程和数据之间的关联,他们使用了一个三元组结构
• Clark-Wilson模型的核心是以良构事务为基础来实现商务环境中所需的完整性策略。
在模型中,CDIs、UDIs、IVPs和TPs分别代表受控数据项(constrained data items)、非受控数据项 (unconstrained data items)、完整性验证过程(integrity verification procedures)和变换过程(transformation procedures)。
Clark-Wilson模型中的完整性保证是一个两段式过程:由安全官员、系统所有者和关于一个完整性策略的系统管理员来完成的认证过程,及其由系统来完成的实施过程。
完整性机制和强制访问控制的差别
• 在完整性控制中,没必要给每一个数据项都关联一个特定的完整性安全级,而仅仅是一个许可执行的程序集。
• 一个用户并没有被授权去直接读或写确定的数据项,而是通过执行程序来影响这些数据。
Bell-La Padula军事级保密性模型(BLP)
• 在BLP模型中将主体定义为能够发起行为的实体,如进程;将客体定义为被动的主体行为承担者,如数据、文件等;将主体对客体的访问分为r(只读)、w(读写)、a(只写)、x(执行)以及c(控制)五种访问模式,其中c(控制)是指该主体用来授予或撤销另 一主体对某一客体的访问权限的能力。
• BLP模型的安全策略包括两部分: 自主安全策略和强制安全策略。
• 自主安全策略使用一个访问矩阵表示,访问矩阵第i行第j列的元素Mij表示主体Si对客体Oj的所有允许的访问模式,主体只能按照在访问矩阵中被授予的对客体的访问权限对客体进行相应的访问。
• 强制安全策略包括简单安全特性和*特性,系统对所有的主体和客体都分配一个访问类属性,包括主体和客体的密级和范畴,系统通过比较主体与客体的访问类属性控制主体对客体的访问。
Biba模型
主要应用类似BLP模型的规则来保护信息的完整性
目标
主要目标是用以防止对系统数据的非授权修改,从而达到对整个系统数据完整性进行控制的目的,对于职责隔离目标,则是通过对访问类的恰当划分方案来实现的
完整性级别
• 每个完整级别均由两部分组成: 密级和范畴。其中,密级是如下分层元素集合中的一个元素: {极重要(crucial,C),非常重要(very important,VI),重要(important,I)}。此集合是全序的,即C>VI>I。范畴的定义与BLP模型类似。
• 完整级别形成服从偏序关系的格,此偏序关系称为支配(≤)关系
强制安全特性
• 简单完整性规则(simple integrity axiom),规定完整性级别高的主体不能从完整性级别低的客体读取数据。强调主体如何从客体进行读操作。——没有“下读”。
• 星级完整性规则(*-integrity axiom),规定完整性级别低的主体不能对完整性级别高的客体写数据。——禁止“上写”。
• 调用规则(invocation property),规定一个完整性级别低的主体不能从级别高的客体调用程序或服务。
优势
Biba模型的优势在于其简单性以及和BLP模型相结合的可能性
不足
• 完整标签确定的困难性。
• Biba模型在有效保护数据一致性方面不充分。
• 关于Biba模型和BLP模型的结合
第四章 软件安全
程序安全
程序问题分为非恶意程序错误或恶意代码
非恶意程序错误:缓冲区溢出
什么是缓冲区溢出? 原理?
– 向固定长度的缓冲区中写入超出其预告分配长度的内容,造成缓冲区中数据的溢出,从而覆盖了缓冲区周围的内存空间。黑客借此精心构造填充数据,导致原有流程的改变,让程序转而执行特殊的代码,最终获取控制权。
假设现在有一个程序, 它的函数调用顺序如下。
main() ->; func_1() ->; func_2() ->; func_3()
即: 主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3。
其详细结构图如下页图所示。
• 随着函数调用层数的增加,函数栈帧是一块块地向内存低地址方向延伸的。
• 随着进程中函数调用层数的减少,即各函数调用的返回,栈帧会一块块地被遗弃而向内存的高址方向回缩。
• 特点:更具有破坏性和隐蔽性
• 在缓冲区溢出中,我们主要关注数据区和堆栈区。
在使用栈时,引用栈帧需要借助的两个寄存器
• 一个是SP(ESP),即栈顶指针,它随着数据入栈出栈而发生变化。
• 另一个是BP(EBP),即基地址指针,它用于标识栈中一个相对稳定的位置,通过BP,再加上偏移地址,可以方便地引用函数参数以及局部变量。
• 在局部变量的下面,是前一个调用函数的EBP,接下来就是返回地址。
• 如果局部变量发生溢出,很有可能会覆盖掉EBP甚至RET(返回地址),这就是缓冲区溢出攻击的“奥秘”所在。
危害
• 它极容易使服务程序停止运行,服务器死机甚至删除服务器上的数据。
• 更为严重的是,可以利用缓冲区溢出执行非授权指令,甚至取得系统特权,进而进行各种非法操作。
栈溢出
例子
#include <stdio.h>
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
😝朋友们如果有需要的话,可以联系领取~
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
2️⃣视频配套工具&国内外网安书籍、文档
① 工具
② 视频
③ 书籍
资源较为敏感,未展示全面,需要的最下面获取
② 简历模板
因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
️⃣视频配套工具&国内外网安书籍、文档
① 工具
② 视频
③ 书籍
资源较为敏感,未展示全面,需要的最下面获取
② 简历模板
因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-ayO4m6aT-1713228674307)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!