网络安全态势感知之数据采集

对网络服务关键节点和网络检测设备的安全特征数据进行分析后发现,能不能采集到更多的数据,并从这些海量网络数据中抽取出影响安全态势的关键信息,是网络安全态势感知的基础。数据的采集处理对整个态势提取、分析和呈现有着重要的影响,如果数据分析不清、数据采集混乱,态势提取将无法实现,继而整个态势感知将成为无源之水、无本之木。

网络安全数据采集通过软硬件技术的结合来产生和收集网络安全数据,其目的是为态势提取提供素材,为态势理解和预测打下数据基础。“巧妇难为无米之炊”,我们必须对数据的采集做到心中有数,知道哪些数据是必要且可用的、它们来自于哪里、通过什么方式获取以及如何采集的,同时也应当在采集这些数据时尽量不影响终端和网络的可用性。网络安全态势感知就是“数据驱动安全”领域最好的应用,这也迫使我们(尤其是安全分析师)必须成为数据的高手,不仅仅知道如何分析数据,更应该清楚如何采集所需的数据。

1、制定数据采集计划

数据采集计划的制定并不是凭空想象出来的,也不能一蹴而就,而要遵循一定的方法和步骤,分阶段来实现。通常来说,至少涉及四个不同的阶段,即定义威胁、量化风险、识别数据源以及提炼有价值元素,如图1所示。

图1  数据采集计划阶段划分

定义威胁:这里的威胁并非来自竞争对手或者是行业竞争等,而是导致组织或个人数据的保密性、完整性和可用性受到负面影响的因素。例如,某组织在内部网络通信过程中遭到了窃听,导致重要涉密信息被泄露,这就是保密性威胁;一家商业银行保存着大量客户的个人信息和账户信息,如果这家银行数据库里保存的信息遭到了非法篡改,就会造成客户的资金损失,这就是完整性威胁;一个主营电力生产的工业控制系统必须7×24小时连续运转,如果系统突然中断,就会造成组织受到重大经济损失,这就是可用性威胁。除了通过以问卷调查或人工提问的方式主观地判断组织所要保护的东西是什么(如资产)以及面临的威胁是什么,还可以采用一些高级的威胁建模方法和模型(比如STRIDE方法、攻击树、攻击库等)来识别和发现威胁。

量化风险:也常被称为风险评估,即对组织信息资产所面临的威胁、存在的弱点、造成的影响,以及三者综合作用所带来风险的可能性进行量化。在明确定义威胁之后,需要分析组织中哪些弱点可能会被威胁所利用,推测威胁事件的发生会对组织造成怎样的损失。对风险进行定性评估固然有必要,但在数据采集计划制定过程中,需要尽可能地量化风险,最常用的方法就是用“影响”和“概率”的乘积来求得风险值。其中,“影响”表示威胁对组织造成的影响,可以分级度量;“概率”表示威胁发生的可能性,也可分级度量,二者的乘积即可简单地量化度量组织面临的风险值。

识别数据源:在确定了威胁和风险的基础上,接下来就是识别现实网络运行中主要的数据来源,为后续的态势提取提供数据基础。在制定数据采集计划时,需要根据具体情况和实际应用,针对性地选取容易造成入侵威胁、引起负面影响的位置所产生的数据。我们应当从风险值最高的威胁开始,分析这些威胁最可能出现在哪里并定位到该处,再依次逐级查找。

提炼有价值元素:在识别出众多数据源后,我们需要单独检查每个数据源和认真分析数据源,提炼出真正有价值的元素,因为并非每种数据源都有采集的必要和意义。如果有些数据采集难度大、耗费资源多、所占存储空间大、管理起来复杂,且对我们进行安全分析不会造成太大的影响,那么就可以果断忽略。这一阶段应当从实际业务应用场景出发对每种数据源进行详细的分析,明确采集的位置点,核算其存储空间和保存周期,从而制定出合理的数据采集计划。

2、主动式采集

在制定好网络安全数据采集计划后,我们就要开始进行数据采集过程的实施了。理论上,我们都希望尽可能地获取完备和恰当的数据而不对环境产生任何影响,但在现实世界里,由于种种原因,我们很难做到“零痕迹”,只能说尽量把影响降到最低。网络安全人员经常会提到“主动式”或“被动式”数据采集,这两种方式还是有一定差异的。所谓“主动式采集”,也称为交互式采集,是指通过与网络上的工作主机交互操作的方式来采集网络数据,如通过控制台(Console)或者网络接口登录到网络设备上,以及通过扫描网络端口确定当前状态等方法。

在通过各类网络和安全设备主动采集数据时,这些设备并不能从生产环境中撤下来,否则会给组织带来一定的经济损失,所以采集过程肯定会对设备和网络环境造成一定的影响,我们只能尽量把影响程度降到最低。下面介绍几种常见的主动式采集方法。

(1)通过SNMP采集数据

SNMP(Simple Network Management Protocol,简单网络管理协议)是一个应用层协议、数据库模型和一组资源对象,是检查和管理网络设备最常用的协议之一,常被用作传播和汇聚网络管理信息以及安全事件数据的重要手段。该协议能够从一个中央服务器轮询各个网络设备,也能把远程代理中的SNMP信息推送到某个中央汇聚点上。因为它往往由一个中央管理端和若干个被管理系统(上面运行着叫作SNMP代理的软件元件)所组成,被管理端通过SNMP向中央管理端发送报告。

中央管理端可以通过GET(提取一项信息)、GETNEXT(提取下一项信息)和GETBULK(提取多项信息)指令来轮询取回报告资讯,也可以让被管理端的代理使用TRAP或者INFORM指令来主动传送资讯(当某些重要事件发生时,中央管理端需要从不同的被管理端处收到信息,以对信息进行综合处理)。此外,中央管理端也可以通过SET指令传送配置更新或者控制的请求,达到远程控制和主动管理系统的目的。以上是SNMP的几个重要的基本命令。

