安全体系与企业安全

1节 SDL介绍

扩展阅读:

安全开发流程(SDL)学习概述 http://www.cnblogs.com/whoami101/p/9914862.html

SDL:https://www.microsoft.com/en-us/SDL/process/training.aspx

SDL软件安全设计初窥: https://xz.aliyun.com/t/226

SDL的全称是Security Development Lifecycle,翻译成中文就是安全开发生命周期,也有人称之为安全开发流程,其实就是一个东西。

SDL最早是有微软提出的,是一种专注于软件开发的安全保障流程,帮助开发人员构建更安全的软件和解决安全合规要求的同时降低开发成本的软件开发过程。为实现保护最终用户为目标,它在软件开发流程的各个阶段引入安全和隐私问题的活动。微软自2004年以来将其作为公司范围内的强制性政策,它能够从根源有效地解决安全漏洞问题。

扩展阅读:

安全开发流程(SDL)学习概述 http://www.cnblogs.com/whoami101/p/9914862.html

SDL: https://www.microsoft.com/en-us/SDL/process/training.aspx

SDL软件安全设计初窥: https://xz.aliyun.com/t/226

图片太大,后台无法上传,请打开石墨链接查看https://shimo.im/docs/gOzSUgU0Zj4NWHzX/ 《11-1 SDL介绍—学习资料》

这是整个SDL的过程,分为7个阶段,分别为:

1、安全培训

这个其实也好理解,是安全开发生命周期的首要要求,通过给软件开发的同学进行安全培训,掌握基础的安全和隐私知识,了解相关安全背景,有利于建立大家对安全的理解和后续流程的开展。

2、需求

需求主要包含有建立安全需求、创建质量门/bug栏、实施安全和隐私风险评估三个部分。

尽早确定安全和隐私需求有助于更容易的识别关键里程碑和可交付内容,最小化对计划和日程的干扰;在这过程需要指派安全专家、定义应用程序的最低安全和隐私标准、部署安全漏洞/问题跟踪系统。在开始阶段设定最低的安全标准和质量要求有助于开发团队理解安全问题和风险,这样使得开发团队可以在开发过程中识别并修复安全风险,以及贯彻这一标准。

而质量门或者bug栏的创建,主要是为了定义安全漏洞阈值。

而最后的评估部分主要是帮助团队确定项目的哪些部分在发布之前需要进行威胁建模和安全涉及审查,并确定对应的影响等级。

通俗的理解,就是要明确安全需求,并且尽可能早的确定安全需求,目的是避免中途插入安全需求导致开发的计划日程变更,也让开发人员心里有个底;同时需要设定一定阈值和标准,如怎么确定安全漏洞等级,建立安全问题反馈机制;最后就是评估项目安全现状,以及建立威胁模型。

3、设计

设计主要分为建立设计需求、分析和减小攻击面、使用威胁模型。

在产品设计初期就要考虑安全需求,分析可能的攻击面并进行修复和减少攻击面,比如进行访问限制、应用最小权限原则等;最后的话,有方法的应用威胁模型,可以更有效的确定安全漏洞和威胁风险,建立对应措施。

这次再次强调的了在前期确定安全需求,都是一个目的,避免安全需求对正常开发流程的影响。其实安全和开发或者运维便捷一直都存在冲突点,为了更安全增加相关的机制和审查流程,自然而然就阻扰正常的开发流程,所以相关流程推动应该考虑尽可能的在前期考虑安全需求,避免中途的干扰操作。

4、实施

实施主要也包含三部分,分别是使用指定工具、弃用不安全函数、进行静态分析。

发布指定的工具和相关安全检查,比如使用编译器的告警信息可以有助于进行自动化低成本的安全实践,并定期更新工具。分析并避免使用不安全的函数,可以减少潜在的安全缺陷,比如一些头文件等。同时可以通过静态分析源码,有助于发现问题并确保相关代码的开发遵循了安全编码规范。

这里重点就是通过指定的工具进行检查,静态分析发现问题,同时弃用非安全函数避免引入问题。

5、验证

验证包含有动态分析、模糊测试、攻击面检查。

通过动态分析在软件运行时进行监控以发现内存损坏、用户特权访问等安全问题;同时通过格式错误或者随机数据的测试方式故意导致程序失败进行测试,同样可以发现安全问题;最后就是在代码完成后,再次检查攻击面,可以确保程序或者系统设计已经进行了攻击面分析和修复。

