当前位置:首页 > 云谷精选

Webshell的流量特征与文件级检测清除方法

admin2026年03月19日云谷精选14.28万
摘要:# Webshell那点事儿:流量里的“鬼”和文件里的“雷” 说真的,干安全这行久了,最怕的不是那种正面硬刚的DDoS,而是那种悄无声息摸进来的后门。Webshell,就是这种让你后背发凉的玩意儿。它不搞大动静,就安安静静地躺在你的服务器上,像个幽灵,随…

Webshell那点事儿:流量里的“鬼”和文件里的“雷”

说真的,干安全这行久了,最怕的不是那种正面硬刚的DDoS,而是那种悄无声息摸进来的后门。Webshell,就是这种让你后背发凉的玩意儿。它不搞大动静,就安安静静地躺在你的服务器上,像个幽灵,随时等着别人来“串门”。

我自己处理过的应急响应里,十次有八次都能揪出这玩意儿。很多管理员直到被拖了库、挂了马,才发现自家网站早就“门户大开”了。问题往往不是没上防火墙,而是这“鬼”藏得太深,常规扫描根本扫不出来。

今天,咱们就抛开那些复杂的术语,聊点实在的:怎么从网络流量里嗅出它的味儿,又怎么在服务器文件里把它连根刨了。这感觉你懂吧?就像家里进了老鼠,光堵洞没用,你得知道它从哪儿溜进来,平时爱在哪儿活动,然后一锅端。

一、流量里的“鬼影”:Webshell通信那点不寻常

Webshell一旦植入,攻击者总得和它联系吧?这个“联系”的过程,就会在流量里留下痕迹。当然,现在的Webshell越来越“聪明”,但再聪明,也免不了露出些马脚。

首先,你得知道它在“聊”什么。 正常的网站访问,流量模式是有规律的:用户请求一个页面(比如/news/123.html),服务器返回HTML、图片、CSS这些资源。请求的URL、参数、频率,都符合业务逻辑。

但Webshell的通信,目的完全不同。它是为了执行命令、上传下载文件、探测内网。所以,它的流量特征,就像一群正常聊天的人里,混进了一个不停发摩斯密码的间谍,怎么看怎么别扭。

