精简
第一章 概念
1.1 CIA 与 3A
CIA
机密性:避免 未授权信息 泄露
相关概念:身份验证、物理安全
攻击机密性的手段:窃听;网络钓鱼
完整性:未授权 不能改变 信息属性
实现完整性的工具:使用 冗余;保护每个数据文件元数据
攻击完整性的手段:(中间人) 修改
可用性:任何 授权用户 都能及时 访问 和 修改信息
手段:物理保护;计算冗余
攻击可用性:Dos攻击/垃圾邮件,本质是填满队列
3A
保证:计算机系统如何提供和管理信任
攻击:抵赖(这不是我卖的股票)
真实:确定一些事物 货真价实,名副其实。通过 数字签名 实现。
攻击:伪装/冒充
匿名:隐私保护
攻击:网络钓鱼;相关性与追踪
1.2 四种访问控制模型优缺点
Model | 优 | 缺 |
---|---|---|
访问控制矩阵 | 快速、直接确定主客控制权限 | 缺乏可拓展性 |
访问控制列表 | 体量小;可直接存储为客体元数据 | 不能提供有效方法列举所有访问权限 |
权能(主体为中心) | 体量小;计算快 | 没有与客体直接关联 |
基于角色控制访问 | 降低了需要记录的规则总数 | 目前OS未实现 |
1.3 加密概念
蛮力破解
自然语言中:
设
对于给定密文,会有一个唯一有效明文,
加密散列
函数 单向性 ;抗碰撞性
数字签名
浏览器基于 密钥交换 来完成对网站的浏览。
防范网络钓鱼:检查数字证书包含的组织名称是否与网站关联
1.4 密码
字典攻击:编译所有常用密码的字典
第二章 物理安全
SIM安全与挑战相应协议
作用:识别 卡主 和 验证对应 手机网络
PIN:要对PIN解密,解密失败超过一定次数会被永久锁定
生物特征识别
· 普遍性
· 独特性
· 永久性
· 可收集性
进行生物识别:将生物采样属性转换成 特征向量,并与 参考向量 比较。
针对计算机直接攻击
1.环境攻击
2.窃听
3.射频辐射
4.光辐射
5.声音辐射
6.键盘记录器
ATM机
3DES 加密
攻击:1.黎巴嫩圈套;2.分离器
※第三章 OS安全
虚拟内存
好处:
1.允许正在执行进程的 总地址空间大小 大于 计算机实际存储器大小
2.允许一系列简化,使用方便
缺点:
访问硬盘慢,比访问RAM慢 10000 倍
虚拟机
软件层 提供的环境叫 管理程序(hypervisor) 或 虚拟机管理器(VM Monitor, 即 VMM)。
实现方式
1.模拟:主机模拟与客户机OS交互接口并在翻译后传递给底层硬件。
优点:灵活
缺点:性能下降
比如:6.828 里的 qemu
就是通过模拟方式实现的,采用 二进制指令翻译 技术实现。
2.虚拟化:
优点:
硬件效率高 ; 可移植性
安全性 ; 管理方便
进程安全
引导设备
攻击者通过外部介质引导其它系统进行访问
第二阶段引导程序都设置了密码保护,只允许授权用户从外部介质引导。
休眠
提取休眠时刻 RAM 可视快照,即 拿到 hiberfil.sys 文件修改后放回去从而改变计算机上执行的程序。
内存与文件安全
虚拟内存安全
攻击虚拟内存
计算机突然断电,攻击者在外部引导另一个OS,就能查看交换文件并重建内存部分,这样会暴露敏感信息。
解决:硬盘加密
密码身份验证-密码盐
密码存储三元组
攻击者对每个用户不得不使用 不同 的盐值。
文件描述符漏洞
父进程 open 文件后忘记关掉,然后又创建了低权限进程
应用程序安全
DLL注入
向运行中的其他进程强制插入特定的 DLL 文件。
恶意软件通过合法程序注入自己的代码,DLL文件要执行DLLMain()
函数,一旦这里被注入恶意代码,就形成了风险。
缓冲区溢出相关
算数溢出
有符号数:如果某程序不断加上许多负数,最终总和会下溢,变为正数
无符号数:一旦到最大值,下一个连续的整数变为0
堆溢出
会发生 内存泄漏
如果攻击者用自己的外壳代码地址覆盖了 全局偏移表 中的函数地址,当调用函数时程序跳转并执行外壳代码,攻击者拿到 shell 。
一般来说,我们利用堆溢出的策略是:
栈溢出
请出门移步 栈溢出 专区👉
格式化字符串
格式化字符串函数可以接受可变数量的参数,并将第一个参数作为格式化字符串,根据其来解析之后的参数。通俗来说,格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式。几乎所有的 C/C++ 程序都会利用格式化字符串函数来输出信息,调试程序,或者处理字符串。一般来说,格式化字符串在利用的时候主要分为三个部分
- 格式化字符串函数
- 格式化字符串
- 后续参数,可选
C库函数在打印或者读入数据时,使用格式化字符串,如printf(“%s”, str)
。但如果不输入格式化信息,而是直接使用printf(str)
,会出现漏洞。
1 | %x从栈中读取数据 |
所以可以做下面的两类事情:
1 | // 1.打印内存 |
👋一点拓展
08x
到底表示啥意思?摘自stackoverflow
0
that you want to prefix with0
‘s instead of just blank spaces
8
says that you want to show 8 digits
x
that you want to print in lower-case hexadecimal.
第四章 恶意软件
所学内容 | 性质 | 机制 |
---|---|---|
病毒 | 1.自我复制 2.用户协助(与人交互 | 潜伏,繁殖,触发,行动 ;检测病毒:模式匹配 |
木马 | 明修栈道,暗渡陈仓 | 执行有用任务,暗地执行恶意任务,需要用户使用(与人交互 |
蠕虫 | 不需要其它程序,不需要与人交互 | 利用运行的应用程序的脆弱性来进行自身传播 |
恶意软件对策
特权
多样性
鲁棒性
自动执行
第五、六章 网安
分层
首先要记住三个层都是做什么的
应用层:HTTP、DNS、SMTP等
传输层:TCP/IP,UDP
网络层:IP协议,如IPv4,IPv6
ARP欺骗
在局域网中通信时使用的是MAC地址,而不是常见的IP地址。所以在局域网的两台主机间通信时,必须要知道对方的MAC地址,这就是ARP协议要做的事:将IP地址转换为MAC地址。
其存在一个严重的安全问题:
在ARP回复时,发送请求包的主机A并不会验证ARP回复包的真实性,也就是不能判断回复主机A的是不是主机B。由此引出一个局域网攻击方式:ARP欺骗。即:缺乏身份认证
解决:
1.检查相同MAC地址是否在局域网上多次出现
2.静态ARP表,网络管理员手动指定路由器缓存来将具体的MAC地址分配给特定IP地址
3.更加复杂和灵活的措施:anti-arpsroof、XArp、Arpwatch,这些程序会仔细检查所有的ARP数据包,并将数据包的内容与所存储的ARP表项纪录做比较,以检测并防止ARP欺骗。
ICMP、IP协议与欺骗
协议相关
IP协议:TTL最大为255跳
ICMP:网络诊断
ping:使用ICMP的工具,验证特定主机是否在接收数据包,类比回声应答
traceroute:使用ICMP来确定数据包到达目的主机的路径并确定所有路由器,利用TTL实现
IP欺骗
修改发送源地址,使其不再是发送者的IP地址,并更新头校验和字段即可实现。
应对:IP追踪技术
数据包嗅探
使用wireshark相同网段嗅探数据包
应对:
1.使用以太网交换机(无线网这招不好使
2.检测网卡是否为混杂模式
2.使用加密协议如 HTTPS
TCP连接与会话劫持
(1) 攻击者针对受害客户端发动DDos,防止客户端干扰自己的攻击;
(2)攻击者向服务器发送一个SYN包,将源IP地址伪造成受害客户端的IP地址;
(3) 在等待服务器向客户端发送响应之后,攻击者通过发送一个ACK数据包来结束TCP握手,该数据包的序列号是预测的下一个序列号;
(4) 攻击者代替客户端向服务器发送请求。
针对会话劫持的安全措施:
IP层使用IPsec,应用层加密
网站应避免创建以安全身份验证措施开始,但后来切换到未加密交换的会话
Dos(又称洪水攻击)
ICMP攻击
攻击者向网络广播地址发送ICMP包,并将回复地址设置成受害主机的IP地址,通过使用ICMP应答请求数据包来淹没受害主机的方式进行。
如何阻止Smurf攻击:
(1)管理员应该将网络中的主机和路由器配置为忽略广播请求
(2)避免直接向广播地址转发数据包
(3)忽略ping请求
SYN洪水
攻击者故意延迟或不发送握手确认消息。
防范:cookie机制,根据SYN包计算cookie值,作为将要返回的SYN ACK包初始序列号。
IP地址回溯
IP地址回溯能够确定数据包的真实来源,而不依赖于数据包头部的IP地址。
实现:
1.数据包标记:在数据包中追加IP地址,但路由器开销增加
2.节点采样:使用IP数据包一个字段就可以记录路径信息,每个路由器以概率p用自己地址覆盖每个数据包每个字段。如果标记足够多的数据包,受害者就可以使用这个字段来确定攻击者和受害者之间途径的每个路由器。
DNS
DNS缓存( DNS cache)
是一个表,用于保存最近接收的 DNS 记录,无需占用更高域名服务器的资源。因为允许低级域名服务器解析查询,所以缓存系统能解决大规模流量直接流向根域名服务器的问题。
DNS服务器在指定时间内缓存,由 ANS 回复的生存时间字段指定, ==OS== 和 ==浏览器== 维护 解析器 和 DNS 缓存,当TTL到期时退出缓存目录。
DNS查询通常通过端口53上的UDP发出,标准UDP数据包由头、查询部分、应答部分组成。但请求或应答超过512B时,会用TCP代替UDP。
DNS攻击:网络(网址)嫁接 与 钓鱼
DNS缓存中毒
基本思想:攻击者欺骗 DNS 服务器缓存保存虚假的 DNS 记录
当域名服务器出现下面情况时,缓存可能中毒:
1.忽略标识符
2.具有可预测的ID
3.接受未经请求的DNS记录
防御DNS缓存中毒
·对查询使用随机标识符
·始终检查标识符
·DNS请求端口随机化
·部署DNSSEC
DNSSEC
实现:在每一步中对 DNS 回复签名
使用[公钥加密]来签署响应
保证了:
1.DNS回答来源的真实性
2.回复的完整性
3.拒绝存在的真实性
防火墙
概念:一种集成的安全措施集合,防止对网络计算机系统未经授权的访问。
策略:防火墙过滤流量基于的预定义规则集
流经防火墙的数据包会有以下三种结果:
1.接受:允许通过防火墙;
2.丢弃:不允许通过防火墙,且无失败指示;
3.拒绝:不允许通过防火墙,并试着通知源端,数据包已被拒绝。
类型:
1.数据包过滤器(无状态防火墙):与规则集是否匹配;将每个尝试通过它的数据包视为独立,而不考虑先前已经处理过的数据包。
2.状态过滤器(状态防火墙):维护一些表,包含每个活动的连接信息包括:IP地址、端口和数据包序列号,可以区分数据包是否是受信任网络内发起的合法会话的一部分。这张表只允许响应内部网发起连接的TCP数据包流入。(类似探监)
3.应用层防火墙:像个代理,可理解为某些应用程序和协议;可能检查流量内容。
隧道
在隧道协议中,客户端(C)和服务器(S)之间的通信是自动加密的,窃听是不可行的。
SSH
1.客户端通过TCP会话连接到服务器;
2.客户端与服务器交换管理细节的信息比如支持的加密方法、各自协议的版本,每一方都要选择另一方支持的一组协议;
3.客户端和服务器进行密钥交换,创建共享的秘密会话密钥,用会话密钥加密通信(但不用于身份验证);
4.服务器向客户端发送可以接受身份验证列表,客户端将按顺序尝试,常见机制是:密码 或者 公钥身份验证。
5.身份验证顺利完成后服务器允许客户端访问相应资源。
VPN
两类:远程访问VPN,站点到站点VPN
远程访问VPN:(比如XDVPN)一般称为内网,电脑上的XDVPN就是一个网络接入服务器。
站点到站点VPN:为两个或更多远程网络提供安全的桥梁。
入侵检测
概念
入侵:威胁 [计算/网络资源的] 机密性、完整性、可用性。
入侵检测:识别入侵行为。
入侵防御:检测+管理自动响应。
IDS检测
IDS检测到的威胁:
①伪装者:非法身份访问(CF里的幽灵
②违法者:合法用户做未被授权的事情
③秘密用户:掩盖自己删除系统文件或日志等行为的用户
IDS检测到的攻击:
①端口扫描:确定主机与哪个端口做TCP连接
②拒绝服务攻击:劣币驱逐良币(把合法的拒之门外
③恶意软件攻击:特洛伊木马等
④ARP欺骗:重定向IP流量
⑤DNS缓存中毒:创建伪造的域名与IP地址关联
IDS类型
基于规则:发现与规则的签名匹配的事件会立即警报。
基于统计:构建配置文件,确定异常行为的阈值,偏离阈值时警报。
端口扫描
端口三个状态:(高速卡口的三个状态)
①开放的(接受连接,放行)
②关闭的(拒绝连接,封城)
③阻塞的(堵车)
扫描方法:
①TCP扫描
②UDP扫描
③SYN扫描
④空闲扫描
蜜罐
本质是个陷阱
①入侵检测:连接到蜜罐就是入侵,因为没有合法的人连蜜罐
②证据:很多有吸引力的文件让入侵者逗留并留下证据
③导流:分散入侵者注意力
无线网
SSID
SSID未被签名,可进行简单的欺骗攻击
WEP WPA WPA2
先说句题外话,早都有WPA3了
WEP叫有线等效加密,WPA叫WiFi访问保护。
WEP采用24位
WEP限制:避免IEEE802.11标准
WPA是WEP的一种改进,采用了更大的密钥(128位)和初始化数据(48位),还支持各种类型的身份认证比如:用户名/密码,WPA在会话时动态更改密钥;还有帧计数器以防止重放攻击。
WPA有两种模式:
①个人模式/预共享模式(WPA2-PSK):依赖共享密码访问,通常用于家庭环境
②企业模式(WPA2-EAP):更适合组织或者企业使用
两种模式都使用 CCMP - 它代表“计数器模式,密码区块链,消息身份验证代码协议”。
WPA2:
①使用AES;
②处理加密,密钥管理和完整性;
③MAC和密码块链接(CCMP)一起使用
WEP,WPA和WPA2都只保护流量至接入点;在接入点之外没有提供安全性;端到端加密比网络级加密简单。
第七章 Web
网络钓鱼
伪造URL
用户一般是从垃圾邮件中访问网络钓鱼页面
URL混淆:Cyrillic字母和ASCII字母的Unicode值不同,即同源攻击
Cookie
可以保存任何类型的信息
分类 | 特点 |
---|---|
会话型 | 暂时性的,当浏览器关闭时则消除 |
持久型 | 持久性的,保留在硬盘上,浏览器关闭也不会消除 |
跨站脚本XSS
攻击者将脚本代码注入Web应用程序生成的页面
XSS的发起条件:
· Web服务器没有对用户输入进行有效性验证或者验证强度不够,而又轻易地将它们返回到客户端
· 允许用户在表格或编辑框中输入不相关字符
· 存储并允许把用户输入显示在返回给终端的页面上,而没有去除非法字符或者重新进行编码
防御XSS:
分析浏览器和Web服务器之间的HTTP通信量
寻找HTML中的特殊字符
执行Web页面之前对它们进行编码
可移动代码
SQL注入
通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
万能密码:
1 | ' or 1='1 |
第八章 Crypto
攻击类型
类型 | 特点 |
---|---|
唯密文 | 收集一个 或 多个 消息的密文 |
已知明文 | 收集一个 或 多个 明文-密文对 |
选择明文 | 收集指定明文 对应的 密文信息 |
选择密文 | 收集指定密文 对应的 明文信息 |
一次一密
密钥块的长度m必须和明文的长度n相同
密钥不可以被重用
分组加密
明文和密文具有固定的长度b
每条消息被划分成一系列的块,基于这些数据块来进行加密或解密
对最后一个数据块的填充必须是明确的(不能只是填充0)
应用:DES,3DES,AES
MODE_ECB
优点:适合数据较少情况,比如密钥和初始向量的加密
缺点:对于文件和图片这类很长的消息,ECB模式可能是不安全的
MODE_CBC
一个单独传输的随机加密数据块将作为初始化向量
优点:最常用,快速且简单
缺点:要所有数据块有效可靠传输,不适用于允许丢包的,比如音频流和视频流
AES
步骤:
1.S盒替换
2.IP置换
3.矩阵乘法
4.轮密钥XOR
流密码
适用于快速写入的任意长度的明文,例如流媒体数据
密钥流:伪随机序列 S
密钥流 S 和 明文流对位异或操作:
数论基础与RSA
算数基本定理
正整数
辗转相除
乘法逆元
定理 :
费马小定理
若
推论 若
欧拉函数
定理
RSA与例题
安全性是基于给定 e 和 n ,找到 d 的困难性。
有一点要说一下:
逆元之间关系:(k找到哪个算哪个)
哈希函数
消息
抗原像,抗第二原像
通常推荐使用至少256位的Hash函数来抵御暴力破解
一个函数如果是抗强碰撞的,那么也同时是抗弱碰撞的,但反之则不一定成立
生日攻击
利用的是概率论中生日问题的数学原理。
对 Hash函数 进行攻击,主要危害抗碰撞性
步骤:
1.随机产生消息序列
2.对每个
3.找到碰撞则停止
消息认证
密钥
第九、十章
安全策略
主体 客体
操作 权限 保护
Kerberos
身份验证协议 以及 实现这一协议的软件套件