Sec Hotspot 首页  排行榜  收藏本站  技术博客  RSS
统计信息
已收录文章数量:12925 篇
已收录公众号数量:89 个
本站文章为爬虫采集,如有侵权请告知
已收录微信公众号
网信中国 区块链大本营 白说区块链 区块链投资家 区块链官微 区块链铅笔Blockchain HACK学习呀 二道情报贩子 合天智汇 小白帽学习之路 小米安全中心 弥天安全实验室 SAINTSEC SecPulse安全脉搏 TideSec安全团队 360安全卫士 游侠安全网 计算机与网络安全 安全祖师爷 安全学习那些事 腾讯安全联合实验室 黑客技术与网络安全 安全圈 腾讯御见威胁情报中心 Python开发者 Python之禅 编程派 Python那些事 Python程序员 安全威胁情报 吾爱破解论坛 行长叠报 安在 i春秋 嘶吼专业版 E安全 MottoIN 网信防务 网安杂谈 数说安全 互联网安全内参 漏洞战争 安全分析与研究 邑安全 ChaMd5安全团队 天融信阿尔法实验室 安全牛 SecWiki 安全学术圈 信安之路 漏洞感知 浅黑科技 Secquan圈子社区 奇安信集团 奇安信 CERT 国舜股份 雷神众测 盘古实验室 美团安全应急响应中心 瓜子安全应急响应中心 顺丰安全应急响应中心 蚂蚁金服安全响应中心 携程安全应急响应中心 滴滴安全应急响应中心 字节跳动安全中心 百度安全应急响应中心 腾讯安全应急响应中心 网易安全应急响应中心 OPPO安全应急响应中心 京东安全应急响应中心 Bypass CNNVD安全动态 安恒应急响应中心 天融信每日安全简报 奇安信威胁情报中心 看雪学院 黑白之道 水滴安全实验室 安全客 木星安全实验室 云鼎实验室 绿盟科技安全预警 白帽汇 深信服千里目安全实验室 腾讯玄武实验室 长亭安全课堂 FreeBuf 绿盟科技 nmask
你所不知道的Webshell--进阶篇
本文来自公众号:绿盟科技安全预警   2020.06.16 18:01:36




写在前面的话

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

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



检测技巧

目前 检测 W ebshell 的方式较多,有基于 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] $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。



基于文件行为的检测

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