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

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

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

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

工具目录

分类

查看所有分类
Loading categories
sleep_python_bridge — 该项目是sleep语言与python语言之间的“桥梁”。它允许通过python控制Cobalt Strike团队服务器,而无需使用标准的GUI客户端。注意:该项目目前仍处于BETA阶段。其目标是提供一个测试游乐场,绝非官方支持的功能。也许未来这可以成为核心产品的一部分。 | Kitploit
工具/GitHubGitHub/cobalt-strike/sleep_python_bridge
危害指标 (IOC) 管理Payload生成命令与控制红队Payload 开发日志分析
GitHubcobalt-strike/sleep_python_bridge

sleep_python_bridge

该项目是sleep语言与python语言之间的“桥梁”。它允许通过python控制Cobalt Strike团队服务器,而无需使用标准的GUI客户端。注意:该项目目前仍处于BETA阶段。其目标是提供一个测试游乐场,绝非官方支持的功能。也许未来这可以成为核心产品的一部分。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
18832171年前Kitploit 审核通过

Cobalt Strike Sleep Python Bridge

本项目是 Sleep 与 Python 语言之间的“桥梁”。它允许通过 Python 控制 Cobalt Strike 团队服务器,而无需使用标准 GUI 客户端。

注意:本项目仍处于 BETA 阶段。目标是提供一个用于测试的游乐场,绝非官方支持的功能。也许未来可以将其作为核心产品的附加功能。

本项目的灵感来源于 @BinaryFaultline 和 @Mcgigglez16 在项目 https://github.com/emcghee/PayloadAutomation 中的工作。我想向两位表示特别的感谢!!

