本文转自: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  {} \;

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

linux服务器上使用find查杀webshell木马方法的更多相关文章

  1. Linux服务器上的禅道迁移及升级方法(Linux to Linux)

    由于阿里云服务器(Linux系统)到期停用,故需要将部署在该服务器上的禅道迁移到新的Linux服务器上.另外,借此机会,正好可以对旧版禅道进行一次升级.下面总结此次迁移和升级的具体操作方法. 一.禅道 ...

  2. PHP网站在Linux服务器上安全设置方案

    本文总结了PHP网站在Linux服务器上一些安全设置(ps:还有一些设置给忘了),在<lnmp一键安装包>大多数参数已经包含,如果有什么更多的设置,大家一起讨论学习 PHP安全配置 1. ...

  3. PHP网站在Linux服务器上面的安全配置

    本文详细总结了PHP网站在Linux服务器上面的安全配置,包含PHP安全.mysql数据库安全.web服务器安全.木马查杀和防范等,很好很强大很安全. PHP安全配置 1. 确保运行php的用户为一般 ...

  4. Linux服务器上监控网络带宽的18个常用命令nload, iftop,iptraf-ng, nethogs, vnstat. nagios,运用Ntop监控网络流量

    Linux服务器上监控网络带宽的18个常用命令 本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量 ...

  5. ireport部署到Linux服务器上遇到的问题解决

    ireport报表在本地Windows环境运行正常,一旦部署到Linux环境上出现了如下问题: 1.打开报表,后台直接报net.sf.jasperreports.engine.util.JRFontN ...

  6. 在Linux服务器上运行Jupyter notebook server教程

    在Linux服务器上运行Jupyter notebook server教程 很多deep learning教程都推荐在jupyter notebook运行python代码,方便及时交互.但只在本地运行 ...

  7. Django项目在Linux服务器上部署和躺过的坑

    引言 在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台.那么问题来了,既然要在服务器上部署, 就需要准备: 1.linux服务器配置 2.linux安装python环境搭建与配置 3. ...

  8. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...

  9. Linux服务器上监控网络带宽的18个常用命令

    [51CTO精选译文]本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以 ...

随机推荐

  1. jquery的cookie插件

    一.JS文件 /*! * jQuery Cookie Plugin v1.4.1 * https://github.com/carhartl/jquery-cookie * * Copyright 2 ...

  2. oracle密码过期问题解决

    1.查看open用户 select username,account_status,expiry_date,profile from dba_users; 2.查看目前密码过期策略 select * ...

  3. volatile关键字作用

    1.阻止编译器对代码进行优化.即读取某个变量值时,不从寄存器中读取而是从变量里读. 2.编译器的优化 在本次线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中:以后 ...

  4. 使用特性将数据库返回的datatable转换成对象列表

    public class ColumnMapAttribute : Attribute { private readonly string _name; public ColumnMapAttribu ...

  5. 防止sql注入(简单)

    (1)mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count ...

  6. nginx和php-fpm的进程启停重载总结

    nginx和php-fpm对于-USR2.-HUP信号的处理方式不一样: TERM, INT(快速退出,当前的请求不执行完成就退出) QUIT (优雅退出,执行完当前的请求后退出) HUP (重新加载 ...

  7. 妙用valueForKeyPath

    valueForKey与valueForKeyPath在KVC中同时出现,都可以使用,难免让开发者迷惑:心里知道肯定是不一样,但具体的用法你会吗?其实valueForKeyPath的功能更强大,支持深 ...

  8. 有些人表面风光,背地里for循环怎么写都要百度

    代码地址 https://github.com/ljshLLW/homework 题目 最大连续子数组和(最大子段和) 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n], ...

  9. mysql批量更新数据

    CREATE PROCEDURE `sp_update_temp_data`( out po_returnvalue ) ) leave_top:BEGIN #Routine body goes he ...

  10. pat1003 迪杰斯特拉法和dfs求最短路

    本题的背景是求定点和定点之间的最短路问题(所有的最短路 不是一个解  是全部解,方法手段来自数据结构课程中的迪杰斯特拉算法和dfs(深度优先遍历). 分别用两种方法编程如下代码 dfs #includ ...