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

来源:互联网 发布:淘宝远程付款安全吗 编辑:程序博客网 时间:2024/06/04 18:06

一般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-managerroot      1734     1  0 08:59 ?        00:00:00 /usr/libexec/polkit-1/polkitdgdm       1744     1  0 08:59 ?        00:00:00 /usr/bin/pulseaudio --start --log-target=syslogrtkit     1746     1  0 08:59 ?        00:00:00 /usr/libexec/rtkit-daemonroot      1752  1599  0 08:59 ?        00:00:00 pam: gdm-passwordroot      1759  1412  0 09:00 ?        00:00:00 sshd: root@pts/0 root      1761  1759  0 09:00 pts/0    00:00:00 -bashroot      1795     1  0 09:01 ?        00:00:00 /usr/sbin/anacron -sroot      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]# lsattr        comm             fd        mem         numa_maps      root       statautogroup   coredump_filter  fdinfo    mountinfo   oom_adj        sched      statmauxv        cpuset           io        mounts      oom_score      schedstat  statuscgroup      cwd              limits    mountstats  oom_score_adj  sessionid  syscallclear_refs  environ          loginuid  net         pagemap        smaps      taskcmdline     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]# lsattr        comm             fd        mem         numa_maps      root       statautogroup   coredump_filter  fdinfo    mountinfo   oom_adj        sched      statmauxv        cpuset           io        mounts      oom_score      schedstat  statuscgroup      cwd              limits    mountstats  oom_score_adj  sessionid  syscallclear_refs  environ          loginuid  net         pagemap        smaps      taskcmdline     exe              maps      ns          personality    stack      wchan[root@dj 1732]# [root@dj 1732]# [root@dj 1732]# [root@dj 1732]# ls -ltotal 0dr-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 cpusetlrwxrwxrwx 1 gdm gdm 0 Jan 14 09:20 cwd -> /var/gdm-r-------- 1 gdm gdm 0 Jan 14 08:59 environlrwxrwxrwx 1 gdm gdm 0 Jan 14 08:59 exe -> /usr/bin/gnome-power-managerdr-x------ 2 gdm gdm 0 Jan 14 08:59 fddr-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 mountstatsdr-xr-xr-x 5 gdm gdm 0 Jan 14 09:20 netdr-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 personalitylrwxrwxrwx 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 syscalldr-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]# 


0 0
原创粉丝点击