吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4512|回复: 32
上一主题 下一主题
收起左侧

[PC样本分析] 针对Linux系统 BDFdoor新变种可绕过防火墙

   关闭 [复制链接]
跳转到指定楼层
楼主
火绒安全实验室 发表于 2023-11-20 17:51 回帖奖励
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 火绒安全实验室 于 2023-11-20 17:53 编辑

近期,火绒安全实验室发现了一起针对Linux系统的植入后门病毒攻击,经过分析确认该后门为BDFdoor的变种。

BDFdoor是一种针对Linux和Solaris系统的被动后门,执行隐蔽性的访问控制。由于该后门病毒利用 BerkeleyPacket Filter(BPF)嗅探器以低于本地防火墙的级别嗅探流量,所以其能绕过防火墙的限制,并且可以响应来自任何 IP 的命令而无需新开端口。

目前,火绒安全产品可对上述病毒进行拦截查杀,请企业用户及时更新病毒库以进行防御。



火绒查杀图

注:Berkeley Packet Filter 提供了一个在内核级别进行网络数据包过滤的框架,其在网络层接口上工作,能够查看和处理所有网络流量。


一、样本分析


初始化阶段:


样本初始化前,其会经过多层检查以进行权限确认并防止多次启动。/var/run/haldrund.pid文件在这里作为该后门已存在的标记,类似于互斥体的作用。



互斥标识文件

在执行条件都符合的情况下,进入初始化操作阶段——把自身复制到/dev/shm 目录下执行并赋予 --init 参数,在内存加载后删除执行文件以进行隐蔽。



初始化执行

样本选择的 /dev/shm 目录是 Linux 系统利用内存虚拟出来的目录,用于提高操作效率,正常情况下该目录并没有文件(且样本已经进行删除处理)。但由于后门程序需要持续运行以监控流量,所以在进程列表中会持续存在。/proc 目录下包含系统当前正在运行进程的进程号及与进程相关的多个信息文件,从中可以看到被删除的文件。



查看可疑进程

随后,样本进行一系列规避和隐藏操作,包括设定执行文件时间(如果前面删除失败)、清除进程环境变量并根据预设的 Linux 系统守护程序名来伪装进程、将自身设置为后台运行、在终止时通过 atexit函数注册对 haldrund.pid 文件的清除操作,确保流程闭环:



规避和隐藏操作

流量捕获和分析阶段:
完成上面的流程后便进入到数据包捕获和匹配阶段,通过创建一个原始套接字(SOCK_RAW)和使用 AF_PACKET 地址族,加上前面 root 权限的设定,使样本能在数据链路层上捕获系统上所有的网络流量,而不仅仅是传递给特定端口或协议的数据包。



原始套接字设定

对于所有捕获的流量,会根据不同的传输层协议进行验证,直到成功提取出特定位置处符合大小的 magic_packet 结构后,再另外分支出一个子进程来进行后续操作。然后原进程继续获取和分析匹配的流量,子进程则根据提取出的 magic_packet 结构进行后续操作。



校验符合的流量

magic_packet 是病毒作者自定义的一个特征结构体,主要包含攻击者的flag 标志、IP、Port、通信选择标识符 pass 等。其中嵌入的 IP 端口用于后续建立连接和通信,而 pass 则在后续与预设字符的匹配中用于决定通信的方式。



原始版本magic_packet 结构体

分支出来的子进程会用新的系统守护进程名 "postfix" 来伪装自己,并利用结构体中 magic_packet—>pass成员作为 RC4 加密密钥,对后面即将建立的通信流量进行加密。



fork 进程和 RC4 加密

在通信方式的选择中,也同样利用 magic_packet—> 成员值与样本在起始处预设字符串值进行比较,根据不同的标识符来决定不同的处理方式,包括:(1)调整iptables规则,重定向攻击者流量到shell进程新端口,建立C&C通信并用前面 RC4 加密该通信数据的反向 shell。(2)直接连接到攻击者给定 IP 端口。(3)发送固定值 "1" 的 UDP 应答包作为存活探测。