这座桥梁的核心是一个无头(headless)Cobalt Strike 客户端的 Python 实现。这是通过使用 agscript 提供的 Aggressor Script 控制台作为引擎来实现的。Agscript 允许与 Cobalt Strike 进行无头交互(https://www.cobaltstrike.com/aggressor-script/index.html)。该“桥梁”的工作原理是使用 sleepy.py 中的 Python 辅助函数来生成 agscript 控制台所需的 sleep 命令。与其编写 sleep 函数,striker.py 提供了抽象 sleep 并允许使用 Python 的辅助函数。

相较原项目的显著变化

由于 PayloadAutomation 项目启发了本项目,因此最初包含了许多相同的代码,但我想将其精简为作为 agscript 包装器所需的组件。

  • 从 Payload_Automation 更名为 sleep_python_bridge。本项目不仅仅是 payload 生成。
  • 从 PyPI 库改为本地模块。这是为了测试而做的,经过大量测试后可能适合作为 Python 库。
  • 更新并添加了辅助函数以匹配 aggressor 版本。
  • 增加了加载外部脚本的能力。

包含的库

  • Striker:一组用于与 Cobalt Strike 交互并执行通常只能通过 Sleep/GUI 访问的功能的函数。
  • Sleepy:一组用于促进 Sleep 对象与 Python 对象之间桥接的函数。
  • Compyler:一组用于从平台内或跨平台编译各种 payload 的函数。
  • Artifactor:一组用于检查与审查工件、收集与追踪 IoC 的函数。

文件与目录

项目描述
sleep_python_bridge允许 Python 与 Cobalt Strike 交互的库
output/htmlhtml 数据查看器的路径
output/html/data数据查看器使用的 json 数据路径
output/payloads已保存 payload 的路径(由 payload 生成器使用)
payload_scriptspayloadgenerator.py 要加载的外部脚本路径
beaconlogtracker.pybeacon 日志追踪器的实现,使用 HTML 数据网格显示 beacon 日志
payloadgenerator.pybeacon payload 生成器的实现,为每个 listener 创建 payload
beacongrapher.pybeacon 图形追踪器的实现,使用 HTML javascript 有向图显示 beacon

TODO

  • 记录暴露的函数
  • 将编译相关函数从 striker.py 移到 compyler.py
  • 添加额外的错误检查,特别是针对应用程序依赖项
  • 扩展 compyler 以包含远程构建和 mingw
  • 通过 artifactor.py 为生成的 payload 添加 IoC 追踪
  • 处理错误:“User is already connected.”
  • 考虑将其转换为正式的 Python 库

如何使用

本项目中的示例可能是最容易理解的方式,但脚本 example.py 是其中的关键。

#!/usr/local/bin/python3

## Import the bridge
from sleep_python_bridge.striker import CSConnector
from argparse import ArgumentParser
from pprint import pp, pprint

###################
## Argparse
def parseArguments():
    parser = ArgumentParser()
    parser.add_argument('host', help='The teamserver host.')
    parser.add_argument('port', help='The teamserver port.')
    parser.add_argument('username', help='The desired username.')
    parser.add_argument('password', help='The teamserver password.')
    parser.add_argument('path', help="Directory to CobaltStrike")
    
    args = parser.parse_args()
    return args

## Let's go
def main(args):

    cs_host = args.host
    cs_port = args.port
    cs_user = args.username
    cs_pass = args.password
    cs_directory = args.path

    ## Connect to server
    print(f"[*] Connecting to teamserver: {cs_host}")
    with CSConnector(
        cs_host=cs_host, 
        cs_port=cs_port, 
        cs_user=cs_user, 
        cs_pass=cs_pass,
        cs_directory=cs_directory) as cs:

        # Perform some actions
        # 
        # Get beacon metadata - i.e., x beacons() from the script console
        beacons = cs.get_beacons()
        print("BEACONS")
        pprint(beacons)

        # Get list of listners - i.e., x listeners_stageless() from the script console
        listeners = cs.get_listeners_stageless()
        print("LISTENERS")
        pprint(listeners)

if __name__ == "__main__":
    args = parseArguments()
    main(args)

调用脚本

python3 example.py 127.0.0.1 50050 example password /path/to/cobaltstrike

实际示例

日志追踪器

Beacon 日志在运行时可在团队服务器上获取,也可通过保存在团队服务器上的 beacon 日志文件获取。数据一直都在,但可能不是以你期望的方式呈现。这是一个日志追踪器示例,使用 HTML 数据网格快速查看 beacon 日志。

beaconlogtracker.py 是一个连接到团队服务器的脚本,每 30 秒提取一次正在运行的 beacon 日志,保存到 beaconlogs.json,并在可搜索、可排序的 HTML 数据网格中显示。

Beacon 日志始终保存在日志目录中,但这是使用备用查看器追踪内存中日志的另一种方式。如果团队服务器重启,内存中的日志将会丢失,你必须查阅团队服务器日志目录中存储的日志。此脚本会将内存中的日志同步到 beaconlogs.json 文件。这样,即使 Cobalt Strike 重启,你也可以快速轻松地可视化所有数据,而无需翻查日志目录。

通过让脚本连接到你的团队服务器来启动它,每 30 秒同步一次日志。

用法:

python3 beaconlogtracker.py 127.0.0.1 50050 logtracker password /path/to/cobaltstrike

这将使 beaconlogs.json 与保存的和正在运行的 beacon 日志保持同步。它每 30 秒同步一次。

从 output/html 目录启动一个 Web 服务器

python3 -m http.server 8000

访问 http://localhost:8000/beaconlogs.html

Payload 生成器

红队操作人员经常要求的一个功能是能够以编程方式创建 payload,而无需使用 Cobalt Strike GUI。参考项目通过 payload 生成器实现了这一点。这很好,但存在一个独特的挑战。Aggressor 提供了几个钩子来影响 payload 的构建方式。这些钩子被各种工具包(即 artifact kit、sleep mask kit 或 UDRL kit)使用。通常是通过 GUI 加载 aggressor 脚本来使用它们。本项目进行了扩展,允许加载外部脚本。如果没有这一点,使用这些 payload 钩子将会很困难。这段代码可以很容易地扩展为将 payload 传递给外部函数,以添加自定义混淆、嵌入到用户加载器中,或进行任何其他修改。

payload 生成器脚本连接到团队服务器,加载附加脚本,并创建 payload。

用法(无外部工具包):

  • 运行 python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike

用法(带外部工具包)

本示例将列出添加 Arsenal kit(启用了 artifact 和 sleep mask kits)的步骤。

  • 更新 /path/to/arsenal_kit/arsenal_kit.config 文件以启用 artifact 和 sleep mask kits
  • [可选] 根据需要修改 artifact 和 sleep mask kits
  • 使用 /path/to/arsenal_kit/build_arsenal_kit.sh 构建 arsenal kit
  • 将 arsenal kit 分发文件复制到 payload_scripts 目录。 cp -r /path/to/arsenal_kit/dist/* /path/to/sleep_python_bridge/payload_scripts
  • [可选] 有关其他修改的更多信息,请参阅日志记录部分
  • 运行 python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike

日志记录

通常在使用 GUI 时,外部脚本可以使用 println aggressor 函数将信息输出到脚本控制台,这对于反馈或调试非常有用。使用 payloadgenerator.py 时,println 输出会丢失,唯一可用的选项是 elog 函数。使用 elog 时,需要 GUI 才能在事件日志中查看信息。

继续上面的“带外部工具包”用法示例,让我们更新 /path/to/sleep_python_bridge/payload_scripts/arsenal_kit.cna 文件,并将两处 println 改为 elog。进行此更改后,所有 arsenal kit 日志现在都可以在 GUI 事件日志中查看。

外部脚本的加载

并非总是需要加载外部脚本,除非是包含 payload 钩子的 payload 修改脚本(即 artifact、sleep mask 和 udrl kits)。如果你从 Cobalt Strike GUI 加载脚本,payload 将遵循这些来自 GUI 的脚本,但不会遵循来自 agscript 客户端的脚本(它们是不同的客户端)。你必须将脚本和支持文件添加到 payload_scripts 目录中。

payloadgenerator.py 将自动加载位于 payload_scripts 目录顶层的任何 .cna 脚本。位于子目录中的任何 .cna 脚本都不会被加载。

包含 Arsenal Kit 的示例目录结构。

$ ls -1R ./payload_scripts
./payload_scripts:
arsenal_kit.cna
artifact
sleepmask

./payload_scripts/artifact:
artifact32big.dll
artifact32big.exe
artifact32.dll
artifact32.exe
artifact32svcbig.exe
artifact32svc.exe
artifact64big.exe
artifact64big.x64.dll
artifact64.exe
artifact64svcbig.exe
artifact64svc.exe
artifact64.x64.dll
artifact.cna

./payload_scripts/sleepmask:
sleepmask.cna
sleepmask_pivot.x64.o
sleepmask_pivot.x86.o
sleepmask.x64.o
sleepmask.x86.o

用法(4.8 的附加选项)

感谢 @mgeeky 最近提供的更新,payloadgenerator.py 脚本现在支持额外的参数,以支持 4.8 中新增的 artifact_payload 函数参数。有了这些参数,你可以对生成的 payload 拥有更多控制权。

$ python3 payloadgenerator.py --help
------------------------
Beacon Payload Generator
------------------------
usage: payloadgenerator.py [-h] [-o path] [-l name] [-a arch] [-t types] [-e exit] [-c method] host port username password path

positional arguments:
  host                  The teamserver host.
  port                  The teamserver port.
  username              The desired username.
  password              The teamserver password.
  path                  Directory to CobaltStrike

optional arguments:
  -h, --help            show this help message and exit
下载工具