一般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, ¤t->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]#