Convert Figma logo to code with AI

ly4k logoCertipy

Tool for Active Directory Certificate Services enumeration and abuse

3,011
415
3,011
7

Top Related Projects

14,485

Impacket is a collection of Python classes for working with network protocols.

4,582

Trying to tame the three-headed dog.

A Python based ingestor for BloodHound

Quick Overview

Certipy is a Python-based tool designed for offensive security testing and exploitation of Active Directory Certificate Services (AD CS). It provides a comprehensive set of features for enumerating, abusing, and managing AD CS, making it a valuable asset for penetration testers and security researchers.

Pros

  • Offers a wide range of AD CS exploitation techniques in a single tool
  • Regularly updated with new features and bug fixes
  • Well-documented with detailed usage instructions
  • Supports both offensive and defensive use cases

Cons

  • Requires in-depth knowledge of AD CS to use effectively
  • May be detected by some antivirus software as a potential threat
  • Limited to Windows environments with AD CS deployed
  • Potential for misuse if not handled responsibly

Code Examples

# Enumerate AD CS
certipy find -u user@domain.local -p Password123! -dc-ip 192.168.1.10
# Request a certificate
certipy req -u user@domain.local -p Password123! -ca CA-NAME -template User
# Exploit ESC1 vulnerability
certipy req -u user@domain.local -p Password123! -ca CA-NAME -template VulnerableTemplate -upn administrator@domain.local

Getting Started

  1. Install Certipy:

    pip install certipy-ad
    
  2. Basic usage:

    certipy -h
    
  3. Enumerate AD CS:

    certipy find -u user@domain.local -p Password123! -dc-ip 192.168.1.10
    
  4. Request a certificate:

    certipy req -u user@domain.local -p Password123! -ca CA-NAME -template User
    

Remember to use Certipy responsibly and only on systems you have permission to test.

Competitor Comparisons

14,485

Impacket is a collection of Python classes for working with network protocols.

Pros of Impacket

  • Broader scope: Supports a wide range of protocols and attack techniques
  • Mature project: Well-established with extensive documentation and community support
  • Versatile: Can be used as a library or standalone tool

Cons of Impacket

  • Complexity: Steeper learning curve due to its extensive feature set
  • Language limitations: Written in Python, which may not be ideal for all use cases
  • Maintenance: Large codebase can lead to slower updates and potential security issues

Code Comparison

Impacket (LDAP query example):

from impacket.ldap import ldap
ldap_connection = ldap.LDAPConnection(f'ldap://{target}')
ldap_connection.login(username, password)
results = ldap_connection.search(searchFilter='(objectClass=user)')

Certipy (Certificate request example):

from certipy import cert
cert_request = cert.CertificateRequest(target, username, password)
cert_request.request('user')
cert_request.save('user.pfx')

Summary

Impacket is a comprehensive toolkit for network protocol manipulation and penetration testing, offering a wide range of features but with increased complexity. Certipy focuses specifically on Active Directory Certificate Services (AD CS) abuse, providing a more specialized and potentially easier-to-use tool for certificate-related attacks.

4,582

Trying to tame the three-headed dog.

Pros of Rubeus

  • More comprehensive Kerberos toolkit with a wider range of attack vectors
  • Written in C#, allowing for easier integration with other Windows-based tools
  • Supports both user and machine authentication scenarios

Cons of Rubeus

  • Limited to Windows environments, reducing cross-platform compatibility
  • Requires more setup and dependencies compared to Certipy
  • Less focused on certificate-based attacks and vulnerabilities

Code Comparison

Rubeus (C#):

string userName = "user@domain.com";
string password = "password123";
Rubeus.Program.Main(new string[] { "asktgt", "/user:" + userName, "/password:" + password });

Certipy (Python):

from certipy import main
main(['req', '-u', 'user@domain.com', '-p', 'password123', '-target', 'dc.domain.com'])

Summary

Rubeus is a more comprehensive Kerberos toolkit for Windows environments, offering a wide range of attack vectors and authentication scenarios. However, it's limited to Windows and requires more setup. Certipy, on the other hand, is more focused on certificate-based attacks and offers better cross-platform compatibility, but with a narrower scope of functionality.

A Python based ingestor for BloodHound

Pros of BloodHound.py

  • Focuses on Active Directory enumeration and visualization
  • Integrates seamlessly with the BloodHound GUI for attack path analysis
  • Supports various authentication methods, including Kerberos

Cons of BloodHound.py

  • Limited to Active Directory environments
  • Requires additional tools for comprehensive AD security assessment
  • May trigger security alerts due to extensive enumeration

Code Comparison

BloodHound.py:

bloodhound = BloodHound(username, password, domain)
bloodhound.collect(collection_methods=['group', 'localadmin'])
bloodhound.write_output(filename='bloodhound_data.json')

Certipy:

certipy = Certipy(username, password, domain)
certipy.scan(target='dc.domain.com')
certipy.request('user@domain.com', 'template')

BloodHound.py is tailored for Active Directory enumeration and integrates with the BloodHound GUI, making it ideal for visualizing attack paths. However, it's limited to AD environments and may trigger security alerts.

Certipy, on the other hand, focuses on certificate-based attacks and provides a more comprehensive toolkit for AD Certificate Services exploitation. It offers a wider range of attack techniques but may require more expertise to use effectively.

Both tools are valuable for penetration testers and security professionals, with BloodHound.py excelling in AD enumeration and visualization, while Certipy specializes in certificate-based attacks and AD CS exploitation.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Certipy - AD CS Attack & Enumeration Toolkit

PyPI version Python License

Certipy is a powerful offensive and defensive toolkit for enumerating and abusing Active Directory Certificate Services (AD CS). It helps red teamers, penetration testers, and defenders assess AD CS misconfigurations - including full support for identifying and exploiting all known ESC1-ESC16 attack paths.

[!WARNING] Use only in environments where you have explicit authorization. Unauthorized use may be illegal.


🔍 Features

  • 🔎 Discover Certificate Authorities and Templates
  • 🚩 Identify misconfigurations
  • 🔐 Request and forge certificates
  • 🎭 Perform authentication using certificates
  • 📡 Relay NTLM authentication to AD CS HTTP(S)/RPC endpoints
  • 🗝️ Support for Shadow Credentials, Golden Certificates, and Certificate Mapping Attacks
  • 🧰 And much more!

📚 Full Wiki & Documentation

Read the full step-by-step usage guide, including installation, vulnerability explanations, examples, and mitigations in the 📘 Certipy Wiki.


⚙️ Installation

See the Installation Guide for instructions on how to install Certipy.


🚀 Quick Start

See the Quick Start Guide for a quick overview of the most common commands and usage examples.


🎯 Supported AD CS Vulnerabilities

Certipy supports detection and exploitation of AD CS vulnerabilities across the full range of ESC1-ESC16.

For detailed explanations and exploitation steps, refer to the Certipy Wiki.


📎 Resources

See the Resources for selection of key resources related to AD CS security.


🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines on reporting issues, improving documentation, or submitting pull requests.


🌟 Sponsors

Thanks to these generous sponsors for supporting the development of this project. Your contributions help sustain ongoing work and improvements.

User avatar: Henri SaloUser avatar: mxrchUser avatar: ClipsUser avatar: John HancockUser avatar:

👤 Author

Developed by @ly4k, with valuable contributions from the community.


📘 Wiki

📖 Visit the Certipy Wiki for detailed documentation, usage examples, ESC vulnerability breakdowns, and mitigation advice.