简单的Linux查找后门思路和shell脚本分享

每个进程都会有一个PID,而每一个PID都会在/proc目录下有一个相应的目录,这是linux(当前内核2.6)系统的实现。

一般后门程序,在ps等进程查看工具里找不到,因为这些常用工具甚至系统库在系统被入侵之后基本上已经被动过手脚(网上流传着大量的rootkit。假如是内核级的木马,那么该方法就无效了)。
因为修改系统内核相对复杂(假如内核被修改过,或者是内核级的木马,就更难发现了),所以在/proc下,基本上还都可以找到木马的痕迹。

思路:

在/proc中存在的进程ID,在 ps 中查看不到(被隐藏),必有问题。


代码如下:

#!/bin/bash

str_pids="`ps -A | awk '{print $1}'`";
for i in /proc/[[:digit:]]*;
do
 if echo "$str_pids" | grep -qs `basename "$i"`;
 then
  :
 else
  echo "Rootkit's PID: $(basename "$i")";
 fi
done

讨论:

检查系统(Linux)是不是被黑,其复杂程度主要取决于入侵者“扫尾工作”是否做得充足。对于一次做足功课的入侵来说,要想剔除干净,将是一件分精密、痛苦的事情,通常这种情况,需要用专业的第三方的工具(有开源的,比如tripwire,比如aide)来做这件事情。
而专业的工具,部署、使用相对比较麻烦,也并非所有的管理员都能熟练使用。

实际上Linux系统本身已经提供了一套“校验”机制,在检查系统上的程序没有被修改。比如rpm包管理系统提供的 -V 功能:


代码如下:

rpm -Va

即可校验系统上所有的包,输出与安装时被修改过的文件及相关信息。但是rpm系统也可能被破坏了,比如被修改过。

(0)

相关推荐

  • linux的一个find命令配合rm删除某天前的文件方法

    语句写法:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前带"."的文件删除 find /usr/local/backups -mtime +10 -name "*.*" -exec rm -rf {} \; find:linux的查找命令,用户查找指定条件的文件 /usr/local/backups:想要进行清理的任意目录 -

  • linux使用find和crontab命令定期清理过期文件

    crontab 命令 crontab 命令是 Linux 中用来设定重复执行命令或脚本的工具.它能够在指定的时间段内,按照需求以某一时间间隔执行命令或脚本. crontab 的基本用法 crontab [-u <user>] [-e|-l|-r] crontab <filename> crontab <filename> 可以读入一个以 crontab 语法书写的文件,并依照文件内的指示执行定时任务.与此同时,crontab -l 能够在标准输出上列出当前用户所有的定时

  • 浅谈Linux下通过find命令进行rm文件删除的小技巧

    我们经常会通过find命令进行批量操作,如:批量删除旧文件.批量修改.基于时间的文件统计.基于文件大小的文件统计等,在这些操作当中,由于rm删除操作会导致目录结构变化,如果要通过find结合rm的操作写成脚本,就会遇到一些麻烦,本文通过一个例子为大家进行介绍. 系统环境: SUSE Linux Enterprise Server 11 或 Red Hat Enterprise Linux 问题症状: 客户现场有一个自动化的脚本,有以下的find语句,每天运行以删除某个目录下7天以前的文件或目录,

  • Linux下如何使用grep命令查找带有tab(退格)的字符

    需要在日志文件统计删除的主帖,而日志文件是tab(退格)字符隔开的:假设日志文件名叫delete.log. 保存格式和保存的数据如下, 删除日期            帖子类型(11为主帖,12为回帖)    帖子id    操作人id 2011-11-01 00:05       12      71163578        1153089  2011-11-01 00:19       11      71163800        134379  2011-11-01 00:19    

  • Linux中文件查找方法大全

    每一种操作系统都是由成千上万个不同种类的文件所组成的.其中有系统本身自带的文件,用户自己的文件,还有共享文件等等.我们有时候经常忘记某份文件放在硬盘中的哪个地方.在微软的Windows操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击"开始"-"搜索"中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档. 可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情.毕竟在Linux中需要我们使

  • Linux中find命令的用法入门

    前言 Linux系统下的Find 命令具有很强大的搜索功能,可以遍历整个文件系统.所以 find 命令很耗资源,有时候甚至会耗费很长时间,因此建议把它放在后台执行. Find 命令格式如下所示: find pathname -options [-print -exec -ok -] 介绍一种简单易记的格式: find <指定目录> <指定条件> <指定动作> 动作参数 1.-exec 命令名称 {} \; 对符合条件的文件执行所给的 unix 命令,而不询问用户是否需要

  • Linux查找包含指定文字的文件(linux查找指定文件)

    在Linux下,查找包含字符串的文件使用的命令是grep.如果要查找包含**的文件,使用grep ** file是不行的,因为grep认为**是正则表达式,结果不可预料.正确的做法是:grep '\*\*' file比如: 复制代码 代码如下: [root@qzw www.vktone.com]# grep '\*\*' *.html */*.html >filtered.txt[root@qzw www.vktone.com]#

  • linux find下如何统计一个目录下的文件个数以及代码总行数的命令

    今天遇到如题所示问题,网上捣鼓半天,有收获 知道指定后缀名的文件总个数命令:        find . -name "*.html" | wc -l 知道一个目录下代码总行数以及单个文件行数:        find . -name "*.html" | xargs wc -l

  • linux c 查找使用库的cflags与libs的方法详解

    很多时候,使用一些特别的库, 在编译可执行程序时, 需要添加额外的 CFLAGS 和 LIBS . 否则会提示找不到指定的头文件或者"undefined reference to ..." 的错误信息.假如程序 test.c 中使用了 libxml 的 api, 直接 复制代码 代码如下: $ gcc -Wall -o test test.c 会提示错误消息.  执行 复制代码 代码如下: $ ls /usr/lib/pkgconfig/ | grep libxmllibxml-2.0

  • Linux中文件查找技术大全

    每一种操作系统都是由成千上万个不同种类的文件所组成的.其中有系统本身自带的文件,用户自己的文件,还有共享文件等等.我们有时候经常忘记某份文件放在硬盘中的哪个地方.在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击"开始"-"搜索"中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档. 可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情.毕竟在Linux中需要我们使

随机推荐