form:errors path 不显示出错信息_你所不知道的Webshell进阶篇

e27cf5c218abe5103c04c4c79784521f.png写在前面的话

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

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

e27cf5c218abe5103c04c4c79784521f.png检测技巧

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

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

71a614c6d2a105e8196e5dfcead7571b.png基于文件特征的检测

文件特征检测主要是通过匹配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后门。

71a614c6d2a105e8196e5dfcead7571b.png基于文件哈希的检测

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

Windows环境

  脚本 安装01

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

文件脚本:

param (

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

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

)

$good = Get-ChildItem -Force -Recurse -Path $knownGood | ForEach-Object { Get-FileHash -Path $_.FullName }

$prod = Get-ChildItem -Force -Recurse -Path $productionImage | ForEach-Object { Get-FileHash -Path $_.FullName }

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

(Compare-Object $good $prod -Property hash -PassThru | Where-Object{$_.SideIndicator -eq '=>'}).Path

注意:

脚本运行需要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。

71a614c6d2a105e8196e5dfcead7571b.png基于文件行为的检测

对于大多数正常的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命令时所产生的日志,如果发现类似日志,请用户进行关注。

3b147c8f31aa15bbee8a99fe8cc1576a.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值