Webshell通常指以JSP、ASP、 PHP等网页脚本文件形式存在的一种服务器可执行文件,一般带有文件操作、命令执行功能,是一种网页后门。攻击者在入侵网站后,通常会将Webshell后门文件与网站服务器Web目录下正常的网页文件混在一起,使用浏览器或专用客户端进行连接,从而得到一个服务器操作环境,以达到控制网站服务器的目的。
基于流量的Webshell检测
基于流量的Webshel检测方便部署,我们可通过流量镜像直接分析原始信息。基于payload的行为分析,我们不仅可对已知的Webshell进行检测,还可识别出未知的、伪装性强的Webshell,对Webshell的访问特征 (IP/UA/Cookie) 、payload特征、 path特征、 时间特征等进行关联分析,以时间为索引,可还原攻击事件。
基于文件的Webshell检测
我们通过检测文件是否加密(混淆处理) ,创建Webshell样本hash库,可对比分析可疑文件。对文件的创建时间、修改时间、文件权限等进行检测,以确认是否为Webshell。
基于日志的Webshell检测
对常见的多种日志进行分析,可帮助我们有效识别Webshell的上传行为等。通过综合分析,可回溯整个攻击过程。
如何判断被植入了Webshell?
利用Webshell扫描工具(如D盾)对应用部署目录进行扫描,如网站D: \WWW\目录,或者将当前网站目录文件与此前备份文件进行比对,查看是否存在新增的不一致内容,确定是否包含Webshell相关信息, 并确定Webshel位置及创建时间。然后利用文本文件打开,进一步分析发现可疑内容。
在Linux系统中也可以用命令:
//搜索目录下适配当前应用的网页文件,查看内容是否有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"
根据异常现象发生时间,结合网站目录中Webshell文件的创建时间,可大致定位事件发生的时间段。以便后续依据此时间进行溯源分析、追踪攻击者的活动路径。
需要对Web日志进行分析,以查找攻击路径及失陷原因,常见Web中间件默认地址
Windows
Apache
apache\logs\error.log
apache\logs\access.log
IIS
C:\inetpub\logs\LogFiles
C:\WINDOWS\system32\LogFiles
Tomcat
tomcat\access_log
Linux
Apache
/etc/httpd/logs/access_log
/var/log/httpd/access_log
Nginx
/usr/local/nginx/logs
在Linux日志排查时,为方便日志检索及溯源分析,列举了常用日志检索命令
定位具体的IP地址或文件名
find . access_log | grep xargs ip
find . access_log | grep xargs filename
查看页面访问前10的IP地址
cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -r | head -10
查看页面访问前10的URL地址
cat access.log | cut -f4 -d " " | sort | uniq -c | sort -k 1 -r | head -10
通过日志分析发现的问题,针对攻击者的活动路径,可排查网站中存在的漏洞,并进行分许
复现攻击者的攻击路径