几个非常具体的“鬼影”特征,你可以对照着看看:

  1. “低频高交互”的诡异会话:一个平时几乎没人访问的、稀奇古怪的页面(比如/images/old.php,或者藏在/include//upload/目录下的莫名文件),突然开始有规律的、间隔性的访问。每次访问的时长可能很短,但前后会有一连串的、关联的请求。这很可能就是在进行命令执行和结果回传。

  2. 参数里的“乾坤”:这是最经典的标志。看看你的访问日志,有没有URL参数长得像天书?比如: cmd.php?c=whoami admin.jsp?p=Y21kIC9jIGRpcg== (这是cmd /c dir的base64编码) 或者POST一大段明显是PHP/ASP/JSP代码的数据。 说白了,正常用户谁会在参数里传系统命令或者一大串编码?这种“把意图写在脸上”的请求,虽然原始,但依然常见于一些自动化攻击或低级别Webshell。

  3. User-Agent的“cosplay”失败:有些Webshell客户端为了伪装,会使用一些过时的、或者极其常见的浏览器UA(比如某个版本的IE)。但在一个现代网站的后台日志里,如果某个IP一直用一个老掉牙的UA,在非正常时间(比如凌晨三点)访问管理后台路径或可疑文件,这就很值得拉响警报了。我自己就见过用“Googlebot”当UA,却疯狂请求.php文件的——真当管理员不看日志啊?

  4. 流量大小的“脉冲”:正常下载一个图片或页面,流量大小是相对稳定的。但通过Webshell下载一个数据库备份文件,或者上传一个木马,会产生一个非常突兀的、与周围请求格格不入的流量峰值。比如,一连串几KB的请求中,突然冒出一个几MB的POST请求,目标还是一个上传接口。这种“脉冲”,在流量监控图里就像平地起高楼,扎眼得很。

这里有个大实话要说: 很多中小公司,压根没有细粒度的流量分析设备。光靠看Nginx或Apache的访问日志,眼睛都得看花。我的建议是,至少配置一些简单的日志告警规则。比如,对包含特定关键词(eval(system(base64_decode)的请求,或者对非常规文件后缀(.php.jsp.asp出现在静态目录)的访问,进行实时告警。这能帮你抓住不少“懒”的Webshell。

二、服务器上的“扫雷”:怎么把Webshell挖出来清干净

流量监测是“预警系统”,但真正解决问题,还得落到服务器文件系统上。Webshell说到底,就是一个不该存在的脚本文件。找它,是一场耐心和细心的较量。

千万别只信杀毒软件! 很多Webshell经过混淆、加密,或者用了冷门的小马拉法,特征库根本跟不上。别问我怎么知道的,说多了都是泪。

第一步:先确定“雷区”范围

Webshell爱藏在哪儿?无非几个地方:

  • 上传目录/uploads/, /images/, /static/ 这些允许用户传文件的地方,是重灾区。攻击者可能利用上传漏洞,直接把Webshell放进来。
  • 临时目录/tmp/, /var/tmp/。有些Webshell执行时,会在这里生成临时文件。
  • 网站程序目录:特别是那些CMS、论坛程序的插件、模板目录。比如/wp-content/plugins/里混进一个奇怪的.php文件。
  • “意想不到”的角落.git/目录下、配置文件旁边、甚至伪装成图片后缀(shell.php.jpg,如果服务器解析配置不当,它就能当php执行)。这类低配的藏匿方式真扛不住,但偏偏有人中招。

第二部:用“组合拳”检测

单一方法容易漏,得像过筛子一样,多过几遍。

  1. 时间戳筛查(最简单粗暴,也最有效):在业务低峰期(比如深夜),用find命令查找最近几天被修改过的脚本文件。比如: find /var/www/html -name "*.php" -mtime -3 (查找html目录下,3天内修改过的php文件) 突然出现的、你不认识的新文件,或者在不该被修改的时间被改动的文件,嫌疑极大。我前两天刚翻过一个服务器,就在一堆2019年的老文件里,揪出一个上周刚创建的cache.php,一打开,好家伙,满满的都是eval($_POST[‘x’])

  2. 静态特征码扫描(但别完全依赖):可以用一些开源工具(如河马、D盾的扫描器)做全盘扫描。它们内置了大量Webshell的特征码,能快速发现已知的、未加密的Webshell。但是! 对于新型的、高度自定义的Webshell,这招可能失灵。所以,它适合做第一轮快速筛查,而不是最终判决。

  3. 语法/语义分析(高级玩法):这是对付加密Webshell的利器。原理是分析文件的代码逻辑。一个正常的业务脚本,和Webshell的代码“意图”完全不同。

    • 看函数:大量使用eval, assert, system, shell_exec, popen, base64_decode等危险函数,尤其是eval里面套一个解码或来自请求参数的变量,八九不离十。
    • 看逻辑:正常的PHP文件,总归要干点显示内容、处理数据的事。如果一个文件里,几乎全是接收参数、解码、执行命令、回传结果的流程,没有任何其他业务逻辑,那它存在的意义是什么?答案不言而喻。
    • 看连接:文件里有没有硬编码的外连IP或域名?有没有尝试连接数据库、读取敏感配置文件(如config.inc.php)的操作?这些都是高危信号。
  4. “行为沙箱”检测(终极手段):对于可疑到极点的文件,可以把它丢到一个隔离的沙箱环境里跑一下,监控它实际会发起什么网络连接、读写什么文件、执行什么系统命令。这种方法最准,但门槛也高,一般用于深度分析。

第三步:清除与善后(最关键!)

找到Webshell文件,直接删除就完事了吗?—— 大错特错!

  1. 别急着删:先备份那个可疑文件(可以压缩加密码存起来),用于事后分析和留证。然后,立刻检查文件的上传时间、修改者权限。用stat命令能看到详细信息。这能帮你判断入侵途径:是程序漏洞?还是服务器被弱口令爆破?或者是供应链污染?

  2. 清除不是删除一个文件那么简单:Webshell往往是入侵的“结果”,而不是“原因”。你必须找到它怎么进来的。

    • 检查同一目录、同一时间戳附近的其他文件。
    • 彻底扫描整个服务器,看有没有其他隐藏的后门。
    • 检查网站程序是否有未修补的漏洞(特别是上传功能、编辑器插件、SQL注入点)。
    • 检查服务器和数据库的密码是否太弱。
    • 查看~/.bash_history、Web日志,尝试还原攻击路径。
  3. 修复漏洞,改密码:这是治本。把进来的洞堵上,修改所有涉及权限的密码(服务器root、数据库用户、后台管理员),强度给我往高了设。

  4. 加监控,防再犯:在关键目录(如上传目录)设置文件完整性监控(比如用aide),一旦有文件被增删改,立即告警。给服务器装上靠谱的HIDS(主机入侵检测系统),它能监控更底层的异常行为。

写在最后:心里得有点数

说实话,没有一种方法能保证100%找出所有Webshell。攻击和防护,永远是一场道高一尺魔高一丈的博弈。

但只要你理解了Webshell“要通信、要执行命令” 这个核心目的,就能在流量和文件两个层面建立起有效的监控思路。别把安全想得太玄乎,很多时候就是细心查看日志、定期检查文件、及时更新补丁这些基本功。

如果你的服务器还只靠一个防火墙就觉得高枕无忧,你心里其实已经有答案了。真正的安全,是一种持续的状态,而不是一个买来就一劳永逸的产品。

行了,方法就是这些,具体怎么部署,还得看你自家的业务情况。多上心,勤查看,Webshell这东西,也没那么可怕。

扫描二维码推送至手机访问。

版权声明:本文由www.ysyg.cn发布,如需转载请注明出处。

本文链接:http://www.ysyg.cn:80/?id=812

“Webshell的流量特征与文件级检测清除方法” 的相关文章

解析高防CDN中的自动阈值调整算法:根据业务波峰实时动态加固

# 高防CDN的“智能开关”:自动阈值调整,真能扛住突袭吗? 我前两天刚翻过几个客户的防护日志,发现一个挺有意思的现象:很多站点,平时防护配置看着挺唬人,真遇到流量突袭的时候,该崩还是崩。问题出在哪儿?**很多时候,不是防护没开,而是“开关”太笨。**…

基于熵值计算的网络流量异常检测算法:识别潜在的未知攻击

## 流量里的“不对劲”:用熵值算法揪出那些“不按套路出牌”的攻击 前两天,一个朋友半夜给我打电话,语气里全是后怕。他负责的一个在线业务系统,监控大屏上CPU和带宽曲线都稳如老狗,但后台就是有零星用户反馈“卡”、“支付失败”。运维团队查了一圈,从服务器日…

分析CDN高防中的动态反爬虫规则生成算法:对抗分布式采集

# CDN高防里的“捉虫”艺术:动态反爬算法如何让采集者空手而归 我前两天帮朋友看一个电商站点的日志,好家伙,一天之内来自两百多个不同IP的请求,访问路径整整齐齐,全是商品详情页,间隔时间精准得像秒表——这哪是正常用户,分明是开了分布式爬虫来“进货”的。…

解析高防引擎中的慢速连接检测算法:识别并断开异常占用

# 当你的服务器被“慢刀子割肉”:聊聊高防引擎里那个揪出“磨洋工”连接的算法 你肯定见过这种场面:网站前台看着一切正常,没崩也没卡,但后台CPU和内存占用率莫名其妙就飙上去了,数据库连接池一会儿就满,重启一下能好几分钟,然后又开始不对劲。 像不像有谁在…

分析高防系统中的滑动窗口算法如何精准拦截脉冲式CC攻击

# 高防系统里的“时间刺客”:滑动窗口算法如何把脉冲式CC攻击按在地上摩擦? 说真的,我见过不少客户,防护方案买得挺贵,PPT也讲得天花乱坠。结果呢?一到晚上七八点,网站就卡得跟拨号上网似的,后台一查,攻击流量也没多大,但业务就是瘫了。这种场景你应该不陌…

分析高防 CDN 对特定业务逻辑(如抢购、秒杀)的防御加固方案

# 高防CDN,真能扛住“双十一”级别的抢购秒杀吗? 先说个我亲眼见过的场面吧。 去年帮一个做潮牌的朋友看他们家的“突袭发售”活动。服务器配置不低,还上了云厂商自带的基础防护。结果开售前五分钟,官网直接卡成PPT,页面死活刷不出来。你以为是被“羊毛党”…