Webshell的检测

admin 2025年4月23日16:21:11评论1 views字数 4063阅读13分32秒阅读模式
Webshell的检测

学习蓝队知识,总结的几种webshell检测方法。

1. Webshell简介

顾名思义:web就是在开放的web服务器上,shell就是取得对服务器某种程度操作命令。webshell主要用于管理网站和服务器管理,由于其利用其便利性和功能性强大,被修改后的webshell也被部分人当作网站后门工具使用。

Webshell的检测

Webshell分为大马和小马,对于大马,它的体积大,包含的功能多,通常使用系统关键函数;而小马也就是常说的一句马,题积小,代码也简单。

2. webshell检测方式

webshell的检测有两种检测手段:

一种是传统检测分为静态检测,动态检测,日志分析,统计学,语言检测。另一种是新型webshell检测分为基于数据库操作审计的检测方式和建立机器学习日志分析系统。

2.1 静态检测

静态检测是指脚本文件所使用的关键词、高危函数、文件修改的时间、文件权限、文件的所有者以及其他文件的关联性等多个维度的特性进行检测,即先建立一个恶意字符串特征库(eval()Excute()Run()shellExcute()set server),同时对web文件修改时间,文件权限以及文件所有者等进行确认。通常情况下web文件不会包含上述特征或者特征异常,通过与特征库的比对检索出高危脚本文件。

优点:可以快速检测、定位。

缺点:容易误报,无法对加密或经过特殊处理的webshell文件进行检测。尤其是对窃密型webshell无法做到精准的检测,因为窃密型webshell通常具有和正常的web脚本具有相似的特征。

2.2 webshell特征检测

常见webshell 函数:

系统调用的文件操作函数,例如fopen fwirte readdir

系统调用的命令执行函数,例如evalsystemcmd_shell

具备很深的隐藏性、伪装性、可长期潜伏到web的源码种

数据库操作函数,调用系统自身的存储过程来连接数据库的操作

衍生变种的很多,通过自设定加密函数、利用字符串反转、xor、截断重组等方法绕过检测

//进制运算     <?php@$_++; $__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/"); ?>//利用注释符<?php@${$__}[!$_](${$__}[$_]);@$_="s"."s"./*-/*-*/"e"./*-/*-*/"r";@$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t";@$_/*-/*-*/($/*-/*-*/{"_P"./*-/*-*/"OS"./*-/*-*/"T"}[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);    ?>
//利用base64编码<?php$b base64_encode(‘whoami‘);echo $b.‘<br />‘;echo base64_decode($b).'<br />';?>//利用gzcompress压缩<?php$c gzcompress('whoami');echo $c.'<br>';echo gzuncompress($c)."<br />";?>
这些都是对webshell本身的行为分析,它带有对文件操作,系统调用和配置,数据库等动作,通过关键词匹配脚本文件找出webshell,再如一些压缩后的数据,有可能一些WAF并不会检测到内容存在危险。对于变了特性的数据,waf也可能检测不出来危险,首先脚本文件就带有特殊的函数,本身就是可疑文件,当然也是有其他方式进行检测的。
Webshell的检测

对于这种绕过检测,可以通过grep命令查找webshell,河马,D盾之类的工具就是利用该原理,对源码进行查杀的。但是有的时候黑客在上传完webshell后门,获取想要的信息数据之后就会删除掉webshell,或者是变形的webshell后门,关键字没有搜索到的,那么通过文件搜索webshell就不适用。

