前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你所不知道的Webshell--进阶篇

你所不知道的Webshell--进阶篇

作者头像
绿盟科技安全情报
发布2020-06-19 11:39:46
1.8K0
发布2020-06-19 11:39:46
举报

写在前面的话

上期文章介绍了Webshell的基础知识和防护技巧,有兴趣的同学可以前往 你所不知道的Webshell--基础篇 观看。

这期文章我们接着来说说Webshell的检测方法。

检测技巧

目前检测Webshell的方式较多,有基于HTTP流量、基于Web访问日志、基于文件特征等方法,建议相关同学在日常运维、攻防演练等工作中根据业务的实际情况,选择适合的方法,实现对Webshell的检测和处置。

本文主要介绍三种面向主机层面,基于文件进行检测的方法及工具(文中所列工具旨在对检测方法进行说明,请用户结合实际情况选取使用)。

基于文件特征的检测

文件特征检测主要是通过匹配Webshell变量名、危险函数名等特征值,来判断是否为已知的Webshell。

优点:部署方便,一个脚本就可以完成,准确率高,可扩展性强,可以自行添加规则。

缺点:攻击者如果修改文件特征值,将很有可能被绕过。

工具介绍:在互联网上搜索Webshell检查可以找到很多基于文件特征的检测工具,但大多都存在无法跨平台,无法自定义规则,源代码不开放等问题,可信度低,对于在业务系统上运行使用,管理员持谨慎态度。下面介绍一个开源跨平台的检测工具YARA。

Windows/Linux环境通用

YARA由VirusTotal发布,用于研究人员识别和分析恶意样本,基于文本和二进制特征匹配原理,通过命令行界面或带有YARA-Python扩展名的Python脚本使用。

工具下载及安装

01

下载地址:

https://github.com/virustotal/yara/releases/tag/v4.0.1

安装命令:

Debian/Ubuntu:apt-get install yara,或自行编译安装。

Redhat/CentOS:yum install yara(先安装epel-release),或自行编译安装。

Windows:直接运行下载的exe,或自行编译安装。

规则下载

03

YARA的规则分为两种格式:.yara是规则源码,.bin是编译后的规则。

若下载的规则为编译后的规则,可跳过本步骤,直接进入步骤4。

规则源码格式如下:

private rule generic_jsp

