Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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"
                 }
             }
         }
     };
 }
Ejemplo n.º 4
0
 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));
         }
     };
 }
Ejemplo n.º 5
0
 public MenuCommandTaskStart(CovenantAPI CovenantClient) : base(CovenantClient)
 {
     this.Name        = "Start";
     this.Description = "Start the Task";
     this.Parameters  = new List <MenuCommandParameter> {
     };
 }
Ejemplo n.º 6
0
 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();
 }
Ejemplo n.º 7
0
 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" }
     };
 }
Ejemplo n.º 8
0
        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());
        }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
 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();
 }
Ejemplo n.º 11
0
 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));
 }
Ejemplo n.º 12
0
 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));
 }
Ejemplo n.º 13
0
 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"
         }
     };
 }
Ejemplo n.º 14
0
 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"
         }
     };
 }
Ejemplo n.º 15
0
 public MenuItem(CovenantAPI CovenantClient)
 {
     this.CovenantClient    = CovenantClient;
     this.MenuOptions       = new List <MenuItem>();
     this.AdditionalOptions = new List <MenuCommand> {
         new MenuCommandHelp(),
         new MenuCommandBack(),
         new MenuCommandExit()
     };
 }
Ejemplo n.º 16
0
 public MenuCommandUsersDelete(CovenantAPI CovenantClient) : base(CovenantClient)
 {
     this.Name        = "Delete";
     this.Description = "Delete a Covenant user.";
     this.Parameters  = new List <MenuCommandParameter> {
         new MenuCommandParameter {
             Name = "UserName"
         }
     };
 }
Ejemplo n.º 17
0
        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));
        }
Ejemplo n.º 18
0
 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"
         }
     };
 }
Ejemplo n.º 19
0
        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));
        }
Ejemplo n.º 20
0
 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"
         }
     };
 }
Ejemplo n.º 21
0
 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"
         }
     };
 }
Ejemplo n.º 22
0
 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());
 }
Ejemplo n.º 23
0
 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)
         }
     };
 }
Ejemplo n.º 24
0
 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"
         }
     };
 }
Ejemplo n.º 25
0
        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();
        }
Ejemplo n.º 26
0
 public MenuCommandShellCodeTaskSet(CovenantAPI CovenantClient) : base(CovenantClient)
 {
     Name        = "Set";
     Description = "Set ShellCodeTask option";
     Parameters  = new List <MenuCommandParameter> {
         new MenuCommandParameter {
             Name = "Option"
         },
         new MenuCommandParameter {
             Name = "Value"
         }
     };
 }
Ejemplo n.º 27
0
 public MenuCommandAssemblyReflectTaskSet(CovenantAPI CovenantClient) : base(CovenantClient)
 {
     Name        = "Set";
     Description = "Set AssemblyReflectTask option";
     Parameters  = new List <MenuCommandParameter> {
         new MenuCommandParameter {
             Name = "Option"
         },
         new MenuCommandParameter {
             Name = "Value"
         }
     };
 }
Ejemplo n.º 28
0
 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"
         }
     };
 }
Ejemplo n.º 29
0
        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();
        }
Ejemplo n.º 30
0
 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"
         }
     };
 }