Security+笔记——第四章:执行安全评估

课题A:确定漏洞

主机漏洞
软件漏洞
运行在操作系统中的软件可能会正中攻击者的下怀,暴露出弱点。

软件漏洞描述
零日(zero day)零日漏洞是指恶意用户能在漏洞被公众或开发者知道之前,或在开发者有机会修复问题之前利用的漏洞。开发者无法抵御这种新型威胁意味着它的影响常常会被扩大并且是长期的。
不合理的输入输出软件被编程为期望特定类型的输入,如一名用户在登陆页面中输入用户名和密码。但是用户可能会输入软件不希望的内容,这就可能导致软件处理输入时出现问题。在某些情况中,欠佳的数据处理会导致未授权用户获得系统的访问权限或获得额外权限。在其他情况张红,输入可能破坏系统并引起拒绝服务。
不合理的错误处理在任何额足够复杂的软件中,错误是不可避免的,因此,开发者会在错误出现时编写代码进行处理。开发者可能会犯的一个错就是在生成过于详细的错误消息,让用户知道代码本身如何运行的过多的消息。
资源耗尽(Resource exhaustion)资源耗尽生在软件没有合理限制被请求或被需求资源的访问权限时。如果攻击者能够消耗足够多的某种重要资源按,如网络带宽或CPU时间,那么软件就不再能够执行日常业务并且可能会崩溃。
竞争状态(Race condition)当执行过程的结果直接取决于某些时间的顺序和时间,且这些事件无法按照开发者而设计的顺序和时机执行时,就会出现竞争状态。进入竞争状态的软件可能会崩溃。
内存漏洞内存泄露(Memory leak):发生在软件对被分配内存使用完毕后无法释放的情况中,可能会引起系统的不稳定。缓冲区溢出:是指数据超出了被分配的内存缓冲区的边界,可能会对相邻内存造成破坏。整数溢出:是指一个计算结果太大而无法容纳进内存中的呗分配恐惧,可能会引起缓冲区溢出和崩溃。指针解引用(Pointer dereference):是指代码尝试溢出指针及其指对象(pointee)之间的关系。如果这个被指对象没有正确地建立,解引用过程可能就会使应用程序崩溃并损坏内存。DLL注入(DLL injection):是指一个机遇Windows的应用程序迫使另一个运行中的应用程序在内存中加载一个动态链接库(DLL),可能会使受害应用程序变得不稳定或泄露敏感信息。

加密漏洞
一些加密方案本身就是不安全的,或因攻击者和研究人员按的努力使之能够被破解而变得不安全。
网络架构漏洞
网络架构的设计可能会向攻击者暴露弱点,被加以利用。
操作漏洞
在组织中,不仅技术方面容易受到攻击,在很多情况下,攻击者还会期望利用脆弱的业务流程和日常操作中的其他薄弱领域。

课题B:评估漏洞

安全评估
安全评估(Security assessment)是指通过一种综合性的技术测试安全控制过程,暴露出你的工具,技术,服务和操作中的任何弱点或差距。这个测试的目的在于为你提供能及时有效地缓解任何漏洞的所需信息。在安全评估中实际使用的方法差别很大。这些方法会影响测试号的性质,决定采用主动还是被动形式,还会影响其他特征。
漏洞评估(vulnerability assessment)就是其中的一种方法。这一过程会根据系统的配置状态,评估系统的安全性和满足合规性要求的能力。
测试授权
虽然通常不会产生入侵威胁,但是漏洞评估还是可能会对商业操作产生一定影响,因此在你执行这类测试之前可能需要管理层的授权。
安全评估技巧

技巧描述
审核基线报告(baseline report)基线报告是一组被应用到组织中特定系统或网络的安全和配置设置集合。
执行代码审核(code review)在开发过程中,所有应用程序都应当执行常规的代码审查。
确定攻击面(attack surface)攻击面是指系统或应用程序中所有可能暴露给攻击者并被利用的项目组合。
审核安全架构安全架构审核(security architecture review)是指对组织当前安全基础户架构模型的评估。
审核安全设计安全设计审核需要在应用安全实施之前完成。

漏洞评估工具
当你在系统中评估漏洞时,有许多可用的软件工具。

工具类型应用于
漏洞扫描器评估你的系统,网络和应用程序中的弱点。
端口扫描器评估网络中所有端口的当前状态,并检测可能会对组织产生风险的开放端口。
协议/数据包分析器评估网络上的流量,流量中解释的内容,以及使用的协议。
指纹识别(fingerprinting)工具确定目标的操作系统信息和运行服务。也叫作标志提取(banner grabbing)。
网络枚举器映射网络的逻辑结构,以确定网络上的流氓系统。
密码破解器从存储在计算机中或通过计算机传输的数据中恢复密码。
备份工具创建被扫描秒数据的复制版本。
蜜罐将可以活动从合法网络系统中重定向到一个可以安全监控的独立系统中。

