该知识领域涉及如下考点,具体内容分布于如下各个子章节:
安全评估和测试方案是信息安全团队的基础维护活动。该方案包括测试、评估和审计,定期验证组织是否己采取足够的安全控制,及这些安全控制是否正常运行并有效地保护信息资产。
安全测试是验证某项控制措施是否正常运行。包括:
自动化扫描
工具辅助的渗透测试
试图破坏安全的手动测试。
安全评估是对系统、应用程序或其他待测环境的安全性进行全面审查。通常包括
安全评估的主要工作成果通常是向管理层提交的评估报告,报告包括以非技术语言描述的评估结果,并通常以提高待测环境安全性的具体建议作为结尾。
根据NIST 800-53A,评估包括4个组成部分:
评估可以由内部团队执行,也可以外包到在待评估领域具备经验的第三方评估团队进行。
安全审计虽然与安全评估采用许多相同技术,但必须由独立审核员执行。尽管组织安全人员定期执行安全测试和评估,但这不是安全审计。区别点:
进行审计或评估时,审计团队应明确评估组织所采用的标准。
信息和技术控制目标(Control Objectives for Information and related Technology,COBIT)是一个开展审计和评估的通用框架,描述了组织围绕其信息系统所要具备的通用要求。
ISO发布了一套与安全相关的标准ISO 27001,描述了建立信息安全管理系统的标准方法,而ISO 27002则详细介绍了信息安全控制的细节,是一项专注于信息安全的国际标准,标题为“信息技术-安全技术-信息安全管理实践准则”。ITIL安全部分源自ISO 27002。
1. 内部审计
内部审计由组织内部审计人员执行,审计负责人直接向总裁、CEO或董事会报告。
2. 外部审计
由外部审计公司执行。因为执行评估的审计员与组织没有利益冲突,所以外审具有很高的公信力。知名的四大审计公司:
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评估外,还有两种不同类型的SOC报告。这两份报告都是从管理层对现有控制措施的描述开始的。审计师提供的意见范围不同:
1、SSAE-18不主张具体的控制。相反,它审查被审计组织中控制措施的使用和应用。它是一个认证标准,用于外部审计,并构成SOC 1、2和3报告的基本框架的一部分。
2、SAS 70在2010年被SSAE 16标准取代,该标准有三个SOC级别可供报告。SAS70包括2型报告,涵盖数据中心,并对2型报告使用了6个月的测试期。
NIST提供了安全内容自动化协议(Security Content Automation Protocol,SCAP)为漏洞描述和评估提供一种通用语言。SCAP组件包括:
漏洞扫描可自动探测系统、应用程序及网络,识别可能被攻击者利用的漏洞。主要分为4类:
网络发现扫描通过使用多种技术探测远程系统上的开放端口,常见技术如下:
TCP SYN扫描 向目标系统的每个端口发送一个SYN数据据,如果扫描器收到SYN和ACK响应数据包,则表明进入了TCP三次握手的第二阶段,同时说明这个端口是开放的。TCP SYN扫描也称为半开放扫描。
TCP Connect扫描 向远程系统的某个端口创建全连接。适用于执行扫描的用户没有运行半开放扫描所需权限的场景。
TCP ACK扫描 发送ACK标志位的数据包,表明它属于某个开放连接。这种扫描可以尝试确定防火墙规则。
Xmas扫描 发送设置FIN、PSH及URG标志位的数据包。
设置所有或大部分可能的TCP标志的TCP扫描被称为圣诞树或圣诞节扫描,因为据说它会用这些标志“像圣诞树一样亮起来”。
网络发现扫描最常用的工具是Nmap,可以提供端口的状态:
开放:该端口在远程系统上已经开放,同时在该端口上运行应用程序,主要接受连接请求
关闭:该端口在远程系统可以访问,意味着防火墙允许访问该端口,但在该端口上没有运行接受连接请求的应用程序。
过滤:因为防火墙会干扰连接尝试,nmap无法确定端口是开放还是关闭。
网络漏洞扫描相对发现扫描更深入,不止步于探测开放端口,会继续探测目标系统或网络,发现已知漏洞。
网络扫描器默认执行非登录扫描,但限制了充分发现系统可能存在漏洞。执行登录扫描可提高扫描准确性,减少漏报和误报。
常用漏洞扫描器有Nessus、Qualys、Nexpose和OpenVAS。
Web应用程序为企业安全引入主要风险。如SQL注入攻击、XSS、CSRF等。
常用Web漏扫工具:Acunetix、Burp Suite、Nikto和Wapiti。
虽然大多数据库受防火墙保护,避免外部直接访问,但Web应用程序会提供这些数据库的入口,攻击者可利用Web应用程序来直接攻击后端数据库,如SQL注入。
常用数据库漏扫工具:sqlmap
渗透测试实际上在尝试攻击系统,所以比漏洞测试技术更进一步。执行渗透测试的安全专业人员尝试突破安全控制措施,入侵目标系统或应用来验证漏洞。
渗透测试过程通常包括以下阶段:
Whois可以提供有关组织的信息,包括IP范围、物理地址和员工联系人。
渗透测试人员通常使用Metasploit工具(支持使用脚本来实现常见攻击的自动化执行)对目标系统进行漏洞利用。Metasploit提供了一个可扩展的框架,允许渗透测试人员除了创建工具中内置的漏洞外,还创建自己的漏洞利用。
在渗透测试中,目录索引最初看起来可能不是一个问题,但仅仅知道文件的名称和位置就可以为攻击者提供有关组织的大量信息,以及潜在可访问文件的列表。
渗透测试不足点:
渗透测试通常划分为:白盒渗透测试、灰盒渗透测试及黑盒渗透测试。
代码审查(Code Review)也称同行评审(Peer Review),即由其他开发人员审查代码是否存在缺陷。最正式的代码审查过程称为范根检测法(Fagan inspections),包含6个步骤:规划->概述->准备->审查->返工->追查
不运行软件的情况下,通过分析软件源码或编译后的应用程序,评估软件的安全性
在软件运行环境下检测软件的安全性。测试人员无法接触源码,在生产环境中动态测试应该谨慎开展,避免服务的额外中断。
模糊测试是一种特殊的动态测试技术,向轮换提供无效的输入(随机产生的或特殊构造)来测试其限制,发现之前 未检测到的缺陷。主要分为两大类:
模糊测试通常不能完全覆盖所有代码,一般仅限于不涉及复杂业务逻辑的简单漏洞。
突变测试以小的方式修改程序,然后测试该突变体,以确定它的行为是否正常或失败。该技术用于通过突变来设计和测试软件测试。
软件测试过程中需要测试的接口分为:
一些应用程序存在明显的说明示例,展示软件用户可能尝试错误使用应用程序。
误用用例图使用的语言超出了典型用例图,包括威胁和缓解措施。
误用测试关注的是组织所不希望的行为,或与系统或应用程序的正确功能背道而驰的行为。用例测试用于验证所需的功能是否有效。动态测试用于确定代码如何处理随时间变化的变量
安全专业人员也经常参与网站持续监控,从事性能管理、故障排队、潜在安全问题识别等活动。主要可分为两类:
被动监测 通过捕获发送到网站的实际网络流量进行分析。真实用户监控(Real User Monitoring,RUM)是一种被动监测变体,监测工具重组单个用户活动,追踪其与网站的交互。
主动监测 对网站执行伪造的事件活动,从而评估其性能。
基于签名的监测 包括IDS、IPS和反恶意软件系统。