在SNMP应用的网络中,每个被管理的设备(又称为网络节点或网络单元)可以是支持SNMP的路由器交换机服务器主机,都存在一个“管理信息库”(MIB),用于采集并存储管理信息,SNMP允许通过定义对MIB进行扩展。

SNMP目前已经发展到第三版,SNMP v1使用基于团体名进行报文认证,SNMP v2在第一版的SMI规格资料形态上进行了增加和强化,SNMP v3主要增加了SNMP在安全性和远端配置方面的功能,如加密封包、认证等。

(2)通过Telnet采集数据

Telnet即远程登录访问的标准协议,它为用户提供了在本地计算机上完成远程主机工作的能力。很多网络设备支持Telnet协议以进行远程访问,时至今日它的使用依然非常广泛。在终端使用者的主机上使用Telnet程序,用它连接服务器,即终端使用者可以在Telnet程序中输入命令,这些命令就像直接在服务器的控制台上输入一样,通过它可以主动获取被采集服务器的各类数据。除了能连接Telnet服务器之外,Telnet客户端还能用来与SMTP、HTTP等其他多种服务器进行交互。

由于诞生于网络发展的早期,如同其他通信协议一样,Telnet的安全性比较弱,所有的信息都以明文形式传输,用户登录过程及发送的指令和数据都是以不加密的形式在线缆中传输。用Telnet登录一个被监听的网络中的服务器时,您的用户名和口令很容易被“抓包”。尽管如此,现在仍有很多硬件设备采用Telnet这种远程访问方式,而非SSH这类更加安全的远程访问方式。

(3)通过SSH采集数据

SSH(Secure Shell Protocol,安全外壳协议)是建立在应用层基础上的专为远程登录会话和其他网络服务提供安全性的协议,能够对所有传输的数据进行加密。利用该协议能够使安全人员通过远程命令界面与包含网络安全数据的系统进行交互,可有效地防止远程管理过程中的信息泄露问题,弥补了Telnet所存在的安全问题,避免“中间人攻击”(man-in-the-middle)、DNS欺骗和IP欺骗等。使用SSH还有一个好处,就是传输的数据是经过压缩的,因此可以加快传输速度,提高我们获取远端数据的效率。

SSH既能够代替Telnet,也可以为FTP、PoP甚至PPP提供一个安全通道。目前,很多现代的网络设备也都支持SSH作为一种远程命令交互的方法。OpenSSH就是一个被广泛使用的SSH实现,它遵循BSD许可,是一个开源免费软件。除了提供命令行交互之外,SSH还实现了SCP(Secure Copy Protocol,安全复制协议)功能,这个协议专门用来在网络系统之间传输文件。

(4)通过WMI采集数据

WMI(Windows Management Instrumentation,Windows管理规范)是一项核心的Windows管理技术,主要用于管理本地和远程计算机。有了它,工具软件和脚本程序在访问操作系统的不同部分时不需要使用不同的API,同时,操作系统的不同部分都可以插入WMI。由于WMI允许通过一个公共的接口访问多种操作系统构成单元,因此不必分别对待各种底层接口或所谓的“提供者”。

作为一项Windows管理技术,WMI可以访问、配置、管理和监视几乎所有的Windows资源,是一种主动获取网络和系统数据的技术,大大方便了用户或者安全管理人员对计算机进行远程管理,但它的易用性也导致了系统的安全性大幅降低。一般情况下,在本地计算机上执行的WMI操作也可以在远程计算机上执行,只要拥有该计算机的管理员权限。如果某人对远程计算机拥有权限并且远程计算机支持远程访问,那么他就可以连接到该远程计算机上并执行相应权限的操作。WMI为远程控制提供了一个合法通道,能轻松获取网络上远程计算机系统的资源信息,并进行远程访问。

(5)通过多种文件传输协议采集数据

很多类型的文件传输协议可以进行文件的双向传输,从而实现数据的采集和导出。常见的有以下几种:

● FTP(File Transfer Protocol,文件传输协议),用于Internet上控制文件的双向传输,同大多数Internet服务一样,FTP也是一个客户端/服务器系统。FTP由两部分组成,即FTP服务器和FTP客户端。依照FTP提供服务、进行文件传输的计算机就是FTP服务器,遵循FTP与服务器传送文件的计算机就是FTP客户端。其中,FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP访问位于FTP服务器上的资源。由于FTP传输效率非常高,在网络上传输大的文件时常常采用该协议。

默认情况下,FTP使用TCP端口中的20和21两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关。FTP一般支持两种传输模式,一种为Standard,也就是PORT方式(主动模式);一种为Passive,也就是PASV方式(被动模式)。在主动模式下,FTP客户端发送PORT命令到FTP服务器;在被动模式下,FTP的客户端发送PASV命令到FTP服务器。当采用主动模式时,数据传输端口就是20;当采用被动模式时,具体使用哪个端口需要服务器端和客户端协商决定。

● SFTP,SSH的文件传输协议,可以与SSH一起使用,是能够安全地进行文件传输和处理的协议,它的功能多样,使用起来灵活,但是传输速度较慢,不如FTP。

● TFPT(Trivial File Transfer Protocol,简单文件传输协议),是一个用来在客户端和服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,比FTP功能要简单些,运行在UDP 69端口上。其服务器端的程序很小,因此适合运行在内存和存储空间都极其有限的系统中。TFTP在安全性上存在较大问题,但应用却很广泛,许多网络设备如IP电话、防火墙等常会用到TFTP。在许多路由器交换机中,TFTP被用来备份和恢复文件。在主动采集网络安全数据时,安全人员有时会使用TFTP从路由器交换机防火墙等不支持SFTP、FTP的设备中导出数据和文件。

● HTTP(Hyper Text Transfer Protocol,超文本传输协议),互联网上应用最广泛的一种网络协议,几乎所有的WWW文件都必须遵守这个标准,是一个客户端与服务器端请求和应答的标准,服务器端一般是网站。目前大多数网络设备几乎都会带一个Web管理界面,通过HTTP或者HTTPS就可以访问配置菜单、事件日志以及其他数据。采用该协议几乎不需要用户安装客户端程序就能轻松访问设备。在服务器端存放的大多是超文本信息,比如HTML文件,客户端需要通过HTTP传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

● HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,安全套接字层超文本传输协议),简单来说就是HTTP的安全版,是以安全为目标的HTTP通道,即HTTP加入SSL层,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。不像HTTP采用明文传输,HTTPS采用具有安全性的SSL加密传输,二者连接方式也存在差异,用的端口号也不同。

大部分情况下,默认使用的是不加密的HTTP来访问Web界面,但也有许多设备提供SSL加密的访问接口。对于安全人员来说,对于图形化的Web界面信息的主动采集反倒不如命令行式的工具方便,要么自己用手记录下来,要么拍照或者截屏。

(6)利用JDBC/ODBC采集数据库信息

JDBC(Java DataBase Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。有了JDBC,向各种关系数据库发送SQL语句就是一件容易的事了。换句话说,有了JDBC,就不必为访问数据库专门写一个程序,只需用JDBC API写一个程序就够了。简单来说,JDBC可以做三件事情:与数据库建立连接、发送操作数据库的语句并处理结果,从而实现对数据库的快速访问与操作。

ODBC(Open Database Connectivity,开放数据库连接)是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API,它的功能与JDBC类似。ODBC的API也能利用SQL来完成大部分任务,实现对数据库的访问和操作。由于它的使用难度比JDBC高,所以其应用没有JDBC那么广泛。

以上两种数据库连接方法,均可以轻松实现对数据库的访问,为安全人员进行数据库信息的主动采集提供相应的手段。

(7)通过代理和插件采集数据

代理(Agent)是运行在传感器中(可分布在多个主机上),用来收集和发送数据到服务器的一段脚本,主要负责从各安全设备、安全工具的插件中采集相关信息(比如服务日志、报警日志等),并将采集到的各类信息统一格式后传给服务器。从采集方式上看,代理属于主动采集方式,可以形象理解为由网络安全态势感知服务器安插在各个监控网段的“耳目”,由它们收集数据并主动推送到传感器中,然后传感器又连接着消息队列系统、缓存系统以及存储系统。代理的主要功能是接收或抓取插件发送过来或生成的日志,经过归一化处理后有序地传送到网络安全态势感知系统的服务器中,但它的功能实现并不那么容易,因为它要考虑代理和服务器之间的网络中断、拥堵和丢包等种种情况。

近年来有一种轻量化分布式代理机制很受关注,叫作移动代理(Mobile Agent),我们来看一下它的特点和工作过程。移动代理是指能够携带代码、数据及执行状态在网络中根据既定的路线在主机间迁移,并能够在新的位置从断点处继续执行的程序。它能够按照用户的意愿代替用户完成特定的操作,并最终将计算结果返回源主机,在完成任务的过程中伴随着与不同移动代理、不同代理服务器进行通信。移动代理以驻守代理的形式驻守在主机上,能够在多平台(如WindowsLinux、Mac OS等)系统上分布式收集网络主机的信息,如CPU、内存信息、网络流量信息、磁盘读写信息、进程与端口信息等,并将所取得的数据存入数据库中以备后用。作为一种全新的分布式计算模式,它能够有效地提高网络性能、减少网络流量、提高网上资源利用率,在大规模分布式网络应用中具有极大的优势。

插件(Plugin)是一种遵循一定规范的应用程序接口编写出来的程序,它只运行在程序规定的系统平台下,而不能脱离指定的平台单独运行。如何区分代理和插件?代理是一个传感器中内置的命令,可按照规定的方法使用其内部本身就有的功能。而插件是传感器中没有的,是人们按照这个传感器所支持的接口开发的程序,应用于此传感器以增强其功能,或者简化某些用代理很难实现或者无法实现的功能。

网络安全态势感知系统中的插件大多安装在传感器上,一般来说,可分为采集插件和监视插件。虽然都是插件,可工作原理却不同。采集插件是在传感器信息产生后由代理自动向服务器发送,采集插件需要主动采集安全设备接口上的信息,主要通过SNMP、Syslog、WMI等协议进行采集,其中有些需要通过代理来主动地对所采集数据进行抓取,有些则被动接收采集来的数据。监控插件必须由服务器主动发起查询请求,监控插件中定义了需要主动采集的安全设备接口,该模块接收控制中心发出的命令和查询,如著名的Nmap、Nessus就可以作为监控插件加载到传感器中,接收控制中心的命令以进行网络监控。

(8)通过漏洞和端口扫描采集数据

漏洞扫描是基于漏洞数据库,通过扫描等手段对指定的远程或本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测或渗透攻击行为。如果未经过允许,它并非合法,且有可能造成目标系统出问题,因为它会产生流量和修改操作。然而,它也是一种主动获取系统信息的检查手段。通过漏洞扫描,安全人员能够了解网络的安全设置和运行的应用服务,还能发现安全漏洞。依据扫描执行方式和对象的不同,可分为针对网络的、针对主机和针对数据库漏洞扫描。

一个端口就是一个潜在的通信通道,也就是一个入侵通道。端口扫描虽然曾一度被当成是网络入侵手段,但它确实也是一种主动采集网络安全数据的方法。端口扫描是一种主动行为,它的原理是当一个主机向一个远端服务器的某一个端口提出建立一个连接的请求时,如果对方安装了此项服务就会应答,反之则不会。利用这个原理,若对所有熟知端口或选定的某个范围内的端口分别建立连接,并记录远端服务器所返回的应答,通过记录和查看就能知道目标服务器上都安装了哪些服务。通过扫描设备端口,可以发现远程设备和服务器开放了哪些端口、端口的分配及提供的服务,以及它们的软件版本。对目标计算机进行端口扫描,可以得到许多有用的信息和数据。

(9)通过“蜜罐”和“蜜网”采集数据

蜜罐”是一种在互联网上运行的计算机系统,是专门为吸引并诱骗那些试图非法“闯入”他人计算机系统的人而设计的。作为一种对攻击方进行欺骗的技术,“蜜罐”的部署能够诱使攻击方对自己实施攻击,从而了解攻击方所采用的工具和方法,推测出攻击的意图和动机。但事实上,“蜜罐”也是一种很好的主动式网络安全数据采集器。“蜜罐”就像是一个情报收集系统,是网络安全人员周密布设的“黑匣子”,通过故意布设让人攻击的目标,引诱攻击者前来攻击,随着攻击者入侵,其可以掌握一些最新的攻击方法以及被攻击系统所存在的漏洞。“蜜罐”收集的入侵数据非常有价值,一台合格的“蜜罐”系统应当具有发现攻击、产生告警、强大的记录能力、欺骗、协助调查等功能。“蜜网”的功能与“蜜罐”类似,只是“蜜网”并非单台计算机,而是多台计算机组成的网络。

根据安全管理人员的需要和系统设置要求的不同,可将“蜜罐”大致分为实系统“蜜罐”和伪系统“蜜罐”。前者运行着真实的系统,并带有真实可入侵漏洞,因此记录收集的信息更为真实;后者也是建立在真实系统之上,但平台和漏洞存在非对称性,它能更好地防止“蜜罐”被入侵者破坏,也能模拟出一些不存在的漏洞,缺点是更容易被识破。

数据采集是“蜜罐”/“蜜网”的一项附加能力,如果安全管理人员能让“蜜罐”记录下来进出系统的每个数据包,那么就能收集到大量有效信息,从而对攻击行为进行充分的分析。“蜜罐”上面自带的日志文件也是很好的数据来源,但日志文件比较容易被攻击者删除,所以通常采用的办法就是让“蜜罐”向在同一网络上但防御机制较为完善的远程系统日志服务器发送日志备份。对于采用加密技术的攻击者,可以通过修改目标计算机操作系统以确保所有输入的字符、传输的文件以及其他信息都记录到另一个监控系统的日志里面。

除了上述主动采集方式,还有两种手段也是非常重要的主动采集手段,那就是通过网络爬虫采集数据以及通过传感器采集数据。

3、被动式采集

被动式采集是指在网络上采集数据时,不发出第二层(数据链路层)或更高层的数据。流量获取常常被列为被动式数据采集。与主动式采集所不同的是,被动式采集往往不需要发送或修改一个数据帧就能获取流量,在采集过程中对环境的影响也比主动式采集轻微。下面介绍几种被动式采集网络安全数据的媒介和方法。

(1)通过有线和无线采集数据

通过物理的线缆与另一个站点连接来采集或截取数据是一种简单的被动式采集途径。以网线为例,网线中电压的变化可以很方便地在一个一对多的结构中被放大和重新分配。通过监听经过网线传输的数据,安全人员可以被动地采集网络流量。线缆能在站点之间建立点到点的连接,常见的线缆类型是铜质线缆和光缆。

铜质线缆中广泛使用的是同轴电缆和双绞线。前者是由一根被绝缘材料包裹住的铜线,外加包裹的铜屏蔽材料所构成,在使用同轴电缆的网络中,若能接触到中间那根负责传导的铜芯,就能访问共享该物理媒介上的所有流入和流出数据了。后者含有多对铜线,每对铜线都绞在一起,使得它们产生的电磁干扰相互抵消,若能接触到交换网络中某对双绞线里的所有铜线,那就能访问流经该线路上的所有数据。

光缆是把光纤包裹后形成的线缆,它的核是光纤。光纤是由一束捆在一起的细玻璃丝或塑料丝制成的传导纤维,它依靠光的全反射原理进行传输。由于光在光导纤维的传导损耗比电在电线传导的损耗低得多,所以光缆常被用作长距离的信息传递。

网络分流器:如果在网络上部署一个商用的双绞线网络分流器,就能轻松捕获线缆中所有双绞线的电压变化情况了。网络分流器通过串接的方式直接插入网络线缆中并发送一份网络通信给其他设备,它的分流模式将被监控的UTP链路(非屏蔽链路)用TAP分流设备一分为二,分流出来的数据接入采集接口,为网络安全监控或态势感知系统采集数据。网络分流器的工作原理是通过对网络分流器输入数据进行复制、汇聚、过滤,通过协议转换把万兆POS数据转换为千兆LAN数据,按照特定的算法进行负载均衡输出,输出的同时保证同一会话的所有数据包或者同一IP用户的所有数据包从同一个接口输出。它不会对已有的网络设备的负载带来任何影响,对当前网络中的所有设备几乎是透明的,这与端口镜像等方式相比具有极大优势,是典型的高性能场景的首选解决方案,常用于关键线路的监控和数据采集。

网络分路器(Inline Network Tap):是一个物理层设备,它部署在两个原本物理连接的网络设备之间,它会转发所有数据包,同时复制一份到一个单独的端口。网络分路器通常有四个端口,其中两个用于维持正常连接,另外两个用来“镜像”流量(每个端口“镜像”一个方向上的信号)。很多网络分路器是采用硬件来复制数据的,这就对流量捕获提供了非常高保真的支持。有些网络分路器会设计成在被动转发数据包时不需要外接电源的方式,有些则需要外接电源,而前者不会因为分路器断电而造成断网。高级一些的网络分路器还可以为入侵检测进行负载均衡,有的还具有流量过滤的功能,甚至是深度包检测能力(DPI)。

光纤分光器:也称为光纤分路器。正如网络分路器部署在铜质线缆中,光纤分光器则部署在光缆连接的设备之间,也是一个三通设备。在数据通过光纤传输的过程中,其将光数据复制一份以供监控和采集用。只是在把分光器接到光纤线上的时候,需要在光缆上安装上接子(一种物理设备),并把它插到分光器的各个端口上,部署的过程需要断网。比起网络分路器,光纤分光器会导致明显的信号衰减,而且监听难度也大得多。因为铜质线缆只要接触到铜芯就能检测出铜芯上电压的变化,而光缆中玻璃光纤维传导的是光而不是电信号,捕获散杂光子比电压要难得多。网络安全人员往往需要用一种叫作光时域反射仪(Optical Time-Domain Reflectmeter,OTDR)来辅助分析和检测光纤中的光信号,定位光纤断点的位置。

刺穿式搭接器(Vampire Taps):是一种刺穿铜质线缆的绝缘屏蔽层,能直接接触到铜芯并检测铜芯上电压的变化,使用户直接访问网络传输信号的设备。与网络分流器、网络分路器和光纤分光器所不同的是,安装刺穿式搭接器的时候不需要断网,但需要小心部署,因为如果操作不当就会造成线缆连接处受到破坏。对于电话通信行业的人员来说,刺穿式搭接技术并非陌生,因为电话线经常需要排接和分类,大多数通信工程师都能够快速地部署这种设备。需要注意的是刺穿式搭接器无法用在光缆中,该设备一般用在铜质线缆上,用于监测铜质线缆上传输的电信号。

感应线圈:只要是传递电压的线缆,都会释放出各种频段的电磁信号,对于非屏蔽双绞线UTP之类的无保护线缆来说,由于没有外壳的保护,其释放的电磁信号就更强了。感应线圈就是这样一种设备,它能把较弱的电磁信号转换成比原来强得多的信号。当把感应线圈部署在这类线缆的附近时,它就能捕获到线缆释放和泄漏的电磁信号,并把它们还原成数字信号的样式,进而采集到线缆上传输的各类数据。感应线圈对环境造成的影响几乎为零,所以通信双方不会有任何察觉,其也是一种被动式采集网络安全数据的工具。

除了有线方式,还有一类媒介也可以进行数据的采集,那就是无线电波。我们当今的生活离不开WiFi,它就是一类包含IEEE 802.11标准的无线通信方式。无线电波能穿透空气,它天生就是公共媒介。与有线传输相比,它不受物理媒介的限制。无论是否有连接,所有通过无线电波传播的信号都可以被可接收范围内的点所捕获。无线电波的这一天然属性使得被动地采集无线网络流量变得非常容易。哪怕无线通信被加密,只要我们获取了一个预先共享的密钥,就能监听所有站点的所有流量,也可以破解加密算法以截取加密的无线网络流量。因此,无论是否加密,网络安全人员只要借助必要的硬件(比如支持802.11标准的网卡),就能获取和分析无线电波传输的流量并得到大量信息,比如广播SSID、无线接入点的MAC地址、加密/认证算法、客户端MAC地址、数据包内容等。

(2)通过交换机采集数据

交换机(Switch)工作在OSI模型第二层——数据链路层,有时也工作在第三层——网络层,是一种用于电(光)信号转发的网络设备。交换机可以为接入它的任意两个网络节点提供独享的电信号通路,这种把多点连接成局域网的能力类似集线器,但与之不同的是,交换机具有记忆功能,在它的CAM表(存储着MAC地址和端口对应关系)中记录了哪个节点与哪个端口相连接,因此能用于划分数据链路层广播,也就是说交换机的每个端口都是它自己的冲突域。CAM表能够使交换机在端口对端口的基础上实现流量隔绝,每个单独的节点只能接收到发送给它的流量,而不会接收到发送给其他节点的流量,一个交换网段的流量都是终端对终端的,即便它们在技术上共享了同一个物理媒介时也是如此,这些是集线器做不到的。

通过交换机被动地获取网络流量是安全人员经常使用的方法,其采用的技术途径常被称为“端口镜像(端口监控)”,这也是交换机自带的功能。您可以激活并开启该功能,通过配置一个叫作SPAN的端口,把来自某个或某几个端口的流量复制到或重定向到其他一些端口上,以便进行网络安全数据采集和分析。有些厂商的交换机支持远程流量监控(能让直连本地交换机的采集主机采集到远程交换机端口的镜像)以及高级过滤功能(比如,在把流量重定向给采集主机的同时过滤具有特定MAC地址的主机发出的流量)。还有一些高端交换机本身就具备抓取并分析数据包的功能。甚至一些交换机还能支持虚拟端口(如聚合端口或以太网通道端口)的流量监控。需要提及的是,无论何种类型的端口镜像,都要在其旁边部署一台用于镜像的主机或工作站,用以嗅探指定端口的流量。

通常,如果拥有管理员权限,很容易对交换机配置端口镜像功能。一旦完成了端口镜像,就可以在该端口接一个嗅探器并轻松被动地捕获所有的流量。即使没有管理员权限,也可以采用一些攻击技术来获取交换机流量(主动式),如MAC泛洪攻击、ARP欺骗,前者是直接攻击交换机的CAM表,使得CAM表被填满,让交换机进入应急模式,把不在CAM表中的所有流量转发到每一个端口上;后者是攻击局域网中所有主机ARP表,把应当发给受害者的所有IP包都发送到攻击者那里,从而截取网络流量。

(3)通过Syslog采集数据

Syslog常被称为系统日志或系统记录,也可指系统日志协议,是在一个IP网络中转发系统日志信息的标准。它是在美国加州大学伯克利软件分布研究中心的TCP/IP系统实施中开发的,目前已成为工业标准协议,可用它来记录设备的日志。Syslog记录着系统中的任何事件,管理者可以通过查看系统记录随时掌握系统情况。系统日志通过Syslog进程记录系统的有关事件,也可以记录应用程序运作事件。通过适当配置,还能够实现运行Syslog协议的机器之间的通信。通过分析这些网络行为日志,可以追踪和掌握与设备和网络有关的情况。

作为一种被动采集网络数据的协议,Syslog提供了一种传递方式,即允许一个设备通过网络把事件传递给事件信息接收者(也称为日志服务器)。Syslog协议和进程的最基本原则就是简单,在协议的发送者和接收者之间不要求有严格的相互协调。由于每个进程、应用程序和操作系统都会或多或少需要独立完成,因此在Syslog信息内容里会有一些不一致的地方。所以,协议中并没有任何关于信息的格式或内容的假设。Syslog协议就是简单地被设计用来传送事件信息,但是对事件的接收不会进行通知。事实上,Syslog信息的传递可以在接收器没有被配置甚至没有接收器的情况下开始。反过来,在没有被清晰配置或者定义的情况下,接收器也能够接收到信息。

由于其能将来自诸多不同类型系统的日志记录整合到集中的数据库中,很多网络设备都支持Syslog协议,其中包括路由器交换机、应用服务器防火墙和其他网络设备。

(4)通过SNMP Trap采集数据

SNMP的TRAP或者INFORM指令可以使被SNMP管理的设备主动地通知SNMP中央管理端,而不是等待SNMP中央管理器端的轮询。

在网络管理中,被管理设备的代理可以在任何时候向中央管理端工作站报告错误情况,如预制定阈值越界程度等,代理并不需要等到中央管理工作站为获得这些错误而轮询的时候才报告。这些错误情况就是SNMP Trap(自陷),它是一种标准的报告机制,广泛应用在各种网络管理软件中,是一种被动获取网络安全数据的方法。例如在Linux系统中,我们可以选择net-snmp来处理绝大多数与SNMP相关的工作,net-snmp提供了接收SNMP Trap的守护程序snmptrapd,可将选定的SNMP消息记录到系统日志syslog.NT事件日志或者文本文件中,或是转发到其他SNMP管理程序,可以利用snmptrapd作为后台SNMP Trap服务器负责接收被管理设备发送过来的Trap消息。C/C++语言可以直接调用API来进行SNMP Trap的处理,需要在include中包含以下头文件,再进行相应的设置和操作:

(5)通过NetFlow/IPFIX/sFlow采集流数据

NetFlow由思科创造,主要由思科路由器支持,是思科设备NLOS软件中内嵌的一种功能,用来将网络流量记录到设备的高速缓存中,从而提供非常精准的流量监测。它提供网络流量的会话级视图,记录下每个TCP/IP事务的信息,也许它不像TCPdump那样提供网络流量的完整记录,但当汇集起来的时候它更易于管理和阅读。一个NetFlow系统通常包含三个部分:探测器、采集器和报告系统。探测器主要用来监听网络数据,采集器主要用来收集探测器传来的数据,而报告系统通过采集器收集的数据产生易读的报告。由路由器交换机所输出的NetFlow数据记录主要由过期的数据流以及详细的流量统计数据所组成。这些数据流中包含与来源和目的相关的信息,以及端到端会话使用的协议和端口,这些信息能帮助网络管理和安全人员监控和调整网络流量。NetFlow常用于对互联网异常流量的分析,通过NetFlow数据可以对异常流量的种类、流向、产生后果、数据包类型、地址、端口等多方面进行分析。

IPFIX即IP数据流信息输出,是网络流量监测的国际标准。IPFIX是IETF的一个工作组,它的主要工作就是制定用于IP网络中流信息测量的标准协议,即IPFIX协议。因为IETF在互联网行业的权威性,IPFIX制定的一系列RFC形式的标准是专业网络流量监测产品及其企业都会参考的重要文献。IPFIX对流的定义是在一个时间间隔内,经过观察点的一系列IP包。属于同一个流的IP包应当具有以下共同属性:一是某些IP层头字段、传输层头字段或者应用层头字段;二是包自身的某些特征,如MPLS标签号;三是与路由器对包处理方式相关的字段,如下一跳IP地址、输出接口等。通过根据共同属性对捕获的数据包进行重组,还原回原始流信息,从而进行流量的监测。

sFlow是由InMon、HP和FoundryNetworks于2001年联合开发的一种网络监测技术,它采用数据流随机采用技术,可提供完整的第二层(数据链路层)到第四层(传输层)甚至全网络范围内的流量信息,可以适应超大网络流量(如大于10Gbit/s)环境下的流量分析,让安全管理人员更详细、实时地分析网络传输流的性能、趋势和存在的问题。正是由于基于NetFlow计数器和统计的传统工具进行大规模网络监控和管理变得越来越困难,sFlow已经成为一项以线速运行的“一直在线”的技术。与使用端口镜像、探针和旁路监测技术的传统网络监控解决方案相比,sFlow大大降低了实施费用,若采用它,一种面向每一个端口的全网络监视和安全态势感知解决方案将成为可能。

(6)通过Web Service/MQ采集数据

以下要介绍的这两种都是应用程序与应用程序之间进行数据传输和交换的方法。Web Service是一个平台独立、低耦合、自包含、基于可编程的可用网络模块,用于开发分布式的、互操作的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)来描述、发布、发现、协调和配置具体的应用程序。WebService技术能使得运行在不同机器上的不同应用无需借助附加的、专门的第三方软件或硬件,就可以相互交换数据或集成。按照Web Service规范实施的应用之间,无论它们使用的语言、平台或内部协议是什么,都可以相互交换数据。Web中广泛用到的技术如TCP/IP、HTML、.NET、Java和XML都是WebService的技术基础。

