程序员攻防实战:linux下这样隐藏进程,简直太溜了,赶紧用起来

某些时候程序员为了不让其他人不小心或者恶意破坏掉你运行的程序,或者我们要做些“见不得光”的事情,就有隐藏进程的需求,目的是让小白或者初级运维无法通过ps或者top查找到你的程序,达到隐藏目的。前两天正好项目上需要用到隐藏进程的需求,所以分析了下个人觉得目前比较好的做法。


linux下查看进程的方法

ps命令

top命令

目前网上很多方法基本都是通过如下方式来达到进程隐藏:

1.根据分组权限来实现不同用户组查看不同的进程权限。

2.修改内核,将需要隐藏的进程的进程pid改为0(task->pid = 0),因为ps,top命令不会显示进程id为0的进程。

3.修改内核,hook掉系统调用,在hook函数中修改逻辑判断已达到隐藏进程。

第一种如果其他有管理员权限就没有办法隐藏了。第二三中需要懂内核编程,今天我们说下第四种办法:在用户态修改系统调用,从而隐藏进程。


PS/TOP显示进程原理

strace命令是一个常用的代码调试工具,它可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。因此对于调试程序出错是非常有用的。这里不过多展示strace的调试用法,具体可以查看详细的strace命令。

我们看下ps,top是如何显示进程信息的:

strace ps

strace top

通过strace命令可以看出 ps,top等查看进程的信息都是通过调用 readdir 方法遍历 /proc 目录来获取进程信息。每个动态创建的进程ID号下面详细的记录了关于该进程的fd,mem,io,cpuset等进程信息。


既然进程信息是proc目录下动态生成的,因此最显而易见和最彻底的方法就是不让proc下生成该进程信息。通过查找代码,定位到内核通过fs/proc/base.c中的proc_pid_lookup查找进程号,然后由proc_pid_instantiate来在proc下创建该进程号相关的进程信息。因此我们只需要在proc_pid_lookup中匹配要过滤的进程名,然后直接返回就行了,如下:


这种办法彻底上不创建该进程信息,但是要修改编译内核,实际上是不太可取的。而我们目的也只是隐藏,不必完全屏蔽进程信息。因此,有没有一种办法在用户态通过劫持系统调用而忽略掉我们的进程呢?


本着绝不重复造轮子的工匠精神,瓶子哥搜罗了下,还真有现成的,即通过劫持readdir系统调用实现ps,top无法查找到进程而达到隐藏进程。


我们先实战,在看其实现原理。

1 . 实现:

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

2) cd

libprocesshider/ && make

3) cp libprocesshider.so /usr/local/lib/

4)echo

/usr/local/lib/libprocesshider.so >> /etc/ld.so.preload

这一步也可以用export LD_PRELOAD=/usr/local/lib/libprocesshider.so来代替。


执行命令上述命令前,运行mtop进程,ps可以查看到mtop的进程。

执行上述命令后,ps 查看,可以发现已经找不到该进程了,而且 top,ls /proc/下面也不能找到该进程,完美达到隐藏进程。

2. 原理:

我们查看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文件去加载,加大定位的难度。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容