普遍的网络流量加密阻碍深度包检测,但仍有方法可以检测并阻止很多攻击。
多年来安全专家一直在敦促用户加密所有网络流量。他们的观点是:让安全配置成为默认配置是很明显的好办法。实现加密的标准和产品都已经非常成熟,没有理由不这么做!
然而,事情不完全是这样。但凡工程,总有各种利弊权衡,加密流量也不例外。其中一大弊端就是安全人员和监视系统也看不透你的网络流量了。你该如何检查网络流量以查找恶意程序和有问题的内容呢?
简单粗暴地回答的话,答案就是你没法用深度包检测找出攻击了。更负责任一点的话呢,你可以在执行加解密的终端上检测流量,从网络流量元数据中获悉各种信息,流量包头中的信息能告诉你数据包的源头和目的地。
思科《加密流量分析白皮书》指出,2015年加密流量占比21%,2016年占比40%,一年时间几乎翻了一倍。由于微软Exchange之类企业产品趋于默认加密所有流量,企业内部流量加密的占比无疑在飞速提升。
任何像样的主机或网络入侵检测系统(IDS/IPS)都会执行网络分析,在合法加密流量海洋中查找恶意流量。但深入了解工具运行机制和自身流量特性没什么坏处。微软Office数据文件中支持的应用级加密,恶意黑客用来偷渡数据的隐写术之类混淆技术不是这篇文章讨论的内容。本文要讲述的,是你可以对协议级加密做些什么。
1. 使用网络异常检测工具
如果不能观测实际包内容,就得监视流量找出网络异常。那么,异常网络行为有哪些特征呢?想知道这一点,你得弄清楚正常行为的构成。比如说,通常不互联的主机之间出现的连接,无论是内部主机互联,还是内部主机与未知外部系统相连,都是值得怀疑的。
TCP/UDP端口的非正常使用也是值得监视的一种行为。可在Dave端口列表上查看知名端口和不那么知名的端口。不仅仅是非正常端口的使用,还要看正常端口是否被非正常应用使用,比如为传输层安全(TLS)保留的443端口有没有用于传输明文流量。
这些任务太过琐碎,不适合人工处理,有很多安全产品都尝试检测网络行为异常,包括IBM的QRadar、Juniper Sky Advanced Threat Protection,甚至还有开源的Snort IPS。最高级的产品,比如思科的 Encrypted Traffic Analytics,将监视与情报服务集成,跟踪全球系统中的异常行为。
需要挖掘流量审查细节的时候,可以借助网络分析工具。Wireshark是最基本的,但Fiddler更适用于HTTP/HTTPS流量分析。Fiddler作者 Eric Lawrence 写的一篇文章阐述了怎样通过元数据及其他办法检查TLS流量。
另一个有趣的工具集是来自Salesforce的JA3和JA3S。该工具集可捕获TLS连接特征,暴露出此类通信及连接使用方TLS实现的更多细节。
2. 使用SSL/TLS代理服务器
使用安全套接字层(SSL)/TLS代理服务器能很大程度上令加密流量可审查。包括加密通信在内的所有通信都要经过代理服务器,代理服务器在一端接受加密连接,解密流量,执行某些操作,然后重新加密并发送流量到目的地址。代理服务器执行的操作中就可以包含安全操作,比如恶意软件扫描和阻止禁用站点。很多第三方安全产品都可以用作SSL/TLS代理。
此类代理服务器给已经很复杂的网络配置又添了一层复杂度。虽然可以通过缓存加速流量,但也存在拖慢流量的可能性。2017年,美国国土安全部(DHS)计算机应急响应小组(CERT)协调中心曾发出一条警报,称很多此类产品未进行恰当的证书验证,或者转发错误情况。很多安全专家,比如卡耐基梅隆大型的 Will Dormann,辩称SSL检查反而会引入更多风险。
3. 准备应对非TLS加密
网络包层级上的流量合法加密通常由SSL/TLS实现。但你可能遇到其他加密协议。有些是合法的,有些则不应该出现在你的网络上。
其中最为模棱两可的协议就是Secure Shell (SSH)。很多管理和开发工作都通过SSH完成。问题在于,坏人也会用SSH。你不可能全面禁用SSH,总得为特定网络段和特定用户放行SSH。所以,不符合合法规程的SSH流量必须要在审查范围内。
如果使用Windows终端,那网络上就会出现很多Windows终端服务器用的远程桌面协议(RDP)和Citrix服务器用的独立计算架构(ICA)。这些都是加密协议,通常使用TLS,但也可能在不同的TCP端口上,展现其他的差异。公司应设专人控制这些终端,具备审查其行为的能力。
更隐蔽的是基于用户数据报协议(UDP)的快速UDP互联网连接(QUIC),这是TLS的低延迟版替代品。HTTP/3标准纳入了QUIC,但其基于UDP的特性限制了其应用。举个例子,防火墙通常全面阻止UDP入站。这仍是相当前沿的问题,你可能根本看不到。
至于暗网所用的Tor,因为采用多层嵌套加密,除非有额外的隐私需求,普通用户完全有理由封禁。
TLS的好处在于身份验证、加密和消息完整性,这是无可否认的。所有这些加密使一些合法的安全实践变得更加困难,但这点困难并不足以让你的流量保持不加密状态裸奔。无论是通过元数据,还是在终端检查,依然有很多工具可以保护你的用户和网络。
思科《加密流量分析白皮书》:
Dave端口列表:
http://lists.thedatalist.com/portlist/portlist.php
Fiddler作者 Eric Lawrence 的文章:
Understanding the Limitations of HTTPS
JA3和JA3S:
https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967