作为一种利用网络进行应用集成的解决方案,Web Service一般支持三种协议来交流数据,分别是HTTP-GET、HTTP-POST和SOAP。在这三种协议中,HTTP是众所周知的协议,它是XML Web Service数据传输的标准,其中包括使用SOAP传输数据。HTTP-GET和HTTP-POST是使用HTTP谓词以及与之关联的请求语义,将参数作为名称/值对编码和传递的标准协议。SOAP(Simple Object Access Protocol,简单对象访问协议)是一种以XML为基础的轻型协议,用于分散的、分布式计算环境中交换信息。它提供一种将数据进行打包和编码的方法,以用于网络的数据传输。任何人都可以使用SOAP与任何一个XML WebService进行通信,甚至于这个XML Web Service不是建立在.NET平台上的,比如Java的。

MQ(消息队列)是IBM公司发明的一种应用程序对应用程序的通信方法,用于搭建企业服务总线(ESB)的基础传输层,为SOA提供强大、安全、稳定、可靠的消息传递。应用程序通过写和检索出入队列的针对应用程序的数据(消息)来通信,而无需通过专用连接来链接它们。应用程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。IBM的WebSphere MQ支持两种不同的应用程序编程接口:Java消息服务(JMS)和消息队列接口(MQI)。在WebSphere MQ服务器上,JMS绑定方式被映射到MQI中,应用程序与其本地队列管理器通过使用MQI进行直接对话。MQ的产品支持应用程序通过不同组件如处理器、子系统、操作系统以及通信协议的网络彼此之间进行通信。