执行不同通信操作

对比分析:


该类后门自披露以来最显著的特征就是其加载 Berkeley Packet Filter(BPF)嗅探器,使其能够在任何本地运行的防火墙前工作以查看数据包(因此被命名为 BPFDoor)。样本使用原始套接字(SOCK_RAW)及 root 权限来获取系统的全部流量,并在 setsockopt 函数中将转换为 BPF 字节码的过滤器作为过滤参数加载进流量的处理中,因此对于从任何主机 IP 发送过来的数据会先被该类样本捕获,进行过滤匹配和采取后续行动。

而本次分析的样本中,在前面进入流量捕获阶段的起始处,样本加载的过滤器全由 \x28 组成,对流量并没有实际性的过滤效果,流量分类全由后续的 IP 协议字段决断:



BPF 过滤器对比

而且在根据不同传输层协议提取数据包中的 magic_packet 结构时,对于 TCP 协议的处理,其会根据数据包中是否存在 magic\x39\x39\x39\x39 和 \x0D\x0A\x0D\x0A 来更改 magic_packet 在数据包中的定位,否则,与 UDP 和 ICMP 一样,在恒定的位置提取。



提取 magic_packet结构体

另外,在对 magic_packet—>pass 成员与预设值的比对中,除了 "justforfun" 和"socket" 所对应的 "反向shell"、"正向连接" 及其它值对应的存活探测在该变种中还新增对预设值 "icmp" 的匹配。



新增 icmp 处理

但在对 icmp 流量的处理函数的分析中,发现真正的 BPF 过滤器已被“搬迁”到此处。流量过滤和处理逻辑依旧有迹可循:其在过滤出匹配的流量包后,又会进行新一轮的数据提取,包括控制主机的 ip、端口等。随即填充和对比通信用的版本标识符的“3458”、“8543”,并开启线程向远控主机循环发送数据以进行连接存活探测。



icmp 流量处理和过滤

由于该类样本最主要的特点就是利用 BPF 过滤器来过滤流量,可以以该线索进行排查。可以使用 ss -0pb 命令来查看当前加载 BPF 过滤器的进程,下图中显示的有 39 条 BPF 指令的可疑程序就是当前分析的样本(此时它已伪装为系统守护程序)。



BPF 程序检测

除此之外,对 /dev/shm 内存目录的操作,已删除原文件的内存进程,以及作为互斥体标识存在的 haldrund.pid 等等都可以作为检测方向:


haldrund.pid 文件

二、附录



免费评分

参与人数 9吾爱币 +6 热心值 +8 收起 理由
rilovyfox + 1 + 1 我很赞同!
ah520 + 1 我很赞同!
LYNiko + 1 我很赞同!
唐小样儿 + 1 + 1 我很赞同!
zd53011 + 1 我很赞同!
xlln + 1 + 1 我很赞同!
dengdengdang + 1 + 1 热心回复!
chinawolf2000 + 1 + 1 热心回复!
wang380006 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
jbtms 发表于 2023-11-21 00:07
感谢分享
推荐
goblack 发表于 2023-11-21 00:20
这特性未授予,普通用户也运行不起来,这也无效。不是太大的问题。何况不管安全直接关闭防火墙的太多了压根就不需要绕过本机防火墙。
3#
baichen1 发表于 2023-11-20 20:23
头像被屏蔽
4#
zty1012 发表于 2023-11-20 20:45
提示: 作者被禁止或删除 内容自动屏蔽
5#
wang380006 发表于 2023-11-20 20:51
值得学习
6#
qq173339443 发表于 2023-11-20 21:13

感谢分享~
7#
ceciliaaii 发表于 2023-11-20 21:22
谢谢分享
8#
luyefer 发表于 2023-11-20 22:34
我没看错吧,火绒官方?
9#
liaoxiaosong56 发表于 2023-11-20 23:09
感谢分享
10#
lefthandlee 发表于 2023-11-20 23:52
感谢分享,学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 05:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表