适用场景
在云安全中心告警中主机上检出Webshell时,如何处置,以及通过信息简要分析入侵途径。
场景实战
一、确认Webshell事件
Webshell根据功能和大小,主要分为两类,一类是小马,一类是大马。
小马主要以一句话木马居多,一句话木马一般是以执行代码的函数+可以自定义内容参数为主,黑客通过客户端配合,控制可执行命令函数的具体参数内容达到目的。
小马
例如:
PHP小马 a.php
<?php eval($_GET['pass']);?>
该小马通过取pass参数的值,再传入eval参数进行执行,来达到执行系统命令的目的。
例如:http://yoursite/a.php?pass=system('cat /etc/passwd'); ,即通过让php的system()函数执行了系统命令 。
大马
大马则包含常见完整的模块,例如命令执行,数据库连接,文件管理等等模块,一般会包含一个密码,通过浏览器访问即可完成各种后续动作。
大马以及相关的变形文件,可以在一些github项目中非常容易找到,这里不做具体举例和分析。
通过以上特征加上对业务的了解,基本上可以确认是否被写入了Webshell。
二、判断Webshell来源
Webshell大多数情况下是因为Web应用存在漏洞,导致被利用进而植入Webshell。但也可能是主机运维通道弱口令,例如业务是通过ftp直接上传Web文件,但ftp弱口令或者空口令;其它还可能是ssh 弱口令,mysql弱口令等。
一般通过以下方法来判断来源和可能利用的漏洞:
判断Webshell文件的所有者,原理文件写入的进程会继承运行或者启动该进程的用户身份。例如下图a.php小马文件拥有者www用户,而www用户是Webserver和中间件的服务账号。由此可以判断该Shell是通过Web应用漏洞利用后写入。如果文件拥有者是ftp等其他服务账号,同理可推断写入途径。www用户为nginx和php-fpm的服务账号
根据Webshell路径推断漏洞模块
通常Webshell文件出现在站点的upload目录,image,file等存放用户上传文件的目录,一般是Web应用没有对上传文件内容或者类型进行检查或者限制。
如果Webshell文件出现在根目录或者其它无规律的目录,则可能是因为一些远程命令执行类的漏洞,结合云安全中心的风险管理-漏洞管理 中的应用漏洞或者应急漏洞扫描结果,看是否存在此类漏洞,基本可以判断。
如果文件拥有者是root,mysql,或者其它可登录用户,则可能是因为弱口令被黑客爆破或者撞库非法登录,可以使用云安全中心 风险管理-基线检查 扫描一下看看是否存在弱口令。
三、清理Webshell文件
如果Webshell是独立文件,可以手动删除或者直接通过云安全中心的告警处置,通过隔离动作进行处置通过处置执行隔离
如果是正常文件中被插入了恶意代码,则需要通过人工处置,手工删除文件中的恶意代码。这块需要对业务代码有一定了解,不做深入介绍。
四、安全加固
根据Webshell的植入来源,针对对应漏洞进行加固即可
该服务器对应有高危的漏洞,特别是远程命令执行,getshell的应用漏洞和应急漏洞要及时进行修复。在云安全中心 风险管理-漏洞管理 应用漏洞和应急漏洞中查看漏洞信息
如果软件为第三方ISV进行开发,当前没有修复能力,可以使用对应的安全产品进行防护。Web应用类漏洞可以使用阿里云WAF接入进行漏洞防护:WAF相关的接入和配置可以参考:https://help.aliyun.com/document_detail/162902.html
如果是因为弱口令,在修改为更强密码的同时,建议评估该服务是否有必要开放在公网。若是ssh类运维通道,必须要开放在公网的,建议通过堡垒机登录,如果没有堡垒机,修改默认的服务端口也能在很大程度上避免网络上自动化爆破或者撞库工具。确认该服务器的暴露面,可以从云安全中心-资产暴露分析中查看