(7)通过DPI/DFI采集和检测数据

DPI(深度包检测)是一种基于应用层的流量检测和控制技术,当IP数据包、TCP或UDP数据流通过基于DPI技术的带宽管理系统时,该系统通过深入读取IP包载荷的内容来对OSI七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。虽然它是一种检测技术,但也可归为被动式网络安全数据采集手段的一种。DPI技术一般来说分为三种:基于“特征字”的识别技术、应用层网关识别技术、行为模式识别技术。第一种类型通过对业务流中特定数据报文中的“指纹”(如特定的端口、特定的字符串或特定的位序列)信息的检测以确定业务流所承载的应用,通过对“指纹”信息的扩展和升级可以很方便地进行功能扩展,实现对新协议的检测;第二种类型主要用于某些业务流与控制流分离的情况,首先识别出控制流,并根据控制流的协议通过特定的应用层网关对其进行解析,从协议内容中识别出相应的业务流;第三种类型是基于对终端已经实施的行为的分析,判断出用户正在进行的动作或者即将实施的动作,常用于无法根据协议判断的业务的识别。以上三种检测识别技术分别用于不同类型协议的识别,无法相互替代。在某些厂商生成的DPI设备和系统中,有的具备其中一种识别能力,有的具有多种识别能力。安全人员通过部署这些DPI设备和系统,可以进行应用层的包捕获和检测。