通过动态分析、模糊测试、攻击面面检查三个维度再次验证项目安全情况。

6、发布

创建事故应急方案、最后的安全评估、发布与存档。

事故应急方案就不用说了,包含确定紧急联系人,这是至关重要的;然后进行一个最终评估,包含说审核之前定义的质量门/bug栏的的情况等;以及归档所有的代码、规范等相关文件。

7、响应

执行事件响应计划,通过执行事先制定的事件响应计划有助于最大限度帮助客户免受安全或隐私漏洞的影响。

这就是SDL的7个阶段,每个阶段对应开发过程的不同阶段,核心思想就是将安全集成在开发的每个阶段,也就是我们常说的需求分析、设计、编码、测试和维护,每个部分都增加了对应的安全活动,以求在安全开发过程中就将可能的安全风险降到最低。

其核心设计原则有六点:

  • Attack Surface Reduction:攻击面最小化
  • Basic Privacy: 基本隐私
  • Least Privilege: 权限最小化
  • Secure Defaults: 默认安全
  • Defense in Depth:纵深防御
  • Threat Modeling:威胁建模

2 威胁情报与企业安全

扩展阅读:

The Pyramid of Pain: http://detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html

STIX: https://stixproject.github.io/

CybOX: https://cyboxproject.github.io/

TAXII: https://taxiiproject.github.io/

1、威胁情报建设标准参考

STIX - Structured Threat Information eXpression

TAXII - Trusted Automated eXchange of Indicator Information

CybOX - Cyber Observable eXpression

MAEC - Malware Attribute Enumeration and Characterization

OpenIOC - Open sourced schema from Mandiant

IODEF - Incident Object Description Exchange Format

CIF - Collective Intelligence Framework

IDXWG - Incident Data eXchange Working Group

2、STIX标准要点浅析

主要可适用在以下四类场景

1、威胁分析。威胁的判断、分析、调查、保留记录等使用。

2、威胁特征分类。将威胁特征进行分类,以人工方式或自动化工具。

3、威胁及安全事件应急处理:安全事件的防范、侦测、处理、总结等,在安全事件处置过程中可以有很好的借鉴,以前做事件处理没有这么详尽的信息。

4、威胁情报分享。用标准化的框架进行描述与分享。

3、TAXII标准要点浅析

服务规范:定义了TAXII的服务类型、TAXII情报类型以及情报交流格式

消息规范:采用XML格式

协议规范:确定了HTTP/HTTPS作为TAXII传送的协议。从安全角度考虑可采用https协议传输。查询格式规范:定义了缺省的查询格式和处理规则。

3 态势感知与监控预警

1、态势感知产品

1.1 明鉴网络安全态势感知通报预警平台

1.2 360 态势感知与安全运营平台

2、对态势感知的理解

(1)态势感知是了解当前的状态,包括状态识别与确认(攻击发现),以及对态势感知所需信息来源和素材的质量评价。

(2)态势理解则包括了解攻击的影响、攻击者(对手)的行为和当前态势发生的原因及方式。简单可概括为:损害评估、行为分析(攻击行为的趋势与意图分析)和因果分析(包括溯源分析和取证分析)。

(3)态势预测则是对态势发展情况的预测评估,主要包括态势演化(态势跟踪)和影响评估(情境推演)

3、在线态势感知平台

1、全景网络安全防御系统

http://guanjia.qq.com/system/preloader.html

2、网络安全威胁信息共享平台

https://share.anva.org.cn/index

3、腾讯位置大数据

https://heat.qq.com/

4、360流量监控平台

http://scan.netlab.360.com/#/dashboard

4、态势感知的应用价值

1、应对关键性威胁:快速发现失陷主机;全面的Web安全保障。

2、提升分析研判能力:分析研判保障事件正确响应处置、逐步完善防御架构;依赖外部威胁情报和本地的流量日志进行有效的分析研判。

3、信息与情报共享:实现本行业、本领域的网络安全监测预警和信息通报;研判分析和情报共享是预警、预测的基础。

4、履行行业监管职责:边界流量探针、云监控和外部情报监测等优选检测手段,实现对行业的监管。

4 漏洞生命周期与漏洞的披露

扩展阅读

漏洞披露究竟怎么做更”合适“?看看美国相关部门怎么看 https://www.freebuf.com/articles/neopoints/123847.html

专家 | 黄道丽:网络安全漏洞披露规则及其体系设计 https://blog.csdn.net/kevin_bobolkevin/article/details/79408610

