天天看点

《互联网安全高级指南》 随手记(四)

技术篇 #####

    第九章 漏洞扫描

        任何规模稍大的企业,日常安全工作要想自动化少不了自建扫描平台。

        安全运维日常工作最重要的3个事情,漏洞扫描、入侵感知和应急响应。

            #1.概述

                漏洞扫描会在业务上线前或周期例行扫描,是指用扫描器发现漏洞的过程,

                    黑客利用漏洞会降低其绕过ACL、IDS、WAF等防御措施的难度。

                        如果有漏网之鱼,各大互联网企业也有自己的应急响应中心(SRC)供白帽子有奖挖洞。

            #2.漏洞扫描的种类

                1.按漏洞类型分类(扫描的漏洞的类型不同)

                    ACL扫描器

                        用途:密切监视公司服务器及网络的ACL。

                        周期:至少一天一次:

                        关键点:无需对外开发的端口或IP是否暴露在公网中。

                            某些应用发现最新漏洞时,可以快速从数据库中查询对应服务与版本,

                            报到业务部门修复。

                        技巧:

                            机器少,直接用 nmap 扫描,扫描结果直接存放到数据库中。

                            机器多,用 masscan 扫描出所有端口信息,

                                然后再用 nmap 去识别端口的协议及应用程序版本信息,

                                因地制宜,部署扫描服务器数量,形成分布式的架构。

                    弱口令扫描器

                        四款,Nessus、x-scan、h-scan、Hydra。

                        日常安全自动化场景:

                            用Py调用Hydra扫描SSH弱口令脚本,弱口令数据从DB加载,

                                扫描结果写入库。

                    系统及应用服务漏洞扫描

                        两款,Nessus、openVAS。

                        通常需要部署多台Nessus服务器以集群模式进行扫描。

                        日常安全自动化场景:

                            用程序调用Nessus的接口,将Nessus的漏洞扫描做成周期性任务,

                                扫描结果写入库,方便漏洞情况汇总。

                            进阶版可以是周期性任务不仅入库还自动建立工单提醒修复,

                                收到修复完成指令后,再次扫描核实,形成良性循环,

                                如果没有工单系统,可由漏洞管理系统代替。

                    Web漏洞扫描

                        脚本小子最爱的内容,

                        六款,AWVS,AppScan,sqlmap,w3af,arachni,Zed Attack Proxy

                            前两款是收费,后四款开源免费。

                        日常使用至少要2款交叉用,建议AWVS必用,zap和arachni辅用。

                        安全自动化场景:

                            Web扫描任务提交平台->调度系统->检测引擎->安全中心->提案

                        业务流程(任务提交-任务分发-漏洞扫描-漏洞审核-漏洞修复)

                        补充:通常5层(ui-数据库-任务调度中心-漏扫引擎-插件库)

                2.按扫描行为

                    主动扫描(AWVS,sqlmap,Nessus)

                    半被动扫描(与前者区别在于URL的获取途径)

                        通过Access log获取URL(最简单)

                        通过HTTP代理获取URL(最常用的安全自动化实现)

                        通过旁路获取URL(最复杂的安全自动化实现)

                            可以通过Storm流式计算平台将来自分光的全流量URL库rewrite替换,

                            去重归一,验证真实性后作为扫描器的输入源,

                            由消息队列推送至分布式扫描器中。

                            作为加强版,URL来源不限,可以(全流量URL+爬虫URL+WAF日志URL)

                        通过VPN设置透明代理转发,与HTTP代理类似。有Golang自动化版本。

                    全被动扫描

                        目的不同,主要是漏洞感知而不是入侵行为感知。

                        特点:不联网,不发包,部署方式类似IDS。

                        适合场景:对投入管理精力不够的灰色地带的资产进行防护。

            #3.如何应对大规模的资产扫描

                不上云将面临的问题:

                    1.扫描速度慢,效率低,

                    2.影响带宽甚至影响用户体验,

                    3.低威和误报多,浪费人工解读和整理的精力。

                总体思路是减少工作量(定制扫描平台,定制扫描方案):

                    1.简化漏洞评估链,减少需要扫描的任务

                    2.减少漏洞扫描的网络开销和被检查者的性能损耗

                    3.减少漏洞扫描的种类

                    4.减少手工确认的误报工作量

                日常技巧:

                    1.先做端口扫描,用ACL减少端口(攻击面),这样只需扫白名单端口。

                    2.高危端口监控,漏洞扫描精简为端口监控加关键应用扫描。

                    3.借助于生产机agent扫描,前提是尽可能地减少生产机性能损耗。

                        特别适合:心脏滴血的漏洞/OpenSSL不安全版本/本地配置型漏洞。

                小企业的折中方案:

                    1.对于Web漏洞扫描,单机网络版变分布式,

                        使用任务队列提交到awvs/arachini/w3af。

                    2.对于服务器及网络漏洞扫描,使用集群Nessus。

                        调用Nessus的API进行大规模扫描。

            #4.小结

                漏洞扫描本质还是基于数据的扫描,要加强漏洞数据可考虑加入社工库,

                    收集公司的社工信息,用于表单业务的fuzz扫描。

                    其次是SRC加强运营力度,最后则因地制宜,对重复检测的检测点进行精简。