漏洞利用代码——exploit
1. 黑客发展技术
早期攻击是目标网络、操作系统以及软件等领域,通过攻击这些系统软件,往往能够直接获取root权限,但防火墙、ACL(访问控制列表)技术的兴起,在很大程度上保证了系统软件处于信任边界之内,从而杜绝了大部分的攻击来源
运营商、防火墙对于网络的封锁,使得暴露在互联网上的非Web服务越来越少,且Web技术的成熟使得Web应用的功能越来越强大,最终成为互联网的主流,黑客的眼光也逐渐转移到Web上来
2. 安全的本质
安全问题的本质是信任问题
通过一个安全检查的过程,可以梳理位置的人或物,使其变得可信任。被划分出来的具有不同信任级别的区域,称之为信任域,划分两个不同信任域之间的边界,则称之为信任边界
1.根据成本来设定信任的程度
2.一旦作为决策依据的条件被打破、被绕过,就会导致安全假设的前提条件不可靠
要把握信任条件的度,使其恰到好处
攻击与防御从事互相促进的,不可能永远有效
3. 安全三要素CIA
机密性(Confidentiality):保护数据内容不能泄露,加密是实现机密性要求的常见手段
完整性(Integrity):保护数据内容是完整、没有被篡改的。常见的保持一致性的技术手段是数字签名
可用性(Availability):保护资源是“随需而得”
4. 如何实施安全评估
资产等级划分➡威胁分析➡风险分析➡确认解决方案
4.1 资产等级划分
明确目标是什么,要保护什么
互联网安全的核心问题,是数据安全问题,通过与各个业务部门的负责人一一沟通,了解公司最重要的资产是什么,最看重的数据是什么
进行划分信任域和信任边界
4.2 威胁分析
可能造成危害的来源称为威胁(Threat),而把可能会出现的损失称为风险(Risk)
威胁建模——STRIDE模型
威胁 | 定义 | 对应的安全属性 |
Spoofing | 冒充他人身份 | 认证 |
Tampering | 修改数据或代码 | 完整性 |
Repudiation | 否认做过的事情 | 不可抵赖性 |
InformationDisclosure | 机密信息泄露 | 机密性 |
Denial of Service | 拒绝服务 | 可用性 |
Elevation of Privilege | 未经授权获得许可 | 授权 |
漏洞:系统中可能被威胁利用以造成危害的地方
在进行威胁分析时,要尽可能不遗漏威胁,头脑风暴的过程可以确定攻击面
4.3 风险分析
Risk = Probability * Damage Potential
考虑安全问题,要结合具体情况,权衡事情发生的可能性
等级 | 高 | 中 | 低 |
Damage Potential | 获取完全验证权限;执行管理员操作;非法上传文件 | 泄露敏感信息 | 泄露其他信息 |
Reproducibility | 攻击者可以随意再次攻击 | 攻击者可以重复攻击,但有时间限制 | 攻击者很难重复攻击过程 |
Exploitability | 初学者在短期内能掌握攻击方法 | 熟练的攻击者才能完成这次攻击 | 漏洞利用条件非常苛刻 |
Affected users | 所有用户,默认配置,关键用户 | 部分用户,非默认配置 | 极少数用户,匿名用户 |
Discoverability | 漏洞很显眼,攻击条件很容易获得 | 在私有区域,部分人能看到,需要深入挖掘漏洞 | 发现该漏洞极其困难 |
威胁分析和风险分析往往都是一起考虑的
好的安全方案对用户应该是透明的,尽可能地不要改变用户的使用习惯
5.白帽子兵法
①Secure By Default原则——时刻牢记的总则
- 白名单、黑名单
- 最小权限原则
②纵深防御原则——全面、正确看待问题
- 各个不同层面、不同方面实施安全方案,各方案相互配合,合为整体
- 在解决根本问题的地方实施针对性的安全方案
③数据与代码分离原则——从漏洞成因看问题
常见于SQL注入
④不可预测性原则——克服攻击方法的角度看问题
常见于缓冲区溢出
往往会使用到加密算法、随机数算法、哈希算法