当前位置:首页>办公设备>扫描仪>

扫描仪扫不全解决方法(扫描仪扫出来的a4不全)

扫描仪扫不全解决方法(扫描仪扫出来的a4不全)

更新时间:2022-02-16 19:39:08
前 言

只要提到应用安全,总是离不开一个概念——sdl建设,但是在大部分互联网公司并没有看到过哪家SDL做的好的,SDL强调安全流程,从业务需求的提出就介入进去,在整个业务的研发周期中,每一块都有相应的安全方法、安全制度来指导,安全作为业务的一个属性加入进去,SDL在过程中实施的是对业务的卡点、考核。

SDL安全流程化

这块主要是对流程进行梳理,把安全与项目研发流程相结合形成项目的安全开发管控流程,安全贯穿到整个项目研发流程中,包括前期的需求分析,安全设计、代码编写、代码上线部署、测试环境测试、正式环境上线运行等,可以认为此时走传统的SDL流程。

  • 前期方案设计阶段:威胁建模及头脑风暴,针对业务属性和场景制作出业务自查表和安全红线表,业务初期进行自查自纠。
  • 代码编写、代码上线部署:通过白盒扫描插件及白盒扫描接入,辅助人员审核,在过程中发现代码中存在的漏洞。
  • 测试环境测试:人工灰盒测试,在测试环境配合代码发现安全问题
  • 正式环境上线:配合运营体系发现安全问题

这里有个问题,若是业务量增长的话对于人力成本是巨大的,这里很多公司就结合DevSecOps理念来解决一部分人手不足的问题,这个框架讲研发、运维、安全作为一个团队来对业务的安全负责,安全不单是安全团队的怎样,成了业务中每个人的责任。下面简要说下DevSecOps理念及落地实施。

DevSecOps框架

对于DevSecOps的落地来说,这个只是个框架,是个方法论,具体的技术实施呢,都知道是将Sec融入到Dev和Ops的里面,对于怎么融入、怎样结合到起来,就需要根据不同公司的不同特点来定了。

对于安全来说,主要的任务就是保护公司的业务不会被外界入侵,不会被外界攻击,攻击能及时发现切断。

DevSecOps框架需要建设不同的安全体系,需要不断优化和完善对于的体系来覆盖框架的不同阶段。对于在真正的实施过程中,大部分公司都可能涉及到以下不同的能力建设,在具体落地过程中,笔者认为可以简单总结为几个能力建设:主动发现的能力、被动发现的能力、业务管控的能力、安全运营的能力。


安全能力建设一、主动发现的能力

主动发现的能力简单来说是能主动发现业务中的安全问题、安全漏洞、安全风险,业界中比较常用的技术有黑盒扫描、白盒扫描、安全评估与测试以及红蓝对抗。

1、黑盒扫描

这个是每个公司都会有的,也是初期重点建设的一块,有采用商业扫描工具:awvs、appscan等,也有采用自研方式进行。

这里不说商业的扫描工具,对于互联网公司,大部分都会采用自研扫描工具的方式进行,简单说下自研扫描器里面涉及到的一些需要重点考虑的地方:

  • 资产的管理:在很多公司,资产梳理做得都不是很完美,若是想将黑盒扫描的覆盖度和发现能力提升的话,资产的完整性是比较重要的,资产不全,再好的扫描器扫描不到,也是能力上的不足;
  • Poc的完整性:扫描器的核心是poc,poc越多、更新越及时的话越能及时的发现内部的安全漏洞,在poc设计上,一种是poc不依赖与扫描器,每个poc都是一个单独可运行的脚本,这样做的好处是每写一个poc就能及时验证poc的可靠性,缺点是poc是单独的脚本运行的,一旦出现问题,可能会影响到扫描器框架;另一种是基于配置的poc,比如json格式或者yaml格式的文件,将规则写到配置文件里面,扫描器来通过配置来发包解析结果,这样的好处是文件错误不会影响到扫描器框架的允许,对于运营人员的编写也是比较友好的,不用熟悉python或者go语言,只需要按照标准格式写配置文件即可,但是缺点的话需要扫描器加载后才能验证poc的正确与否,所以设计扫描器框架时候需要考虑加载poc后能对poc的有效性有验证的方式
  • 这里就涉及一个子项目:资产管理及发现,对于扫描器来说,资产管理起来对于扫描结果的好坏是比较重要的,资产要是能管理起来,对于资产的主动发现也是可以实现安全漏洞发现左移的,比如新增资产的监控,这个可以列为被动发现能力里面了。
2、白盒扫描

白盒的话在互联网公司除了几个大厂有自研的引擎外,据了解都是采用了商业的工具,在具体的落地过程中也调研了不少白盒扫描工具:checkmarx、coverity、codeql、sonarqube。

checkmarx和coverity都有sonarqube的插件在,都可以作为sonar的一个引擎来工作,对于sonar来说,很多互联网公司都基于这个做代码质量的扫描,这个其实给做白盒能力有了很大的便利性。

checkmarx对于web来说效果比coverity要好些,并且对于用户的使用体验和操作都是比较不错,将checkmarx插件集成到sonar里面,这样业务不需要单独集成checkmarx,而是只需要按照以前的流程集成sonar就可加入安全扫描的能力。

但是有一点需要考虑,对于安全结果来说业务很多时候不知道是不是误报还是真实的安全风险,这就需要安全人员介入到流程里面,对代码扫描的结果进行审核,确定是漏洞的提交给业务,不是漏洞的直接忽略处理,这样前期需要大量的人工参与,需要不断优化规则,不断调整策略减少误报。前期可以通过对结果的分析可以将一些误报率较高的规则下掉,只留高威胁级别的规则在,保证人工在每天是可以覆盖的住流程的

