Rubeus does not ship pre-compiled binaries. The project is intentionally distributed as source only — brittle AV signatures based on static binaries are counterproductive, and operators benefit from building the tool themselves so they can apply any necessary modifications before deployment. This page covers everything you need to go from a fresh clone to a workingDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ghostpack/rubeus/llms.txt
Use this file to discover all available pages before exploring further.
Rubeus.exe or Rubeus.dll.
Requirements
- Visual Studio 2019 Community Edition or later with the .NET desktop development workload installed
- .NET Framework SDK for your target version (3.5 or 4.0) — both are available as optional components in the Visual Studio installer
Build Steps
Visual Studio will load the
Rubeus project, which targets .NET 4.0 by default (set in Rubeus/Rubeus.csproj as <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>).Visual Studio compiles all source files and links the output executable. Watch the Output pane for any errors.
Targeting Other .NET Versions
The default target framework is .NET 4.0. To target .NET 3.5 instead, editRubeus/Rubeus.csproj and change the TargetFrameworkVersion element:
The
/debug flag at runtime outputs detailed ASN.1 structure information for every Kerberos message Rubeus constructs or parses. This is invaluable when troubleshooting unexpected KDC error codes or ticket decode failures — enable it by appending /debug to any command.Building as a Library
Rubeus can be compiled as a .NET class library (.dll) instead of a console executable. The library exposes the Rubeus.Program.MainString(string command) static method, which accepts a full Rubeus command string and returns all output as a string. This is the recommended approach for PowerShell and PSRemoting integration.
Change the output type
In Visual Studio, right-click the Rubeus project in Solution Explorer and select Properties. Under the Application tab, change Output type fromConsole Application to Class Library, then rebuild.
Alternatively, edit Rubeus.csproj directly:
Rubeus.dll instead of Rubeus.exe.
Call MainString from PowerShell
First, base64-encode the compiledRubeus.exe assembly so it can be loaded in-memory without writing a .dll to disk:
"aa..." with the full base64 content from rubeus.txt) and invoke MainString to capture output as a string:
Running over PSRemoting
For PSRemoting execution, appendMainString calls to your Rubeus PowerShell script (the one containing the base64-loaded assembly), then invoke the script file in a remote session:
MainString returns a plain string, the output serialises cleanly over the PSRemoting channel with no special handling required.