linux服务器上使用find查杀webshell木马方法
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 {} ;
Oracle & MSSQL & Postgresql & Mysql 调优 & 优化
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
C# - 为值类型重定义相等性
C# - 为值类型重定义相等性为什么要为值类型重定义相等性原因主要有以下几点: 值类型默认无法使用 == 操作符,除非对它进行重写再就是性能原因,因为值类型默认的相等性比较会使用装箱和反射,所以性能很差根据业务需求,其实际相等性的意义和默认的比较结果可能会不同,但是这种情况可能不较少所以建议是:所有供外部使用的struct都实现相等性。 实现步骤重写object.Equals()方法实现IEquatable.Equals()接口方法重写 == 和 != 操作符重写object.GetHashCode()具体来说: 重写object.Equals()方法,是避免了反射,因为System.ValueType里面对object.Equals()方法的重写实现如下: 这里用到了反射。 而实现IEquatable.Equals()接口方法,可以避免装箱,并且保证类型安全。 而实现==和!=,也就允许值类型使用该操作符了,写起来更方便直观,易于理解。而且这两个操作符必须一同实现。 而重写object.GetHashCode(),则是一个最佳实践。 所有为值类型重定义相等性,一共分4步,每步都是必须...
- 下一篇
好程序员web前端培训分享7个步骤:让JavaScript变得更好
好程序员web前端培训分享7个步骤:让JavaScript变得更好,随着浏览器性能提高,伴随着新的HTML5的编程接口的稳步采用,网页上的JavaScript的音量在逐渐增加。然而,一个写得不好的程序编码却拥有着打破整个网站,让用户为之沮丧和驱赶潜在客户的潜力。 开发人员必须使用所有供他们任意使用的工具和技术来提升他们的代码的质量,并有信心确认每次的执行都是可以预见的。这是一个在我心灵深处的话题并且我已经工作多年找到一组开发过程中来遵循的步骤以确保只有最高质量的代码可以被发布。 您只要按照这七个步骤操作就会大大提高您的JavaScript项目的质量。使用这个工作流程,错误将会减少并且将很多处理优化,让用户拥有一个愉悦的上网浏览体验。 01.代码 首先在你的函数里调用ECMAScript5的严格模式和一个“严格模式”的声明,并使用该模块的设计模式,在自执行的函数闭包里,通过沙箱独立的代码模块尽量减少全局变量内的使用,通过任何外部依赖关系以保持全局变量模块清晰,简明。只有使用已建立好的,行之有效的,已通过测试并结果良好的第三方的函数库和框架,并保持你的函数处于小值,从你的模组操作和其他视图...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果