蜜罐(honeypot)是指在追踪攻击者活动时,吸引他们离开合法网站来源的安全工具。蜜罐可以是软件模拟程序需,硬件幼儿,或者就是一个完整的虚假网络,即蜜网。
漏洞扫描的类型
漏洞扫描有多重不同的类型,它们在特定环境中会很有用。比如一些工具适合扫描无线网络实施过程中的弱点。一些专门用作配置合规性扫描器,评估系统的状态是否符合基线。漏洞扫描还可以按照是否需要凭证来进行区分。
误检
所有的扫描,不论何种类型,都会受到误检率的影响。在啊安全评估环境中,误检(false positive)就是指扫描秒器或其他评估工具确定了一项漏洞,而实际上并不是。
一个相关术语就是漏检(false negative),是指工具确定某个项目不是漏洞,而实际上是漏洞。这可能会导致问题长时间无法被发现,被认定是扫描工具中的灾难性故障。
评估漏洞的准则

  • 考虑主机的操作系统和平台爱是如何进行配置的。
  • 不要依赖默认的主机配置来获得最佳安全性。
  • 创建与你的安全需求相对应的自定义主机配置。
  • 思考软件中的零日漏洞是如何显著增加攻击风险的。
  • 思考组织开发或使用的应用程序是如何受到不合理输入处理和内存问题等漏洞的影响的。
  • 思考使用过时的密码套件是如何危害网络流量加密的。
  • 评估你的数字证书中的错误配置,如无效的格式编排。
  • 评估加密密钥管理系统中是否存在可能使攻击者更容易访问私钥的弱点。
  • 思考你的网络架构是如何使攻击者更容易地获得访问权限或发动拒绝服务状况的。
  • 思考错误配置的用户/计算机账户是如何造成威胁的。
  • 确定组织中可能极易受到社会工程攻击的任何用户,因此需要对这些人员进行培训。
  • 确定任何缺乏有效规划的关键业务流程,如寿命末期(EOL)流程等。
  • 思考系统延伸和未登记资产是如何使组织中的所有要素变得更难保护。

课题C:实施渗透测试

渗透测试
渗透测试(penetration test)使用积极的安全工具,通过在系统中模拟 发动攻击来评估安全性。渗透测试会验证威胁是否存在,然后积极测试并绕过安全控制。如果得到授权,渗透测试还能利用系统中的漏洞。
渗透测试的技巧

技巧描述
侦查(Reconnaissance)渗透测试的第一阶段侦查,在这一阶段中,测试员会尝试尽最大可能搜集有关目标的信息。这使他们能够根据测试的背景尽可能快速,简便且有效的发动模拟攻击。侦查可以是主动的(如扫描网络上的端口确定潜在的攻击适量),也可以是被动的(如搜集组织中关键人员的公开可用信息,针对他们发动社交工程)。
初步利用当测试员通过侦查过程搜集到所有信息后,他们就会开始利用他们的目标。这一过程可能包括获得的整个网络的访问权限,获得网络上特定主机的访问权限,获得内部 账户证书,以及更多。
权限扩大攻击者会尝试获取更多权限,以便获得对被利用系统的更大控制权。
跳板(Pivoting)当渗透测试员想要转移时,他们破坏一个中央主机,使他们能够分散到其他主机中,于是这些主机就会变得不可访问。
维持(Persistence)维持是最终阶段,意味着初步利用阶段已经结束了,测试员现在更愿意保持对网络的访问。

盒测试方式

测试类型描述
黑盒测试(Black box test)这种方案不会向测试员提供有关被测系统结构的具体信息。测试员可能知道系统是做什么的,但是不知道是如何做的。这种测试需要测试员执行侦查阶段。黑盒测试在模拟外部威胁的行为方面非常有用。
灰盒测试(Gray box test)在这种方案中,测试员对内部架构和系统,或被测系统的其他初步信息有部分了解。这种测试对测试员来说需要进行部分侦查。灰盒测试在模拟无特权的内部人员威胁时非常有用。
白盒测试(White box test)在这种方案中,测试员在执行测试之前就已经了解系统的各个方面,知道系统的功能和设计。这种测试有时是作为黑盒测试的后续测试,来对黑盒测试中发现的缺陷进行充分评估。在这种测试中,测试员会跳过侦查阶段。白盒测试在模拟有特权的内部人员威胁时非常有用。
  • 黑盒测试-完整的侦查
  • 灰盒测试-部分侦查
  • 白盒测试-不进行侦查

渗透测试工具

工具类型应用于
利用框架创建并部署代码来利用系统。
数据清除工具安全地从从存储媒介中擦除数据。
信息隐藏工具将数据隐藏在其他数据中避免被检测到。
社交工程工具测试用户对社交工程策略的敏感程度。
压力测试器测试系统对计算开销和网络带宽增长的响应能力。

实施渗透测试的准则
当实施渗透测试时:

  • 考虑除了执行漏洞评估还执行渗透测试的优势,或渗透测试能取代漏洞评估的原因。
  • 了解执行渗透测试时涉及的风险。
  • 考虑在模拟攻击中的不同阶段实施渗透测试技术。
  • 考虑使用不同的盒测试方法来执行渗透测试。
  • 理解每种盒测试方法对侦查阶段的不同需求。
  • 熟悉在系统的主动利用过程中使用的不同工具。
添加新评论