ADCSKiller代码架构解析:Python多线程漏洞利用框架设计 ADCSKiller代码架构解析Python多线程漏洞利用框架设计【免费下载链接】ADCSKillerAn ADCS Exploitation Automation Tool Weaponizing Certipy and Coercer项目地址: https://gitcode.com/gh_mirrors/ad/ADCSKillerADCSKiller是一款基于Python的ADCS漏洞利用自动化工具它通过整合Certipy与Coercer的核心功能构建了一个高效的多线程漏洞检测与利用框架。本文将深入剖析其代码架构设计揭示如何通过模块化设计实现ADCS漏洞的自动化探测与利用。核心架构概览ADCSKiller采用面向对象的设计思想将整个漏洞利用流程抽象为三个核心模块数据收集层、漏洞分析层和漏洞利用层。这种分层架构不仅提高了代码的可维护性还为后续扩展新漏洞利用模块如ESC2-ESC7奠定了基础。主要代码文件结构adcskiller.py主程序入口包含核心类定义与执行逻辑requirements.txt依赖管理文件声明必要的第三方库数据收集层设计数据收集层负责从目标环境中获取ADCS相关的关键信息主要通过Certipy工具和LDAP协议实现。这一层的核心是Exploit类中的数据收集方法包括证书模板枚举、域管理员识别和域控制器发现。证书服务信息收集get_certipy_results方法通过调用Certipy工具的find命令获取目标CA服务器的证书模板信息并将结果保存为JSON格式。代码中特别处理了连接超时和凭据错误等异常情况确保数据收集的可靠性。certipy_results subprocess.run([certipy, find, -u, f{self.__username}{self.__domain}, -p, self.__password, -dc-ip, self.__target, -vulnerable, -json, -output, self.__certipy_output_prefix], capture_outputTrue, textTrue).stdoutLDAP数据获取bind_to_ldap方法实现了与域控制器的LDAP连接支持ldap://389和ldaps://636两种协议。连接成功后get_domain_admins和get_dcs方法通过LDAP查询获取域管理员列表和域控制器信息为后续漏洞利用提供目标用户和主机信息。多线程执行引擎ADCSKiller的一大特色是采用多线程架构实现并发漏洞利用主要通过两个线程类实现CertipyRelay和Coercer。这两个类均继承自Python的threading.Thread实现了漏洞利用过程中的并行处理。CertipyRelay线程CertipyRelay线程负责启动Certipy的中继服务监听并处理来自目标服务器的证书请求。其核心逻辑在run方法中实现通过调用Certipy的relay命令启动中继服务。def run(self): print(f[] Started Relaying to {self.target_ca}) relaying_results subprocess.Popen([certipy, relay, -ca, self.target_ca, -template, DomainController], stdoutsubprocess.PIPE, stderrsubprocess.STDOUT, universal_newlinesTrue) for line in relaying_results.stdout: print(line.strip())Coercer线程Coercer线程则负责执行强制认证攻击诱导目标域控制器向中继服务器发送认证请求。其run方法调用Coercer工具的coerce命令实现强制认证功能。def run(self): print(f[] Started coercion from {self.target_dc} to {self.lhost}) subprocess.run([Coercer, coerce, -u, self.username, -p, self.password, -d, self.domain, -t, self.target_dc, -l, self.lhost, --always-continue], capture_outputTrue, textTrue).stdout print(f[] Finished coercion from {self.target_dc} to {self.lhost})漏洞利用层实现漏洞利用层通过run_exploits方法实现对不同类型ADCS漏洞的调度执行。目前支持ESC1和ESC8两种漏洞类型采用字典映射的方式将漏洞类型与对应的利用方法关联起来便于扩展新的漏洞利用模块。ESC1漏洞利用exploit_esc1方法实现了对ESC1漏洞的利用通过Certipy的req命令为域管理员请求证书再通过auth命令获取NT哈希。这一过程自动化了从证书请求到哈希获取的完整流程。ESC8漏洞利用exploit_esc8方法则实现了对ESC8漏洞的利用通过协调CertipyRelay和Coercer两个线程实现中继攻击。代码中根据CA服务器是否为域控制器动态调整攻击策略提高了攻击的适应性。依赖管理与扩展性ADCSKiller通过requirements.txt管理项目依赖目前主要依赖argparse和ldap3两个库分别用于命令行参数解析和LDAP操作。这种轻量级的依赖设计确保了工具的易用性和可移植性。从代码架构来看ADCSKiller预留了良好的扩展接口。run_exploits方法中采用的字典映射方式使得添加新的漏洞利用模块如ESC2-ESC7变得非常简单只需实现对应的利用方法并添加到映射字典即可。总结ADCSKiller通过模块化设计和多线程技术构建了一个高效的ADCS漏洞利用框架。其核心优势在于分层架构数据收集、漏洞分析和漏洞利用的清晰分离提高了代码的可维护性多线程并发通过CertipyRelay和Coercer线程实现并行攻击提升了攻击效率灵活扩展采用字典映射方式管理漏洞利用模块便于添加新的漏洞类型异常处理完善的错误处理机制提高了工具的稳定性和可靠性随着ADCS相关漏洞研究的深入ADCSKiller有望通过持续迭代成为ADCS安全评估的重要工具。对于安全研究人员而言其代码架构也为开发类似的漏洞利用框架提供了有益的参考。【免费下载链接】ADCSKillerAn ADCS Exploitation Automation Tool Weaponizing Certipy and Coercer项目地址: https://gitcode.com/gh_mirrors/ad/ADCSKiller创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考