From 0aade08920c7e38b7b4e86798044c4d815e87059 Mon Sep 17 00:00:00 2001 From: VbScrub <53273102+VbScrub@users.noreply.github.com> Date: Sun, 9 Jan 2022 16:17:59 +0000 Subject: [PATCH] v0.4.2 --- GUI/Classes/BruteResult.cs | 2 +- .../Converters/DisabledToIconConverter.cs | 34 + GUI/Classes/CsvWriter.cs | 49 + GUI/Classes/UiHelpers.cs | 12 - GUI/GlobalStyles.xaml | 2 +- GUI/Images/gold_bars_16px.png | Bin 0 -> 392 bytes GUI/Images/movie_ticket_16px.png | Bin 0 -> 600 bytes GUI/Images/silver_bars_16px.png | Bin 0 -> 421 bytes GUI/Images/train_ticket_16px.png | Bin 0 -> 313 bytes GUI/Properties/AssemblyInfo.cs | 4 +- GUI/RubeusGui.csproj | 21 +- GUI/Windows/AboutWindow.xaml | 14 +- GUI/Windows/AboutWindow.xaml.cs | 6 +- GUI/Windows/MainWindow.xaml | 6 +- GUI/Windows/MainWindow.xaml.cs | 36 +- GUI/Windows/Tabs/BruteTab.xaml | 11 +- GUI/Windows/Tabs/BruteTab.xaml.cs | 43 +- GUI/Windows/Tabs/GoldenTicketTab.xaml | 224 +++++ GUI/Windows/Tabs/GoldenTicketTab.xaml.cs | 126 +++ GUI/Windows/Tabs/KerberoastTab.xaml | 4 +- GUI/Windows/Tabs/KerberoastTab.xaml.cs | 18 +- GUI/Windows/Tabs/PreAuthTab.xaml | 8 +- GUI/Windows/Tabs/PreAuthTab.xaml.cs | 15 +- GUI/Windows/Tabs/TgtTab.xaml | 2 +- Rubeus/Commands/Golden.cs | 92 +- Rubeus/Commands/Silver.cs | 102 +- Rubeus/Domain/AsRepRoastResult.cs | 1 + Rubeus/Properties/AssemblyInfo.cs | 6 +- Rubeus/lib/Ask.cs | 2 +- Rubeus/lib/ForgeTicket.cs | 879 +++++++++--------- Rubeus/lib/Helpers.cs | 2 +- Rubeus/lib/Interop.cs | 2 +- Rubeus/lib/KerberosException.cs | 5 +- Rubeus/lib/LSA.cs | 105 ++- Rubeus/lib/Networking.cs | 105 +-- Rubeus/lib/Roast.cs | 5 + VersionHistory.md | 28 +- 37 files changed, 1248 insertions(+), 723 deletions(-) create mode 100644 GUI/Classes/Converters/DisabledToIconConverter.cs create mode 100644 GUI/Classes/CsvWriter.cs create mode 100644 GUI/Images/gold_bars_16px.png create mode 100644 GUI/Images/movie_ticket_16px.png create mode 100644 GUI/Images/silver_bars_16px.png create mode 100644 GUI/Images/train_ticket_16px.png create mode 100644 GUI/Windows/Tabs/GoldenTicketTab.xaml create mode 100644 GUI/Windows/Tabs/GoldenTicketTab.xaml.cs diff --git a/GUI/Classes/BruteResult.cs b/GUI/Classes/BruteResult.cs index a0dc0cf8..4d90681a 100644 --- a/GUI/Classes/BruteResult.cs +++ b/GUI/Classes/BruteResult.cs @@ -90,7 +90,7 @@ public System.Windows.Media.SolidColorBrush ForegroundColor case CredentialStatus.UsernameAndPwdValidButPwdExpired: return System.Windows.Media.Brushes.LightBlue; default: - //TODO: See if we can get the default text color instead of hard coding white here + //TODO: Get the default text color instead of hard coding white here return System.Windows.Media.Brushes.White; } } diff --git a/GUI/Classes/Converters/DisabledToIconConverter.cs b/GUI/Classes/Converters/DisabledToIconConverter.cs new file mode 100644 index 00000000..9b0cdb59 --- /dev/null +++ b/GUI/Classes/Converters/DisabledToIconConverter.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; +using System.Windows.Media.Imaging; + +namespace RubeusGui +{ + + [ValueConversion(typeof(Boolean), typeof(BitmapFrame))] + public class DisabledToIconConverter : IValueConverter + { + + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + if (value == null || (bool)value == false) + { + return new BitmapImage(new Uri("pack://application:,,,/RubeusGui;component/images/male_user_16px.png")); + } + else + { + return new BitmapImage(new Uri("pack://application:,,,/RubeusGui;component/images/lock_blue_16px.png")); + } + } + + public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + return null; + } + + } +} diff --git a/GUI/Classes/CsvWriter.cs b/GUI/Classes/CsvWriter.cs new file mode 100644 index 00000000..00d89685 --- /dev/null +++ b/GUI/Classes/CsvWriter.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RubeusGui +{ + public class CsvWriter + { + + //public static void SaveCsvWithPrompt(string defaultFileName, List> data) + //{ + // if (data?.Count == 0 || data[0].Count == 0) + // { + // return; + // } + // var sfd = new Microsoft.Win32.SaveFileDialog(); + // sfd.Filter = "CSV Files (*.csv)|*.csv"; + // sfd.FileName = defaultFileName; + // if ((bool)sfd.ShowDialog()) + // { + // using (StreamWriter writer = new StreamWriter(sfd.FileName, false, new UTF8Encoding(false))) + // { + // foreach (Dictionary currentRow in data) + // { + // + // + // } + // } + // } + //} + + public static string MakeCsvSafe(string value) + { + if (string.IsNullOrEmpty(value)) + { + return "\" \""; + } + else + { + return "\"" + value.Replace("\"", "\"\"") + "\""; + } + } + } + + +} diff --git a/GUI/Classes/UiHelpers.cs b/GUI/Classes/UiHelpers.cs index 9429dc8c..b9b58ac0 100644 --- a/GUI/Classes/UiHelpers.cs +++ b/GUI/Classes/UiHelpers.cs @@ -12,18 +12,6 @@ class UiHelpers public static Uri HourglassIconPath => new Uri("pack://application:,,,/RubeusGui;component/images/hourglass_16px.png"); public static Uri PlayIconPath => new Uri("pack://application:,,,/RubeusGui;component/images/play_16px.png"); - public static string MakeCsvSafe(string value) - { - if (string.IsNullOrEmpty(value)) - { - return "\" \""; - } - else - { - return "\"" + value.Replace("\"", "\"\"") + "\""; - } - } - public static void CopyToClipboard(string text) { if (string.IsNullOrEmpty(text)) diff --git a/GUI/GlobalStyles.xaml b/GUI/GlobalStyles.xaml index 366079a4..49effae0 100644 --- a/GUI/GlobalStyles.xaml +++ b/GUI/GlobalStyles.xaml @@ -115,7 +115,7 @@ - + diff --git a/GUI/Images/gold_bars_16px.png b/GUI/Images/gold_bars_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..702dd1df54c7a312e24c10d70bb05058c221ee9c GIT binary patch literal 392 zcmV;30eAk1P)a8IDi>@qtuJM)`a_?s)c;mAJ_iasIS6S8aU=#q`P zZlgM5V~#^3kNbl31zbuq6dcsW#&yQRv*`5Dr(BDK&|(w<_IA`|616q<*kyK!(tb_P*% mSoSl&5H(nLH7zR1zn32`B#KMlx9@=f0000x<&?)CEB_%}XtI12M!BjIc zFnorwVKh(-#zfHJlP+2SZC}+PB3T7q-hF^a{Mj-IrM=$T*fATsJ#S2lBE|^J33eN;-wv%UMc>kS& zK}Cp>;mD(Z46nZ-G=o_{gPGVE8Q}&5PP=3;B_T8yq#2~(!w&`qD_Ni_AcvoW5oo}F zAPa(SKX`HD!RyyiYcmbb10Bb}5H#hIoszf^+}SKZQ8l2=5akRECQ^(HGJFujZXsy~ z$uoiyiM+J%JXLu~6_5Z3gACweWnd8EWMr_CVPsf#F0lje^8g-e)#;(qgQX!)@B);hbsg!!0w8ecF~rPhr8|X-@jip z6lH99c{q50a&UA9sQJOuw@GXA^bf-Yp$xDAP&Sy#TzYSlzPh|Gm;)qkKX`WM;j?#G zH3Ov?fWZZ#5ctpEKLRiw(Al@~X$Gld0TIaf-MgPTHy=D-!2k@0yD#2EZ^}dUGqPHo m?9izfY(ghqu)(PSNdf>`*Rq@~18I=}0000~S`c zkck`~Ufu)BXd1bo*8}14)46oF87}HHr5JQBMjUSmB(5U#ZpRWzP*Cu zI3OccViwyT4u`&4s02QrXvI>rH~rI zFo>;_XAK~C)%vBjxDPteq9?qnWo1sLO<`$q`I<8J)uQX3QD)JRMc)_DZg)UGUr41h z<>VAnDXWZPY>|5|^!o!K03|9zX*k09W-$uYLUIbG$$qpL6R@@Mf4@Eeq%gWzV?0O) P00000NkvXXu0mjfIh3;L literal 0 HcmV?d00001 diff --git a/GUI/Images/train_ticket_16px.png b/GUI/Images/train_ticket_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..e90d638fb0d0df28b195e67f65be98e1cfa22452 GIT binary patch literal 313 zcmV-90mlA`P)NU_g7JqBU%<4001pF5FAJDQ z4DlbkBH|4I2REi6;E=@>CSHW)-=BYQLwI;N3F-v-9i|ARm+9%#H;wmhKfMJL#7Tp~ z0ED3mK+*W@$-4%y&)U~suH@n32!P5FMScDJeSJlkUI$T%2e%>sOcqTyfXgll00000 LNkvXXu0mjf43UJJ literal 0 HcmV?d00001 diff --git a/GUI/Properties/AssemblyInfo.cs b/GUI/Properties/AssemblyInfo.cs index 505a6a4f..53aa75c4 100644 --- a/GUI/Properties/AssemblyInfo.cs +++ b/GUI/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.4.0.0")] -[assembly: AssemblyFileVersion("0.4.0.0")] +[assembly: AssemblyVersion("0.4.2.0")] +[assembly: AssemblyFileVersion("0.4.2.0")] diff --git a/GUI/RubeusGui.csproj b/GUI/RubeusGui.csproj index 01e968a8..a753b1b1 100644 --- a/GUI/RubeusGui.csproj +++ b/GUI/RubeusGui.csproj @@ -7,7 +7,7 @@ {46FB8893-7879-4891-ADEE-3FAC11AC1DD9} WinExe RubeusGui - RubeusGui + RubeusGUI v4.5.2 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} @@ -104,6 +104,8 @@ MSBuild:Compile Designer + + @@ -125,6 +127,9 @@ ComingSoonTab.xaml + + GoldenTicketTab.xaml + KerberoastTab.xaml @@ -170,6 +175,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + MSBuild:Compile Designer @@ -342,5 +351,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/GUI/Windows/AboutWindow.xaml b/GUI/Windows/AboutWindow.xaml index 3355d0de..daf58133 100644 --- a/GUI/Windows/AboutWindow.xaml +++ b/GUI/Windows/AboutWindow.xaml @@ -34,7 +34,6 @@ - @@ -44,15 +43,12 @@ @VbScrub - http://VbScrub.com + http://vbscrub.com - https://github.com/VbScrub/Rubeus-GUI - - - - https://github.com/GhostPack/Rubeus - - http://icons8.com + + https://github.com/GhostPack/Rubeus + + http://icons8.com diff --git a/GUI/Windows/AboutWindow.xaml.cs b/GUI/Windows/AboutWindow.xaml.cs index 5877cbb0..eadf1c64 100644 --- a/GUI/Windows/AboutWindow.xaml.cs +++ b/GUI/Windows/AboutWindow.xaml.cs @@ -26,7 +26,7 @@ public AboutWindow() private void Window_Loaded(object sender, RoutedEventArgs e) { LblVersion.Text = UiHelpers.GetAppVersionString(); - LblBuildDate.Text = "2nd December 2021"; // TODO: Update build date label before compiling + LblBuildDate.Text = "9th January 2022"; // TODO: Update build date label before compiling } private void WebsiteLnk_Click(object sender, RoutedEventArgs e) @@ -54,9 +54,5 @@ private void LnkIcons_Click(object sender, RoutedEventArgs e) UiHelpers.LaunchUrl("http://icons8.com"); } - private void LnkGithub_Click(object sender, RoutedEventArgs e) - { - UiHelpers.LaunchGithubMainUrl(); - } } } diff --git a/GUI/Windows/MainWindow.xaml b/GUI/Windows/MainWindow.xaml index 63c3dfaf..1f1adfb2 100644 --- a/GUI/Windows/MainWindow.xaml +++ b/GUI/Windows/MainWindow.xaml @@ -6,7 +6,7 @@ xmlns:local="clr-namespace:RubeusGui" xmlns:tabs="clr-namespace:RubeusGui.Windows.Tabs" mc:Ignorable="d" - Title="Rubeus GUI - ALPHA v0.4" Height="800" Width="1060" MinWidth="650" MinHeight="400" SnapsToDevicePixels="True" + Title="Rubeus GUI - ALPHA v0.4.2" Height="800" Width="1060" MinWidth="650" MinHeight="400" SnapsToDevicePixels="True" WindowStartupLocation="CenterScreen" Loaded="Window_Loaded" Icon="/RubeusGui;component/Images/icons8_grand_master_key_colour.ico" Closing="Window_Closing"> @@ -71,9 +71,9 @@ - + - + diff --git a/GUI/Windows/MainWindow.xaml.cs b/GUI/Windows/MainWindow.xaml.cs index 93bdf875..79a11e1f 100644 --- a/GUI/Windows/MainWindow.xaml.cs +++ b/GUI/Windows/MainWindow.xaml.cs @@ -25,23 +25,37 @@ public partial class MainWindow : Window public MainWindow() { - InitializeComponent(); + try + { + InitializeComponent(); + } + catch (Exception ex) + { + MessageBox.Show("Unexpected error in application startup: " + ex.Message + "\n" + ex.InnerException?.Message, "Unexpected Error", MessageBoxButton.OK, MessageBoxImage.Error); + } } private void Window_Loaded(object sender, RoutedEventArgs e) { - // Redirect all the Rubeus Console.WriteLine calls to a string that we can add to our log - Console.SetOut(_outputWriter); - Console.SetError(_outputWriter); + try + { + // Redirect all the Rubeus Console.WriteLine calls to a string that we can add to our log + Console.SetOut(_outputWriter); + Console.SetError(_outputWriter); - // Give each tab a reference to this main window so that they can get the global settings like domain and username etc - foreach (TabItem tab in TabCtrlMain.Items) + // Give each tab a reference to this main window so that they can get the global settings like domain and username etc + foreach (TabItem tab in TabCtrlMain.Items) + { + ((RubeusTab)tab.Content).OwnerWindow = this; + } + + // Load user preferences and last used domain name etc from XML file + LoadUserPreferences(); + } + catch (Exception ex) { - ((RubeusTab)tab.Content).OwnerWindow = this; + MessageBox.Show("Unexpected error in window load: " + ex.Message + "\n" + ex.InnerException?.Message, "Unexpected Error", MessageBoxButton.OK, MessageBoxImage.Error); } - - // Load user preferences and last used domain name etc from XML file - LoadUserPreferences(); } private void MenuItemFileExit_Click(object sender, RoutedEventArgs e) @@ -115,7 +129,7 @@ private void SaveUserPreferences() } } - // Called by individual tabs to get the global settings from this main window + // Called by individual tabs to get the global domain settings from this main window public DomainSettings GetDomainSettings() { DomainSettings settings = new DomainSettings(); diff --git a/GUI/Windows/Tabs/BruteTab.xaml b/GUI/Windows/Tabs/BruteTab.xaml index 0e617357..44c16b29 100644 --- a/GUI/Windows/Tabs/BruteTab.xaml +++ b/GUI/Windows/Tabs/BruteTab.xaml @@ -5,7 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:RubeusGui.Windows.Tabs" mc:Ignorable="d" - d:DesignHeight="550" d:DesignWidth="990"> + d:DesignHeight="650" d:DesignWidth="990"> @@ -104,7 +104,7 @@ - + + diff --git a/GUI/Windows/Tabs/BruteTab.xaml.cs b/GUI/Windows/Tabs/BruteTab.xaml.cs index 0de6b66f..e575b383 100644 --- a/GUI/Windows/Tabs/BruteTab.xaml.cs +++ b/GUI/Windows/Tabs/BruteTab.xaml.cs @@ -15,6 +15,7 @@ using System.Windows.Shapes; using System.Collections.ObjectModel; using Rubeus.Domain; +using System.IO; namespace RubeusGui.Windows.Tabs { @@ -122,13 +123,16 @@ private void BtnExecute_Click(object sender, RoutedEventArgs e) _results.Clear(); BtnCancel.IsEnabled = true; + BtnExportAll.IsEnabled = true; + LsvResults.IsEnabled = true; + PnlFilters.IsEnabled = true; LblExecuteBtn.Text = "Running..."; ImgExecuteBtn.Source = new BitmapImage(UiHelpers.HourglassIconPath); BtnExecute.IsEnabled = false; ProgBar.Visibility = Visibility.Visible; BtnCancel.Visibility = Visibility.Visible; - System.Threading.Thread bgThread = new System.Threading.Thread(() => RunBrute(domain, getUsersFromDomain, useParallel, usernames, passwords,skipNoPreAuth)); + System.Threading.Thread bgThread = new System.Threading.Thread(() => RunBrute(domain, getUsersFromDomain, useParallel, usernames, passwords, skipNoPreAuth)); bgThread.IsBackground = true; bgThread.Start(); } @@ -203,7 +207,7 @@ private void RunBrute(DomainSettings domain, bool getUsersFromDomain, bool usePa } // Called each time a new result should be added to the results listview. - // NOTE: Called from background thread or if user chose to use parallel processing then this could be called from multiple threads at once. + // NOTE: Called from background thread, or if user chose to use parallel processing then this could be called from multiple threads at once. // The fact we need to use Dispatcher.Invoke() to execute the method on the UI thread should also mean there's no locking required to make the // rest of this thread safe even if called simulatanously by multiple threads private void Brute_ResultAdded(object sender, BruteResult result) @@ -251,8 +255,6 @@ private void BruteFinished(string errorMessage, bool cancelled) // not terminated (shouldn't happen as we set Thread.IsBackground to true, but better safe than sorry) if (this.OwnerWindow.IsLoaded) { - LsvResults.IsEnabled = true; - PnlFilters.IsEnabled = true; LblExecuteBtn.Text = "Run"; BtnExecute.IsEnabled = true; ImgExecuteBtn.Source = new BitmapImage(UiHelpers.PlayIconPath); @@ -412,5 +414,38 @@ private void CtxItemDetails_Click(object sender, RoutedEventArgs e) UiHelpers.CopyToClipboard(((BruteResult)LsvResults.SelectedItem).StatusDescription); } } + + private void BtnExportAll_Click(object sender, RoutedEventArgs e) + { + try + { + if (LsvResults.ItemsSource != null && LsvResults.Items.Count != 0) + { + var sfd = new Microsoft.Win32.SaveFileDialog(); + sfd.Filter = "CSV Files (*.csv)|*.csv"; + sfd.FileName = "Brute Force Results.csv"; + if ((bool)sfd.ShowDialog()) + { + using (StreamWriter writer = new StreamWriter(sfd.FileName, false, new UTF8Encoding(false))) + { + writer.WriteLine("\"Username\",\"Password\",\"Details\",\"TGT (base64)\""); + foreach (BruteResult result in LsvResults.ItemsSource) + { + string username = CsvWriter.MakeCsvSafe(result.Username); + string password = CsvWriter.MakeCsvSafe(result.Password); + string details = CsvWriter.MakeCsvSafe(result.StatusDescription); + string tgt = CsvWriter.MakeCsvSafe(result.TgtBase64); + writer.WriteLine($"{username},{password},{details},{tgt}"); + } + } + MessageBox.Show("Results exported to file successfully", "File Saved Successfully", MessageBoxButton.OK, MessageBoxImage.Information); + } + } + } + catch (Exception ex) + { + MessageBox.Show("Error saving results to file: " + ex.Message, "Error Exporting Results", MessageBoxButton.OK, MessageBoxImage.Error); + } + } } } diff --git a/GUI/Windows/Tabs/GoldenTicketTab.xaml b/GUI/Windows/Tabs/GoldenTicketTab.xaml new file mode 100644 index 00000000..e2983bb8 --- /dev/null +++ b/GUI/Windows/Tabs/GoldenTicketTab.xaml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + A golden ticket allows you to impersonate any user in the domain but requires you to have the password hash for the special "krbtgt" account that exists in every domain. + A silver tickets allow you to impersonate any user in the domain but only when accessing a specific service. Silver tickets require you to have the password hash for the user account that the service is running as (which can often be obtained via kerberoasting) + + Show description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Not currently configurable but if it's something you would find useful let me know + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GUI/Windows/Tabs/GoldenTicketTab.xaml.cs b/GUI/Windows/Tabs/GoldenTicketTab.xaml.cs new file mode 100644 index 00000000..152e605b --- /dev/null +++ b/GUI/Windows/Tabs/GoldenTicketTab.xaml.cs @@ -0,0 +1,126 @@ +using Rubeus.Domain; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace RubeusGui.Windows.Tabs +{ + /// + /// Interaction logic for GoldenTicketTab.xaml + /// + public partial class GoldenTicketTab : RubeusTab + { + + //TODO: Finish implementing silver/golden ticket calls and then add this tab to the main window + + public GoldenTicketTab() + { + InitializeComponent(); + CboPasswordHashType.ItemsSource = new List() { new EncryptionDisplayItem(EncryptionType.RC4), + new EncryptionDisplayItem(EncryptionType.DES), + new EncryptionDisplayItem(EncryptionType.AES128), + new EncryptionDisplayItem(EncryptionType.AES256)}; + CboPasswordHashType.SelectedIndex = 0; + } + + private void LnkHideDescription_Click(object sender, RoutedEventArgs e) + { + ToggleDescriptionVisibility(LblDescription, LnkHideDescription); + } + + private void CboTicketType_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (this.IsLoaded) + { + if (CboTicketType.SelectedIndex == 0) + { + RowSpn.Height = new GridLength(31); + TxtSpn.Visibility = Visibility.Visible; + LblServicePassword.Text = "Service password hash:"; + ChkSilverPtt.Visibility = Visibility.Visible; + ChkGoldenPtt.Visibility = Visibility.Collapsed; + } + else + { + RowSpn.Height = new GridLength(0); + TxtSpn.Visibility = Visibility.Collapsed; + LblServicePassword.Text = "Krbtgt password hash:"; + ChkSilverPtt.Visibility = Visibility.Collapsed; + ChkGoldenPtt.Visibility = Visibility.Visible; + } + } + } + + private void LnkFeedback_Click(object sender, RoutedEventArgs e) + { + UiHelpers.LaunchGithubEnhancementUrl(); + } + + private void RubeusTab_Loaded(object sender, RoutedEventArgs e) + { + if (this.ExpandAdvancedOptions) + { + ExpAdvancedTicket.IsExpanded = true; + ExpAdvancedUser.IsExpanded = true; + } + } + + private void BtnExecute_Click(object sender, RoutedEventArgs e) + { + + } + + private void CreateTicket() + { + //Rubeus.ForgeTickets.ForgeTicket() + } + + private void CreateTicketFinished(string ticket, string errorMessage) + { + + } + + private void BtnCopyTgt_Click(object sender, RoutedEventArgs e) + { + + } + + private void BtnExportKirbi_Click(object sender, RoutedEventArgs e) + { + + } + + private void BtnExportBase64_Click(object sender, RoutedEventArgs e) + { + + } + + private void BtnLookupDomainSid_Click(object sender, RoutedEventArgs e) + { + DomainSettings domain; + try + { + domain = OwnerWindow.GetDomainSettings(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Invalid Domain Settings", MessageBoxButton.OK, MessageBoxImage.Warning); + return; + } + + //TODO: Get SID from domain + + } + } +} diff --git a/GUI/Windows/Tabs/KerberoastTab.xaml b/GUI/Windows/Tabs/KerberoastTab.xaml index 25bb4c9b..84fa02ee 100644 --- a/GUI/Windows/Tabs/KerberoastTab.xaml +++ b/GUI/Windows/Tabs/KerberoastTab.xaml @@ -69,7 +69,7 @@ - + @@ -149,7 +149,7 @@ -