find  /* -type f -name "*.php"  |xargs grep "eval"
如果木马做了免杀,就可以查看是否使用加密函数:
find /* -type f -name “*.php” |xargs grep "base64_decode"
查看有没有使用拼接:
find /* -type f -name “*.php” |xargs grep "@$"

对搜索到的内容,手动查看是否是木马,可以在本地查看脚本文件内容,或者上传在线网站检测。

Webshell的检测

在线检测网站

webdir+ 在线查杀:https://scanner.baidu.com/#/pages/intro

Web Shell Detectorhttps://shelldetector.com/

河马(在线/GUI)https://www.shellpub.com/

牧云WebShellShophttps://webshellchop.chaitin.cn/demo/ github项目地址:https://github.com/chaitin/cloudwalker

2.3 流量特征的检测

流量行为特征的检测

基于流量的检测,是无法通过检测构成webshell危险函数的关键词来做检测的。但webshell带有常见写的系统调用、系统配置、数据库、文件的操作动作等,它的行为方式决定了它的数据流量中多带参数具有一些明显的特征,通过匹配行为的流量特征做检测,这也是基于webshell入侵后行为特征进行检测,当然也可以从系统层面webshell入侵行为进行检测。

常见的可以在data数据中检索出来攻击的命令语句,但是大部分webshell是进行混淆编码的。例如菜刀就是采用urlbase64进行编码的,我们进行相应的解码就能发现它的行为特征。

这也是抓取流量进行分析的好处,因为在web访问日志中是无法读取POST的数据包内容的,那么就不能看到webshell的攻击行为。

webshell工具的特征的检测

菜刀webshell流量特征检测:

通过wireshark抓取数据包进行分析

Webshell的检测

它是将postaction进行了base64编码让后执行了eval,那么@action是要执行的命令,将action的值解码后分析:

Webshell的检测

首先,它echo三个字符进行混淆填充,然后是通过fwirtef写了buf内容,而fpostz1的内容,buf则是已输入的内容以2个为分组进行了切分,再加上%再进行urldecode,相当于hex编码的解码。

再查看z1的内容:

Webshell的检测

那么验证刚才想法会在这里目录中写一个文件,文件内容就是z2

那么数据包里面得z1等这些操作就是webshell的特征了。

2.4 系统行为特征检测

当攻击者上传了webshell后回去做什么呢,我们可以通过检测系统变化和敏感操作。收集系统上的配置信息变化,网站的文件的变化,尽可能发现webshell。类似应急中对进程、文件、配置文件、系统文件的分析。

进程分析

我们可以使用netstat 命令,分析可疑的端口、IPPID以及进程程序。重点关注对外监听的端口,一般是可以查出后门的。

netstat -ano(windown)netstat -anplt(Linux)
Webshell的检测

文件分析

查看分析查看/tmp/init.d/usr/bin/usr/sbin可以的目录中是否存在可疑的文件,使用stat命令可查看文件的访问时间,修改时间的详情,如果有离事件发生接近,说明有可能篡改,再去分析。

stat目录名/文件名
Webshell的检测

还有就是查找新增文件的方式:

find ./ -mtime 0 -name "*.php" //24小时内修改的php文件find ./ +mtime 0 -name "*.php"  //24小时之前修改的php文件

Webshell的检测

查找隐藏的文件(’.‘开头的文件是具有隐藏属性的)

ls -ar |grep "^."

Webshell的检测

查看777权限的文件:

find ./ *.php -perm 777

Webshell的检测

  • 系统信息分析

history//查看历史的操作命令,是否留下痕迹cat /etc/passwd   //查看是否增加了除root之外uid为0的用户crontab  /etc/cron*  //查看计划任务,是否有木马程序启动计划        
  • 配置文件

主要就是看是否建立了ssh软连接。普通用户将pam.d下的ssh的验证模块改成su的验证模块,那么再次登录,验证uid0,那么root就免密登录。

Webshell的检测

当然不止改后门,还有其他的后门,需要监控这些配置文件,与之前进行比较,发现被修改的问题。

2.5 Web日志行为特征的检测

我们在分析攻击事件的时候,要先了解一下系统结构,服务器类型,网络拓扑等情况。因为攻击者对网站攻击,最普通思路就是通过漏洞利用拿到后台权限,通过后台上传webshell。那么这个webshell文件就是应急的一个着手点。通过webshell的时间 ,利用攻击手段和时间,去判断分析。

比如利用grep命令找到了木马中危险的函数,然后再日志找到这个webshell,可以查看攻击者的访问ip和webshell的操作记录,从而搜索攻击者的访问日志,就可以还原整个过程了。

  • webshell的访问特征

    页面是孤立的

    访问次数少

    少量的ip对其进行了访问(至少只有攻击者ip)

2.6 动态检测

通过webshell运行时使用的系统命令或者网络流量以及状态的异常来判断动作的威胁程度,webshell通常会被加密从而避免静态特征的检测,当webshell运行时就必须向系统发送系统命令来达到控制系统或者操作数据库的目的,通过检测系统调用来检测甚至拦截系统命令被执行,从行为模式上深度检测脚本文件的安全性

  • 优点:可用于网站集群,对新型变种脚本有一定的检测能力

  • 缺点:针对特定用途的后门较难检测,实施难度较大。

END
Webshell的检测
白帽少年
微信号:Alan

原文始发于微信公众号(白帽少年):Webshell的检测

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月23日16:21:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Webshell的检测https://cn-sec.com/archives/3966925.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息