本文主要是介绍Linux服务器BPF后门的分析与应急,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Red Menshen(又称DecisiveArchitect或Red Dev 18)是一个针对中东和亚洲国家利益的APT组织,一直在不断改进其BPFDoor。BPFDoor最有趣的功能是它能够在操作系统内核中加载数据包过滤器。
解读BPF
Linux中大量使用BPF的库是libpcap库,它由tcpdump等程序使用。事实上,你可以使用tcpdump中的-d选项生成BPF过滤器指令。
内核实现了一个虚拟机来理解这段代码。这些指令代表的BPF过滤器字节码也可以通过-dd选项查看。每个经典BPF指令都是8字节长。其中0x28代表load加载。0x15代表jmp跳转。BPF指令的逻辑就是通过判断逻辑过滤数据包字段、分支跳转实现对流量的过滤功能。
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指令表示加载单字节(
这篇关于Linux服务器BPF后门的分析与应急的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!