DFI(深度流检测)是DPI在持续改善中衍生出来的检测技术,也可用于网络安全数据采集和一定的检测。与DPI进行应用层的载荷匹配所不同的是,DFI采用的是一种基于流量行为的应用识别技术。流是一定时间内具有相同的目的地址、源地址、目的端口地址、源端口地址和传输协议报文的集合。DFI就是以流为基本研究对象,从庞大流数据中提取流的特征,如流大小、流速率等,从而判断一个流是否正常的技术。在各类网络安全问题中,数据流可能产生一系列异常,如持续大流量、瞬时高速流、广播流、较小流等,此时,使用深度流检测技术就能从中发现异常。DFI由于不需要对应用层数据进行深挖,只需要提取流特征以及做统计,因此具有良好的性能,并且可以查出一些加密的异常。DFI技术主要分为三个部分:流特征选择、流特征提取和分类器分析。其中常见的流特征包括流中数据包的总个数、流中数据包的总大小、流的持续时间、一定的流深度下流中包的最小和最大长度以及均方差、一定流深度下流中最小和最大时间以及均方差、一定的流深度下某方向上的数据包总和。分类器先以样本集训练出分类模型,然后对待识别的数据流统计特征进行分析,识别出与攻击有关的恶意流量。在深度流检测中,首先对会话流进行识别,提取其流特征,然后经由分类器进行分析,如果判断为异常则可采取相应的处理行为;如果判断为可疑流量,则可结合其他方法如上下行流量对称法、时间跨度衡量法、行为链关联法等进行延迟监控判别。

