笔者最近调研了不少流量安全技术,和大家简单分享一些...
传统的网络流量安全是使用外围防火墙和内部入侵防御系统来筛选网络中的流量,以网络数据包级别的威胁识别进行实时响应。随着加密网络流量的日益普及,单纯的网络流量威胁检测已经丧失了安全可见性的优势,同时网络流量威胁检测还有海量误报确认的高昂成本!
网络异常威胁检测的问题
随着网络通信加密协议的普及,目前网络流量检测很难进行深度包检测,大都只能基于异常行为检测的方法进行,异常行为检测与深度包规则检测不同,它发现的是异常的行为,通常只能通过统计权重阈值与正常行为进行对比分析,将异常行为检测直接用于安全告警伴随的是海量误报。
比如业界常使用傅里叶变换识别Beacon特征的C2网络连接,这是一种典型的异常威胁检测,它只能标记出带有信标抖动特征的网络连接,这种抖动网络连接也包含大量的正常应用,如果直接告警伴随的就是大量的误报。因此,它只能作为研判C2连接的一种异常权重,进一步更适合作为UEBA(用户实体行为分析)机器学习的特征工程。
再举一个例子~目前大部分安全产品基于网络DNS流量碰撞威胁情报产生了告警,那怎么辨别告警是浏览器点开访问产生的,还是真的木马中招了呢?
答案是我们需要更多的证据支撑!端点的证据、网络异常指标的证据...Mandiant产品的高优先级告警至少集合了8种证据。
Mandiant告警的示范例子
流量安全能力植入端点安全
在Microsoft Ignite 2022上,微软宣布将Zeek作为一个安全组件集成在 Microsoft Defender for Endpoint 中,官方的观点是因为许多攻击仅在网络层可见,所以针对网络活动的分析检测至关重要。微软需要端点补齐流量安全能力,对每个端点的入站和出站流量进行安全检测,为安全运营提供对网络层的可见性。补齐这种安全能力后,将允许安全人员把端点的攻击行为(进程、文件操作等)和网络流量的检测响应结合起来,为可疑网络流量安全数据提供更丰富的上下文。
微软举了两个内网横向移动攻击在早期阶段就被识别的例子,可以看到Defender告警关联了端点进程ntoskrnl.exe的出站流量:
识别PrintNightmare漏洞攻击
识别密码哈希喷射
当然这些攻击行为产生后,在传统的网络流量中也能看见,但是随着各种高版本的加密协议的使用,这些行为在网络层面的识别就捉襟见肘了。
加密流量威胁检测结合端点安全
目前,各类流量安全产品在无法安装私有CA证书,卸载加密连接的场景下,对于SSL/TLS加密流量的威胁检测,大都是通过分析握手包、统计分析网络连接异常行为、比对黑白名单证书和威胁情报库等方式进行。
某国内加密流量检测产品
几年前salesforce公司和思科公司发表了SSL/TLS流量的指纹标记研究,该技术主要通过SSL/TLS连接的ClientHello和ServerHello握手包中的几个关键字段内容进行哈希计算得出,一些程序的Hello包会拥有唯一的哈希,但是这是低保真度的,一些程序可能因为同样的配置和同样的组件拥有相同的哈希,造成多对一的映射关联,同时这几个字段客户端也很容易伪造和随机生成。
JA3需要建立维护准确的指纹库和其他维度的安全数据进行关联才能发挥最大价值,目前最广泛的应用场景是风控,主要是和UA等多维度客户端标识关联形成权重进行机器人、蜘蛛识别。CloudFlare是这方面的先驱,他们也开源了维护管理JA3指纹库的项目。
同时,一些XDR产品也已经在尝试使用JA3指纹来富化网络流量安全数据,为端点进程的每一个SSL/TLS连接标记指纹,将进程、客户端、服务端和网络关联起来,可以对安全人员的威胁狩猎提供巨大的帮助。
另外,JA3和JA3S是一对指纹,JA3 +JA3S是对客户端与其服务器之间的整个加密协商进行指纹识别,JA3S服务端指纹是因为服务器对不同客户端的响应不同,而对同一个客户端的响应总是相同的,这也是一种比较好的机读威胁情报。
一个不好的消息是,JA3这样的指纹技术在TLS 1.3下失效了,TLS 1.3下大部分握手过程是加密的。当然现代软件和网络协议如此复杂,相信未来肯定还会出现更多的流量指纹技术。
小结
随着现代攻击利用的复杂演变,IT 技术和安全技术的不断进步,纯网络流量的安全分析检测也变得越来越具有挑战性,通过这几个分析研判的小例子,笔者可以预见将端点和网络结合起来的这种扩展威胁检测能力,才是未来安全的大趋势!