- 主机漏洞:默认配置
- 加密漏洞:组织没有合理配置他们的数字证书,以至于证书上的地址与实际域名不相符;证书到期,证书签名者不可信,证书格式不正确。
- 网络架构的漏洞:内外网没有分离等
- 操作漏洞:不合理的操作流程等
4.1 软件漏洞
- 0Day
- 不合理的输入处理
- 不合理的错误处理
- 资源耗尽(Resource exhaustion)
- 竞争状态(Race condition)
- 内存漏洞
内存泄露(Memory leak)发生在软件对被分配内存使用结束后无法释放的情况中,可能会引发系统的不稳定。
缓冲区溢出:指数据超出了被分配的内存缓冲区的边界,可能会对相邻内存造成破坏。
整数溢出:指一个计算结果太大而无法容纳进内存中的被分配空间,可能会引起缓冲区溢出和崩溃。
指针解引用(Pointer dereference):指代码尝试移除指针及其被指对象(pointee)之间的关系。
DLL注入:指一个基于Win的应用程序迫使另一个运行中的应用程序在内存中加载一个动态链接库(DLL),可能会使受害应用程序变得不稳定或泄露敏感信息。
4.2 账户漏洞
- 对密码复杂性和长度未做要求或要求很低
- 不会过期的密码
- 在可用前提下,账户没有使用多因素认证
- 账户被放在错误的分级或组织单元中,给这些账户赋予不合适的访问等级。
- 账户被赋予超过需求的权限
- 未禁用或删除停用账户
- 未禁用或删除游客账户
4.3 评估漏洞
- 安全评估(Security assessment):指通过一组综合的技术测试安全控制过程,暴露出你的工具,技术,服务和操作中的任何弱点或差距。
- 漏洞评估(vulnerability assessment):是安全评估中的一个方法。
4.3.1 安全评估技巧
- 审核基线报告(baseline report)
- 执行代码审核(code review)
- 确定攻击面(attack surface)
- 审核安全架构(Security architecture review):指对组织当前安全基础架构模型的评估,确定当前系统和关键资产是否得到合理保护。
- 审核安全设计:确定安全设计是否满足组织的实际需求。
4.3.2 漏洞评估工具
- 漏洞扫描器:评估你的系统,网络和应用程序中的弱点
- 端口扫描器:评估网络中所有端口的当前状态,并检测可能会对组织产生风险的开放端口
- 协议/数据包分析器:评估网络上的流量,流量中揭示的内容以及使用的协议
- 指纹识别(fingerprinting)工具:确定目标的操作系统信息和运行服务,也称标志提取(banner grabbing)
- 网络枚举器:映射网络的逻辑结构,以确定网络上的流氓系统。
- 密码破解器:从存储在计算机中或通过计算机传输的数据中恢复密码。
- 备份工具:创建被扫描数据的复制版本
- 蜜罐:将可疑行为从合法网络系统中重定向到一个可以安全监控的独立系统中。
4.3.3 漏洞扫描的类型
- 凭证扫描:有能力真正地评估系统配置的所有方面,而不是仅评估普通用户看到的内容。
- 非凭证扫描:仅评估普通用户看到的内容。
- 误检(false positive):扫描器确定一个漏洞,实际上并不是。
- 漏检(false negative):扫描器确定某个项目不是漏洞,而实际上是。被认为是扫描工具中的灾难性故障。
4.3.4 评估漏洞的准则
- 才此主机的操作系统和平台是如何配置的。
- 不要依赖默认的主机配置来获得最佳安全性
- 创建与你的安全需求相对应的自定义主机配置。
- 思考软件中的0Day漏洞是如何显著增加攻击风险的。
- 思考组织开发或使用的应用程序是如何受到不合理输入处理和内存问题等漏洞的影响的。
- 思考使用过时的密码套件是如何危害网络流量加密的。
- 评估你的数字证书中的错误配置,如无效的格式编排
- 评估加密密钥管理系统中是否存在可能使攻击者更容易访问私钥的弱点
- 思考你的网络架构是如何使攻击者更容易地获得访问权限或改动DoS状况的
- 确定组织中可能极易受到社会工程攻击的任何用户,对相应人员进行培训。
- 确定任何缺乏有效规划的关键业务流程,如寿命末期(EOL)流程等
- 思考系统延伸和未登记资产是如何使组织中的所有要素变得更难保护。
4.4 实施渗透测试
- 侦察(Reconnaissance)
- 初步利用
- 权限扩大
- 跳板
- 维持
4.4.1 渗透测试工具
- 利用框架:创建并部署代码来利用系统
- 数据清除工具:安全地从存储媒介中擦除数据
- 信息隐藏工具:将数据隐藏在其他数据中避免被检测到。
- 社交工程工具:测试用户对社交工程策略的敏感程度
- 压力测试器:测试系统对计算开销和网络带宽增长的响应能力
4.4.2 实施渗透测试的准则
- 考虑除了执行漏洞评估还执行渗透测试的优势,或渗透测试能取代漏洞评估的原因。
- 了解执行渗透测试时涉及的风险。
- 才此在模拟攻击中的不同阶段实施渗透测试技术。
- 考虑使用不同的盒测试方法来执行渗透测试。
- 理解每种盒测试方法对侦察阶段的不同需求。
- 熟悉在系统的主动利用过程中使用的不同工具。