mirror of
https://github.com/GhostPack/Rubeus
synced 2026-06-08 11:10:41 +00:00
-Added universal '/nowrap' flag to prevent base64-blobs from being line wrapped
-Added '/consoleoutfile' to output console output to a file
-Added public 'MainString("command")' function to invoke over PSRemoting
-"brute" action to perform password bruteforcing attacks using raw AS-REQs (from @Zer1t0)
-Standardized "/user","/LUID","/service","/server" targeting to triage/klist/dump actions
-Added to the "kerberoast" action:
-"/pwdsetafter", "/pwdsetbefore", and "/resultlimit" arguments for better targeting (from @pkb1s)
-"/stats" flag to list statistics of user accounts without actually roasting them
-"/ldapfilter" argument for adding custom LDAP filters to the user search query
-"/simple" argument for output file formatting but to the console
-Added "/ldapfilter" argument to the "asreproast" actions
-Added to the "asktgt"/"asktgs"/"s4u" actions the option to save the .kirbi file to disk (from @audrummer15)
-Added a "currentluid" command to display the current logon sesion ID
-Cross-domain s4u functionality (from @0xe7)
-Overhauled LSA.cs for reusability and flexibility (thanks for the help @leechristensen !)
-"kerberoast" action updated to exclude disabled accounts by default
-"harvest" mode's "/interval" argument is now in seconds, to match "/monitor"
-"harvest/"monitor" revamped to no longer depend on 4624 events, does full extraction on each round
-Fixed some timestamp converting code in the ticket extraction section
-KERB_RETRIEVE_TKT_REQUEST fix for x32 systems (from @0xRCA)
-Fixed AES salt generation (from @monoxgas)
-Fixed accidental ticket request behavior when dumping from LsaCallAuthenticationPackage
-Fixed "renew" command invocation
-Fixed "asreproast" LDAP querying
51 lines
1.3 KiB
C#
Executable File
51 lines
1.3 KiB
C#
Executable File
using System;
|
|
using System.Collections.Generic;
|
|
|
|
|
|
namespace Rubeus.Commands
|
|
{
|
|
public class Hash : ICommand
|
|
{
|
|
public static string CommandName => "hash";
|
|
|
|
public void Execute(Dictionary<string, string> arguments)
|
|
{
|
|
Console.WriteLine("\r\n[*] Action: Calculate Password Hash(es)\r\n");
|
|
|
|
string user = "";
|
|
string domain = "";
|
|
string password = "";
|
|
|
|
if (arguments.ContainsKey("/domain"))
|
|
{
|
|
domain = arguments["/domain"];
|
|
}
|
|
|
|
if (arguments.ContainsKey("/user"))
|
|
{
|
|
string[] parts = arguments["/user"].Split('\\');
|
|
if (parts.Length == 2)
|
|
{
|
|
domain = parts[0];
|
|
user = parts[1];
|
|
}
|
|
else
|
|
{
|
|
user = arguments["/user"];
|
|
}
|
|
}
|
|
|
|
if (arguments.ContainsKey("/password"))
|
|
{
|
|
password = arguments["/password"];
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("[X] /password:X must be supplied!");
|
|
return;
|
|
}
|
|
|
|
Crypto.ComputeAllKerberosPasswordHashes(password, user, domain);
|
|
}
|
|
}
|
|
} |