3.3 发现攻击面

管理攻击面的第一步是要发现他们,否则也谈不上管理。下面我们按照上文梳理的攻击面的几个类型分别探讨一下如何发现这些攻击面。

(1)IP、端口、服务

目前开源的资产扫描软件很多,包括大家常用的Nmap和X-SCAN等,当然也有很多商业产品。商业产品的效果和产品化效果当然比开源软件要好,而且会有相应的服务。但前者可塑性更强,笔者团队做的资产扫描器就是基于Masscan和Nmap进行的平行扩展。这种主动扫描的模式会存在一些漏报。比如,笔者的一个同事名下的服务器就经常在资产扫描的时候漏掉,因为他的服务器策略做得很严,除了固定的几个IP,不对任何IP开放任何服务。所以我们需要另外一种方式,就是从流量中解析网络通信中的源、目的IP地址,遇到资产库里没有的就加进去。但这种方式的缺点是,很多情况下(尤其在云平台中),无论是运维部门还是安全部门都很难收集全网流量,经常做流量收集的位置有三个:①公网出口;②办公网与前端支撑网络互联口;③VPN连接内网端口。由此可见,资产发现的策略是多维度的,需要多种手段互相弥补。

(2)域名

与IP相似,域名的检测也可以分为主动和被动两种模式。主动模式可以采用爬虫,爬虫也有很多开源的软件可以使用,笔者团队采用的是Pholcus,其优点是效率比较高,支持分布式部署,但动态URL的爬虫策略需要定制开发。另外需要注意的是,如果目标网站有反爬策略,需要跟相关团队沟通,开放白名单。主动方式依然存在误报和动态URL拼接的问题,我们仍然需要被动的方式从流量中解析域名。需要注意的问题是:①依然要考虑流量收集点的选择;②要根据网内情况对流量进行预处理,尽量减少流量分析的压力。

(3)API

在传统的开发方式中,安全团队梳理API是一件非常痛苦的事。一方面,已知的API不清楚提供给谁调用,另一方面,一些老旧的API有没有下线管理员可能都不清楚。前一种情况还可以通过流量分析的方式解决,第二种情况很难找到有效的方式。如果要加强API的管理,可以采用类似Kong的开源系统来管理API,在实现统一管理的同时,也节约了日志记录、认证、授权等能力的开发成本。

(4)数据

数据对于企业来说越来越重要,在数据泄露事件频发的场景中,相对还容易找到攻击面,根据泄露事件追根溯源即可。如果你的平台有很重要的数据,但还没出现过明确的数据泄露事件,这就需要安全团队识别出数据泄露的风险点在哪。笔者建议首先要把数据管起来,可以通过流量镜像、数据接口监控、日志等手段,弄清楚内部数据都有什么、怎么产生的、谁来调用、怎么流转等问题。

(5)Wi-Fi

Wi-Fi管理主要从两个层面进行,一是企业对内开放的Wi-Fi,最好能上多因素认证;二是严格管理私搭Wi-Fi的情况。如果使用Wi-Fi屏蔽,要注意对周围其他企业的影响。

(6)物理环境

大部分情况下,物理环境安全不由安全部门负责,但笔者建议安全部门要从自身专业出发去发现物理环境的安全问题。比如:公司的入口有几个?外部人员能否跟随内部人员进入?进出机房的手续是否存在漏洞等。目前笔者团队正在酝酿技术之外的渗透测试工作,目的就是检查物理环境、人员意识层面有没有安全隐患。

(7)人

安全对抗中人的脆弱性往往是比较容易被黑客利用的,但人暴露出的攻击面到底有哪些是很难判断的。可以选择的一种方式就是上文提到的技术之外的渗透测试工作,比如内部发钓鱼邮件、张贴钓鱼二维码、在公司内放置木马U盘等。另外也可以通过一些运营的方式集思广益,最终目的就是发现这些问题,为下面的防御手段提供依据。

(8)第三方协作

企业外部协作风险是根据实际情况确定的,这也是一个很难判断的问题。这需要安全部门对公司内部情况的认识比较充分。遇到以前不清楚,或者没想到的攻击面可以被快速地意识到并纳入管理中。