本文转自:http://ju.outofmemory.cn/entry/256317php
只要从事互联网web开发的,都会碰上web站点被入侵的状况。这里我把查杀的一些方法采用随记的形式记录一下,一是方便本身之后的工做须要,二是给其余朋友提供一些参考帮助。写的不周的地方,高手们不要喷,欢迎给我提供更好的意见,对于我我的来讲也是个提升,并表示感谢。node
咱们的服务器环境是linux,因此,确定少不了用find这个命令,而且须要配合ls命令来使用。linux
一、能够查找近3天被修改过的文件,并显示文件列表详细信息:web
find -name "*.php" -type f -mtime -3 -exec ls -l {} \;
固然,结果中可能会包含不少cache类文件,这些文件不是咱们要查找的,那么就须要把这类文件从查询结果中排除掉,每每cache文件都存放到cache特定的目录。服务器
使用 -prune 参数来进行过滤,增长排除某些目录条件的查询命令:spa
find . -path "/xxxxx/caches" -prune -o -name "*.php" -type f -mtime -3 -exec ls -l {} \;
注意:code
(1)、要忽略的路径参数必须紧跟着搜索的路径以后,不然该参数没法起做用。blog
(2)、路径结尾不要有“/”符号。开发
二、查到可疑文件,分析,肯定是木马后,根据木马文件的文件信息查找更多的存放位置。好比木马的文件名称为“muma.php”。字符串
find . -name "muma.php" -type f -mtime -5 -exec ls -l {} \;
以上命令,是放宽了查询时间的长度,查询最近5天该名称文件的信息列表,能够经过查看文件大小来断定是不是一样的木马文件。
看图中命令结果,文件大小都是“233”,则有很大的可能性是一样的木马文件,综合修改时间判断,最好是也cat一下检查核验,以避免误杀。
能够利用find和ls命令的一些更丰富的参数信息来断定分析。
可能会用到find命令的参数功能列表:
find /home -size +512k #查大于512k的文件 find /home -size -512k #查小于512k的文件 find /home -mtime -2 # 在/home下查最近两天内改动过的文件 find /home -atime -1 # 查1天以内被存取过的文件 find /home -mmin +60 # 在/home下查60分钟前改动过的文件 find /home -amin +30 # 查最近30分钟前被存取过的文件 find /home -newer tmp.txt # 在/home下查更新时间比tmp.txt近的文件或目录 find /home -anewer tmp.txt # 在/home下查存取时间比tmp.txt近的文件或目录
结合ls的两种时间信息:
ls -lc filename 列出文件的 ctime 是在写入文件、更改全部者、权限或连接设置时随Inode的内容更改而更改的时间。 ls -l filename 列出文件的 mtime 在写入文件时随文件内容的更改而更改的时间。
ctime和mtime不一致时有多是木马文件,黑客有可能会修改了mtime时间。
三、删除木马文件
这一步应该是进一步分析木马的入侵路径等,可是这个过程又是另外一个很是复杂的系统工程,后边再详细说明,暂时跳过。
find . -name "muma.php" -type f -mtime -5 -size -5k -exec rm -rf {} \;
增长一个过滤条件,-size -5k,即文件大小小于5k的。
四、查找目录下文件内容包含木马特定字符串的文件列表,并删除处理。
#查找文件,并显示文件的ctime时间,比对文件信息 find . -name "*.php" -exec grep -rl "YLbgPfj524" {} \; -exec ls -lc {} \; #确认没有问题后,删除掉 find . -name "*.php" -exec grep -rl "YLbgPfj524" {} \; -exec rm -rfv {} \;