谷歌披露Windows关键漏洞惹怒微软 因只给了10天反应期 http://tech.qq.com/a/20161101/040313.htm

1、安全漏洞生命周期

         安全漏洞指信息系统中存在的缺陷或不适当的配置,它们可使攻击者在未授权情况下访问或破坏系统,导致信息系统面临安全风险。利用安全漏洞来造成入侵或破坏效果的程序就称为渗透代码(Exploit),或者漏洞利用代码。

围绕着安全漏洞生命周期所进行的攻防技术,一直是安全社区永恒的话题,而一个典型的安全路东生命周期包括如下7部分:

一、 安全漏洞研究与挖掘

         由高技术水平的黑客与渗透测试师开展,主要利用源代码审核(白盒测试)、逆向工程(灰盒测试)、Fuzz测试(黑盒测试)等方法,挖掘目标系统中存有的可被利用的安全漏洞。

二、渗透代码开发与测试

         在安全漏洞挖掘的同时,黑客会开发概念验证性的渗透攻击代码(POC),用于验证找到的安全漏洞是否确实存在,并确认其是否可被利用。

三、安全漏洞和渗透代码在封闭团队中流传

         在发现安全漏洞并给出渗透攻击代码后,负责任的“白帽子”们采取的处理策略是首先通知厂商进行修补,而在厂商给出补丁后再进行公布;而“黑帽子”与“灰帽子”一般在封闭小规模团队中进行秘密地共享,以充分地利用这些安全漏洞和渗透攻击代码所带来的攻击价值。

四、安全漏洞和渗透代码开始扩散

         由于各种原因,在封闭团队中秘密共享的安全漏洞和渗透代码最终会被披露出来,在互联网上得以公布,“黑帽子”会快速对其进行掌握和应用,并在安全社区中快速扩散。

五、恶意程序出现并开始传播

“黑帽子”将在掌握安全漏洞和渗透代码基础上,进一步开发更易使用、更具自动化传播能力的恶意程序,并通过黑客社区社会组织结构和互联网进行传播。在此过程中(或之前或之后),厂商完成补丁程序开发和测试,并进行发布。

六、 渗透代码/恶意程序大规模传播并危害互联网

厂商发布补丁程序和安全警报将进一步地让整个黑客社区了解出现新的安全漏洞和相应的渗透代码、恶意程序,更多的“黑帽子”将从互联网或社区关系网获得并使用这些恶意程序,对互联网的危害也在这个阶段达到顶峰。

七、渗透攻击代码/攻击工具/恶意程序逐渐消亡

在厂商补丁程序、安全公司提供的检测和移除机制得到广泛应用后,相应的渗透代码、恶意程序将被“黑帽子”逐渐抛弃,从而慢慢消亡。

         安全漏洞生命周期如下图所示:

 在安全漏洞生命周期内,从安全漏洞被发现到厂商发布补丁程序用于修补该漏洞之前,安全社区普遍称为"0day"。在这段时间,黑客们攻击存有该安全漏洞的目标可以达到百分之百的成功率,同时也可以躲避检测,在“0day”的安全漏洞和对应的渗透代码对于黑客社区具有很高的价值,挖掘“0day”安全漏洞并给出渗透代码也成为高水平黑客的追求目标。

参考链接:https://blog.csdn.net/henni_719/article/details/77947938

5 安全自动化协议SCAP

扩展阅读:

SCAP官方页面: https://csrc.nist.gov/projects/security-content-automation-protocol/

1、SCAP中文社区

SCAP中文社区是一个开放的安全资讯聚合与利用平台,其使命是促进SCAP系列标准在中国的采纳与应用。当前的社区中集成了SCAP框架协议中的CVE、OVAL、CPE等3种网络安全相关标准数据库。用户可以方便地使用本站对CVE漏洞库、OVAL漏洞检查语言以及CPE平台列表进行查询。

截止现在,SCAP中文社区主要收录了近6万条CVE数据(2002年以来),以及14000余条OVAL数据。并提供了有史以来最为详细的CVE中文解释以和OVAL的判定逻辑表达式的解析。SCAP中文社区在深入分析大量数据的基础上,完成了CVE与OVAL之间的映射:即如果一个CVE漏洞存在相应的OVAL漏洞检查技术细节,那么在在两个数据之间会有直接的链接,点击相关链接能够相互跳转(如CVE-2013-0095),这为漏洞分析人员的工作提供了极大的方便。此外,社区还完成了与CNNVD完整库的映射,通过CVE可以很方便地查看相关的中国国家信息安全漏洞库资源。

