【eBPF攻防】隐匿后渗透容器Nysm浅浅析

admin 2024年3月8日01:01:59评论10 views字数 1977阅读6分35秒阅读模式

概述

Nysm 是一款针对eBPF的隐匿 后渗透容器,旨在让攻击工具躲避系统管理员的监测。它不仅可以隐藏eBPF程序本身,还能对包括bpftool、ps、top、sockstat、ss、rkhunter、chkrootkit、lsof、auditd等在内的多种工具实现隐蔽。Nysm不仅能隐藏新的eBPF程序、映射和链接,还能隐匿Auditd生成的日志、新的进程ID、以及新的网络套接字。Nysm 仅展示eBPF在红队攻防和安全研究方面的潜力,故仍具备一定的缺陷。

本文仅对 Nysm 实现隐匿能力的部分原理进行浅析,抽象出技术要点,不涉及具体代码。更多实现原理、技术细节可在精选文章中通过二维码加我好友获取。

隐匿特定进程(processA)的PID

  1. 监控PID分配与释放。捕捉并存储进程(processA)新分配的PID(pidA),在PID释放时在存储结构中清除相应的PID信息。

  2. 跟踪目录项读取。追踪系统中对目录进行读取的行为,特别是进程目录/proc的读取,因为该目录中包含了系统中所有进程的信息。Nysm 会在系统管理员检测程序(比如ps)读取目录项之前捕获信息。

  3. 隐匿特定PID。上面说"读取目录项之前捕获信息",目的是:检测目录项对应的PID是不是需要隐匿的PID(pidA),如果是,Nysm 会修改返回给用户空间程序的目录项信息,从而使该PID对应的目录项"消失"。这是通过修改目录项数据的d_reclen字段来实现的,该字段定义了目录项的长度,例如修改为0,就可以在用户空间的程序(比如ps)试图读取该目录项时跳过它,使得进程(processA)达到"消失"的效果。

这里运行nysm、sss两个进程,

【eBPF攻防】隐匿后渗透容器Nysm浅浅析

无法获取到进程信息。

【eBPF攻防】隐匿后渗透容器Nysm浅浅析

隐匿Nysm程序产生的Auditd日志

  1. 捕获并存储Nysm程序输出的Auditd日志。在Auditd日志消息结束时捕获并存储审计日志信息,存储在 map_audit_log_end_msg_data 映射中,审计消息与审计消息计数的映射。

  2. 捕获并存储Nysm程序输出消息日志的缓冲区地址,存储在 map_recvfrom_pid 映射中,进程的用户缓冲区地址与其线程组ID的映射。

  3. 隐藏Nysm程序产生的Auditd日志。通过监控和处理与审计日志结束相关的系统调用,来隐藏Nysm程序产生的Auditd日志。检查map_recvfrom_pid 映射是否有与当前进程的线程组ID相关联的用户缓冲区地址,如果找到,会尝试从这个用户缓冲区地址中读取审计消息数据,并检查这个消息在 map_audit_log_end_msg_data 映射中的计数。如果对应的审计消息计数为0,这意味着没有更多相关的消息需要处理,将从 map_audit_log_end_msg_data 映射中删除这个审计消息(这一步是确保不再跟踪不需要隐藏的审计日志);如果计数不为0,将减少计数值并更新映射,表示还有其他相关的审计日志需要处理。最后,将零值写入用户空间缓冲区中,这实际上是在清空或修改原始审计消息的内容,从而阻止这些消息被用户空间程序(如Auditd日志收集器)正确读取和记录。这个操作直接影响了用户空间应用程序能否看到原始的审计日志数据,从而实现了审计日志的隐藏。

实验环境:云服务器ubuntu 22.04,自带并默认开启Auditd服务以及相关工具,

// 查看Auditd服务状态sudo systemctl status audit

【eBPF攻防】隐匿后渗透容器Nysm浅浅析

添加监控规则,监控程序执行权限使用,

// 直接使用auditctl命令添加短暂规则,这些规则会即时生效// 但不会自动保存到/etc/audit/audit.rules文件中,只是当前shell短暂的规则。sudo auditctl -a always,exit -F path=/usr/bin/sss -F perm=x -k my_program_audit

// 查看审计日志// 1提供了一个更高级别的报告视图,可以使用它来获取摘要信息sudo aureport -k// 2详细信息sudo ausearch -k my_program_audit

【eBPF攻防】隐匿后渗透容器Nysm浅浅析

成功监控到程序的执行。

当使用Nysm执行程序时,日志会被隐藏。

【eBPF攻防】隐匿后渗透容器Nysm浅浅析

隐匿Nysm自身

Nysm是一个eBPF程序。我们可以使用bpftool管理和调试内核中的BPF程序相关信息,比如我这里启动一个 cilium-ebpf 官方案例,利用ebpf对eth0进行数据包的计数,

【eBPF攻防】隐匿后渗透容器Nysm浅浅析

期间使用命令列出所有BPF程序,可以查看到 cilium-ebpf

bpftool prog list

【eBPF攻防】隐匿后渗透容器Nysm浅浅析

但是对于Nysm而言,能够对非Nysm进程隐藏BPF程序、映射和链接的存在,bpftool 无效。

项目地址

地址

https://github.com/eeriedusk/nysm

封面图,AI画的

【eBPF攻防】隐匿后渗透容器Nysm浅浅析

原文始发于微信公众号(安全小将李坦然):【eBPF攻防】隐匿后渗透容器Nysm浅浅析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月8日01:01:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【eBPF攻防】隐匿后渗透容器Nysm浅浅析http://cn-sec.com/archives/2557283.html

发表评论

匿名网友 填写信息