后期的话由于sonar是带有api接口的,可以基于sonar包装一层,构建安全自己的代码扫描平台,可以提供api接入到CI中,可以将漏洞审核与漏洞管理平台打通,可以通过平台调整规则、新加规则等。这样在整个CI中,sonar 代码扫描平台两个,业务只要关心sonar上面的代码质量问题,安全只要登入代码扫描平台审核白盒扫描出来的漏洞即可。

这里涉及到一个白盒里面的子项目:白盒扫描插件,这个作为白盒检测,更加进行了左移,在业务编写代码的时候就直接进行扫描。可以基于:http://github.com/alibaba/p3c 来包装一层来做

还有一个白盒的子项目:第三方组件的漏洞发现,这个做起来可以通过采购商业软件来实现,比如Blackduck或者xray,对业务是透明的,只要安全人员控制好流程和策略。

3、红蓝对抗

红蓝对抗是一种能更深层次发现安全问题和安全风险的方式。每过一段时间组织一次蓝队行动,对着一个核心目标不限手段、不限方式地进行攻击,以获取核心目标为目的。可以更好地发现整个业务体系中存在的安全问题和安全风险点,帮助红队进行安全优化及建设,红蓝对抗在安全进行中一定程度后可以考虑重点进行建设,对于整个风险的发现和推动是巨大的。

二、被动发现的能力

被动发现安全风险的能力,可以采用的技术有:安全监控、蜜罐

1、安全监控

监控可以分为两类:未发现风险的监控、风险之中的监控,风险之后的溯源

为了发现风险的监控,可以提前杜绝掉风险的发生,比如前面说的,若是资产梳理是没有问题的,可以每天将业务新增的资产进行扫描查看,比如:新上的域名是一个管理系统,他没有走内部的安全流程,就存在问题,直接要求整改。新上的域名、服务器直接进行扫描器的扫描,可以第一时间发现是否存在漏洞。

发生风险的时候的监控:

- 攻击流量监控:这个就是有很多扫描器、很多测试的数据的特征进行流量监控,监控到了直接报警,也可结合SOC进行数据分析处理,利用WAF进行自动化封IP等防御措施,这样将内部各个防御能力打通,实现自动化编排,后期流量日志采用大数据建模方式来发现未特征化的攻击。

- DNS监控:对于很多命令执行、SQL注入、SSRF等漏洞的探测大部分是通过DNS来的,内部系统发起DNS请求是可以在内部DNS服务器上捕捉到的,这样将DNS日志监控起来,初始先制定一些黑名单,观察是否有机器对外发现这些恶意DNS请求了,对这些机器进行分析,就有可能发现未知的存在的安全风险。

- SQL执行日志监控:对于sql注入的发现还是比较有用的,SQL注入通常会有一些注入特征在,只要匹配到这些特征,就可以发现某个业务在遭受sql注入的攻击

除此之外,对外界代码仓库、文档仓库的监控也是属于监控体系的,包括GitHub监控、百度网盘监控等等,这个github好说,很多开源的工具系统存在,将业务的关键信息加入到监控中即可,对于百度网盘之类的监控就不太好做了。

2、蜜罐

这个也是发现攻击的一种很好的方式,不单可以发现外部使用到的poc、密码字典等等信息,也能发现一些未知的攻击方式和APT行为存在

三、业务管控的能力

业务管控能力,比较通用的是WAF,为啥把WAF能力放在安全管控上面,WAF是可以做到哪些ip能访问,哪些ip不能访问,哪些路径能访问,哪些路径不能访问到的,说起来也是对业务的访问做的管理。WAF有很多成熟的商业产品在用,也可以自研,自研的话前期是基于正则匹配来做的,通过匹配对应的参数位置上的参数值是否包含有关键字来做。后期的话要想准确性高、误报率小的话还是需要机器学习和语义分析来做。

现在对于业务管控比较热门的零信任体系的建设,比较常见的是安全网关的模式,有空说下零信任的一些内容,现阶段知识还不深,就不说了,再深入研究研究看。

四、安全运营的能力

提到安全运营,很多人的脑袋想到的都是举办些安全活动,打打杂之类的工作,在笔者看来,一个企业的安全运营能力才真正能体现出该企业的安全能力,安全运营是推动SDL流程不断优化、不断完善的动力,是为DevSecOps规划建设指明道路和方向的。

技术要是没有了运营,是无法进行后续的优化和改进的,运营没有了技术,是虚的空的,无法落地的,安全运营包括了外部运营、内部运营,不同的运营又可划分为非技术运营、技术运营两种

1、外部运营

外部运营里面的非技术运营,主要包括了安全品牌的建设、宣传等,主要是提供公司在业界的影响力,这样可以更好的吸引外部的安全研究者为我们服务,更好的吸引外界安全人员以外部视角参与到公司的安全建设中来

外部的技术运营:组织技术人员参加外部的比赛、大会等,发表技术文章等,以技术能力展现出来,这样在行业中展示出公司的技术实力。

2、内部运营

内部非技术运营:汇总每个能力方面的数据做分析,将各个能力的结果通过数据化的方式展示出来,一方面可以给老板看到能力的建设进展情况,也能使大家了解到自己做的工作的成果

具体的落地可采用:数据大屏的方式来展示出来,通过soc平台完成。

内部技术运营:通过非技术运营出来的结果反哺各个能力建设,通过内部、外部发现的安全问题,优化各个能力的建设,补充不足之处,推动流程优化和DevSecOps建设方向。

具体落地:主要是需要运营人员对每一部分的能力建设比较了解,通过看问题能发现更深层面的东西,然后对每个结果进行安全能力上面的推动。

,