CVE数据库:http://cve.scap.org.cn

可以通过关键字、厂商和软件名称对CVE数据进行检索分析:http://cve.scap.org.cn/

OVAL数据库:http://oval.scap.org.cn

2、OVAL

OVAL由MITRE公司开发,是一种用来定义检查项、脆弱点等技术细节的一种描述语言。OVAL同样使用标准的XML格式组织其内容。它提供了足够的灵活性,可以用于分析Windows、Linux、Unix以及各种嵌入式操作系统的系统状态、漏洞、配置、补丁等情况,而且还能用于描述测试报告。OVAL能够清晰地对与安全相关的检查点作出描述,并且这种描述是机器可读的,能够直接应用到自动化的安全扫描中。OVAL的核心是“公开”(Open),这就意味着任何人都可以为OVAL的发展作出自己的贡献,共享知识和经验,避免重复劳动。 实际上XCCDF设计的目标是能够支持与多种基础配置检查技术交互。其中推荐的,默认的检查技术是MITRE公司的OVAL。在实际的SCAP应用中,XCCDF和OVAL往往是成对出现,XCCDF定义检查单,而OVAL定义每个检查项的具体实施细节。

OVAL以XML格式描述,包含如下几种XML格式(Schema):OVAL定义格式(OVAL Definition Schema),OVAL系统特性格式(OVAL System Characteristics Schema)与OVAL结果格式(OVAL Result Schema)。OVAL系统特性格式用于描述系统信息快照,该快照可用于和OVAL定义文件进行匹配以得出评估结果,OVAL结果格式用于描述评估结果。

在三种OVAL格式中,OVAL定义格式占有较为重要的位置,OVAL定义格式提供了一种机器可读的对系统进行安全评估的操作指南,它可用来描述系统的配置信息、分析系统的安全状态、报告评估结果等。典型的OVAL定义格式的XML文档由定义(Definition)、测试(Test)、对象(Object)、状态(State)和变量(Variable)等要素构成,其结构比较简单,主要是将各个要素以枚举的方式列出,如图1所示。

6 SCAP的应用与示例

扩展阅读:

分值计算的示例可以参考: https://www.first.org/cvss/examples          https://www.first.org/cvss/specification-document

心脏出血漏洞:

https://nvd.nist.gov/vuln/detail/CVE-2014-0160

CVSS 3.0计算器: https://www.first.org/cvss/calculator/3.0

CWE树状图: https://nvd.nist.gov/vuln/categories/cwe-layout

利用SCAP有效进行主机安全管

理: https://www.edu.cn/info/fei/wang_luo/an_quan_ji_shu/201303/t20130306_912136.shtml

1、OVAL学习笔记

OVAL由MITRE公司开发,是一种用来定义检查项、脆弱点等技术细节的一种描述语言。OVAL同样使用标准的XML格式组织其内容。它提供了足够的灵活性,可以用于分析Windows、Linux、Unix以及各种嵌入式操作系统的系统状态、漏洞、配置、补丁等情况,而且还能用于描述测试报告。OVAL能够清晰地对与安全相关的检查点作出描述,并且这种描述是机器可读的,能够直接应用到自动化的安全扫描中。OVAL的核心是“公开”(Open),这就意味着任何人都可以为OVAL的发展作出自己的贡献,共享知识和经验,避免重复劳动。 实际上XCCDF设计的目标是能够支持与多种基础配置检查技术交互。其中推荐的,默认的检查技术是MITRE公司的OVAL。在实际的SCAP应用中,XCCDF和OVAL往往是成对出现,XCCDF定义检查单,而OVAL定义每个检查项的具体实施细节。

OVAL以XML格式描述,包含如下几种XML格式(Schema):OVAL定义格式(OVAL Definition Schema),OVAL系统特性格式(OVAL System Characteristics Schema)与OVAL结果格式(OVAL Result Schema)。OVAL系统特性格式用于描述系统信息快照,该快照可用于和OVAL定义文件进行匹配以得出评估结果,OVAL结果格式用于描述评估结果。

 在三种OVAL格式中,OVAL定义格式占有较为重要的位置,OVAL定义格式提供了一种机器可读的对系统进行安全评估的操作指南,它可用来描述系统的配置信息、分析系统的安全状态、报告评估结果等。典型的OVAL定义格式的XML文档由定义(Definition)、测试(Test)、对象(Object)、状态(State)和变量(Variable)等要素构成,其结构比较简单,主要是将各个要素以枚举的方式列出

