美国NSA超级后门Bvp47的隐身技能:如何捕捉它

admin 2022年11月9日10:32:14评论74 views字数 1432阅读4分46秒阅读模式

本文是基于Bvp47技术报告(PDF)和Linux内核写的。

这篇主要是讲述如何捕获Bvp47

本来还想继续写它的隐身技术,因为它还hook了一堆内核函数,集中在内存,分区,句柄操作,设备和SELinux。不过由于本人对Linux内核所知甚少,没有参透它的场景,怕献丑。

题外话:在调研过程中,发现SELinux的核心贡献者就是美国NSA

按照前面的分析,Bvp47非常强大,完全在文件,进程,网络(主机侧和网络侧)都隐身了。那么,有没有办法检测到它呢?

其实,个人对Bvp47的隐身功能并不满意。 它完全可以采用“借尸还魂”或“夺舍”的方式来隐藏自身,就是一个正常的进程名称出现,端口也是。 相关的技术,可以参考一下这位字节大佬的gayhub地址:https://github.com/Hackerl 或https://github.com/milabs/awesome-linux-rootkits

Bvp47是一个通过网络传播的后门,而且有文件存在,又在内核函数里挂钩。那么,说明它有可能以驱动形式加载进内核。而系统调用init_module就是把驱动加载到内核的。

从目前开源的HIDS来看,字节跳动的ElkEid是用kprobe方式挂钩了系统调用init_module在内核对应的函数中。所以,它应该能够检测到Bvp47加载驱动的事件。有兴趣的可以看我写的最后防线:字节跳动HIDS分析

eBPF也可以通过kprobe的方式挂钩同样的函数,所以,像美团,阿里的HIDS也能够检测Bvp47加载驱动的事件。

由于audit框架也可以配置对init_module监控的策略,所以,像青藤云之类采用audit框架的HIDS也应该能够检测到这个事件。

上面这些HIDS应该能够根据这些事件捕获到Bvp47有哪些文件。但在已经注入的机器上,运行状态是不可能拿到样本的。

即使Bvp47需要在网络侧很难检测到它的端口,但它的节点之间交流信息,是会产生流量的,通过嗅探网络是可以获取到它的流量。而根据它的分析报告,可以看到它是从DMZ的防火墙捕获到的异常流量捕获它的踪迹,从而定位到它所在的主机。在大多数企业,生产网络是严格外连,所以,它的远端地址应该不在白名单内,从而被发现。

那么,好,已经定位了主机,怎么捕获它的样本?再把问题困难一点,如果主机没有装上述的HIDS呢?

以下内容全凭本人经验来推断,如有不当,请指正。

作为一名背锅侠来说,如果这些主机已经在运行业务,那么应该和运维人员把业务迁移到其它主机上,再把机器从网络中断开。

然后,扫描整个文件系统,把文件系统的文件和目录做一个列表,作为基线。

  1. 这是在没有安装上述HIDS的情况下
  2. 很多公司运维人员都有系统镜像,这一步甚至可以省掉。

对机器关机断电,取出硬盘,挂载到一台机器,机器最好用LiveCD启动。

如果想进一步安全起见,最好是参照Linux From Scatch项目,自己做一个Linux系统,再做成LiveCD

机器启动后,把硬盘分区以noexec的标志挂载上去。

对该分区扫描,把文件和目录做一个列表。

拿新列表和基线对比,多出的文件,就可能是Bvp47了。

因为在这种情况下,磁盘里的Bvp47是没办法隐形的。

对于VMware, VirtualBox之类的情况,也可以通过这种方式来捕获它的样本。

至于云方面,本人没怎么操作过镜像这一块,不敢妄言。


原文始发于微信公众号(debugeeker):美国NSA超级后门Bvp47的隐身技能:如何捕捉它

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月9日10:32:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   美国NSA超级后门Bvp47的隐身技能:如何捕捉它https://cn-sec.com/archives/1399642.html

发表评论

匿名网友 填写信息