写点什么

pyLDAPGui 开发历程:跨平台 LDAP 图形化工具诞生记

作者:qife122
  • 2025-10-09
    福建
  • 本文字数:1324 字

    阅读完需:约 4 分钟

pyLDAPGui - 开发历程

背景起源

pyLDAPGui 是我在过去几个月里一直在开发的一个应用程序,直到最近才决定以概念验证的形式发布,供大家试用。这个想法的诞生源于我在开发"无恶意软件对抗模拟"课程时,需要寻找能够在不同操作系统中有效进行"就地取材"的工具,这让我开始深入研究可移植的可用选项。


如果你曾经进行过任何形式的渗透测试、红队行动或专注于 Active Directory 环境的审计,很可能使用过 Active Directory Explorer。这是一个在 Windows 主机上连接 LDAP 服务器(通常是域控制器)并查看 AD 环境的优秀工具。但它的最大限制是只能在 Windows 上使用,如果你希望在 Linux 虚拟机或 Mac 上操作,就无法使用它。

寻找替代方案

在寻找具有用户界面的替代 LDAP 浏览器时,我发现了一些有用的系统管理工具:


  • GoDAP:终端用户界面工具

  • ldap_shell:具有各种功能的优秀终端 UI

  • Softerra LDAP 浏览器:类似老式 C#应用程序的界面


但这些工具要么缺乏图形界面,要么仍然依赖 Windows 平台。

技术选型

编程语言选择

在创建 GUI 应用程序时,我考虑过多种语言:


  • Go 和 Rust:最初尝试但学习曲线较陡峭

  • Python:最终选择,因其多功能性和易用性

GUI 库选择

评估了多个 Python GUI 库后,我选择了 PyQt:


  • Tkinter

  • PyQt ✓

  • Kivy


选择 PyQt 主要是因为其易用性、可扩展性和跨平台支持。

功能设计

工具的核心设计目标是与 ADExplorer 类似的功能:


  • 通过树状视图连接到 LDAP

  • 支持 LDAP 和 LDAPS

  • 能够导出为合理格式(主要是 CSV 和 JSON,支持 BloodHound 兼容性)

  • 快速搜索功能,支持运行特定的 LDAP 查询

开发挑战

GUI 设计

在 Python 中设计 GUI 比我想象的要复杂,特别是在确定导出文件的结构方面。

SOCKs 支持

实现 SOCKs 功能比最初预期的要困难,通过大量谷歌搜索和试错最终解决了问题。

操作安全考虑

在开发过程中考虑了节流和操作安全问题:


self.attribute_variations = {    'samaccountname': ['sAMAccountName', 'samAccountName', 'SAMACCOUNTNAME', 'sAmAcCoUnTnAmE'],    'objectclass': ['objectClass', 'OBJECTCLASS', 'ObjectClass', 'oBjEcTcLaSs'],    # ... 更多属性变体}
复制代码


工具执行以下类型的 LDAP 查询:


  • 树导航(get_children):在展开树节点时触发

  • 条目详情(get_entry):在选择项目时触发

  • 批量导出(get_bloodhound_data):6 个大型查询用于 BloodHound 导出

  • 通用搜索(search):用于 CSV 导出和浏览


为了增强隐蔽性,在查询之间添加了随机延迟(0.5-2 秒),并且每次运行时都会打乱查询顺序。

GitHub Actions 集成

使用 GitHub Actions 进行 CI/CD 时遇到挑战,需要正确设置权限:


permissions:  contents: write  packages: write
复制代码


经过 26 多次尝试才成功实现清理提交历史和工作流提交的功能。

最终成果

完成后的 GUI 工具具有以下核心功能:


  • 连接到 LDAP/LDAPS 服务器并以树状视图列出

  • 导出为 CSV/BloodHound 格式

  • 直接导入到 Neo4j(支持通过网络连接)

未来计划

计划进一步改进代码并添加更多功能,包括:


  • 使用 OpenGraph 支持 BloodHound CE 的导入功能

  • 导出特定详细信息并解析更多数据

  • ADCS 分析按钮功能开发


这个 PoC 工具是我过去几个月开发工作的成果,希望能对大家有所帮助。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)


公众号二维码


办公AI智能小助手


公众号二维码


网络安全技术点滴分享


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
pyLDAPGui开发历程:跨平台LDAP图形化工具诞生记_ldap_qife122_InfoQ写作社区