在企业内部,部署漏洞扫描器,供研发、测试、运维团队使用,尽早发现和修复安全漏洞,可以显著地降低线上系统被黑客攻击沦陷的风险。

爱奇艺拥有数十万域名和IP资产,覆盖常见操作系统,包括大量主机设备、交换设备、移动设备、IoT设备。在这些设备上,又运行着种类丰富的应用程序。我们设计了一套 "爱奇艺云扫描" 系统,用于在内部高效地发现漏洞。在部署30个节点时,云扫描每月完成超过一亿次端口安全检查,其中,耗时的重型web扫描任务达到50万次,并且保证了极低的误报率。

1、系统架构

爱奇艺云扫描由3大功能模块组成:

  1. Web

  2. Monitor

  3. Scan Node

Web用于管理任务、漏洞、各类资产,提供对外接口。

Monitor用于主动资产发现、执行扫描策略、执行定时任务、处理邮件通知。

Scan Node运行着4大扫描插件:端口发现插件、Web漏洞扫描插件、通用漏洞插件、信息泄露插件。插件之间互不通信,扫描任务只通过中央的任务队列来管理。

2、资产发现

资产发现得越全,扫到漏洞的几率越大。云扫描结合多种方式,尽可能多、尽可能快地发现内部资产:

1. 监控新域名的生效

2. 监控新机器(IP)的创建和上线

3. 全网PING,发现新的存活IP

上述主动资产发现可在半小时内完成。云扫描使用了优先级任务队列:新发现的资产,将以最高优先级添加到扫描队列。从新域名(IP)发现 -> 端口发现 -> 逐个端口完成漏洞检查,整个流程将在90分钟内结束。

3、扫描策略

云扫描是一个高度自动化的系统,由策略执行模块来管理扫描队列,系统7x24小时不间断执行巡检任务。同时,内部员工还可以在平台内自助提交扫描任务。自助任务最高优先级插队后,立即开始扫描。巡检策略遵循以下基本原则:

1. 外网资产优先

2. 高危漏洞插件优先

通过组合资产和插件集,执行基础扫描策略。

4、全网应急

云扫描支持对全网任意范围(选取任意 IP、域名、端口、服务)一键发起应急扫描。快速应急能力建立在插件快速部署的基础上,我们支持插件的快速上线和自动重载:

1. 插件完成代码review,合并到master分支后,自动触发rsync同步到所有扫描节点

2. 变更或新增插件后,POC框架自动reload,无需重启扫描进程,保证了扫描连续不中断、不丢任务消息、不丢中间结果

当情报监控到一个严重的通用漏洞爆发,安全团队在取得可用POC后,可以快速开发上线扫描插件,进行全网排查。“应急扫描” 功能如下图所示:

使用过滤器选定目标域名、IP、端口、服务,再勾选所需的 插件,一键提交,即可发起全网应急,简化了应急响应流程。

5、一键验证和一键提单

云扫描支持对大部分漏洞进行一键自动化验证。常规的扫描报告在提单前都需要经过安全工程师的人工验证,我们认为,能够机器确认的漏洞,不应该浪费人力再次进行人工分析。一键验证目前的实现方式是:

1. 将指定漏洞写入Redis

2. 扫描器从Redis取走验证任务,进行常规扫描,将结果写回Redis

3. 用户在Web界面轮询扫描结果,60秒内返回验证结果

云扫描支持一键提交漏洞单,这得益于扫描器进行了完善的资产管理:域名和IP都可以精准找到业务owner。另外,通过对接值班表,归属特定业务的安全漏洞,将会直接分配给当天值班人员,提高处置效率。

6、端口海外复测

云扫描不断在发现新的漏洞,本着外网漏洞优先处理的原则,我们对存在漏洞的外网端口,是否已经暴露给攻击者,进行了二次确认,用于确定处置优先级。

云扫描Agent将端口分块投递给部署于海外的扫描服务,海外节点完成检测,返回结果给Agent程序,再由Agent更新端口数据库。如下图所示:

在云扫描后台中,如果一个存在漏洞的目标,是外部攻击者可以访问的,会以红色高亮标记,提醒安全人员尽快提单处置。如下图所示:

7、心跳和统计

扫描节点上的插件,每隔10分钟投递一次心跳,在管理员面板中,可以查看节点在线状态。一旦插件意外离线,系统会邮件告警,提醒尽快排查离线原因。下图示例将3台Win主机上的端口扫描插件离线:

“统计功能” 展示了指定时间范围内发现和提交的漏洞数,各个扫描插件执行的任务数量,下图是最近7天数据,可以查看系统的整体效率:

8、30秒端口发现

端口扫描分为3种模式:

1. Fast模式:内部维护的 TOP 1000 端口

2. Full模式:1-65535 端口

3. 联动模式:其他安全服务投递的端口扫描任务,可以指定任意范围

对于外网IP地址,我们定义Fast模式优先。只有在Fast模式满足时效(如6小时),扫描器才会主动扫全端口。

用户自助任务被认为是优先级最高的,这类任务的全端口发现,会按照1000个端口进行分片,被拆分为66个端口扫描任务,充分地利用分布式系统,不会对单个节点造成短时大量发包、丢包的问题。目前,一个自助任务目标的65535端口扫描,可以在30秒内完成。另外,自助任务还允许更大的超时、更多的重传次数。

9、漏洞去重

云扫描系统内的漏洞具备唯一性,同一目标的同一漏洞,若再次发现,只更新最近发现时间。对于漏洞而言,不区分是巡检还是自助扫描发现的。漏洞和任务是一对多的关系。避免同一漏洞在系统内部反复创建和处置。

10、Web和URL收集

云扫描对爱奇艺所有HTTP应用进行了持续收集,建立全文索引。高危Web漏洞爆发后,内部可以根据Web中的指纹特征,快速定位应用,无需盲目地开始全网扫描。

内部基于Headless Chrome实现了动态爬虫系统,对公司Web应用进行了大量的URL收集,支持全文检索,支撑快速应急。同时,爬虫系统将URL投递给被动式代理扫描服务,进一步增强了漏洞发现能力。

11、小结

扫描器基本要求是:稳定、高效、高危漏洞覆盖全、误报率低。本篇没有深入讨论具体某个插件的实现细节,只是从全貌上,对爱奇艺云扫描做了简单介绍:

1. 由扫描策略驱动任务队列自动化管理,实现了系统的高效运转

2. 通过漏洞一键自动化验证、一键提交漏洞工单,提升漏洞运营效率

3. 快速的插件发布、一键全网应急能力,提升了应急响应效率

4. 高效的资产发现,即使是一个新接入Guest WIFI的访客手机设备,也能保证在90分钟内完成漏洞检测

5. HTTP应用和全网URL收集,支持全文索引,无需提前为应用打标签。特殊情形下,支持正则扫表,依然能够快速定位目标应用。

声明:本文来自爱奇艺安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。