Linux服务器BPF后门的分析与应急

Red Menshen(又称DecisiveArchitect或Red Dev 18)是一个针对中东和亚洲国家利益的APT组织,一直在不断改进其BPFDoor。BPFDoor最有趣的功能是它能够在操作系统内核中加载数据包过滤器。

解读BPF

Linux中大量使用BPF的库是libpcap库,它由tcpdump等程序使用。事实上,你可以使用tcpdump中的-d选项生成BPF过滤器指令。
Linux服务器BPF后门的分析与应急_第1张图片
内核实现了一个虚拟机来理解这段代码。这些指令代表的BPF过滤器字节码也可以通过-dd选项查看。每个经典BPF指令都是8字节长。其中0x28代表加载。0x15代表jmp。
Linux服务器BPF后门的分析与应急_第2张图片
bpf_asm 翻译为“操作码”的程序是一个由以下元素组成的数组(如前所述):
op:16, jt:8, jf:8, k:32
元素op是一个16位宽的操作码,编码了特定的指令。jt和jf是两个8位宽的跳转目标,一个用于条件“如果为真则跳转”,另一个用于“如果为假则跳转”。最终,元素k包含一个杂项参数,可以根据op中给定的指令以不同的方式解释该参数。

这里ldh [12]是指从以太网帧格式数据偏移12(0xC)字节处加载两个字节(half-of-word)的内容。
ldb指令表示加载单字节(byte)内容。

BPF指令的含义及地址:

你可能感兴趣的:(Linux逆向,服务器,运维)