Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
SharpFtpC2 — 一种精简的基于FTP的命令与控制通道,用于互连远程系统。 | Kitploit
工具/GitHubGitHub/darkcodersc/sharpftpc2
加密/解密工具命令与控制学习与教育红队Payload 开发对抗性攻击
GitHubdarkcodersc/sharpftpc2

SharpFtpC2

一种精简的基于FTP的命令与控制通道,用于互连远程系统。

查看仓库
9018642年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SharpFtpC2 (PoC)



SharpFtpC2 是一个小型实验性项目,旨在探索使用 FTP(S) 在两台远程计算机之间中继命令和响应的可能性。它利用 FTP 协议作为一种临时隧道,使两台计算机均作为 FTP 服务器的客户端连接,从而能够相互通信。采用简单的会话管理方案来跟踪请求和响应的交换。

SharpFtpC2 使用基本的会话管理系统。尽管相当基础,但它足以保持通信的同步和相关,这对于远程系统之间的来回交互至关重要。

值得注意的是,这个项目可以毫不费力地通过使用版本控制系统(如 git、svn 或类似协议)进行移植。

如果你对网络通信的细节感兴趣,或者只是想摆弄 C# 和 .NET Core,SharpFtpC2 可能是一个有趣的起点。别指望它是一件打磨好的精品,但也许,只是也许,你会在摆弄它的过程中学到一些有趣的东西。

SharpFtpC2 是一个实验性项目,旨在教育探索如何将 FTP(S) 用作两台远程计算机之间的通信渠道。必须理解的是,该项目是为对网络通信、C#、对手模拟、红队、恶意软件感兴趣的个人设计的学习资源。作为创建者,我恳请用户不要请求额外的功能,也不要以任何形式将该项目用于武器化或恶意用途。核心意图是教育性的,用户应负责任且合乎道德地使用内容。


项目背后的故事

SharpFtpC2 的诞生源于为 Unprotect Project 做出贡献的愿望,特别是其 网络规避 类别。

使用 FTP 作为“隧道”的想法有着深厚的渊源。事实上,它让我想起了大约 2005 年的美好回忆,当时我还在编程世界中摸索。那时,我遇到了一位非常有创造力的法国人,他使用化名 BlasterWar。他构思了一个名为 BlasterX 的项目,尽管该项目已随时间流逝,但在当时是相当前卫的。

BlasterWar 在其项目中的独创性在于提供了一种替代传统反向连接的方法——代理需要建立回控或攻击设备的连接。

相反,BlasterWar 选择使用 FTP(文件传输协议)作为替代媒介,并围绕它构建了一个全面的远程访问工具。该工具包括屏幕捕获、键盘记录和系统管理等功能,全部通过 FTP 隧道传输。当时,FTP 非常流行,大量网站向公众提供免费 FTP 服务器。这使其成为反向或直接连接(涉及端口转发)的理想替代方案。此外,它为命令与控制(C2)提供了额外的混淆层,因为黑客机器的 IP 地址不会直接暴露。

如今,使用 FTP 作为隧道已不是新概念,少数命令与控制(C2)框架已采用该协议。然而,以这种方式使用 FTP 充满了风险。值得注意的是,FTP 以明文形式在网络中传输凭据,加上双方都必须持有这些凭据,使其容易受到多种攻击。尽管 FTP 服务器在解决这些安全问题方面取得了进展,越来越多地采用集成 SSL/TLS 加密的 FTPS,但这种适应并未解决所有固有风险。

凭借一点巧思并借鉴现有协议,可以处理大量现有风险。

试一试

要编译此项目,您需要两个组件:Visual Studio 以及一个控制器依赖项 CommandLineUtils。

由于此项目使用 .NET Core,可以轻松地针对各种平台进行编译,无需修改代码。但是,您可能需要实现针对目标平台的特定功能。

要快速开始测试此项目,我建议使用 Docker 和 stilliard/pure-ftpd 镜像。该镜像支持一系列选项,使您可以轻松快速地设置自己的 FTP 服务器。

docker pull stilliard/pure-ftpd

不使用 TLS

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark stilliard/pure-ftpd

使用 TLS(推荐)

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x --tls=2" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark -e "TLS_CN=localhost" -e "TLS_ORG=maislaf" -e "TLS_C=FR" stilliard/pure-ftpd

请随意根据您的需求调整设置。但是,我强烈建议不要将此测试 FTP 服务器暴露给本地或公共网络。更谨慎的做法是仅将此容器暴露给您的主机。

ADDED_FLAGS 选项允许您微调 pure-ftpd 服务器。所有标志的解释可以在这里找到。

某些标志可能需要修改 C2 协议的功能。例如,如果您使用 -K 选项保留所有文件,则将禁用通过 FTP 删除文件的功能。由于当前的 C2 协议使用了此功能,您可能需要考虑其他方法,例如文件重命名或移动。

C2 加密(RSA + AES)

为确保代理和 C2 之间所有通信的完整性和机密性,已在通信协议中无缝集成了加密,采用 RSA 和 AES-GCM 256 位算法。此功能的主要目标是阻止受损 FTP 服务器传递恶意命令的可能性。通过使用加密,如果没有代理的公钥,命令注入是不可能的。同样,如果没有 C2 的公钥,也不可能注入虚假代理响应。

为了更轻松地生成您自己的密钥对(一个密钥对用于代理,一个用于 C2),我包含了一个名为 RSAKeyHelper 的第三方工具。每次运行该应用程序时,它都会为您提供一个新生成的一对公钥和私钥,如果您选择使用加密,则可以在程序中使用这些密钥。

横幅图片

为了验证一切按预期运行,我还在同一工具中集成了一项功能,允许您测试字符串加密。

横幅图片

支持的命令

  • 运行 shell 命令并回显响应。
  • 终止代理进程。

变更日志

2023 年 6 月 9 日 - v1.0b

  • 首次发布。

2023 年 6 月 16 日 - v1.0

  • 引入了加密支持,使用 RSA 和 AES-GCM 256 位算法,以保护代理和 C2 服务器之间通信的完整性和机密性。

2023 年 6 月 21 日 - v2.0

  • 代码优化:对代码库进行了优化以提高性能。
  • 协议改进:通信协议已增强,现在更加模块化,提供了更大的灵活性。
  • 支持不同的 RSA 密钥对:C2 和代理现在可以使用不同的 RSA 密钥对,使它们能够在同一 FTP 服务器上共存而不会冲突。
  • 实现危险操作验证委托:已实现验证委托,在执行潜在危险操作之前提示用户确认。

2023 年 6 月 23 日 - v3.0 最终版

  • 修复了执行 shell 命令的 bug。所有命令现在都应执行而不会导致整个应用程序挂起。
  • 在命令与控制(C2)和代理之间加入了协议版本检查。如果检测到协议版本不匹配,C2 将忽略该代理。

“v3.0 最终版”的发布标志着此项目的完成。我不会再添加任何功能;此概念验证的目标是展示使用 FTP(S) 创建可靠且安全的 C2。欢迎您开发自己的版本,并具有定制功能。作为练习,您可以考虑实现多线程任务处理,以防止应用程序在长时间任务期间挂起。

但是,我将继续为项目提供支持,以解决潜在的 bug 或优化机会。

截图

(代理列表) 主界面

(向活动(上下文)代理执行命令) 命令

(代理控制台调试窗口,显示危险操作用户确认) 代理

下载工具