linux下如何隐藏进程(ps/top) 和找到linux进程路径

一般linux系统被攻击去根据进程查看文件或脚本,或者隐藏文件。

1、根据进程名,找出pid

例如python
# ps -ef|grep python 找到python的pid

2、根据pid可在/proc中找到执行文件路径

# ls -l /proc/pytohpid

-------------------------------------------------------------------------

进入/proc目录 ps查看所有符合./cmd的进程,找出其对应的进程号 用ll命令: ll 进程号 如下显示一个示例: [root@Cluster1 proc]# ll 22401 total 0 -r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 cmdline -r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 cpu lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 cwd -> /home/zhouys/sbs/bin -r-------- 1 zhouys zhouys 0 Dec 11 11:10 environ lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 exe -> /home/zhouys/sbs/bin/cbs (deleted) dr-x------ 2 zhouys zhouys 0 Dec 11 11:10 fd -r-------- 1 zhouys zhouys 0 Dec 11 11:10 maps -rw------- 1 zhouys zhouys 0 Dec 11 11:10 mem -r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 mounts lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 root -> / -r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 stat -r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 statm -r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 status /proc文件系统下的 进程号目录 下面的文件镜像了进程的当前运行信息, 从中可以看到: cwd符号链接的就是进程22401的运行目录; exe符号连接就是执行程序的绝对路径; cmdline就是程序运行时输入的命令行命令;本例为:./cbs cpu记录了进程可能运行在其上的cpu;显示虚拟的cpu信息 environ记录了进程运行时的环境变量 fd目录下是进程打开或使用的文件的符号连接 ... 通过cwd直接进入进程运行目录,通过查看相关信息就可以定位此目录对应那个端口号,以及 定位是那个应用才使用此服务程序。
--------------------------------------------------------------------------

如何在2.4内核中隐藏进程。

其核心思想就是把task->pid变成0,就成了0号进程。而在ps,top命令中,是不显示0号进程的相关信息。这么一来,在/proc/文件夹下就不会有该进程的相关信息了。

于是把代码稍微做了一点改动,在2.6.18-308.4.1.el5 内核中还是好使的。

上代码:

#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/sched.h> #include <linux/list.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("JASON.LIN.YU"); static pid_t pid = 0; static pid_t old_pid = 0; static struct task_struct *task = NULL; //static struct task_struct *old_task = NULL; static char * mystring = NULL; module_param(pid, int, 0); module_param(mystring, charp, 0); MODULE_PARM_DESC(pid, "The pid to hide"); MODULE_PARM_DESC(mystring, "The process's name"); int start_module(void) {         task = find_task_by_pid(pid);         if(NULL == task){                 return 1;         }         old_pid = task->pid;         task->pid = 0;//关键在于改变pid=0         return 0; } void clean_module(void) {         struct list_head* list;         list_for_each(list, &current->tasks){                 task = list_entry(list, struct task_struct, tasks);                 if( 0 == memcmp(mystring, task->comm, strlen(mystring)+1)){                         task->pid = old_pid;//替换pid                         break;                 }         }         return; } rmmod后,proc文件夹下该进程有重新出现。

注意:使用这个方法不能ctrl+C,或者exit()调用,否则系统oops。

====================================================================================================================================

另外,还有一种比较简便的方法,就是把int main(int argc, char*argv[])中的参数变成0,那么就在单纯的ps命令中就不会显示进程相关信息,但是/proc/文件夹下,还会存在该进程的相关信息。

代码如下:

/*test.c*/

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) {   int i = 0;   memset(argv[i], 0, strlen(argv[i]));   for(;;);   return 0; }

gcc -o hide test.c

./hide

ps aux| grep hide

>>>root      2437  0.0  0.0   4016   700 pts/1    R+   13:26   0:00 grep hide

但是top命令会显示出hide进程

以及使用ps -u username -U username会把进程信息出卖。

=================================================================================

