作者介绍:李知周,中国科学院微系统与信息技术研究所博士,物联网早期创业者,发起了开源物联网项目Openfpgaduino,目前在国际知名投资银行从事大数据与机器学习的网络安全开发。
责编:贾维娣(jiawd@csdn.net)
本文为《程序员》杂志原创文章,转载请联系授权
2016年10月,美国互联网服务商Dynamic Network Service遭遇了大规模DDoS攻击,造成多家美国网站出现登录问题。有数据表明,黑客发起此次攻击,是运用了全球上千万件感染恶意代码的物联网智能设备,例如CCTV闭路监控装置、数码摄影设备等。
堪称灾难的事件背后,物联网安全问题不容小觑。尽管目前物联网的安全威胁相对传统互联网仍然只占到很小部分,但随着行业的高速发展,针对物联网的病毒很有可能在未来几年流行开来,原来能够阻碍网络病毒的那些屏障正在一项一项消失。不久的将来,物联网或将成为网络安全事件的重灾区。
物联网安全问题如何解决?其实方案早就有了,我们可以借鉴传统网络安全的知识,并针对物联网的特点做些相应的升级改造。网络安全中一个重要的概念就是攻击表面,也称攻击面、攻击层面,它是指网络环境中可以被未授权用户(攻击者)输入或提取数据的可攻击位置。这些攻击表面可能是某个服务端口,也可能是某个网页的输入框、某个TCP的链接等。对于网络安全的防守方,希望的是攻击表面越小越好,当然最理想的情况是没有攻击表面。典型的例子就是物理隔离,很多国防军工类企业,使用物理隔离办法,将内网与外网完全隔离开来,实现网络没有可被攻击的位置。当然,这种安全模式缺点也很明显,即完全不具有任何灵活性,并造成了完全的数据孤岛,这会给工作生产产生负面影响,极大降低效率。因此,攻击表面与数据流动犹如硬币的两个面,缩小攻击表面必然造成数据的流动性变差,而要增加数据的流动性则必然造成攻击表面的扩大。所以,实现物联网安全其实就是最大限度保障所必须的功能的前提下,尽可能缩小攻击表面。
物联网安全就是与攻击表面的斗争,而攻击表面的粒度定义越细致,则在安全攻防中获得胜利的机会越大,最理想情况是整个攻击表面能够正好符合所有的应用需要,没有一个和应用无关的多余攻击表面,通俗来讲就是只给物联网运行所需的权限,而不给任何多余权限,以免被黑客利用。
降低物联网攻击表面的方法很多,包括使用安全分析软件对物联网软件的源代码进行扫描分析,发现软件中的潜在漏洞,比如SQL注入、堆栈溢出、使用不安全的库函数、在日志中记录了一些用户敏感信息、使用明文存储密匙等等。通过使用源代码基本的安全分析扫描可以解决大部分已知安全问题,有效降低软件的攻击平面。同样的通过使用用户安全认证技术,可以有效避免非授权用户的登录,减少物联网节点的攻击平面。在网络传输过程中,使用加密技术是减少网络攻击平面的必然选择,在网络协议的选择上应该使用经过安全验证的标准协议,尽量避免为了降低安全测试与维护成本而使用自定义的通信协议。
在现代的物联网中,仅仅通过减小攻击平面是无法完全实现安全防护的。由于物联网是一个非常松散的网络,攻击平面的减小是极其有限的,黑客总是会找到办法来攻破网络中的某个节点。既然总是被动防御,并且顾此失彼,怎么防御最终都会被攻破,那么为什么不能在物联网的安全防护中转守为攻,以攻击来替代防御呢?主动攻击和抓捕入侵物联网的黑客。这样的想法引发了安全领域的一次革命,并由此出现了两个新概念:安全猎手与击杀链。所谓安全猎手就是那些通过各种安全工具与手段在网络中搜索与消灭黑客的人,通常安全猎手会假定当前网络已经被入侵,然后不断分析当前网络的各种监控状态,以找出可能的入侵者,最终将入侵黑客猎杀掉。这样的过程周而复始,保证物联网的安全维持在一个持续可控的状态,而安全猎手猎杀入侵者的完整过程被称为入侵者击杀链。入侵者击杀链由洛克希德马丁公司的安全科学家提出,他借鉴了在军事领域消灭入侵者的过程,将安全领域消灭入侵者的过程做了总结。对于入侵者来说,要完成入侵需要以下几个过程,也称为入侵链条:
而安全猎手需要在这个链条的每一个环节上进行搜索,以击杀这些黑客行为,故而称为安全猎手的击杀链。在安全猎手的击杀链中,最初也是最重要的一步就是如何去发现和检测入侵者的行为,只有发现了入侵者,整个击杀过程才能获得成功,接下来我们就以基于大数据的物联网安全监控系统实例分析如何发现与监控入侵者,为最后击杀入侵者提供保障。
智能安全网关
所谓物联网网关是连接物联网与传统通信网络的纽带。作为网关设备,物联网网关可以实现感知网络与通信网络,不同类型感知网络之间的协议转换,既可以实现广域互联,也可以实现局域互联。此外物联网网关还需要具备设备管理功能,运营商通过物联网网关设备可以管理底层的各感知节点,了解各节点的相关信息,并实现远程控制。在物联网网关的功能基础上,叠加上与安全相关的一系列功能就形成了智能安全网关。回想一下前文提到的攻击表面,要有效实现物联网的安全就需要尽可能的减小物联网的攻击表面,同时智能安全网关还能够成为安全猎手最重要的监控设备,监控黑客的入侵。智能安全网关通过将所有内部物联网的数据流汇聚到自己这里,并与自己的安全监控数据合并,再通过公共网络传输到云与数据中心当中,有效地将攻击表面缩小到网关节点上,并为安全猎手提供了猎杀黑客入侵的必要条件。图1是一个物联网智能安全网关的设计实现框图。
在图1中,我们将一块OpenFPGAduino作为物联网网关节点并叠加上一整套网络安全软件,实现了一个物联网安全智能网关。这个网关连接了左边的各种物联网,包括智能电网、工业控制网、车联网等,右边通过广域网连接了云服务与数据中心。图的下方是承载网关功能的OpenFPGAduino物理硬件,图的上方给出了一些必要的安全软件,利用Kerberos安全网关实现了对任何接入网关的设备的安全认证,确保只有获得授权的用户与设备才能接入到安全网关;利用Iptable安全网关实现了基本的网络防火墙功能,将广域网上可能出现的对物联网设备的攻击阻挡在安全网关之外;利用Squid等HTTP代理,可以有效的过滤用户通过Web对物联网设备的控制与访问,并实现对用户访问物联网设备的行为进行监控,为快速发现黑客行为提供了帮助;利用Snort安全网关实现了以侦测签名与通信协议的侦测方法实现对黑客网络侵入检测。从某种意义上来说,智能安全网关继承了传统网络中的多种安全设备,为接入其中的物联网节点提供全方位的安全服务与保障,使得物联网节点远离黑客攻击。
大数据安全监控
有了物联网的安全网关,并且在网关上部署相应的安全软件后,这些与安全相关的数据与日志就能源源不断地从网关发送到数据中心中。“人过留名,雁过留声”,这句话形象而精确地描述了我们使用日志监控手段来应对安全威胁挑战的有效性。传统网络乃至物联网的安全攻防战将会是一场永远没有尽头的战斗,黑客和安全人员敌我犬牙交错,战斗每时每刻都在进行。而只要物联网还在传输有价值的数据,其一定会成为受攻击的对象。网络安全不是一次性的,防御住一次攻击并不代表胜利的到来,我们必须以一种持续不断的方式来保证物联网的安全,做到网络安全状态的持续监控,而日志监控正是实现网络安全持续监控的有效手段。只要适当的日志配置,我们就可以记录物联网环境中的每一次重要事件,包括从用户登陆、设备上线、数据发送的开始与结束到防火墙规则的违反等一些列安全事件,利用这些事件,我们不仅可以实现对当前网络安全状况的即时评估与安全问题修复,还可以发现黑客入侵的关键行为与动作,从而实现黑客的入侵检测,从源头上对黑客的行为进行记录并完成拦截。
物联网环境中由于节点资源受限无法存储非常多的日志,因此传统的将数据存储在本地的日志系统不能很好地满足物联网需要,解决方法是将所有节点上的关键日志通过网络传输并汇总到数据中心中做统一存储与分析,这样的解决方案就是大数据日志监控。因为在一个物联网中拥有海量节点,因此也会有海量日志数据被发送到数据中心,而随着部署设备的增加,数据会不断增加,为应对这种数据的指数增长,必须要使用大数据技术来实现对安全数据的存储监控与分析。图2是一个典型的物联网大数据安全日志系统构架。
首先,物联网节点OpenFPGAduino上关键的安全日志,包括sudo日志、Nodejs用户物联网节点访问日志、节点上网络流量统计日志等等被缓储到本地日志文件,在网络环境可靠且不繁忙时,将日志缓存文件发送到数据中心的Kafka消息总线,实现节点到数据中心的日志汇总。接着,使用Spark大数据分析平台对收到的日志进行汇总和处理,生成与安全相关的一些日志报表,并将报表和原始日志存储到ElasticSearch搜索引擎中,方便物联网的安全监控人员进行搜索和数据展示。
有了记录大数据的安全监控系统,接下来我们以实例来讲解如何在入侵链条的每一个环节,利用大数据监控击杀物联网上的入侵者。我们对应击杀链逐一分析大数据的安全监控实战:
侦察:入侵者选择目标,进行研究,并尝试识别目标网络中的漏洞。
通过在智能网关上部署Kerberos用户认证以及Squid访问代理,我们可以得到所有访问物联网的用户的信息。入侵者在选择目标并进行研究的过程中,通常会以标准用户的身份登陆,然后通过尝试某些漏洞提高自己的权限,这种行为能够被安全日志记录下来,当安全猎手在对日志进行扫描时会发现除去真正的维护人员,还多了一个从不同IP登陆的用户在提升自己的权限,通过分析这个用户前后的日志及行为,安全猎手就能判断出这个黑客大致使用了什么手段与漏洞实现了权限的提升与对物联网设备的控制。本文开头提到的美国掉线的例子中,通过对用户登录行为的大数据监控与分析,可以很容易发现有非管理用户的IP地址以Root身份登陆到物联网的设备中,进而可以推断出Root用户密码已经被盗用,这样就可以在源头上拦截这次黑客入侵。
武装:入侵者创建远程访问恶意软件武器,例如针对一个或多个漏洞的病毒或蠕虫。
利用大数据安全监控平台,我们不仅可以监控物联网设备上的安全情况,也可以对网络上关于安全的信息进行监控,通过网页爬虫分析一些安全相关的论坛网站的数据,获得漏洞、病毒或蠕虫的信息。通常来说入侵者不是凭空创造病毒或者蠕虫的,而是去浏览各种安全网站,如论坛,寻找一些比较新的漏洞信息,并针对这些信息来开发自己的恶意软件武器。比较典型的是永恒之蓝病毒,它利用的就是已经被公开的由NSA发现的漏洞,利用的手段也是早就有的加密文件勒索,两项都不是它的发明,只是永恒之蓝将其组合起来达到了非常好的效果。通过安全信息的大数据分析可以为安全猎手赢得时间,提前制定猎杀恶意软件的方法与工具。
分发:入侵者将武器发送到目标设备上(例如USB驱动器或者接入网络的僵尸设备) 。
在物联网智能网关上部署安全网关Snort之后,通过Snort的签名侦测功能对网络传输数据进行侦测,安全猎手可以在对Snort日志的分析中发现入侵者将武器发送到目标设备的踪迹,利用其他一些相关日志如Kerberos的用户认证日志做关联,定位并跟踪入侵者以及入侵的整个过程。通过将侦测到的恶意软件的签名添加到Snort的入侵防御列表中,安全猎手就能够完成对入侵者发送武器过程中的猎杀。
利用:对目标网络扫描寻找可以利用的漏洞用以触发恶意软件。
入侵者在登陆物联网系统后常用的手段是尝试对整个物联网进行扫描,包括扫描各种开放的端口以发现漏洞与可利用端口,同样也会对一些公开的端口比如22、23、80端口等进行一些注入扫描,常见的就是扫描23、22端口尝试进行远程脚本执行,以及在80端口的Web服务器上寻找SQL注入等网页安全漏洞。这种扫描行为都会被iptable防火墙记录下来,对Web的扫描会被Squid处理,安全猎手只需要分析iptable的日志就能很容易发现具有这类行为的用户,并对其进行猎杀,方法包括删除这一用户,禁止同一IP地址的登陆等。
安装:恶意软件武器安装入侵者可以使用的接入点(例如“后门”)。
通过建立定时运行的脚本,安全猎手可以定期收集物联网节点中的配置信息、文件系统可执行文件列表、执行文件的校验和等数据,通过在大数据系统里分析同一节点前后两次收集的差异来发现入侵者是否将病毒等攻击武器安装在了物联网节点上。同样也可以通过进行物联网相似节点间的配置、校验和的比较来发现入侵者,由于入侵者通常没有网络设备的完整信息,同时入侵所有设备的可能性很小,而网络病毒的传播也需要一个过程,这种相似节点间的比较为安全猎手发现入侵与病毒提供了非常有效的手段。同样在美国掉线的例子中,如果利用大数据技术做节点的文件、进程与配置的比较,就可以及时发现监控摄像头已经被黑客入侵并被安装恶意武器成为了发起DDoS攻击的僵尸网络,并通过清除黑客的攻击工具保护物联网节点,实现猎杀。
命令和控制:恶意软件使入侵者能够对目标网络持续访问与控制。
利用ps,netstate命令对正在运行的进程,已经打开的端口,以及诸如/etc目录的启动运行脚本监控,安全猎手同样可以基于大数据比较差异来发现入侵者为了维持对网络的访问与控制而留在被入侵设备上的执行进程与通信端口,以及为下次启动时能自动运行的启动脚本。安全猎手通过杀死这些进程,关闭这些端口,利用差异比较复原原始启动脚本的方式,阻断入侵者对物联网设备的持续访问与控制,完成猎杀。
目标行动:入侵者采取行动实现其目标,例如控制僵尸网络、数据泄露、数据销毁或赎金加密。
通过分析iptable日志可以掌握整个物联网上的数据流方向,再利用可视化技术构建出一个物联网数据流图,通过获得网络接口的统计数据可以估计网络上的数据流量。利用这些数据,网络猎手了解整个网络上的数据流动情况,并能够发现一些异常的流动,比如发现有一个流向未知IP的大流量数据流,那么很有可能就发生了数据泄露,入侵黑客正在源源不断将数据发送到他的主机上,当然也有可能是黑客在利用你的物联网作为僵尸网络进行DDoS攻击,就如同美国掉线事件那样。
总的来讲,由于有了基于大数据的物联网安全监控系统,我们可以做到对入侵行为的精确监控,并实现在入侵的每一个环节上有效发现入侵、分析入侵并实施击杀。利用大数据的海量数据,在与黑客的攻防战中掌握住信息权,让黑客无处遁形,只能接受数据猎手的降维打击。
攻击表面
https://zh.wikipedia.org/wiki/%E6%94%BB%E5%87%BB%E8%A1%A8%E9%9D%A2
数据防泄漏
http://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E9%98%B2%E6%B3%84%E6%BC%8F
物联网网关
http://baike.baidu.com/item/%E7%89%A9%E8%81%94%E7%BD%91%E7%BD%91%E5%85%B3
OpenFPGAduino
https://github.com/OpenFPGAduino/OpenFPGAduino
已有0条评论