定义”是最重要的构成元素,它会引用一个或多个“测试”,根据“测试”的结果综合判定整体的结果,“测试”使用“对象”和“状态”与系统交互并得出检查结果,“状态”可以使用固定值或引用“变量”中的值。OVAL各组成要素之间的逻辑关系如下图。在下图中,Definition1包含两个“测试”Test1和Test2,假设其判定标准为AND的逻辑关系,那么如果两个Test均为True,整个Definition1结果为True。举例来说,如果Test1测试结果为True,Test2测试结果为False,根据Definition1中的判定条件Test1=True AND Test2=True,整个Definition的测试结果为False。

OVAL定义

“定义”(Definition)用于描述如何对某一特定安全问题进行检查,通常一个OVAL文档中包含多个“定义”。主要有四类定义,分别是漏洞(Vulnerability):描述如何根据系统状态判定系统中是否存在某个特定漏洞;补丁(Patch):与漏洞定义类似,但它更关注如何判定系统中是否安装了某个特定补丁;软件(Inventory):描述如何对系统中是否安装了某个特定的软件进行判定;合规(Compliance):描述如何对系统是否满足某个特定的配置要求进行判定。表1是一个OVAL定义的示例数据。

OVAL测试

“测试”(Test)通过定义一组OVAL对象(Object)和OVAL状态(State)执行,OVAL 测试的数据结构如表2所示,而图2则较为清晰地表达了OVAL测试中OVAL对象与OVAL状态是如何相互配合执行测试。

OVAL对象

“对象”(Object)用来描述测试主体,由于测试主体类别众多(如注册表、组策略、文件、软件包等),因此Object的类型也很多,且每种类型的数据结构各不相同。下面是一个passworkpolicy_object的定义,可以看出系统策略类的OVAL对象只需要指明一个id即可被解释器识别:

<passwordpolicy_object id="oval:gov.nist.usgcb.windowsseven:obj:27" version="2"/>

下面是一个registry_object的定义,可以看到注册表类OVAL对象需要指明注册表Hive、注册表键和注册表项的名称:

<registry_object id="oval:gov.nist.usgcb.winseven:obj:16" version="2">

<hive>HKEY_LOCAL_MACHINE</hive>

<key>SOFTWAREPoliciesMicrosoftPCHealthErrorReportingDW</key>

<name>DWAllowHeadless</name>

</registry_object>

OVAL状态

“状态”(State)用来描述测试主体的参考状态值,同OVAL对象类似,State也分为多种类型,每种类型的数据结构不相同,下面是一个passwordpolicy_state的定义:

<passwordpolicy_state id="oval:gov.nist.usgcb.winseven:ste:33" version="2">

<min_passwd_len operation="greater than or equal" datatype="int" var_ref="oval:gov.nist.usgcb.winseven:var:22"/>

</passwordpolicy_state>

可以在Value中使用正则表达式以更好的完成字符串匹配工作。下面是一个registry_state的定义,用来识别注册表中获取的值能与字符串“Windows 7”相匹配。

<registry_state id="oval:org.mitre.oval:ste:5027" version="4" comment="Matches with Windows 7">

<value operation="pattern match">

^[a-zA-Z0-9()s]*[Ww][Ii][Nn][Dd][Oo][Ww][Ss] 7[a-zA-Z0-9()s]*$

</value></registry_state>

可以看出,OVAL状态中可以使用var_ref引用一个OVAL变量表示OVAL状态的值,或者直接将值写入到value节点中。

OVAL变量

“变量”(Variable)定义了执行测试时State所需的值,其有三种类型:常量(constant_variable)、本地变量(local_variable)和外部变量(external_variable)。常量定义一个不能在运行时改变的值,本地变量定义在OVAL中直接使用的值,而外部变量通常用于将XCCDF的Value值传递到OVAL中。下面是一个外部变量的定义:

<external_variable comment="Minimum Password Length is greater than or equal to the prescribed value" datatype="int" id="oval:gov.nist.usgcb.winseven:var:22" version="2"></external_variable>

 注:以上大多转自破壳笔记学习资料,欢迎大家前来报名学习

原文地址:https://www.cnblogs.com/klsfct/p/11204588.html