0x01 前言
有朋友问我,网站莫名其妙被黑、页面被篡改、数据被删,怎么处理比较好,问我这样的问题也是比较多的了,怎么办?如果处理不好,挂马文件仍然存在,即再次被黑的概率很高,不同的攻击手法也会随着时代技术的进步而随之出现,处理的方案会变得多样而复杂。工作之余,聊一聊这个话题,我对应急响应的一些实战经验,把这块知识做了一个梳理,希望对各位同学会有所帮助,欢迎纠正,大佬勿喷。
image.png0x02 网站为什么会被莫名其妙被黑?
我们可以参考以下图,一般黑客攻击网站会从以下几个步骤进行。
image.png多数情况下黑客拿到网站的控制权后,都会放置一个webshell(也就是后门程序),来达到长期控制网站服务器的目的,为了出现不可预知的事件,一定要定期对服务器内所有数据备份。
webshell就是一个web后门,但是它的功能非常强大,可以获得一些管理员不希望你获得的权限,比如执行系统命令、删除web页面、修改主页等,下图就是部分webshell样本代码。
下图这些网站页面就已经被webshell篡改了,流量被劫持,已经沦陷了。
image.png0x03 网站入侵后排查思路
3.1、清除网站的webshell、后门
网站页面被篡改、数据库被脱库、文件被删、等等安全事件一但被触发,黑客就可能在站点的各个目录上传多种大大小小的webshell木马文件,为防止事态扩大,我们第一步是关闭网站对外的各种访问(如不影响重要业务),再找到webshell、后门,在第一时间把后门清除掉。
可以对网站内所有文件、日志、可疑文件全部打包起来,用工具结合人工全面分析、查杀。
3.1.1 使用工具查杀
这里推荐以下四款工具,同学行可以把工具综合起来,一起对文件进行扫描查杀。
- 深信服webshell查杀:http://edr.sangfor.com.cn/backdoor_detection.html
- 百度webshell查杀:https://scanner.baidu.com/#/pages/intro
3.1.2 人为分析
就目前而言,工具不可能实现100%无遗漏查杀,所有的查杀工具都可能存在漏报或者误报,所以就一定需要人为对网站内的可疑文件进行上机动态调试分析。
webshell常见的特征:
- 存在系统调用的命令执行函数,如eval、system、cmd_shell、assert等
- 存在系统调用的文件操作函数,如fopen、fwrite、readdir等
- 存在数据库操作函数,调用系统自身的存储过程来连接数据库操作
- 具备很深的自身隐藏性、可伪装性,可长期潜伏到web源码中
- webshell可能衍生变种多,可能会自定义加解密函数、利用xor、字符串反转、压缩、截断重组等方法来绕过检测
我们也就可以对着这些特征做检查,人为定位webshell,技术一直在创新,也可以针对性的去写规则、正则、打标签、建模、语义分析法、利用前沿技术机器学习来识别webshell。
在这里推荐几篇文章同学们可以参考一下:
- https://blog.csdn.net/liushu_it/article/details/49990861 基于行为分析来发现"未知的Webshell"
- http://www.onescorpion.com/research/webshelllun.html 基于深度学习和半监督学习的webshell检测方法
- https://www.freebuf.com/articles/web/183520.html Webshell入侵检测初探
0x04 分析此次被入侵的原因
在确认webshell、木马被清除完了之后,我们要做的就是分析此次被入侵的原因,只有把入侵的原因找到,才可能保证下一次不会被同样的方式入侵。
4.1 分析网站日志(nginx、apche、数据库、容器、中间件 、等产生的日志),如图:
image.png分析webshell第一次产生的原因,是哪个请求,对应又是哪个模块下面的页面,步步跟进,直到找到源头为此。
但是有时候日志动不动就有几个G以上,小编推荐使用Splunk日志分析系统对日志进行分析,splunk可以用来分析web日志、数据库日志、系统日志、程序日志、错误日志、中间件日志,可以快速帮助我们定位到源头。
image.png
4.2 分析网站使用的套件、框架、CMS、组件版本 是否有公开漏洞但未修复的。
比如最近流行的Thinkphp注入漏洞、织梦cms注入漏洞、phpmyadmin包含漏洞、编辑器上传漏洞、Struts2命令执行、等等漏洞,结合自己的网站进行综合分析可能存在的问题。
比如:网站是一个商城系统,就查看一下自己的网站是不是基于开源的Thinkphp框架写的,或者是不是基于Ecshop二次开发的,针对性去寻找最新安全漏洞,这里推荐几个漏洞查询平台,可以快速查询最新漏洞情况:
image.png4.3 查看WAF、入侵检测日志
如果网站部署了第三方的Waf、Agent、入侵检测、安全狗、云锁、等等相关安全防护设备,被入侵时会可能会引起报警、可以查看相关记录来结合分析,如图:
0x05 查看黑客在我机器上都干了些什么
黑客在我们服务器上做过什么东西、执行过什么命令、创建过什么文件、添加过什么账号,如果系统安装了堡垒机,设置了相关规则,一般会自动监控起来,当执行一些危险操作,如添加账户、写文件、添加注册表、添加服务器等操作,都会引起异常报警。
如果没有安装相关安全软件,操作系统本身也都会勤勤恳恳的帮我们记录这些操作进行存档,那我们需要查看系统中哪些记录呢,在下面我做了一些梳理,Linux和windows的操作系统是完全不一样的,所以小编在这里做一下区分。
5.1 Linux系统
推荐以下两篇Linux应急响应文章给同学们哈,我觉得还不错:
5.2 Windows系统
查看Windows安全事件日志,其中详细记录了是谁在什么时候通过什么手段登录到系统或者注销了登录,通过分析该日志可以详细了解服务器的安全情况以及黑客都做过什么。
在“事件查看器”窗口,展开Windows日志,选择“安全”,登录日志就显示出来了,如图:
image.png但日志一条一条的看完,非常不方便,不利于我们进行我们进行分析。推荐使用:LogonTracer工具配合分析,可以详细的查看黑客在我们计算机中操作过什么。
LogonTracer:是一款用于可视化分析Windows安全事件日志寻找恶意登录的工具。它会将登录相关事件中找到的主机名(或IP地址)和帐户名称关联起来,并将其以图形化的方式展现出来。
推荐一篇关于LogonTracer工具的介绍:https://anquan.baidu.com/article/409
0x06 网站漏洞修复
针对性修复漏洞
问题原因找到了,后门查杀了,那我们就要针对性的漏洞修复,每个平台的系统可能不一样,那修复方式也是不一样的,请根据实际情况修复漏洞,可以参考官方网站。
举个例子,比如:
基于Thinkphp框架任意代码执行漏洞的修复演示 :
使用编辑器打开\thinkphp\library\think\Request.php,找到第525、526行代码:
$this->method = strtoupper($_POST[Config::get('var_method')]);
$this->{$this->method}($_POST);
将其修改为如下代码:
$method = strtoupper($_POST[Config::get('var_method')]);
if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {
$this->method = $method;
$this->{$this->method}($_POST);
}
0x07 服务器加固
除了必备常用的安全软件、waf、idc、之外,还要对各端口、账号权限、文件、流量传输、后台、密码校验、做好完整的安全体系。
同学们可以参考如下文章:
- https://www.jb51.net/article/69567.htm Windows server 服务器系统安全防御加固方法
- [https://blog.csdn.net/qq_33168577/article/details/79585116 Linux服务器加固方案](https://blog.csdn.net/qq_33168577/article/details/79585116 Linux服务器加固方案)
- https://www.kancloud.cn/mkchristina/phpsafe/106504 PHP配置文件 · LANP/LAMP环境安全规范
- https://www.freebuf.com/column/162119.html 服务器被黑,安全事故排查和处置的方法
- https://www.freebuf.com/articles/system/147985.html Linux主机加固丨 防御者如何加强主机权限控制
网友评论