libprocesshider隐藏指定进程

项目地址:https://github.com/gianlucaborello/libprocesshider

1
git clone https://github.com/gianlucaborello/libprocesshider.git

修改 processhider.c,设置process_to_filter 值为自己想要隐藏的进程名。

image-20230210145455674

然后依次执行

1
2
3
cd libprocesshider/ && make
cp libprocesshider.so /usr/local/lib/
echo /usr/local/lib/libprocesshider.so >> /etc/ld.so.preload

此时再运行top或者ps相应进程就不可见了

原理

查看processhider.c源码可以发现,原理上就是重写了readdir的系统调用,因为无论ps,top,ls都会调用readdir,process_to_filter定义了你要过滤进程的名字,这样就达到了过滤隐藏目的。

利用 LD_PRELOAD 来实现系统函数的劫持,程序在执行外部库函数调用的时候,会根据动态库的优先级来加载库函数,linux下库的加载顺序为/etc/ld.so.preload( LD_PRELOAD)>/etc/ld.so.cache>/etc/ld.so.conf,当程序调用外部库的函数,如果LD_PRELOAD里面有自定义和其他系统库相同的库函数,则优先加载我们自定义的函数,这样就达到了劫持系统函数的目的。

由于ps,top,ls等几乎所有的查看命令都基于readdir系统调用,所以能够完美的隐藏掉进程,对付一般的小白是完全够用了。如果为了避免分析人员查找/etc/ld.so.preload而定位到进程,我们可以不创建ld.so.preload文件,而使用LD_PRELOAD宏来定义库的路径。例如将export LD_PRELOAD=/usr/local/lib/libprocesshider.so放到linux系统启动过程中rc文件去加载,加大定位的难度。

关联样本

htt^p://5.133.65.53/soft/linux/sshpkit.so

htt^p://5.133.65.53/soft/linux/sshkit.so

image-20230210151713746


libprocesshider隐藏指定进程
http://wangchenchina.github.io/2023/02/10/libprocesshider隐藏指定进程/
作者
Demo
发布于
2023年2月10日
许可协议