{

meta:

source= "https://www.tenable.com/blog/hunting-for-web-shells"

strings:

$ = /Runtime.getRuntime\(\).exec\(request.getParameter\(\"[a-zA-Z0-9]+\"\)\);/ ascii

condition:

all of them

}

规则说明:

格式分为3部分信息,meta是元数据信息,用于描述Webshell来源,strings是特征字符串,condition为匹配条件。

规则获取方式:

在github上使用Webshell+YARA关键词即可搜索到大量规则,这里以NSA推荐的规则为例,

下载地址:

https://github.com/nsacyber/Mitigating-Web-Shells/blob/master/core.webshell_detection.yara

https://github.com/nsacyber/Mitigating-Web-Shells/blob/master/core.yara.bin

规则编译

04

规则下载完成后,需要进行编译,也可直接下载编译后的规则。

编译命令:

yara core.webshell_detection.yara core.yara.bin

即可生成编译后的二进制规则core.yara.bin。

直接使用编译后的规则,可以提升检测速度,同时也能防止反病毒软件误将规则文件报为病毒。

检测执行

05

使用检测规则对目标路径进行Webshell检测,

检测命令:

yara –r -C core.yara.bin –r /var/www/html/

参数说明:-r 表示递归查询子目录,-C 指定编译后的规则文件。

结果分析

02

检测结果为与检测特征匹配的Webshell。

结果示例:

b374k /var/www/html/test.php

说明检测到b374k后门。

基于文件哈希的检测

将生产系统中可能受攻击的Web目录与已知的安全Web目录(例:从SVN导出的)进行比较,可以识别出不一致的文件,通过排查新增和修改的文件,再识别出攻击者上传的Webshell。

Windows环境

脚本安装

01

安装PowerShell脚本dirChecker.ps1,此脚本可基于文件hash对文件进行对比。

文件脚本:

param (

[Parameter(Mandatory=TRUE)][ValidateScript({Test-Path _ -PathType 'Container'})][String]

[Parameter(Mandatory=TRUE)][ValidateScript({Test-Path _ -PathType 'Container'})][String]

)

good = Get-ChildItem -Force -Recurse -Path knownGood | ForEach-Object { Get-FileHash -Path

prod = Get-ChildItem -Force -Recurse -Path productionImage | ForEach-Object { Get-FileHash -Path

Write-Host "Any file listed below is a new or changed file.`n"

(Compare-Object good prod -Property hash -PassThru | Where-Object{

注意:

脚本运行需要PowerShell 4.0及以上版本,下载地址:

https://www.microsoft.com/zh-CN/download/details.aspx?id=40855

文件检测

02

使用脚本对源目录与目的目录进行文件对比。

执行命令:

./dirChecker.ps1 -knownGood "d:\bak\www" -productionImage " c:\inetpub\www"

参数说明:-knownGood表示干净的Web目录,-productionImage 表示生产环境的Web目录。

结果分析

03

检测执行结果会把新建或者变更的文件显示出来,然后需要人工或借助其他工具对标注的文件进行Webshell排查。

结果示例:

Any file listed below is a new or changed file.

c:\inetpub\www\test.aspx

生产环境目录多1个test.aspx文件,需要排查是否为Webshell。

Linux环境

与Windows原理相同,可使用diff命令。

文件检测

01

使用系统命令对源目录与目的目录进行文件对比。

对比命令:

diff -r -q /opt/bak/html /var/www/html

参数说明:-r 表示递归查询子目录,-q 只输出差异部分。

结果分析

02

检测执行结果会把新建或者变更的文件显示出来,然后需要人工或借助其他工具对标注的文件进行Webshell排查。

结果示例:

在 /var/www/html 中存在:test.php

生产环境目录有一个变更或新建的文件:test.php,需要排查此文件是否为Webshell。

基于文件行为的检测

对于大多数正常的Web应用来说,很少会调用ipconfig,netstat等系统管理命令,反倒Webshell会经常产生此类调用。通过分析Web应用服务器关键进程调用日志,监测系统调用或进程调用,可以识别出此类异常行为,进一步排查出Web服务器中的Webshell。

Windows环境IIS

可使用微软发布的系统监测工具System Monitor (Sysmon),对IIS的调用进行监测。该工具能够监测进程创建、文件创建、网络连接等信息,并将监测结果记录到Windows事件日志中。

所以可通过分析sysmon日志信息,识别出系统中的异常活动,确认主机是否存在恶意文件。

工具下载及安装

01

下载地址:

https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon

安装命令:

sysmon64 –i

安装后系统会增加sysmon64服务,并自动运行。

日志查看

02

查看命令:

Get-WinEvent -FilterHashtable @{logname="Micorosft-Windows-Sysmon/Operational";id=1;} |

Where {$_.message -like "*ParentImage: C:\Windows\System32\inetsrv\w3wp.exe*"} |

%{$_.properties[4]} |

Sort-Object -Property value –Unique

结果分析

03

在查询日志的结果中,若发现进程调用可疑文件,则需要进一步排查是否正常的Web应用,判断是否为Webshell。

涉及可疑行为的文件名称:

arp.exe,at.exe,bitsadmin.exe,certutil.exe,cmd.exe,dsget.exe,dsquery.exe,find.exe,findstr.exe,fsutil.exe,hostname.exe,ipconfig.exe,nbstat.exe,net.exe,net1.exe,netdom.exe,netsh.exe,netstat.exe,nltest.exe,nslookup.exe,ntdsutil.exe,pathping.exe,ping.exe,powershell.exe,qprocess.exe,query.exe,qwinsta.exe,reg.exe,rundll32.exe,sc.exe,schtasks.exe,systeminfo.exe,tasklist.exe,tracert.exe, ver.exe,vssadmin.exe,wevtutil.exe,whoami.exe,wmic.exe,wusa.exe

Linux环境

可以使用系统自带的auditd审计工具对Apache的调用进行监测。

工具安装

01

若系统默认无auditd服务,可使用以下命令进行安装:

Debian/Ubuntu:apt-get install auditd

Redhat/CentOS:yum install auditd

工具配置

02

1)执行命令:

apachectl -S|grep User:

结果输出:

User: name="apache" id=48

记录结果中的id值48。

2)编辑/etc/audit/rules.d/audit.rules,增加以下规则并修改uid为上面记录的id。

-a always,exit -F arch=b32 -F uid=48 -S execve -k apacheexecve

-a always,exit -F arch=b64 -F uid=48 -S execve -k apacheexecve

3)重启audit服务:service auditd restart。

日志查看及分析

03

1)日志查看命令:

grep "apacheexecve" /var/log/audit/audit.*4

2)在查询的结果中,若发现进程调用可疑文件,则需要进一步排查是否正常的Web应用,判断是否为Webshell。

涉及可疑行为的命令名称:

cat,crontab,hostname,ifconfig,ip,iptables,ls,netstat,pwd,route,uname,whoami

分析示例:

/var/log/audit/audit.log:type=SYSCALL msg=audit(1591243943.172:8817): arch=c000003e syscall=59 success=yes exit=0 a0=98cab0 a1=98cd90 a2=98bb70 a3=7fffcf137c20 items=2 ppid=22600 pid=22611 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="netstat" exe="/usr/bin/netstat" key="apacheexecve"

以上为Web页面调用系统netstat命令时所产生的日志,如果发现类似日志,请用户进行关注。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 绿盟科技CERT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
检测工具
域名服务检测工具(Detection Tools)提供了全面的智能化域名诊断,包括Whois、DNS生效等特性检测,同时提供SSL证书相关特性检测,保障您的域名和网站健康。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档