【CISSP学习笔记】7. 安全评估与测试
该知识领域涉及如下考点,具体内容分布于如下各个子章节:
- 设计和验证评估、测试和审计策略
- 进行安全控制测试
- 收集安全过程数据(例如,技术和管理)
- 分析测试输出并生成报告
- 执行或协助安全审计
7.1. 构建安全评估和测试方案
安全评估和测试方案是信息安全团队的基础维护活动。该方案包括测试、评估和审计,定期验证组织是否己采取足够的安全控制,及这些安全控制是否正常运行并有效地保护信息资产。
7.1.1. 安全测试
安全测试是验证某项控制措施是否正常运行。包括:
自动化扫描
工具辅助的渗透测试
试图破坏安全的手动测试。
7.1.2. 安全评估
安全评估是对系统、应用程序或其他待测环境的安全性进行全面审查。通常包括
- 安全测试工具的使用,但不限于自动化扫描和手工渗透测试。
- 它们还包括对威胁环境、当前和未来风险、目标环境价值的细致审查。
安全评估的主要工作成果通常是向管理层提交的评估报告,报告包括以非技术语言描述的评估结果,并通常以提高待测环境安全性的具体建议作为结尾。
根据NIST 800-53A,评估包括4个组成部分:
- 规范:指与待审计系统有效的文档,包括政策、要求、详细设计。
- 机制:信息系统中用于满足规范的控制措施。如IPS
- 活动:在信息系统中所采取的行动,包括执行备份,导出日志文件或审查账户历史记录。
- 人员:执行规范、机制和活动的人员。
评估可以由内部团队执行,也可以外包到在待评估领域具备经验的第三方评估团队进行。
7.1.3. 安全审计
安全审计虽然与安全评估采用许多相同技术,但必须由独立审核员执行。尽管组织安全人员定期执行安全测试和评估,但这不是安全审计。区别点:
- 安全评估与测试结果仅供内部使用,旨在评估控制措施,着眼于发现潜在的改进空间;
- 安全审计是为了向第三方证明控制措施有效性而进行的评估。
- 安全审计结果供董事会、政府监管机构和其他第三方使用。
7.1.3.1. 审计标准
进行审计或评估时,审计团队应明确评估组织所采用的标准。
信息和技术控制目标(Control Objectives for Information and related Technology,COBIT)是一个开展审计和评估的通用框架,描述了组织围绕其信息系统所要具备的通用要求。
ISO发布了一套与安全相关的标准ISO 27001,描述了建立信息安全管理系统的标准方法,而ISO 27002则详细介绍了信息安全控制的细节,是一项专注于信息安全的国际标准,标题为“信息技术-安全技术-信息安全管理实践准则”。ITIL安全部分源自ISO 27002。
7.1.3.2. 三种审计类型
1. 内部审计
内部审计由组织内部审计人员执行,审计负责人直接向总裁、CEO或董事会报告。
2. 外部审计
由外部审计公司执行。因为执行评估的审计员与组织没有利益冲突,所以外审具有很高的公信力。知名的四大审计公司:
- 安永(Ernst & Young)
- 德勤(Deloitte)
- 普货永道(PricewaterhouseCoopers)
- 毕马威(KPMG)
3. 第三方审计
由另一个组织进行的审计,比如监管机构可依据合同或法律对被监管公司进行审计,执行审计的组织通常会选择审核员和设计审计范围。美国注册会计师协会(American Institute of Certified Public Accountants, AICPA)发布一个《认证参与标准声明文件 18》(The Statement on Standards for Attestation Engagements document 18, SSAE 18),标题为控制报告,提供了一个通用标准,供审计人员对服务组织进行评估,目的是允许组织进行外部评估,而不是多个第三方评估,然后与客户和潜在客户共享结果报告。
SSAE 18和ISAE 3402审计通常被称为服务组织控制(Service organization Conrtrol,SOC)审计,它们有三种形式:
- SOC 1 参与评估可能影响财务报告准确性的组织控制措施。
- SOC 2 参与评估组织的控制措施,这些控制措施会影响系统中存储信息的安全性(机密性、完整性和可用性)和隐私。SOC 2审计结果是保密的,通常只在NDA下在组织外部共享。
- SOC 3 参与评估组织的控制措施,这些控制措施会影响系统中存储信息的安全性(可信度、完整性和可用性)和隐私。然而,SOC 3审计结果旨在公开披露。
除了三类SOC评估外,还有两种不同类型的SOC报告。这两份报告都是从管理层对现有控制措施的描述开始的。审计师提供的意见范围不同:
- I类报告 这些报告提供了审计师对管理层提供的描述以及控制设计的适用性的意见。第一类报告也只涵盖一个特定的时间点,而不是一个延长的时期。你可以把I类报告更多地看作是一种文件审查,审计员在文件审查中检查书面情况,并确保管理层描述的控制措施是合理和适当的。
- 二类报告 这些报告更进一步,还提供了审计师对控制措施运营有效性的意见。也就是说,审计师实际上确认了控制措施的正常运行。第二类报告还涵盖了一段延长的时间:至少六个月的运作。你可以认为第二类报告更像是一种传统的审计。审计员不仅仅是检查文件;他们还将进入并验证控件是否正常工作。
1、SSAE-18不主张具体的控制。相反,它审查被审计组织中控制措施的使用和应用。它是一个认证标准,用于外部审计,并构成SOC 1、2和3报告的基本框架的一部分。
2、SAS 70在2010年被SSAE 16标准取代,该标准有三个SOC级别可供报告。SAS70包括2型报告,涵盖数据中心,并对2型报告使用了6个月的测试期。
7.2. 开展漏洞评估
7.2.1. 漏洞描述
NIST提供了安全内容自动化协议(Security Content Automation Protocol,SCAP)为漏洞描述和评估提供一种通用语言。SCAP组件包括:
- 通用漏洞披露(Common Vulnerabilities and Exposures, CVE):提供一个描述安全漏洞的命名系统。
- 通用漏洞评分系统(Common Vulnerability Scoring System, CVSS):提供一个描述安全漏洞严重性的标准化评分系统。
- 通用配置枚举(Common Configuration Enumeration,CCE):提供一个系统配置问题的命名系统;
- 通用平台枚举(Common Platform Enumeration,CPE):提供一个操作系统、应用程序及硬件的命名系统;
- 可扩展配置检查表描述格式(Extensible Configuration Checklist Description Format,XCCDF):提供一种描述安全检查表的语言。
- 开放漏洞评估语言(Open Vulnerability and Assessment Language,OVAL):提供一种描述安全测试过程的语言。
7.2.2. 漏洞扫描
漏洞扫描可自动探测系统、应用程序及网络,识别可能被攻击者利用的漏洞。主要分为4类:
7.2.2.1. 网络发现扫描
网络发现扫描通过使用多种技术探测远程系统上的开放端口,常见技术如下:
TCP SYN扫描 向目标系统的每个端口发送一个SYN数据据,如果扫描器收到SYN和ACK响应数据包,则表明进入了TCP三次握手的第二阶段,同时说明这个端口是开放的。TCP SYN扫描也称为半开放扫描。
TCP Connect扫描 向远程系统的某个端口创建全连接。适用于执行扫描的用户没有运行半开放扫描所需权限的场景。
TCP ACK扫描 发送ACK标志位的数据包,表明它属于某个开放连接。这种扫描可以尝试确定防火墙规则。
Xmas扫描 发送设置FIN、PSH及URG标志位的数据包。
设置所有或大部分可能的TCP标志的TCP扫描被称为圣诞树或圣诞节扫描,因为据说它会用这些标志“像圣诞树一样亮起来”。
网络发现扫描最常用的工具是Nmap,可以提供端口的状态:
开放:该端口在远程系统上已经开放,同时在该端口上运行应用程序,主要接受连接请求
关闭:该端口在远程系统可以访问,意味着防火墙允许访问该端口,但在该端口上没有运行接受连接请求的应用程序。
过滤:因为防火墙会干扰连接尝试,nmap无法确定端口是开放还是关闭。
7.2.2.2. 网络漏洞扫描
网络漏洞扫描相对发现扫描更深入,不止步于探测开放端口,会继续探测目标系统或网络,发现已知漏洞。
网络扫描器默认执行非登录扫描,但限制了充分发现系统可能存在漏洞。执行登录扫描可提高扫描准确性,减少漏报和误报。
常用漏洞扫描器有Nessus、Qualys、Nexpose和OpenVAS。
7.2.2.3. Web应用漏洞扫描
Web应用程序为企业安全引入主要风险。如SQL注入攻击、XSS、CSRF等。
常用Web漏扫工具:Acunetix、Burp Suite、Nikto和Wapiti。
7.2.2.3.1. 数据库漏洞扫描
虽然大多数据库受防火墙保护,避免外部直接访问,但Web应用程序会提供这些数据库的入口,攻击者可利用Web应用程序来直接攻击后端数据库,如SQL注入。
常用数据库漏扫工具:sqlmap
7.2.3. 渗透测试
渗透测试实际上在尝试攻击系统,所以比漏洞测试技术更进一步。执行渗透测试的安全专业人员尝试突破安全控制措施,入侵目标系统或应用来验证漏洞。
渗透测试过程通常包括以下阶段:
- 规划阶段:包括测试范围和规则的协议。规划阶段是极其重要的,它确保测试团队和管理人员对测试性质达成共识,明确测试是经过授权的。
- 信息收集和发现阶段:结合人工和自动化工具来收集目标环境的信息。此阶段包括执行基本的侦察来确定系统功能(如访问系统上托管的网站),并执行网络发现扫描来识别系纺的开放端口
Whois可以提供有关组织的信息,包括IP范围、物理地址和员工联系人。
- 漏洞扫描阶段:探测系统脆弱点,结合网络漏洞扫描、 Web 漏洞扫描和数据库漏洞扫描。
- 漏洞利用阶段:试图使用人工和自动化漏洞利用工具来尝试攻破系统安全防线。
- 报告阶段: 总结渗透测试结果,并提出改进系统安全的建议。
渗透测试人员通常使用Metasploit工具(支持使用脚本来实现常见攻击的自动化执行)对目标系统进行漏洞利用。Metasploit提供了一个可扩展的框架,允许渗透测试人员除了创建工具中内置的漏洞外,还创建自己的漏洞利用。
在渗透测试中,目录索引最初看起来可能不是一个问题,但仅仅知道文件的名称和位置就可以为攻击者提供有关组织的大量信息,以及潜在可访问文件的列表。
渗透测试不足点:
- 渗透测试只能覆盖进行时的时间点。
- 在进行渗透测试时,由于脆弱的服务而导致拒绝服务的可能性始终存在,但它可以通过社会工程和操作测试来测试流程和策略,以验证这些流程和策略是如何工作的。
渗透测试通常划分为:白盒渗透测试、灰盒渗透测试及黑盒渗透测试。
7.3. 软件测试
7.3.1. 代码审查与测试
7.3.1.1. 代码审查
代码审查(Code Review)也称同行评审(Peer Review),即由其他开发人员审查代码是否存在缺陷。最正式的代码审查过程称为范根检测法(Fagan inspections),包含6个步骤:规划->概述->准备->审查->返工->追查
7.3.1.2. 静态测试
不运行软件的情况下,通过分析软件源码或编译后的应用程序,评估软件的安全性
7.3.1.3. 动态测试
在软件运行环境下检测软件的安全性。测试人员无法接触源码,在生产环境中动态测试应该谨慎开展,避免服务的额外中断。
7.3.1.4. 模糊测试
模糊测试是一种特殊的动态测试技术,向轮换提供无效的输入(随机产生的或特殊构造)来测试其限制,发现之前 未检测到的缺陷。主要分为两大类:
- 突变模糊测试(Mutation) 从软件实际操作获取输入值,然后操纵(变异)输入值来生成模糊输入。
- 预生成模糊测试(Generational) 设计数据模型,基于对软件所用数据类型的理解创建新的模糊输入。
模糊测试通常不能完全覆盖所有代码,一般仅限于不涉及复杂业务逻辑的简单漏洞。
7.3.2. 突变测试
突变测试以小的方式修改程序,然后测试该突变体,以确定它的行为是否正常或失败。该技术用于通过突变来设计和测试软件测试。
7.3.3. 接口测试
软件测试过程中需要测试的接口分为:
- APIs
- UIs:包括图形用户界面和命令行界面。
- 物理接口
7.3.4. 误用例测试
一些应用程序存在明显的说明示例,展示软件用户可能尝试错误使用应用程序。
误用用例图使用的语言超出了典型用例图,包括威胁和缓解措施。
误用测试关注的是组织所不希望的行为,或与系统或应用程序的正确功能背道而驰的行为。用例测试用于验证所需的功能是否有效。动态测试用于确定代码如何处理随时间变化的变量
7.3.5. 测试覆盖率分析
- 测试覆盖率=已测用例数量/全部用例数量。常用于以下标准:
- 分支覆盖率:在所有if和else条件下,每个if语句是否执行。
- 条件覆盖率:在所有输入集合下,代码中的每个逻辑是否执行
- 函数覆盖率:代码中的每个函数是否已被调用
- 循环覆盖率:在导致代码执行多次、一次或0次的条件下,代码中的每个循环是否执行
- 语句覆盖率:测试期间,是否运行过每行代码。
7.3.6. 网站监测
安全专业人员也经常参与网站持续监控,从事性能管理、故障排队、潜在安全问题识别等活动。主要可分为两类:
被动监测 通过捕获发送到网站的实际网络流量进行分析。真实用户监控(Real User Monitoring,RUM)是一种被动监测变体,监测工具重组单个用户活动,追踪其与网站的交互。
主动监测 对网站执行伪造的事件活动,从而评估其性能。
基于签名的监测 包括IDS、IPS和反恶意软件系统。
- 【CISSP学习笔记】6. 安全开发
- 【CISSP学习笔记】5. 安全架构和工程
- 【CISSP学习笔记】4. 身份和访问管理
- 【CISSP学习笔记】3.通信与网络安全
- 【CISSP学习笔记】2.资产安全
- 【CISSP学习笔记】1.安全与风险管理
- 【CISSP学习笔记】0.开篇
相关文章:
【CISSP学习笔记】7. 安全评估与测试
该知识领域涉及如下考点,具体内容分布于如下各个子章节: 设计和验证评估、测试和审计策略进行安全控制测试收集安全过程数据(例如,技术和管理)分析测试输出并生成报告执行或协助安全审计 7.1. 构建安全评估和测试方案…...