由于DPI和DFI技术实现机制不同,它们在实现效果上各有优点。DFI处理速度相对快,维护成本相对较低。在识别准确率上,DPI由于采用逐包分析、模式匹配技术,对流量中的具体应用类型和协议可以做到比较准确的识别,而DFI仅对流量行为进行分析,识别准确度相对较低。但如果数据包进行加密传输,采用DPI则不能识别应用类型,而DFI则不受加密的影响。当然,DPI和DFI技术虽然是网络安全数据采集手段,但已不局限于此了,它们更多的还有检测技术的成分。

除了以上方式之外,还有很多其他采集手段,如我们常见的E-Mail,即电子邮件,它也是一种信息交换的通信手段,而且是互联网上应用最广的服务。电子邮件可以承载文字、图片、图像、声音等多种形式的内容,安全人员通过它可以主动发送,也可以被动免费获取大量资讯和专题邮件并实现轻松的信息搜索。

4、数据采集工具

网络安全数据采集工具大致分为两类,一类是开源的数据采集工具(多为软件或套件形式),另一类是根据一些特定要求定制开发的数据采集工具。前者往往通过在互联网上就能免费下载使用,后者则作为商业产品出售或者作为内部使用,而定制化的数据采集产品通常基于特殊的硬件设备(这些硬件被用来提高性能)。

开源数据采集工具非常多,初步列举如下:

● 广为人知的图形化的,用来抓取、过滤和分析数据包的Wireshark。

● 以命令行形式进行网络抓包和协议分析的Tshark。

● 能以最少的资源最大化抓包能力的、专门用来抓取数据包的dumpcap。

● 基于UNIX系统,较早出现的网络流量抓取、过滤和分析工具TCPdump。

● 采用零拷贝机制的高性能完整数据包捕获工具Netsniff-NG。

● 强有力的网络安全监控与数据收集工具Dsniff套件。

● 具有强大分析能力的专业流数据分析工具套件Argus。

● 具有强大的流导出数据分析能力,用于收集和存储流数据的命令行工具集SiLK。

● 开源的、模块化的、易扩展的数据流收集和分析工具集合flow-tools。

● 轻量级的NetFlow生成与采集管理工具Fprobe。

● 能够提供IPFIX输出的流生成和分布式收集工具YAF。

● 用来显示和记录HTTP流量的专用数据包嗅探器Httpry。

● 具有可定制输出能力的全面的协议分析工具Justniffer。

● 高性能、高稳定性的数据包捕获工具Daemonlogger。

● 可移植的、高度可扩展的日志检测、聚合和分析工具Splunk。

● 基于GPL授权的分布式开源日志聚合与分析工具DAD。

● 流行的日志收集、代理和Web缓存工具Squid。

