zoukankan      html  css  js  c++  java
  • linux服务器上使用find查杀webshell木马方法

    本文转自:http://ju.outofmemory.cn/entry/256317

    只要从事互联网web开发的,都会碰上web站点被入侵的情况。这里我把查杀的一些方法采用随记的形式记录一下,一是方便自己以后的工作需要,二是给其他朋友提供一些参考帮助。写的不周的地方,高手们不要喷,欢迎给我提供更好的意见,对于我个人来说也是个提高,并表示感谢。

    我们的服务器环境是linux,所以,肯定少不了用find这个命令,并且需要配合ls命令来使用。

    1、可以查找近3天被修改过的文件,并显示文件列表详细信息:

    find -name "*.php" -type f -mtime -3 -exec ls -l {} ;

    当然,结果中可能会包含很多cache类文件,这些文件不是我们要查找的,那么就需要把这类文件从查询结果中排除掉,往往cache文件都存放到cache特定的目录。

    使用 -prune 参数来进行过滤,增加排除某些目录条件的查询命令:

    find . -path "/xxxxx/caches" -prune -o  -name "*.php"  -type f -mtime -3 -exec ls -l {} ;

    注意:

    (1)、要忽略的路径参数必须紧跟着搜索的路径之后,否则该参数无法起作用。

    (2)、路径结尾不要有“/”符号。

    2、查到可疑文件,分析,确定是木马后,根据木马文件的文件信息查找更多的存放位置。比如木马的文件名称为“muma.php”。

    find . -name "muma.php" -type f -mtime -5 -exec ls -l  {} ;

    20160426144502

    以上命令,是放宽了查询时间的长度,查询最近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时间。

    3、删除木马文件

    这一步应该是进一步分析木马的入侵路径等,但是这个过程又是另一个非常复杂的系统工程,后边再详细说明,暂时跳过。

    find . -name "muma.php" -type f -mtime -5    -size   -5k -exec rm -rf  {} ;

    增加一个过滤条件,-size -5k,即文件大小小于5k的。

    4、查找目录下文件内容包含木马特定字符串的文件列表,并删除处理。

    #查找文件,并显示文件的ctime时间,比对文件信息
    find . -name "*.php" -exec grep -rl "YLbgPfj524" {} ; -exec ls -lc {} ;
    
    
    #确认没有问题后,删除掉
    find . -name "*.php" -exec grep -rl "YLbgPfj524" {} ; -exec rm -rfv {} ;
  • 相关阅读:
    Permutation Test 置换检验
    计算机会议排名等级
    国际顶级计算机会议
    机器学习中的范数规则化 L0、L1与L2范数 核范数与规则项参数选择
    岭回归(Ridge Regression)
    popupWindow使用timePicker时点击出现闪屏问题的解决办法
    Java:单例模式的七种写法
    JSONObject遍历获取键值方法合并两个JSONObject
    解决android studio上“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65935”问题
    解决同时共用MOB公司的shareSDK和SMSSDK的冲突问题
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/10727694.html
Copyright © 2011-2022 走看看