在计算机安全中,侧信道(side-channel)攻击是一种收集计算机软硬件在运行时所释放出的额外信号来进行信息推测和密文破译的攻击模式,这些额外信号包括电磁辐射、声发射、功率波动、热输出变化等,是设备运行计算时带有规律的能量轨迹。
最早的侧信道(side-channel)攻击
根据NSA解密文件显示,早在1943年,一名贝尔电话工程师就发现每当有人在电传打字机上打字时,会导致附近的示波器的读数波动,接着NSA进一步发现任何接近电传打字机的人,只要能读到它的电磁辐射,就有可能通过示波的能量轨迹破译出它的打字击键信息,这个秘密直到1980年代才被公开。
思科的ETA (Encrypted Traffic Analytics)技术
2016年,思科的工程师David McGrew专门针对TLS加密流量研发了一种增强的NetFlow日志(ETA)。
传统 NetFlow中存在的5 个基本日志:单向流的持续时间、客户端发送的数据包数量、服务器发送的数据包数量、客户端发送的字节数、服务器发送的字节数。
增强的ETA日志包括新的IDP、SPLT和BD这三个日志,IDP日志是采集TCP会话握手后的第一个报文包及有效荷载,一般包含TLS Client Hello或会话第一次明文HTTP请求等,可以提取报文元数据做TLS指纹和其他明文网络特征。而后两种SPLT和BD日志是一种网络流量侧信道信号记录。
Sequence of Packet Lengths and Times (数据包有效负载长度序列和到达时间): 双向流采样前50个数据包的有效负载长度,以及这些采样数据包的序列到达时间(间隔时间)。
Byte distribution(字节分布):某一特定字节值在报文的加密载荷中出现的概率,这可以推测出加密荷载中包含的明文字节,以分辨某种网络协议或推测明文字节特征。
这两种特征工程数据是对流量通信时所产生的额外信号进行侧信道分析,其中的SPLT特征最为重要,SPLT的特征是Packet lengths和Arrival times,较容易被误解为数据包报文长度/时间间隔,而正确的理解如下:
X轴代表序列时间
Y轴代表数据包有效负载长度
有效负载的X轴宽度是数据报文的到达时间
X轴上方代表上行流量,X轴下方是下行流量
这基本上是实现了一个TLS加密会话记录的频域(frequency domain)和时域(time domain) 示波器,下图是Google搜索和木马病毒的SPLT通信示波,通过流量分析的推测,可以看到左右两个图中的每个标签行为实际上对应了明显的信号规律。
Suricata的侧信道状态机规则
2018年,Positive安全公司在SuriCon上为Suricata的流量检测研发了一种侧信道状态机规则,可以用侧信道规律检测木马病毒的加密流量。
首先,Positive的侧信道规则使用的还是Suricata原生能力,针对Suricata约定的Flow(双向的TCP连接)中的dsize(报文有效荷载大小)和stream_size(上、下行流大小),这相当于靠stream大小范围以切蛋糕的方式实现了Sequence of Packet Lengths数据。
然后,Positive使用了Flowbits来标记多个报文在一个Flow里上、下行流中的匹配状态,利用状态机标记从而实现了多序列的上下文报文匹配规则。
Positive巧妙的利用了状态机为suricata实现了侧信道流量检测能力,可以检测一次完整TCP Flow上下行中的报文大小规律,当然这也只能对有明显侧信道特征的木马病毒通信进行异常告警。
****感悟小结
遥测一般是大规模分析,所以只能采集少量数据,而思科的ETA通过IDP采样和侧信道信号以较少的代价补齐了原NetFlow日志的不足,这种大规模安全能力的规划确实让人惊叹。目前这套流量遥测体系已经经过了8年时间的锤炼,中间到底发生了多少故事,收集分析了多少网络流量的元数据特征和侧信号信号,通过了多少机器学习、深度学习的磨练,可以想象一下思科目前的网路流量遥测能力到底达到了什么程度。
Positive的技巧很让人惊艳,但是由于suricata的定位是流量的实时检测,对于性能有要求也没法实现更多的跨流检测,它只适合情报驱动的已掌握特征的特定恶意流量,如果想实现更复杂的检测还是需要全流量数据进行离线分析。
侧信道并不只单纯是一种攻击,也可以是一种安全防御技术。攻防往往是一体双生,只有打破边界才可能有创新...可以看到这么多年来,网络流量的安全检测在加密通信面前仍处于非常弱势的状态,侧信道流量检测技术一定程度上为流量安全指了一条明路,但这仍然是一种剑走偏锋的技术,需要大量数据作为支撑,会存在很多的不确定性,最终需要大量的工程研发和运营才能落地。