● 提取互联网流量、捕获和解析网络应用层数据包工具Xplico。

● OFT协议专用解码和数据提取工具oftcat。

● SMTP专用解码和数据提取工具smtpdump。

此外,还有基于大数据的采集工具和系统——Flume日志收集系统、网络爬虫、Sqoop数据抽取工具和Kafka分布式消息队列系统等,以及一些其他工具如Tcpxtract、NetworkMiner、Softflowd、BASH工具、ELSA、Nagios、Logstash、Fluentd等。

虽然市面上不乏大量优秀的网络安全数据采集工具,但针对特定业务量身定制的数据采集工具仍然是一个较为普遍的需求。有的是简单的数据采集代理软件,有的则是软硬件一体化的数据采集设备,更高级的数据采集设备中还增加了检测(入侵检测、DPI、DFI)和一定的分析功能。有的会依托重型数据采集平台(如DPDK),有的则依托轻型数据采集平台(如PFring)。总之,定制化的网络安全数据采集工具没有固定的标准,根据用户的需求而定,具有较大的差异。

5、采集点部署

在认识了那么多采集方式和工具软件之后,最为重要的事情就是进行采集点的部署,也就是决定把采集点安置在网络上的哪些物理位置,这些位置决定了您能采集到什么样的数据,以及进行网络安全态势感知的效果。数据采集的总体目标是确保网络安全态势感知的关键数据源能够被发现和识别。

(1)需考虑的因素

在进行采集点部署前,我们需要重点考虑以下内容:

数据冗余:在采集数据时,应当尽量降低数据冗余,对于重复、无用数据要尽量避免,也就是说,采集点的位置应当是尽可能单一地获得目标数据的位置,而不是随意部署的容易引起重复采集的位置。

时间同步:各采集设备或软件的时间同步是非常重要的,如果个别采集器时间不准确,那么所导出的数据很难与其他采集器导出的数据进行关联聚合。所以,在采集数据时,请务必保证所有采集器的时间同步。

采集覆盖面:很多组织在采集数据时往往优先考虑边界设备,如防火墙等。虽然这些边界设备上产生的数据量相对来说更为重要,但内部网络的数据同样有价值。所以,在进行采集点部署时我们应当兼顾边界和内部网络,对于有数据流发生的地方都应当覆盖到,这样才不会有所遗漏而对后续分析和态势理解造成影响。

成本/收益:网络上流经的数据量如细沙,是否要采集到所有数据?答案是否定的。因为每个组织的资源都是有限的,我们必须对采集的成本和收益进行分析衡量,确定哪些数据是必要的、哪些是多余的,并找出关键节点,在预算范围内尽可能采集较多的数据。

存储空间:每种设备的存储容量和吞吐量都是有限的,启动数据记录处理和导出功能必然会影响网络设备的性能。我们应当根据自身实际和需求估算要采集的数据量,并为每种数据类型确定一个可行的保留期限。对采集设备和部件的吞吐量也要做到心中有数,可以采用一些先进的零拷贝技术,应用一些必要的过滤器或对数据流进行分割式输出。

(2)关注网络出入口点

每个网络都有自己的网络出入口点,这是我们首先应当关注的位置,比较常见的有:

● 内网的边界处。

● 互联网网关处。

● VPN通道的节点连接处。

● 与合作伙伴网络相连接处。

● 无线网络边缘处。

这些位置往往会有较为繁忙的网络数据经过,也是安全问题容易发生的地方,因此,我们在部署采集点时应当把网络拓扑结构图铺在桌面上,重点查看这些位置并进行相应的采集工具布设。

(3)掌握IP地址分布

除了找准网络出入口点这类关键位置,最好对全网的IP地址分布有一个整体的了解。因为有些网络之间会存在IP地址转换,比如最常见的NAT(Network Address Translation,网络地址转换),专用网内部的一些主机本来已经分配到了本地私有IP地址(内部网络使用的IP地址),通过NAT就能转换成全球公有IP地址并与因特网进行连接。

对每个子网的IP地址(包括内部IP地址和外部IP地址)有所掌握,能够避免我们在进行数据采集时错误地放置采集器的位置,尤其是能产生告警数据的设备,导致溯源定位混乱。

(4)靠近关键资产

对网络出入口点进行采集器放置是有前提的,那就是在不考虑任何成本/收益、资源占用以及组织所面临的威胁的情况下。这当然也是理想的状况,即有充足的时间、金钱和资源供我们消耗,为了数据采集可以付出所有。然而,现实并非如此,种种局限使得我们必须有所权衡、有所考量,有限的资金、时间和资源使得我们不可能对每个网络出入口点都布设采集工具。

我们应当花费一定的时间估算数据采集的成本/收益,准确定位所需数据源,因为它是组织面临威胁的关键,提炼关键要素,并由此判断哪些资产的风险值高,需要重点保护,进而将采集器部署在尽量靠近关键资产的位置上。安全管理人员需要知道网络安全态势系统对哪些资产进行保护,哪些资产在保护范围之外。大致的做法是:对于风险值最高、最为敏感的核心资产区域的网络出入口点,应当首先进行采集器布设;再按照风险值从大到小、资产重要性从高到低依次排查,按需布设;同时兼顾硬件开销和承受能力。

(5)创建采集全景视图

当选好采集点之后,我们可以创建一个网络安全数据采集全景视图,供后续分析使用。该视图应当至少包含如表1所示内容。

表1  采集全景视图所含内容

为了让大家有更直观的认识,我们以某网络为例绘制了一张网络安全数据采集全景视图,如图2所示。

图2  某网络安全数据采集全景视图

在图2的网络中一共部署了4个传感器,分别用来感知和采集不同子网中的网络安全数据。有了这张全景视图,安全人员就能从宏观上整体掌握所要感知的网络,知道要在哪些位置上进行采集点部署,以及采集哪些关键区域的网络安全数据,从而为后续数据采集的实施和分析处理打下良好的基础。

文章转载自公众号 计算机与网络安全,作者 计算机与网络安全

发表评论