用搜索神器Everything定位Webshell木马后门
Everything是速度最快的文件名搜索软件。其速度之快令人震惊,百G硬盘几十万个文件,可以在几秒钟之内完成索引;文件名搜索瞬间呈现结果。它小巧免费,支持中文,支持正则表达式,可以通过HTTP或FTP分享搜索结果。
Everything搜索工具的最大优点是速度。其速度不是快,是极快;用户不是满意,而是震惊。
因为Everything的索引无需逐一扫描硬盘文件,而是直接读取NTFS文件系统的USN日志。所以速度已经快到令人震惊,甚至是愤怒了:凭什么可以这么快!
“善用佳软”上有Everything的详细介绍:http://xbeta.info/everything-search-tool.htm
—–分割线—–
小菜最近闲着无事,搭建了一个blog,但因为是第一次,比较紧张,害怕被黑客入侵,所以狂补安全方面的知识,但无奈自身水平不够,而且在了解了一些安全知识之后认为如果网站被盯上了,被入侵是迟早的是,所以,我只好做被入侵之后的打算了:尽可能的查找被嵌入的webshell……
然后最近也在总结一些软件的使用经验,刚好到了Everything这款搜索神器,学着学着就想试试用Everything来辅助webshell的查找,也就有了下面的内容(这里查找的思路是通过文件的修改时间来进行判断的,因为对于一个相对稳定的网站来说,网页代码不会经常性的发生变化,所以可以通过文件的修改时间进行辅助判断):
1.通过文件的修改日期
dateaccessed:<date> #搜索在指定日期被访问的文件或文件夹
datecreated:<date> #搜索在指定日期被创建的文件或文件夹
datemodified:<date> #搜索在指定日期被修改的文件或文件夹
da:<date> #dateaccessed:<date>的简写
dc:<date> #datecreated:<date>的简写
dm:<date> #datemodified:<date>的简写
其中的date的语法格式和一些常量如下:
date格式:
year
month/year or year/month depending on locale settings
day/month/year, month/day/year or year/month/day depending on locale settings
一些date的常量:
today
yesterday
tomorrow<last|past|prev|current|this|coming|next><year|month|week><last|past|prev|coming|next>
<x><years|months|weeks|hours|minutes|mins|seconds|secs>january|february|march|april|may|june|july
|august|september|october|november|december
jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec
sunday|monday|tuesday|wednesday|thursday|friday|saturday
sun|mon|tue|wed|thu|fri|sat
unknown
实际使用举例如下:
C:UsersuserNameDesktop datecreated:yesterday #查找桌面上昨天修改过的文件or文件夹
C:UsersuserNameDesktop datemodified:today #查找桌面上今天修改过的文件or文件夹
C:UsersuserNameDesktop datemodified:2014/6/15
#查找桌面上在2014/6/15这天修改过的文件or文件夹{2014/6/15这个格式和你本地的设定有关,
#你可以打开Everything看"Date Modified"那一列的显示格式}
C:UsersuserNameDesktop datemodified:lastweek #查找桌面上上个星期修改过的文件or文件夹
C:UsersuserNameDesktop datemodified:january #查找桌面上在一月份修改过的文件or文件夹
提示:最好指定一个路径来进行搜索(例如在进行webshell检测时,指定网站目录),否则速度很慢{当然了,这与个人电脑配置有关,在我的瓜机上面很慢就是了}
2.通过文件大小
使用语法介绍:
size:<size>Search for files with the specified size in bytes.
Size Syntax:
size[kb|mb|gb]
Size Constants:
empty
tiny0 KB < size <= 10 KB
small10 KB < size <= 100 KB
medium100 KB < size <= 1 MB
large1 MB < size <= 16 MB
huge16 MB < size <= 128 MB
giganticsize > 128 MB
unknown
实际举例如下:
一般的webshell文件也不大{当然了,区分大小马},所以可以试试查找大于0KB小于10KB的文件(size:tiny)
查找文件大小小于50KB的文件方法(size:<=50kb)
当然也可以通过查找PHP文件,然后再按文件大小排序的方式来进行。
3.简洁实用的手动方式
C:Apachehtdocs *.php#显示了结果之后,再按照文件修改时间/大小/文件名排序,快速而且直接
C:Apachehtdocs *.php | *.jpg
一般是通过指定搜索路径的方式来加快速度,可以通过多种方式的结合来达到自己的目的,这个需要根据自己的情况来定,这里就不细说了。
上面提供的只是一种思路,在Windows上也可以通过批处理脚本或PHP/Python脚本编写功能更强大的webshell查找工具(之前在Freebuf上也有过几篇很好的文章,比如:http://www.freebuf.com/tools/8341.html),不过就效率,速度和直观性而言,Everything这款工具确实还是非常值得推荐的!Everything还有很多的功能值得我们去发现、去挖掘,多组合、多尝试就可以找到适合自己的方法,祝好运!
编程高手也可以自行编写脚本调用Everything的命令行来进行周期性的扫描、报告,如果写好了能给大家分享一下那就更好了(☆_☆)/~~
————————–
在Linux上因为原生集成了很多命令行工具,速度也是非常快,所以也不用其他多余的工具了,写个shell脚本,然后放在crontab中周期性运行并把结果发送给自己,效果还是很不错的。
—–下面是从网上搜集的一些使用find/xargs/grep的命令组合查找webshell的方法—–
查找"/path/to/webroot"目录里面在10天内进行过修改的php文件(可根据需要进行微调):
find /path/to/webroot -name "*.php" -mtime -10
如果文件更新时间不确定,我们可以通过查找关键字的方法来确定。要想查的准确需要熟悉webshell常用的关键字,我这里列出一些常用的,其他的大家可以从网收集一些webshell,总结自己的关键字,括号里面我总结的一些关键字(eval,shell_exec,passthru,popen,system)查找方法如下:
find /path/to/webroot -name "*.php" |xargs grep "eval" |less
find /path/to/webroot -name "*.php" |xargs grep "shell_exec" |less
find /path/to/webroot -name "*.php" |xargs grep "passthru" |less
当然你还可以导出到文件,下载下来慢慢分析:
find /home -name "*.php"|xargs grep "fsockopen"|tee webshell_scan.log
这里我就不一一罗列了,如果有自己总结的关键字直接替换就可以。当然并不是所有的找出的文件都是webshell,这个需要自己做一下判断,判断的方法也简单,直接从浏览器访问一下这个文件或者和自己找的一些webshell比较一下,看得多了,基本上一眼就可以判断是不是webshell文件。
因为Linux上的这个的查找方法在各种网站上都有类似的内容,没法找到原文出处,如有请告知,谢谢。
最后来点猛料:
在查找webshell的时候,集中注意力是非常必要的,可如果你昨天看了些小电影而导致精力不足无法集中精神排查的话可是非常要命的,所以,你需要:
打开Everything,在搜索框中输入: *.rm | *.rmvb |*.avi | *.wmv | *.mkv | *.mpeg | *.3gp,按大小排序,选择非系统视频文件,深呼吸,闭眼,手不要抖,按住Shift+Del键(是的,shift+del,剥夺它们进回收站的权利),睁眼,露出灿烂的笑容,生活原来如此美好~~
- Android快速开发框架 roboguice
- 悄悄的干活,打枪的不要!勒索+比特币挖矿木马
- 拥有可移动头像的折叠Android工具栏:CollapsingAvatarToolbar
- Android平台下的第一个Tor木马
- 利用代码实现自定义圆角+阴影按钮 android-flat-button
- 周末阅读:程序员的《权利法案》
- 对利用Adobe 0day – CVE-2014-0502进行攻击的行为分析
- Android系统更改状态栏字体颜色
- Android实现竖着的滑动刻度尺效果,选择身高(竖向的)
- DedeCMS全版本通杀SQL注入漏洞利用代码及工具
- Android实现滑动刻度尺效果,选择身高体重和生日
- 浅谈开源web程序后台的安全性
- Web漏洞演练平台 – ZVulDrill
- Android内存泄漏终极解决篇(上)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux centos 安装Jenkins(非docker方式)
- mysql5.7 derived_merge=on 弄丢了我的 order by!
- 用nrm轻松管理npm镜像 自用 实践笔记
- 模拟战役(DFS||并查集解法)
- 学会这些(滑动关机、应用多开、QQ微信消息攻击、表白神器),逼格瞬间提升1000倍
- 位数问题
- 题目 2229: [蓝桥杯][算法训练]最大最小公倍数
- 武汉工程大学2020GPLT选拔赛(重现赛)详细代码讲解
- 用邻接链表存图 详讲
- strstr函数的详细讲解
- ICPC Pacific Northwest Regional Contest 2019 C D E M 题解
- wordpress:您的主机禁用了mail()函数,找回用户名和密码
- AtCoder Beginner Contest 166 A ~~E
- AtCoder Beginner Contest 165 A ~~D
- 离散化思想详细讲解