public TaskMenuItem(CovenantAPI CovenantClient, Grunt Grunt) : base(CovenantClient) { try { this.Grunt = Grunt; this.MenuTitle = "Task"; this.MenuDescription = "Task a Grunt to do something."; this.MenuItemParameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Task Name", Values = this.CovenantClient.ApiGrunttasksGet().Select(T => new MenuCommandParameterValue { Value = T.Name }).ToList() } }; this.AdditionalOptions.Add(new MenuCommandTaskShow(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandTaskStart(CovenantClient)); var setCommand = new MenuCommandTaskSet(CovenantClient); this.AdditionalOptions.Add(setCommand); this.AdditionalOptions.Add(new MenuCommandGenericUnset(setCommand.Parameters.FirstOrDefault(P => P.Name == "Option").Values)); } catch (HttpOperationException e) { EliteConsole.PrintFormattedWarningLine("CovenantException: " + e.Response.Content); } }
private bool Connect() { HttpClientHandler clientHandler = new HttpClientHandler(); CovenantAPI LoginCovenantClient = new CovenantAPI(CovenantURI, new BasicAuthenticationCredentials { UserName = "", Password = "" }, clientHandler); LoginCovenantClient.HttpClient.Timeout = new TimeSpan(0, 0, 3); try { // Test connection with a blank login request CovenantUserLoginResult result = LoginCovenantClient.ApiUsersLoginPost(new CovenantUserLogin { UserName = "", Password = "" }); } catch (HttpRequestException e) when(e.InnerException.GetType().Name == "AuthenticationException") { // Invalid login is ok, just verifying that we can reach Covenant return(true); } catch (Exception) { return(false); } return(true); }
public MenuCommandUsersCreate(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Create"; this.Description = "Create a new Covenant user."; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "UserName" }, new MenuCommandParameter { Name = "Password" }, new MenuCommandParameter { Name = "Roles", Values = new List <MenuCommandParameterValue> { new MenuCommandParameterValue { Value = "User" }, new MenuCommandParameterValue { Value = "Administrator" }, new MenuCommandParameterValue { Value = "User,Administrator" } } } }; }
public EliteMenu(CovenantAPI CovenantClient) { this.CovenantClient = CovenantClient; this.MenuStack.Add(new CovenantBaseMenuItem(this.CovenantClient, this.EventPrinter)); this.onEventOccured = (sender, eventArgs) => { string context = this.GetMenuLevelTitleStack(); EventModel theEvent = eventArgs.theEvent; if (theEvent.Type == EventType.Normal) { if (this.EventPrinter.WillPrintEvent(theEvent, context)) { EliteConsole.PrintInfoLine(); this.EventPrinter.PrintEvent(theEvent, context); this.PrintMenuLevel(); } } else if (theEvent.Type == EventType.Download) { DownloadEvent downloadEvent = this.CovenantClient.ApiEventsDownloadByIdGet(theEvent.Id ?? default); string download = this.CovenantClient.ApiEventsDownloadByIdContentGet(downloadEvent.Id ?? default); System.IO.File.WriteAllBytes(System.IO.Path.Combine(Common.EliteDataFolder, theEvent.Message), Convert.FromBase64String(download)); } }; }
public MenuCommandTaskStart(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Start"; this.Description = "Start the Task"; this.Parameters = new List <MenuCommandParameter> { }; }
public CovenantBaseMenuItem(CovenantAPI CovenantClient) : base(CovenantClient) { this.MenuTitle = "Covenant"; this.MenuDescription = "Base Covenant menu."; this.MenuOptions.Add(new GruntsMenuItem(this.CovenantClient)); this.MenuOptions.Add(new LaunchersMenuItem(this.CovenantClient)); this.MenuOptions.Add(new ListenersMenuItem(this.CovenantClient)); this.MenuOptions.Add(new CredentialsMenuItem(this.CovenantClient)); this.MenuOptions.Add(new IndicatorsMenuItem(this.CovenantClient)); try { this.MenuOptions.Add(new UsersMenuItem(this.CovenantClient)); } catch (Microsoft.Rest.HttpOperationException) { } this.AdditionalOptions.Remove(this.AdditionalOptions.FirstOrDefault(O => O.Name == "Back")); this.AdditionalOptions.Add( new MenuCommandCovenantBaseItemShow() { Name = "Show", Description = "Show Help menu.", Parameters = new List <MenuCommandParameter>() } ); this.SetupMenuAutoComplete(); }
public MenuCommandWscriptLauncherSet(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Set"; this.Description = "Set WscriptLauncher option"; this.Parameters = new List<MenuCommandParameter> { new MenuCommandParameter { Name = "Option", Values = new List<MenuCommandParameterValue> { new MenuCommandParameterValue { Value = "ListenerName", NextValueSuggestions = this.CovenantClient.ApiListenersGet() .Where(L => L.Status == ListenerStatus.Active) .Select(L => L.Name).ToList() }, new MenuCommandParameterValue { Value = "ScriptLanguage", NextValueSuggestions = new List<string> { "JScript", "VBScript" } }, new MenuCommandParameterValue { Value = "DotNetFrameworkVersion", NextValueSuggestions = new List<string> { "net35", "net40" } }, new MenuCommandParameterValue { Value = "Delay" }, new MenuCommandParameterValue { Value = "Jitter" }, new MenuCommandParameterValue { Value = "ConnectAttempts" }, new MenuCommandParameterValue { Value = "LauncherString" } } }, new MenuCommandParameter { Name = "Value" } }; }
public CredentialsMenuItem(CovenantAPI CovenantClient) : base(CovenantClient) { this.MenuTitle = "Credentials"; this.MenuDescription = "Displays list of credentials."; this.AdditionalOptions.Add(new MenuCommandCredentialsShow()); this.AdditionalOptions.Add(new MenuCommandCredentialsTicket()); }
public IndicatorsMenuItem(CovenantAPI CovenantClient, EventPrinter EventPrinter) : base(CovenantClient, EventPrinter) { this.MenuTitle = "Indicators"; this.MenuDescription = "Displays list of indicators."; this.AdditionalOptions.Add(new MenuCommandListenersShow()); this.Refresh(); }
public UsersMenuItem(CovenantAPI CovenantClient, EventPrinter EventPrinter) : base(CovenantClient, EventPrinter) { this.MenuTitle = "Users"; this.MenuDescription = "Displays list of Covenant users."; this.AdditionalOptions.Add(new MenuCommandUsersShow(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandUsersCreate(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandUsersDelete(CovenantClient)); this.Refresh(); }
public HostedFilesMenuItem(CovenantAPI CovenantClient, Listener Listener) : base(CovenantClient) { this.Listener = Listener; this.MenuTitle = "HostedFiles"; this.MenuDescription = "Files hosted by the HTTP Listener."; this.AdditionalOptions.Add(new MenuCommandHostedFilesShow(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandHostedFilesHost(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandHostedFilesRemove(CovenantClient)); }
public UsersMenuItem(CovenantAPI CovenantClient) : base(CovenantClient) { this.MenuTitle = "Users"; this.MenuDescription = "Displays list of Covenant users."; this.AdditionalOptions.Add(new MenuCommandUsersShow(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandUsersCreate(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandUsersDelete(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandUsersPassword(CovenantClient)); }
public MenuCommandHTTPListenerSet(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Set"; this.Description = "Set HTTPListener option"; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Option", Values = new List <MenuCommandParameterValue> { new MenuCommandParameterValue { Value = "Name" }, new MenuCommandParameterValue { Value = "URL", NextValueSuggestions = new List <string> { "http://", "https://" } }, new MenuCommandParameterValue { Value = "ConnectAddress", NextValueSuggestions = Net.Dns.GetHostAddresses(Net.Dns.GetHostName()).Select(IP => IP.ToString()).ToList() }, new MenuCommandParameterValue { Value = "BindAddress", NextValueSuggestions = Net.Dns.GetHostAddresses(Net.Dns.GetHostName()).Select(IP => IP.ToString()).ToList() }, new MenuCommandParameterValue { Value = "BindPort", NextValueSuggestions = new List <string> { "80", "443", "8080" } }, new MenuCommandParameterValue { Value = "Dns" }, new MenuCommandParameterValue { Value = "UseSSL", NextValueSuggestions = new List <string> { "True", "False" } }, new MenuCommandParameterValue { Value = "SSLCertPath", NextValueSuggestions = Utilities.GetFilesForPath(Common.EliteDataFolder) }, new MenuCommandParameterValue { Value = "SSLCertPassword" }, new MenuCommandParameterValue { Value = "HttpProfile" } } }, new MenuCommandParameter { Name = "Value" } }; }
public MenuCommandGruntsUnhide(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Unhide"; this.Description = "Unhide a hidden Grunt."; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Hidden Grunt Name" } }; }
public MenuItem(CovenantAPI CovenantClient) { this.CovenantClient = CovenantClient; this.MenuOptions = new List <MenuItem>(); this.AdditionalOptions = new List <MenuCommand> { new MenuCommandHelp(), new MenuCommandBack(), new MenuCommandExit() }; }
public MenuCommandUsersDelete(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Delete"; this.Description = "Delete a Covenant user."; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "UserName" } }; }
public HTTPListenerMenuItem(CovenantAPI CovenantClient) : base(CovenantClient) { this.MenuTitle = "HTTP"; this.AdditionalOptions.Add(new MenuCommandHTTPListenerShow()); this.AdditionalOptions.Add(new MenuCommandHTTPListenerStart(this.CovenantClient)); var setCommand = new MenuCommandHTTPListenerSet(this.CovenantClient); this.AdditionalOptions.Add(setCommand); this.AdditionalOptions.Add(new MenuCommandGenericUnset(setCommand.Parameters.FirstOrDefault(P => P.Name == "Option").Values)); }
public MenuCommandMSBuildLauncherWriteFile(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Write"; this.Description = "Write xml to a file"; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Output File" } }; }
public ListenersMenuItem(CovenantAPI CovenantClient) : base(CovenantClient) { this.MenuTitle = "Listeners"; this.MenuDescription = "Displays list of listeners."; this.MenuOptions.Add(new HTTPListenerMenuItem(this.CovenantClient)); this.MenuOptions.Add(new ListenerInteractMenuItem(this.CovenantClient)); this.AdditionalOptions.Add(new MenuCommandListenersShow()); this.AdditionalOptions.Add(new MenuCommandListenersRename(CovenantClient)); }
public MenuCommandMSBuildLauncherHost(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Host"; this.Description = "Host a MSBuildLauncher on an HTTP Listener"; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Path" } }; }
public MenuCommandHTTPListenerSet(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Set"; this.Description = "Set HTTPListener option"; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Option", Values = new List <MenuCommandParameterValue> { new MenuCommandParameterValue { Value = "Name" }, new MenuCommandParameterValue { Value = "URL", NextValueSuggestions = new List <string> { "http://", "https://" } }, new MenuCommandParameterValue { Value = "ConnectAddress" }, new MenuCommandParameterValue { Value = "BindAddress" }, new MenuCommandParameterValue { Value = "BindPort", NextValueSuggestions = new List <string> { "80", "443", "8080" } }, new MenuCommandParameterValue { Value = "Dns" }, new MenuCommandParameterValue { Value = "UseSSL", NextValueSuggestions = new List <string> { "True", "False" } }, new MenuCommandParameterValue { Value = "SSLCertPath" }, new MenuCommandParameterValue { Value = "SSLCertPassword" }, new MenuCommandParameterValue { Value = "HttpProfile" } } }, new MenuCommandParameter { Name = "Value" } }; }
public GruntsMenuItem(CovenantAPI CovenantClient) : base(CovenantClient) { this.MenuTitle = "Grunts"; this.MenuDescription = "Displays list of connected grunts."; this.MenuOptions.Add(new GruntInteractMenuItem(this.CovenantClient)); this.AdditionalOptions.Add(new MenuCommandGruntsShow()); this.AdditionalOptions.Add(new MenuCommandGruntsRename(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandGruntsDelay(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandGruntsKill(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandGruntsHide()); this.AdditionalOptions.Add(new MenuCommandGruntsUnhide()); }
public MenuCommandMSBuildLauncherHost(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Host"; this.Description = "Host a MSBuildLauncher on an HTTP Listener"; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Path", Values = new MenuCommandParameterValuesFromFilePath(Common.EliteDataFolder) } }; }
public MenuCommandGruntsRename(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Rename"; this.Description = "Rename a Grunt"; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Old Name" }, new MenuCommandParameter { Name = "New Name" } }; }
public GruntsMenuItem(CovenantAPI CovenantClient, EventPrinter EventPrinter) : base(CovenantClient, EventPrinter) { this.MenuTitle = "Grunts"; this.MenuDescription = "Displays list of connected grunts."; this.MenuOptions.Add(new GruntInteractMenuItem(this.CovenantClient, this.EventPrinter)); this.AdditionalOptions.Add(new MenuCommandGruntsShow()); this.AdditionalOptions.Add(new MenuCommandGruntsRename(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandGruntsKill(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandGruntsHide(CovenantClient)); this.AdditionalOptions.Add(new MenuCommandGruntsUnhide(CovenantClient)); this.SetupMenuAutoComplete(); }
public MenuCommandShellCodeTaskSet(CovenantAPI CovenantClient) : base(CovenantClient) { Name = "Set"; Description = "Set ShellCodeTask option"; Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Option" }, new MenuCommandParameter { Name = "Value" } }; }
public MenuCommandAssemblyReflectTaskSet(CovenantAPI CovenantClient) : base(CovenantClient) { Name = "Set"; Description = "Set AssemblyReflectTask option"; Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Option" }, new MenuCommandParameter { Name = "Value" } }; }
public MenuCommandTaskSet(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Set"; this.Description = "Set Task option"; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "Option" }, new MenuCommandParameter { Name = "Value" } }; }
public ListenersMenuItem(CovenantAPI CovenantClient, EventPrinter EventPrinter) : base(CovenantClient, EventPrinter) { this.MenuTitle = "Listeners"; this.MenuDescription = "Displays list of listeners."; this.MenuOptions.Add(new HTTPListenerMenuItem(this.CovenantClient, this.EventPrinter)); this.MenuOptions.Add(new ListenerInteractMenuItem(this.CovenantClient, this.EventPrinter)); this.AdditionalOptions.Add(new MenuCommandListenersShow()); this.AdditionalOptions.Add(new MenuCommandListenersRename(CovenantClient)); this.SetupMenuAutoComplete(); this.Refresh(); }
public MenuCommandHostedFilesHost(CovenantAPI CovenantClient) : base(CovenantClient) { this.Name = "Host"; this.Description = "Host a new file."; this.Parameters = new List <MenuCommandParameter> { new MenuCommandParameter { Name = "LocalFilePath" }, new MenuCommandParameter { Name = "HostPath" } }; }