技术篇 #####
第九章 漏洞扫描
任何规模稍大的企业,日常安全工作要想自动化少不了自建扫描平台。
安全运维日常工作最重要的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加强运营力度,最后则因地制宜,对重复检测的检测点进行精简。