1、前言
这篇文章说一下应急响应的内容,webshell查杀呢是应急响应的一部分。那么什么是应急响应呢,所谓的应急响应指的是,当网站突然出现异常情况或者漏洞时,能够马上根据实际问题进行分析,然后及时解决问题。
2、应急响应流程
应急响应流程分为六个阶段:准备—检测—遏制—根除—恢复—跟踪,但在实际情况中很少会按照这个步骤来滴,都是根据实际问题实际分析,然后采取相对应的措施。
3、常规后门查杀
3.1、手动排查webshell
手动排查的话就需要你对常见的后门类型有一定的了解。
3.1.1、静态检测
我们可以查找一些特殊后缀结尾的文件。例如:.asp、.php、.jsp、.aspx。
然后再从这类文件中查找后门的特征码,特征值,危险函数来查找webshell,例如查找内容含有exec()、eval()、system()的文件。
优点:快速方便,对已知的webshell查找准确率高,部署方便,一个脚本就能搞定。
缺点:漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。
3.1.2、动态检测
webshell执行时刻表现出来的特征,我们称为动态特征。只要我们把webshell特有的HTTP请求/响应做成特征库,加到IDS里面去检测所有的HTTP请求就好了。webshell如果执行系统命令的话,会有进程。Linux下就是起了bash,Win下就是启动cmd,这些都是动态特征。
3.1.3、日志检测
使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,例如:一个平时是GET的请求突然有了POST请求并且返回代码为200。
3.1.4、玄机靶场实战
这里我就用玄机平台的webshell查杀靶机来演示一下,启动靶机之后用xshell直接连接就可以了。
然后看看我们的flag要求,一共四个flag,应该是要求我们找到所有的后门。
我们直接使用find命令查找特殊后缀的文件,然后管道符拼接xargs去匹配特征函数,xargs函数就是把命令1的结果当作输入给到命令2。
//搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征
find ./ type f -name "*.jsp" | xargs grep "exec("
find ./ type f -name "*.php" | xargs grep "eval("
find ./ type f -name "*.asp" | xargs grep "execute("
find ./ type f -name "*.aspx" | xargs grep "eval("
//对于免杀Webshell,可以查看是否使用编码
find ./ type f -name "*.php" | xargs grep "base64_decode"
OK啊,也是找到了三个后门文件,我们到其相对应的目录看看。
在/var/www/html目录下有一个shell.php,但里面没有flag。
然后在/var/www/html/include目录下找到我们gz.php,打开看看里面有
flag{027ccd04-5065-48b6-a32d-77c704a5e26d},我们就找到了第一个flag。
第二flag要求是:黑客使用的什么工具的shell github地址的md5 flag{md5}
那我们先判断一下这个是什么类型的webshell,看到开头有这三个语句,基本就可以判断是godzilla的webshell了。
然后我们搜一下godzilla的github地址再md5加密一下即是第二个flag了
flag{39392de3218c333f794befef07ac9257}
第三个flag要求我们找到隐藏的webshell的路径,上面我们还找到有一个webshell在/var/www/html/include/Db目录下。但我们输入ls查看的时候却没有发现,估计是隐藏了。
我们得输入ls -la显示所有文件才可以看到,其中.Mysqli.php就是我们的隐藏webshell,把他的路径进行md5加密即是我们的第三个flag。
flag{aebac0e58cd6c5fad1695ee4d1ac1919}
最后一个flag要求我们找到免杀马的路径,既然它经过了免杀处理,那么木马的特征值以及特征函数应该都是被去掉了。这时我们再通过静态检测是基本检测不到的,从上面我们就可以看出我们只找到了三个马。而且上面我们说了webshell执行会在网站日志留下记录,那我们就到网站日志里面看看有啥可疑的记录,这里也顺便说一下linux的日志存放在/var/log目录下。
我们到apache2目录下面查看一下apache日志,查看access.log。
我们可以看到有个名为top.php的文件执行了phpinfo();且返回值为200,有点可疑。去找到相对应的文件发现是一个正常的文件来滴。
我继续找了一下,又发现一个较为可疑的文件,去到此目录下面查看该文件。
好嘛,原来是个马,把路径md5加密即是第四个flag。
flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de}
3.2、工具排查webshell
手工排查的话比较麻烦,而且查杀起来可能有漏,这里说一下几款常用的查杀工具。
1。阿里伏魔
https://ti.aliyun.com/#/webshell
2、百度 WEBDIR+
https://scanner.baidu.com/#/pages/intro
3、河马
https://n.shellpub.com/
4、CloudWalker(牧云)
https://stack.chaitin.com/security-challenge/webshell
5、在线 webshell 查杀-灭绝师太版
http://tools.bugscaner.com/killwebshell/
6、WebShell Detector WebShell 扫描检测器
http://www.shelldetector.com/
7、D 盾
http://www.d99net.net
8、微步
https://threatbook.cn/next/product/sandbox
阿里的伏魔是这几款最牛逼的,基本百分之九十五以上的webshell都能查杀出来。但是遗憾的是它只有网页版的,没有客户端版的。网页版的话一次只能上传2M大小的文件,对于一些大型网站,文件动则10几个G就显的有点鸡肋。
河马的话是有客户端的,多大的文件目录都能检测到。但是美中不足的是查杀能力没有阿里的伏魔那么猛,这里其实应该有10个后门的,有一个jsp的没检测到。只能说世界上没有一款完美的工具吧。
3.2.1、玄机平台实战
直接把整个网站目录下载下来,然后丢到阿里伏魔上面去检测就行了。可以看到前面三个都检测出恶意文件,第四个做了免杀的只是显示可疑,此时就要我们人工去查看了,工具+手动基本就可以排查百分之九十八的webshell了。
4、总结
以上就是常见的webshell排查手段,至于内存马的排查,那个属于高端的东西没有那么简单滴。
最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。