gdm       1732  1690  0 08:59 ?        00:00:00 gnome-power-manager root      1734     1  0 08:59 ?        00:00:00 /usr/libexec/polkit-1/polkitd gdm       1744     1  0 08:59 ?        00:00:00 /usr/bin/pulseaudio --start --log-target=syslog rtkit     1746     1  0 08:59 ?        00:00:00 /usr/libexec/rtkit-daemon root      1752  1599  0 08:59 ?        00:00:00 pam: gdm-password root      1759  1412  0 09:00 ?        00:00:00 sshd: root@pts/0  root      1761  1759  0 09:00 pts/0    00:00:00 -bash root      1795     1  0 09:01 ?        00:00:00 /usr/sbin/anacron -s root      1843  1761  0 09:19 pts/0    00:00:00 ps -ef [root@dj 11]#  [root@dj 11]#  [root@dj 11]#  [root@dj 11]# cd /proc/1732 [root@dj 1732]# ls attr        comm             fd        mem         numa_maps      root       stat autogroup   coredump_filter  fdinfo    mountinfo   oom_adj        sched      statm auxv        cpuset           io        mounts      oom_score      schedstat  status cgroup      cwd              limits    mountstats  oom_score_adj  sessionid  syscall clear_refs  environ          loginuid  net         pagemap        smaps      task cmdline     exe              maps      ns          personality    stack      wchan [root@dj 1732]# ps -e | grep gnome  1690 ?        00:00:00 gnome-session  1716 ?        00:00:01 gnome-settings-  1730 ?        00:00:00 polkit-gnome-au  1732 ?        00:00:00 gnome-power-man [root@dj 1732]# cd /proc/1732 [root@dj 1732]# ls attr        comm             fd        mem         numa_maps      root       stat autogroup   coredump_filter  fdinfo    mountinfo   oom_adj        sched      statm auxv        cpuset           io        mounts      oom_score      schedstat  status cgroup      cwd              limits    mountstats  oom_score_adj  sessionid  syscall clear_refs  environ          loginuid  net         pagemap        smaps      task cmdline     exe              maps      ns          personality    stack      wchan [root@dj 1732]#  [root@dj 1732]#  [root@dj 1732]#  [root@dj 1732]# ls -l total 0 dr-xr-xr-x 2 gdm gdm 0 Jan 14 09:20 attr -rw-r--r-- 1 gdm gdm 0 Jan 14 09:20 autogroup -r-------- 1 gdm gdm 0 Jan 14 09:20 auxv -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 cgroup --w------- 1 gdm gdm 0 Jan 14 09:20 clear_refs -r--r--r-- 1 gdm gdm 0 Jan 14 08:59 cmdline -rw-r--r-- 1 gdm gdm 0 Jan 14 09:20 comm -rw-r--r-- 1 gdm gdm 0 Jan 14 09:20 coredump_filter -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 cpuset lrwxrwxrwx 1 gdm gdm 0 Jan 14 09:20 cwd -> /var/gdm -r-------- 1 gdm gdm 0 Jan 14 08:59 environ lrwxrwxrwx 1 gdm gdm 0 Jan 14 08:59 exe -> /usr/bin/gnome-power-manager dr-x------ 2 gdm gdm 0 Jan 14 08:59 fd dr-x------ 2 gdm gdm 0 Jan 14 09:20 fdinfo -r-------- 1 gdm gdm 0 Jan 14 09:20 io -rw------- 1 gdm gdm 0 Jan 14 09:20 limits -rw-r--r-- 1 gdm gdm 0 Jan 14 09:20 loginuid -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 maps -rw------- 1 gdm gdm 0 Jan 14 09:20 mem -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 mountinfo -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 mounts -r-------- 1 gdm gdm 0 Jan 14 09:20 mountstats dr-xr-xr-x 5 gdm gdm 0 Jan 14 09:20 net dr-x--x--x 2 gdm gdm 0 Jan 14 09:20 ns -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 numa_maps -rw-r--r-- 1 gdm gdm 0 Jan 14 09:20 oom_adj -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 oom_score -rw-r--r-- 1 gdm gdm 0 Jan 14 09:20 oom_score_adj -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 pagemap -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 personality lrwxrwxrwx 1 gdm gdm 0 Jan 14 09:20 root -> / -rw-r--r-- 1 gdm gdm 0 Jan 14 09:20 sched -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 schedstat -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 sessionid -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 smaps -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 stack -r--r--r-- 1 gdm gdm 0 Jan 14 08:59 stat -r--r--r-- 1 gdm gdm 0 Jan 14 09:11 statm -r--r--r-- 1 gdm gdm 0 Jan 14 09:11 status -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 syscall dr-xr-xr-x 3 gdm gdm 0 Jan 14 09:20 task -r--r--r-- 1 gdm gdm 0 Jan 14 09:20 wchan [root@dj 1732]# 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值