工具|BYOBC2框架源码架构分析

admin 2026-08-04 06:32:20 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文对BYOBC2框架进行源码架构分析,指出其存在两套并行实现导致的代码重复与维护债务、四端口架构中辅助服务缺乏认证、加密实现存在多处硬伤(如XXTEA误标为XOR-128、手写AES-CBC无MAC且使用null-byte填充)等工程缺陷。同时分析了其分层加载链、远程导入机制等设计亮点。结论是该项目适合教学研究,但存在安全风险,不建议用于生产环境。 综合评分: 85 文章分类: 红队,安全工具,安全建设,代码审计,安全开发


,写进 StringIO,再 :349-350 对已是 str 但含畸形 repr 的数据 encode('utf-8')——PNG 输出损坏。screenshot.run 依赖此路径。

  • handler.py Py2 专属string.lowercasehandler.py:49),Py3 崩。
  • 持久化多处 AttributeError/TypeErrorMethod.__init__ 调 util.__logger__.warn(...) 但 util 无此属性;_add_scheduled_task 调不存在的 util.variable(...)_remove_crontab_job 对 list 做 lines.pop(line, None)list.pop 取整数索引不取字符串值)。
  • packetsniffer 声明 platforms=['linux2','darwin'] 却用 Linux 专属的 socket.PF_PACKETpacketsniffer.py:22,149),macOS 上必崩;_run 体错误处理整段被注释(:148-168)。
  • keylogger 导入 pyHookkeylogger.py)——pyHook 仅 Python 2 且无人维护,Py3 无 pyHook。键盘记录器实为 Windows+Py2 专属,尽管声明支持 win32/linux2/darwin。
  • serve_resourcesserver.py:868-878)既坏又死:每 3 秒在无限循环里 kill 并重启 package_handler,会切断每个在途远程导入;它从不被 run() 调用,纯地雷。
  • PEP 302 imp loader 在 Python 3.12 已移除——整套远程导入在新 Python 上失效。
  • execute 的 info.dwFlags = subprocess.STARTF_USESHOWWINDOW, subprocess.CREATE_NEW_ps_GROUPpayloads.py:679)——小写 ps_GROUP 是笔误,且元组赋给 dwFlags 错误;Windows 隐藏进程路径坏的。
  • 11.3 设计与可维护性

    • server.py 1100 行上帝对象C2server.py:144-924)同时拥有:socket 生命周期、四个子进程句柄、命令分派表、控制台 UI(颜色/样式/提示符/banner/tab 补全)、SQL 直通、任务广播、session 簿记、显示格式化。应拆成 transport/session/console_ui/commands/lifecycle
    • Payload ~960 行上帝类,混 transport(send/recv)、任务循环、约 25 个无关命令(cd/ls/keylogger/outlook/escalate/persistence/packetsniffer…)。
    • globals() 当服务注册表Payload 伸手进 globals() 取 diffiehellman/encrypt_aes/decrypt_aes/post/geolocation/public_ip 等(payloads.py:143,170,221,569,614…),硬耦合到 from x import * 成功,重构/测试/静态分析痛苦。
    • 控制台与 Web 代码 ~140KB 复制粘贴且已分叉block_cipher 等安全相关差异)。
    • 裸 except: / except: pass 泛滥payloads.py:265,387,497,500,621,734,785outlook.py:38,57util.py:172,229,366process.py:135)。
    • Python 2/3 双兼容债遍布:xrange/rangeStringIO/iourllib2/urllibraw_input/inputstring.lowercaseimpsecurity.py:31-48 还在 import 时按 sys.version_info 猴补丁。
    • 模块并非真正 drop-in:每个新模块需要一个 Payload wrapper(见 §6.1)。
    • Web GUI:C2 在 import 时实例化(见 §7.1)。
    • Web GUI 与自身 HTTP 耦合:C2 线程在同进程里用 app.test_client().post('/api/session/new', ...) 跟 Flask 说话(server.py:157,239),古怪且慢。
    • datetime.utcnow() 在类定义时求值models.py:22,36,79,101,121default=datetime.utcnow() 应为 default=datetime.utcnow 可调用),每行都拿导入时间戳。
    • 遗留/死代码_get_session_by_idserver.py:403-411)立即把参数覆写成 None_get_session_by_connection:413-425)调不存在的 self.get_sessions()handler.py 重复 /api/file/add 且仍引用 Py2 string.lowercaseserver.py:955 注释掉的 self.rsa = None # security.Crypto.PublicKey.RSA.generate(2048) 死愿望。

    12. 解读结论

    BYOB 是一个紧凑、教学向的 C2,用几个真正漂亮的想法(分层 dropper、内存远程导入、DH/AES 信道、任务审计日志)裹在一层脆弱的单文件上帝对象里。它最值得拆出来复用的是 loader.py(远程导入钩子)、帧化(长度前缀)与任务-DB 模式;server.py 单体与 database.py DAO 应当视作待重写的草稿,而非照搬。

    最大的正确性风险是:SQLite 跨线程无序列化、accept 循环被每连接握手阻塞、handle_session 列名 SQL 注入、以及 process.kill/outlook.run/util.png 这类主线 bug。最大的安全风险是四个监听服务全部无认证、远程导入的未认证 RCE、Web 端 CSRF 关闭导致的登录用户全机器 RCE,以及控制台 shell=True 直通。整套抗分析子系统(反 VM、反 AV、”UAC bypass”)宣传远大于实质——反 VM 出厂被注释关闭,escalate 既假又会在非管理员环境崩。

    对蓝队/取证/EDR 而言,BYOB 是低难度但高教学价值的样本:

    • 网络层:1337–1340 四个连续明文端口、0.0.0.0 绑定、python -m http.server 的目录索引可枚举模块与 payload、POST handler 无认证无大小上限——任一都是低成本的 NDR/出口检测点。
    • 静态层exec(eval(marshal.loads(zlib.decompress(base64.b64decode(...))))) 自解压一行流、urlopen(...).read() + exec 的 stager、delta = 0x9e3779b9 的 XXTEA 常量、os.popen('taskkill /pid %s /f') 的 shell 注入式进程操作——都是稳定的 YARA/规则特征。
    • 行为层:反向 TCP 每 30 秒重试、DH 公值裸传、模块源码明文 HTTP 拉取后 exec、向 port+3 base64 POST 截图/pcap/键盘记录——主机侧 EDR 可在导入与上传两条路径上做高质量 telemetry。
    • 代码审计层:这是研究”如何不写一个 C2″的反面教材——跨线程 SQLite、不循环的 recv、把客户端 dict keys 拼进 SQL 列名、eval+marshal.loads 解攻击者字节、CSRF 默认关、import 即起监听——每一条都是可移植到任意 Python 服务端审计的检查项。

    一句话:BYOB 的远程导入钩子值得学,它的服务器与数据库值得作为反面教材重写一遍。


    免责声明:

    本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

    任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

    本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

    本文转载自:赛博生存指南 GLM-5.2 GLM-5.2《工具 | BYOB C2 框架源码架构分析》

    三角函数化简 网络安全文章

    三角函数化简

    文章总结: 本文解析一道三角函数化简题,作者指出原题条件存在边界问题,建议修改为更严谨的表述,并给出至少两种解法思路。同时提及一个更复杂的钓鱼坑题,提醒读者注意
    评论:0   参与:  0