Gateway集成方法以及拦截器和过滤器的使用
前提:请先创建好一个SpringBoot项目 1. 引入依赖 SpringCloud 和 alibabaCloud 、 SpringBoot间对版本有强制要求,我使用的springboot是3.0.2的版本。版本对应关系请看:版本说明 alibaba/spring-cloud-alibaba Wiki GitHub <dependency…...

第G2周:人脸图像生成(DCGAN)
🍨 本文为[🔗365天深度学习训练营学习记录博客\n🍦 参考文章:365天深度学习训练营\n🍖 原作者:[K同学啊 | 接辅导、项目定制]\n🚀 文章来源:[K同学的学习圈子](https://www.yuque.co…...

【Web】Ctfshow Thinkphp5 非强制路由RCE漏洞
目录 非强制路由RCE漏洞 web579 web604 web605 web606 web607-610 前面审了一些tp3的sql注入,终于到tp5了,要说tp5那最经典的还得是rce 下面介绍非强制路由RCE漏洞 非强制路由RCE漏洞原理 非强制路由相当于开了一个大口子,可以任意调用当前框…...

python3遇到Can‘t connect to HTTPS URL because the SSL module is not available.
远程服务器centos7系统上有minicoda3,觉得太占空间,就把整个文件夹删了,原先的Python3也没了,都要重装。 我自己的步骤:进入管理员模式 1.下载Python3的源码: wget https://www.python.org/ftp/python/3.1…...
QSPI Flash xip取指同时program过程中概率性出现usb播歌时断音
项目场景: USB Audio芯片,代码放到qspi flash中,执行代码时,客户会偶尔保存一些参数,即FPGA验证过程中,每隔10ms向flash info区烧写4个byte(取指过程一直存在,且时隙软件不可控&…...
MySQL聚簇索引和非聚簇索引的区别
前言: 聚簇索引和非聚簇索引是数据库中的两种索引类型,他们在组织和存储数据时有不同的方式。 聚簇索引: 简单理解,就是将数据和索引放在了一起,找到了索引也就找到了数据。对于聚簇索引来说,他的非叶子节点上存储的是…...
【C#】蜗牛爬井问题C#控制台实现
文章目录 一、问题描述二、C#控制台代码 一、问题描述 井深30米,蜗牛在井底,每天爬3米又滑下1米,问第几天爬出来 二、C#控制台代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System…...

IP地址的四大类型:动态IP、固定IP、实体IP、虚拟IP的区别与应用
在网络通信中,IP地址是设备在互联网上唯一标识的关键元素。动态IP、固定IP、实体IP和虚拟IP是四种不同类型的IP地址,它们各自具有独特的特点和应用场景。 1. 动态IP地址: 动态IP地址是由Internet Service Provider(ISPÿ…...

Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式
一、ImageMagick简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换,可以处理超过100种图像格式,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作,即可以通过命令行进行&am…...
JavaScript二
目录 流程控制 if判断 while循环 do while for循环 forEach for in Map与set iterator 流程控制 if判断 <script>use strictvar age 5;if(age < 3){alert("haha");}else if(age < 5){alert("hi world");}else{alert("hello wor…...

JavaScript系列——正则表达式
文章目录 需求场景正则表达式的定义创建正则表达式通过 / 表示式/ 创建通过构造函数创建 编写一个正则表达式的模式使用简单模式使用特殊字符常用特殊字符列表特殊字符组和范围 正则表达式使用代码演示 常用示例验证手机号码合法性 小结 需求场景 在前端开发领域,在…...

命令行创建Vue项目
Vue项目创建 1. 打开UI界面 在命令行中,执行如下指令: vue ui 2. 打开项目管理器 3. 创建项目 创建项目的过程,需要联网进行,这可能会耗时比较长的时间,请耐心等待。 windows的命令行,容易卡顿,…...
01.PostgreSQL基本SELECT语句
1. SQL简介 SQL 是用于访问和处理数据库的标准的计算机语言。 SQL有两个标准:分别是SQL92和SQL99,他们分别代表了92年和99年颁布的SQL标准,我们今天使用的SQL语言依然遵循这些标准。 注意:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展! 2. SQL分…...

UDP信号多个电脑的信息传输测试、配置指南
最近要做一个东西,关于一个软件上得到的信号,如何通过连接的局域网,将数据传输出去。我没做过相关的东西,但是我想应该和软件连接数据库的过程大致是差不多的,就一个ip和一个端口号啥的。 一.问题思路 多个设备同时连…...
先序+中序还原二叉树【数据结构】
先序中序还原二叉树 题目描述 给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。 输入 输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重…...
【全网首发】洛谷P2678 [NOIP2015 提高组] 跳石头
Everyday English You don’t become what you want; you become whatyou believe. —Oprah Winfrey 你不是成为你想要的,你成为你所相信的。 洛谷P2678 [NOIP2015 提高组] 跳石头 题目描述 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔…...
Gpt指引ubuntu安装java8/11
在Ubuntu系统上安装Java环境通常包括以下几个步骤: 更新软件包索引: 在安装新软件之前,最好先更新Ubuntu的软件包索引。这可以确保你安装的是最新版本的软件包。可以使用以下命令来更新: sudo apt update安装Java: U…...

【MCAL】TC397+EB-tresos之MCU配置实战 - 芯片时钟
本篇文章介绍了在TC397平台使用EB-treso对MCU驱动模块进行配置的实战过程,主要介绍了后续基本每个外设模块都要涉及的芯片时钟部分,帮助读者了解TC397芯片的时钟树结构,在后续计算配置不同外设模块诸如通信速率,定时器周期等&…...

最新AI系统ChatGPT网站H5系统源码,支持AI绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图
一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...