169it科技资讯
169it -->


当前位置:  操作系统/服务器>linux

Linux下查找后门程序 CentOS 查后门程序的shell脚本

    来源: 互联网  发布时间:2014-10-17

每个进程都会有一个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系统也可能被破坏了,比如被修改过。


    
相关技术文章:
    ▪Shell 函数参数

     在shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数... 带参数的函数示例: #!/bin/bash funWithParam(){ echo "The value of the first parameter is $1 !" echo "The value of the second parameter is $2 !" echo "The value of the tenth parameter is $10 !" echo "The value of the tenth parameter is ${10} !" echo "The value of the eleventh parameter is ${11} !" echo "The amount of the parameters is $# !" echo "The string of the parameters is $* !" } funWithParam 1 2 3 4 5 6 7 8 9 34 73 输出: The value of the......


    ▪linux shell 自定义函数方法(定义、返回值、变量作用域)

     一、定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255 实例(testfun1.sh): #!/bin/sh fSum 3 2; function fSum() { echo $1,$2; return $(($1+$2)); } fSum 5 7; total=$(fSum 3 2); echo $total,$?; sh testfun1.sh testfun1.sh: line 3: fSum: command not found 5......


    ▪Shell实现判断进程是否存在并重新启动脚本分享

     简洁版: #! /bin/bash # author caoxin # time 2012-10-10 # program : 判断进行是否存在,并重新启动 function check(){ count=`ps -ef |grep $1 |grep -v "grep" |wc -l` #echo $count if [ 0 == $count ];then nohup python /runscript/working/$1 & fi } check behaviors.py 详细版: #!/bin/bash # #调用关闭jboss进程脚本 stopMethodServer.sh #打印出当前的jboss进程:grep jboss查询的jboss进程,grep -v "grep" 去掉grep进程 jmsThread=`ps -ef | grep gdms | grep jboss | grep -v "grep"` echo $jmsThread #查询jboss进程个数:wc -l 返回行数 ......


 
最新技术文章:
    ▪linux系统中的列出敏感用户的脚本代码

     此处的敏感用户是指这个用户属于多个组,或者这个用户属于的组名跟这个用户名不一样 #! /bin/bash #list user who belong to more than one group #and list user who belong to the group which isn't the same as the username #w is whitelist,we will not think user in this whitelist is special or dangerous w=("root" "adm" "games" "operator" "halt" "shutdown" "sync" "daemon" "bin" "operator") function WhiteList() { for i in ${w[@]} do if [ "$i" == "$1" ];then return 1 fi done return 0 } IFS=" " for LINE in `cat /etc/passwd|awk -F: '{print $1}'` do WhiteList $LINE; #if $? equal 1,means i......


    ▪a10 config backup for aXAPI

     #!/bin/bash ################################################# # # script by Vincent yu # created at 20140306 # a10 config backup for aXAPI version: 2.1 # # ################################################# A10IP="1.1.1.1 1.1.1.2" USER=admin PASSWORD=a10 TODAY=`date "+%Y%m%d"` BACKUPDIR=/path/$TODAY TIMENOW=`date "+%Y%m%d%H%m"` LOG="/tmp/mail" MAILLIST="ng@ng.com.tw" for COUNT in $A10IP do METHOD1="method=authenticate&username=$USER&password=$PASSWORD" SESSION=`curl -k --data $METHOD1 https://$COUNT/services/rest/V2.1/ | sed -n -e 's/.*\(.*\)<\/session_id>.*/\1/p'` if [ ! -d $BACKUPDIR ];then mkdir -p $BACKUPDIR fi GETHOST_......


    ▪一键备份gitolite服务器的Shell脚本

     运行一次就能够把gitolite服务器上的仓库备份到本地. 第一次运行会创建远程仓库的本地镜像, 以后每次运行会把本地镜像更新. 本程序只支持 ssh方式 其他的git server貌似不会在 ssh git@xxx 的时候返回repo列表, 所以只能手动备份. #!/bin/sh server=serv_addr root_dir=`pwd` echo "whill back in dir: ${root_dir}" ssh "git@${server}" | awk '{print $1$2,$3}' | grep "^RW" | awk '{print $2}' | while read line do echo " " echo "-------------------------------------" if [ ! -d "${root_dir}/${line}.git" ]; then echo "repo not init on local, init it ..." mkdir -p "${root_dir}/${line}.git" ......


 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号