示例#1
0
 public ListenerApiController(CovenantContext context, UserManager <CovenantUser> userManager, IConfiguration configuration, ConcurrentDictionary <int, CancellationTokenSource> ListenerCancellationTokens)
 {
     _context       = context;
     _userManager   = userManager;
     _configuration = configuration;
     _ListenerCancellationTokens = ListenerCancellationTokens;
 }
示例#2
0
        public static void InitializeListeners(CovenantContext context, Dictionary <int, CancellationTokenSource> cancellationTokens)
        {
            if (!context.ListenerTypes.Any())
            {
                context.ListenerTypes.Add(ListenerType.HttpListenerType);
                context.SaveChanges();
            }
            if (!context.Profiles.Any())
            {
                HttpProfile defaultProfile = HttpProfile.Create(Common.CovenantDefaultHttpProfile);
                int         idNum          = 1;
                defaultProfile.Id = idNum;
                context.Profiles.Add(defaultProfile);
                List <HttpProfile> profiles = Directory.GetFiles(Common.CovenantProfileDirectory, "*.yaml", SearchOption.AllDirectories)
                                              .Where(F => F != Common.CovenantDefaultHttpProfile)
                                              .Select(F => HttpProfile.Create(F))
                                              .ToList();
                foreach (HttpProfile p in profiles)
                {
                    idNum++;
                    p.Id = idNum;
                    context.Profiles.Add(p);
                }
            }


            foreach (Listener l in context.Listeners.Where(L => L.Status == Listener.ListenerStatus.Active))
            {
                HttpProfile profile = (HttpProfile)context.Profiles.FirstOrDefault(HP => HP.Id == l.ProfileId);
                cancellationTokens[l.Id] = l.Start(profile);
            }
        }
        public async static Task InitializeListeners(ICovenantService service, CovenantContext context, ConcurrentDictionary <int, CancellationTokenSource> ListenerCancellationTokens)
        {
            if (!context.ListenerTypes.Any())
            {
                await service.CreateEntities <ListenerType>(
                    new ListenerType { Name = "HTTP", Description = "Listens on HTTP protocol." },
                    new ListenerType { Name = "Bridge", Description = "Creates a C2 Bridge for custom listeners." }
                    );
            }
            if (!context.Profiles.Any())
            {
                string[]      files        = Directory.GetFiles(Common.CovenantProfileDirectory, "*.yaml", SearchOption.AllDirectories);
                HttpProfile[] httpProfiles = files.Where(F => F.Contains("HTTP", StringComparison.CurrentCultureIgnoreCase))
                                             .Select(F => HttpProfile.Create(F))
                                             .ToArray();
                BridgeProfile[] bridgeProfiles = files.Where(F => F.Contains("Bridge", StringComparison.CurrentCultureIgnoreCase))
                                                 .Select(F => BridgeProfile.Create(F))
                                                 .ToArray();
                await service.CreateProfiles(httpProfiles);

                await service.CreateProfiles(bridgeProfiles);
            }
            var listeners = (await service.GetListeners()).Where(L => L.Status == ListenerStatus.Active);

            foreach (Listener l in listeners)
            {
                l.Profile = await service.GetProfile(l.ProfileId);

                await service.StartListener(l.Id);
            }
        }
示例#4
0
 public GruntCommandApiController(CovenantContext context, UserManager <CovenantUser> userManager, IHubContext <GruntHub> grunthub, IHubContext <EventHub> eventhub)
 {
     _context     = context;
     _userManager = userManager;
     _grunthub    = grunthub;
     _eventhub    = eventhub;
 }
示例#5
0
 public CovenantUserApiController(CovenantContext context, UserManager <CovenantUser> userManager, RoleManager <IdentityRole> roleManager, SignInManager <CovenantUser> signInManager, IConfiguration configuration)
 {
     _context       = context;
     _userManager   = userManager;
     _roleManager   = roleManager;
     _signInManager = signInManager;
     _configuration = configuration;
 }
示例#6
0
 public CovenantUserApiController(CovenantContext context, UserManager <CovenantUser> userManager, SignInManager <CovenantUser> signInManager, IConfiguration configuration, IHubContext <EventHub> eventhub)
 {
     _context       = context;
     _userManager   = userManager;
     _signInManager = signInManager;
     _configuration = configuration;
     _eventhub      = eventhub;
 }
示例#7
0
 public ListenerApiController(CovenantContext context, UserManager <CovenantUser> userManager, SignInManager <CovenantUser> signInManager, IConfiguration configuration, Dictionary <int, CancellationTokenSource> cancellationTokens)
 {
     _context            = context;
     _userManager        = userManager;
     _signInManager      = signInManager;
     _configuration      = configuration;
     _cancellationTokens = cancellationTokens;
 }
 public async static Task Initialize(ICovenantService service, CovenantContext context, RoleManager <IdentityRole> roleManager, ConcurrentDictionary <int, CancellationTokenSource> ListenerCancellationTokens)
 {
     await InitializeListeners(service, context, ListenerCancellationTokens);
     await InitializeImplantTemplates(service, context);
     await InitializeLaunchers(service, context);
     await InitializeTasks(service, context);
     await InitializeRoles(roleManager);
 }
示例#9
0
 public GruntApiController(CovenantContext context, UserManager <CovenantUser> userManager, IHubContext <GruntHub> grunthub, IHubContext <EventHub> eventhub)
 {
     _context     = context;
     _userManager = userManager;
     _grunthub    = grunthub;
     _eventhub    = eventhub;
     interact     = new Interaction(_context, grunthub, eventhub);
 }
示例#10
0
 public ListenerController(CovenantContext context, UserManager <CovenantUser> userManager, IConfiguration configuration, ConcurrentDictionary <int, CancellationTokenSource> ListenerCancellationTokens, IHubContext <EventHub> eventhub)
 {
     _context       = context;
     _userManager   = userManager;
     _configuration = configuration;
     _ListenerCancellationTokens = ListenerCancellationTokens;
     _eventhub = eventhub;
 }
示例#11
0
 public void Setup()
 {
     //Inicializa o banco, apagando e recriando-o
     Database.SetInitializer(new DropCreateDatabaseAlways <CovenantContext>());
     //Seta um registro padrão pra ser usado nos testes
     _contextForTest = new CovenantContext();
     _contextForTest.Covenants.Add(ObjectMother.GetCovenant());
     _contextForTest.SaveChanges();
 }
示例#12
0
        public static void Initialize(CovenantContext context, UserManager <CovenantUser> userManager, RoleManager <IdentityRole> roleManager, IConfiguration configuration, Dictionary <int, CancellationTokenSource> cancellationTokens)
        {
            context.Database.EnsureCreated();

            InitializeListeners(context, cancellationTokens);
            InitializeLaunchers(context);
            InitializeTasks(context);
            InitializeRoles(roleManager);
            InitializeUsers(userManager, configuration);
        }
示例#13
0
 public async static Task InitializeLaunchers(ICovenantService service, CovenantContext context)
 {
     if (!context.Launchers.Any())
     {
         var launchers = new Launcher[]
         {
             new BinaryLauncher(),
             new PowerShellLauncher(),
             new MSBuildLauncher(),
             new InstallUtilLauncher(),
             new WmicLauncher(),
             new Regsvr32Launcher(),
             new MshtaLauncher(),
             new CscriptLauncher(),
             new WscriptLauncher()
         };
         await service.CreateEntities(launchers);
     }
 }
示例#14
0
 public static void InitializeLaunchers(CovenantContext context)
 {
     if (!context.Launchers.Any())
     {
         var launchers = new List <Launcher>
         {
             new WmicLauncher(),
             new Regsvr32Launcher(),
             new MshtaLauncher(),
             new CscriptLauncher(),
             new WscriptLauncher(),
             new InstallUtilLauncher(),
             new MSBuildLauncher(),
             new PowerShellLauncher(),
             new BinaryLauncher()
         };
         foreach (Launcher l in launchers)
         {
             context.Launchers.Add(l);
         }
     }
 }
示例#15
0
 public TemplateController(CovenantContext context)
 {
     _context = context;
 }
        public async static Task InitializeImplantTemplates(ICovenantService service, CovenantContext context)
        {
            if (!context.ImplantTemplates.Any())
            {
                var templates = new ImplantTemplate[]
                {
                    new ImplantTemplate
                    {
                        Name                     = "GruntHTTP",
                        Description              = "A Windows implant written in C# that communicates over HTTP.",
                        Language                 = ImplantLanguage.CSharp,
                        CommType                 = CommunicationType.HTTP,
                        ImplantDirection         = ImplantDirection.Pull,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ImplantTemplate
                    {
                        Name                     = "GruntSMB",
                        Description              = "A Windows implant written in C# that communicates over SMB.",
                        Language                 = ImplantLanguage.CSharp,
                        CommType                 = CommunicationType.SMB,
                        ImplantDirection         = ImplantDirection.Push,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ImplantTemplate
                    {
                        Name                     = "GruntBridge",
                        Description              = "A customizable implant written in C# that communicates with a custom C2Bridge.",
                        Language                 = ImplantLanguage.CSharp,
                        CommType                 = CommunicationType.Bridge,
                        ImplantDirection         = ImplantDirection.Push,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ImplantTemplate
                    {
                        Name                     = "Brute",
                        Description              = "A cross-platform implant built on .NET Core 3.1.",
                        Language                 = ImplantLanguage.CSharp,
                        CommType                 = CommunicationType.HTTP,
                        ImplantDirection         = ImplantDirection.Pull,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.NetCore31
                        }
                    },
                    new ImplantTemplate
                    {
                        Name                     = "GruntHTTPPortForward",
                        Description              = "A Windows implant written in C# that communicates over HTTP. Contains reverse port forward functionality.",
                        Language                 = ImplantLanguage.CSharp,
                        CommType                 = CommunicationType.HTTP,
                        ImplantDirection         = ImplantDirection.Pull,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    }
                };
                templates.ToList().ForEach(t => t.ReadFromDisk());
                await service.CreateImplantTemplates(templates);

                await service.CreateEntities(
                    new ListenerTypeImplantTemplate
                {
                    ListenerType    = await service.GetListenerTypeByName("HTTP"),
                    ImplantTemplate = await service.GetImplantTemplateByName("GruntHTTP")
                },
                    new ListenerTypeImplantTemplate
                {
                    ListenerType    = await service.GetListenerTypeByName("HTTP"),
                    ImplantTemplate = await service.GetImplantTemplateByName("GruntSMB")
                },
                    new ListenerTypeImplantTemplate
                {
                    ListenerType    = await service.GetListenerTypeByName("Bridge"),
                    ImplantTemplate = await service.GetImplantTemplateByName("GruntBridge")
                },
                    new ListenerTypeImplantTemplate
                {
                    ListenerType    = await service.GetListenerTypeByName("Bridge"),
                    ImplantTemplate = await service.GetImplantTemplateByName("GruntSMB")
                },
                    new ListenerTypeImplantTemplate
                {
                    ListenerType    = await service.GetListenerTypeByName("HTTP"),
                    ImplantTemplate = await service.GetImplantTemplateByName("Brute")
                },
                    new ListenerTypeImplantTemplate
                {
                    ListenerType    = await service.GetListenerTypeByName("HTTP"),
                    ImplantTemplate = await service.GetImplantTemplateByName("GruntHTTPPortForward")
                }
                    );
            }
        }
 public ReferenceAssemblyApiController(CovenantContext context)
 {
     _context = context;
 }
        public async static Task InitializeTasks(ICovenantService service, CovenantContext context)
        {
            if (!context.ReferenceAssemblies.Any())
            {
                List <ReferenceAssembly> ReferenceAssemblies = Directory.GetFiles(Common.CovenantAssemblyReferenceNet35Directory).Select(R =>
                {
                    FileInfo info = new FileInfo(R);
                    return(new ReferenceAssembly
                    {
                        Name = info.Name,
                        Location = info.FullName.Replace(Common.CovenantAssemblyReferenceDirectory, ""),
                        DotNetVersion = Common.DotNetVersion.Net35
                    });
                }).ToList();
                Directory.GetFiles(Common.CovenantAssemblyReferenceNet40Directory).ToList().ForEach(R =>
                {
                    FileInfo info = new FileInfo(R);
                    ReferenceAssemblies.Add(new ReferenceAssembly
                    {
                        Name          = info.Name,
                        Location      = info.FullName.Replace(Common.CovenantAssemblyReferenceDirectory, ""),
                        DotNetVersion = Common.DotNetVersion.Net40
                    });
                });
                await service.CreateReferenceAssemblies(ReferenceAssemblies.ToArray());
            }
            if (!context.EmbeddedResources.Any())
            {
                EmbeddedResource[] EmbeddedResources = Directory.GetFiles(Common.CovenantEmbeddedResourcesDirectory).Select(R =>
                {
                    FileInfo info = new FileInfo(R);
                    return(new EmbeddedResource
                    {
                        Name = info.Name,
                        Location = info.FullName.Replace(Common.CovenantEmbeddedResourcesDirectory, "")
                    });
                }).ToArray();
                await service.CreateEmbeddedResources(EmbeddedResources);
            }

            #region ReferenceSourceLibraries
            if (!context.ReferenceSourceLibraries.Any())
            {
                var ReferenceSourceLibraries = new ReferenceSourceLibrary[]
                {
                    new ReferenceSourceLibrary
                    {
                        Name     = "SharpSploit", Description = "SharpSploit is a library for C# post-exploitation modules.",
                        Location = "SharpSploit" + Path.DirectorySeparatorChar + "SharpSploit" + Path.DirectorySeparatorChar,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ReferenceSourceLibrary
                    {
                        Name     = "Rubeus", Description = "Rubeus is a C# toolset for raw Kerberos interaction and abuses.",
                        Location = "Rubeus" + Path.DirectorySeparatorChar,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ReferenceSourceLibrary
                    {
                        Name     = "Seatbelt", Description = "Seatbelt is a C# project that performs a number of security oriented host-survey \"safety checks\" relevant from both offensive and defensive security perspectives.",
                        Location = "Seatbelt" + Path.DirectorySeparatorChar,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ReferenceSourceLibrary
                    {
                        Name     = "SharpDPAPI", Description = "SharpDPAPI is a C# port of some Mimikatz DPAPI functionality.",
                        Location = "SharpDPAPI" + Path.DirectorySeparatorChar + "SharpDPAPI" + Path.DirectorySeparatorChar,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    // new ReferenceSourceLibrary
                    // {
                    //     Name = "SharpChrome", Description = "SharpChrome is a C# port of some Mimikatz DPAPI functionality targeting Google Chrome.",
                    //     Location = Common.CovenantReferenceSourceLibraries + "SharpDPAPI" + Path.DirectorySeparatorChar + "SharpChrome" + Path.DirectorySeparatorChar,
                    //     SupportedDotNetVersions = new List<Common.DotNetVersion> { Common.DotNetVersion.Net35, Common.DotNetVersion.Net40 }
                    // },
                    new ReferenceSourceLibrary
                    {
                        Name     = "SharpDump", Description = "SharpDump is a C# port of PowerSploit's Out-Minidump.ps1 functionality.",
                        Location = "SharpDump" + Path.DirectorySeparatorChar,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ReferenceSourceLibrary
                    {
                        Name     = "SharpUp", Description = "SharpUp is a C# port of various PowerUp functionality.",
                        Location = "SharpUp" + Path.DirectorySeparatorChar,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ReferenceSourceLibrary
                    {
                        Name     = "SharpWMI", Description = "SharpWMI is a C# implementation of various WMI functionality.",
                        Location = "SharpWMI" + Path.DirectorySeparatorChar,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    },
                    new ReferenceSourceLibrary
                    {
                        Name     = "SharpSC", Description = "SharpSC is a .NET assembly to perform basic operations with services.",
                        Location = "SharpSC" + Path.DirectorySeparatorChar,
                        CompatibleDotNetVersions = new List <Common.DotNetVersion> {
                            Common.DotNetVersion.Net35, Common.DotNetVersion.Net40
                        }
                    }
                };
                await service.CreateReferenceSourceLibraries(ReferenceSourceLibraries);

                var ss = await service.GetReferenceSourceLibraryByName("SharpSploit");

                var ru = await service.GetReferenceSourceLibraryByName("Rubeus");

                var se = await service.GetReferenceSourceLibraryByName("Seatbelt");

                var sd = await service.GetReferenceSourceLibraryByName("SharpDPAPI");

                // var sc = await service.GetReferenceSourceLibraryByName("SharpChrome");
                var sdu = await service.GetReferenceSourceLibraryByName("SharpDump");

                var su = await service.GetReferenceSourceLibraryByName("SharpUp");

                var sw = await service.GetReferenceSourceLibraryByName("SharpWMI");

                var sc = await service.GetReferenceSourceLibraryByName("SharpSC");

                await service.CreateEntities(
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.Protocols.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.Protocols.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.IdentityModel.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.IdentityModel.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.Automation.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.Automation.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Windows.Forms.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Windows.Forms.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.ServiceProcess.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.ServiceProcess.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ss, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net40) },

                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.AccountManagement.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.AccountManagement.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.IdentityModel.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = ru, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.IdentityModel.dll", Common.DotNetVersion.Net40) },

                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.DirectoryServices.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.ServiceProcess.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.ServiceProcess.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Web.Extensions.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Web.Extensions.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Data.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Data.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Data.DataSetExtensions.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Data.DataSetExtensions.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Windows.Forms.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = se, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Windows.Forms.dll", Common.DotNetVersion.Net40) },

                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Security.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sd, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Security.dll", Common.DotNetVersion.Net40) },

                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net35) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net40) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Security.dll", Common.DotNetVersion.Net35) },
                    // new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Security.dll", Common.DotNetVersion.Net40) },


                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sdu, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sdu, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sdu, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sdu, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sdu, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sdu, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },

                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.ServiceProcess.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.ServiceProcess.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = su, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.XML.dll", Common.DotNetVersion.Net40) },

                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sw, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sw, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sw, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sw, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sw, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sw, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sw, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sw, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Management.dll", Common.DotNetVersion.Net40) },

                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("mscorlib.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.Core.dll", Common.DotNetVersion.Net40) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.ServiceProcess.dll", Common.DotNetVersion.Net35) },
                    new ReferenceSourceLibraryReferenceAssembly { ReferenceSourceLibrary = sc, ReferenceAssembly = await service.GetReferenceAssemblyByName("System.ServiceProcess.dll", Common.DotNetVersion.Net40) }
                    );
            }
            #endregion

            if (!context.GruntTasks.Any())
            {
                List <string> files = Directory.GetFiles(Common.CovenantTaskDirectory)
                                      .Where(F => F.EndsWith(".yaml", StringComparison.CurrentCultureIgnoreCase))
                                      .ToList();
                IDeserializer deserializer = new DeserializerBuilder().Build();
                foreach (string file in files)
                {
                    string yaml = File.ReadAllText(file);
                    List <SerializedGruntTask> serialized = deserializer.Deserialize <List <SerializedGruntTask> >(yaml);
                    List <GruntTask>           tasks      = serialized.Select(S => new GruntTask().FromSerializedGruntTask(S)).ToList();
                    foreach (GruntTask task in tasks)
                    {
                        await service.CreateGruntTask(task);
                    }
                }
            }
        }
 public IndicatorApiController(CovenantContext context)
 {
     _context = context;
 }
示例#20
0
 public EventHub(CovenantContext context)
 {
     _context = context;
 }
示例#21
0
        public async static Task InitializeThemes(CovenantContext context)
        {
            if (!context.Themes.Any())
            {
                var themes = new List <Theme>
                {
                    new Theme
                    {
                        Name        = "Classic Theme",
                        Description = "Covenant's standard, default theme.",

                        BackgroundColor     = "#ffffff",
                        BackgroundTextColor = "#212529",

                        PrimaryColor          = "#007bff",
                        PrimaryTextColor      = "#ffffff",
                        PrimaryHighlightColor = "#0069d9",

                        SecondaryColor          = "#6c757d",
                        SecondaryTextColor      = "#ffffff",
                        SecondaryHighlightColor = "#545b62",

                        TerminalColor          = "#062549",
                        TerminalTextColor      = "#ffffff",
                        TerminalHighlightColor = "#17a2b8",
                        TerminalBorderColor    = "#17a2b8",

                        NavbarColor  = "#343a40",
                        SidebarColor = "#f8f9fa",

                        InputColor          = "#ffffff",
                        InputDisabledColor  = "#e9ecef",
                        InputTextColor      = "#212529",
                        InputHighlightColor = "#0069d9",

                        TextLinksColor = "#007bff",

                        CodeMirrorTheme = CodeMirrorTheme.@default,
                    },
                    new Theme
                    {
                        Name        = "Heathen Mode",
                        Description = "A dark theme meant for lawless heathens.",

                        BackgroundColor     = "#191919",
                        BackgroundTextColor = "#f5f5f5",

                        PrimaryColor          = "#0D56B6",
                        PrimaryTextColor      = "#ffffff",
                        PrimaryHighlightColor = "#1D4272",

                        SecondaryColor          = "#343a40",
                        SecondaryTextColor      = "#ffffff",
                        SecondaryHighlightColor = "#dae0e5",

                        TerminalColor          = "#191919",
                        TerminalTextColor      = "#ffffff",
                        TerminalHighlightColor = "#3D86E5",
                        TerminalBorderColor    = "#ffffff",

                        NavbarColor  = "#1D4272",
                        SidebarColor = "#232323",

                        InputColor          = "#373737",
                        InputDisabledColor  = "#212121",
                        InputTextColor      = "#ffffff",
                        InputHighlightColor = "#ffffff",

                        TextLinksColor = "#007bff",

                        CodeMirrorTheme = CodeMirrorTheme.night,
                    }
                };

                await context.Themes.AddRangeAsync(themes);

                await context.SaveChangesAsync();
            }
        }
示例#22
0
 public Interaction(CovenantContext context, IHubContext <GruntHub> grunthub, IHubContext <EventHub> eventhub)
 {
     _context  = context;
     _grunthub = grunthub;
     _eventhub = eventhub;
 }
示例#23
0
 public ProfileController(CovenantContext context, UserManager <CovenantUser> userManager)
 {
     _context     = context;
     _userManager = userManager;
 }
示例#24
0
 public EmbeddedResourceController(CovenantContext context)
 {
     _context = context;
 }
示例#25
0
 public GruntTaskingApiController(CovenantContext context, UserManager <CovenantUser> userManager)
 {
     _context     = context;
     _userManager = userManager;
 }
示例#26
0
 public HostedFileController(CovenantContext context)
 {
     _context = context;
 }
示例#27
0
 public GruntTaskingController(CovenantContext context, IHubContext <GruntHub> grunthub, UserManager <CovenantUser> userManager)
 {
     _context     = context;
     _grunthub    = grunthub;
     _userManager = userManager;
 }
示例#28
0
        public static void InitializeTasks(CovenantContext context)
        {
            if (!context.GruntTasks.Any())
            {
                var GruntTasks = new List <GruntTask>
                {
                    new GruntTask
                    {
                        Id                  = 1,
                        Name                = "Shell",
                        Description         = "Execute a Shell command.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "Shell" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 1,
                                OptionId    = 1,
                                Name        = "ShellCommand",
                                Description = "The ShellCommand to execute.",
                                Value       = "whoami"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 2,
                        Name                = "PowerShell",
                        Description         = "Execute a PowerShell command.",
                        ReferenceAssemblies = String.Join(",", new List <string> {
                            "System.Management.Automation.dll"
                        }),
                        Code    = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "PowerShell" + ".task")),
                        Options = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 2,
                                OptionId    = 1,
                                Name        = "PowerShellCommand",
                                Description = "The PowerShellCommand to execute.",
                                Value       = "Get-ChildItem Env:"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 3,
                        Name                = "Assembly",
                        Description         = "Execute a dotnet Assembly method.",
                        ReferenceAssemblies = String.Join(",", new List <String>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "Assembly" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 3,
                                OptionId    = 1,
                                Name        = "EncodedAssembly",
                                Description = "The Base64 encoded Assembly bytes.",
                                Value       = ""
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 3,
                                OptionId    = 2,
                                Name        = "TypeName",
                                Description = "The name of the Type that contains the method to execute.",
                                Value       = ""
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 3,
                                OptionId    = 3,
                                Name        = "MethodName",
                                Description = "The name of the method to execute.",
                                Value       = ""
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 4,
                        Name                = "ListDirectory",
                        Description         = "Get a listing of the current directory.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "ListDirectory" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption> {
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 5,
                        Name                = "ChangeDirectory",
                        Description         = "Change the current directory.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "ChangeDirectory" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 5,
                                OptionId    = 1,
                                Name        = "AppendDirectory",
                                Description = "Directory to change to.",
                                Value       = "."
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 6,
                        Name                = "ProcessList",
                        Description         = "Get a list of currently running processes.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "ProcessList" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption> {
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 7,
                        Name                = "Upload",
                        Description         = "Upload a file.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "Upload" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 7,
                                OptionId    = 1,
                                Name        = "FileName",
                                Description = "Local file name to write to.",
                                Value       = ""
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 7,
                                OptionId    = 2,
                                Name        = "FileContents",
                                Description = "Base64 contents of the file to be written."
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 8,
                        Name                = "Download",
                        Description         = "Download a file.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "Download" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 8,
                                OptionId    = 1,
                                Name        = "FileName",
                                Description = "Remote file name to download.",
                                Value       = ""
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 9,
                        Name                = "Mimikatz",
                        Description         = "Execute a mimikatz command.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "Mimikatz" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 9,
                                OptionId    = 1,
                                Name        = "Command",
                                Description = "Mimikatz command to execute.",
                                Value       = "sekurlsa::logonPasswords"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 10,
                        Name                = "PortScan",
                        Description         = "Perform a TCP port scan.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "PortScan" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 10,
                                OptionId    = 1,
                                Name        = "ComputerNames",
                                Description = "ComputerName(s) to port scan. Can be a DNS name, IP address, or CIDR range.",
                                Value       = "127.0.0.1"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 10,
                                OptionId    = 2,
                                Name        = "Ports",
                                Description = "Ports to scan. Comma-delimited port list.",
                                Value       = "80,443,445"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 10,
                                OptionId    = 3,
                                Name        = "Ping",
                                Description = "Boolean, whether to ping hosts prior to port scanning.",
                                Value       = "False"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 11,
                        Name                = "Kerberoast",
                        Description         = "Perform a \"Kerberoast\" attack that retrieves crackable service tickets for Domain User's w/ an SPN set.",
                        ReferenceAssemblies = String.Join(",", new List <string> {
                            "System.DirectoryServices.dll", "System.IdentityModel.dll"
                        }),
                        Code    = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "Kerberoast" + ".task")),
                        Options = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 11,
                                OptionId    = 1,
                                Name        = "Usernames",
                                Description = "Username(s) to port scan. Comma-delimited username list.",
                                Value       = "DOMAIN\\username1,DOMAIN\\username2"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 11,
                                OptionId    = 2,
                                Name        = "HashFormat",
                                Description = "Format to output the hashes (\"Hashcat\" or \"John\").",
                                Value       = "Hashcat"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 12,
                        Name                = "WhoAmI",
                        Description         = "Gets the username of the currently used/impersonated token.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "WhoAmI" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>()
                    },
                    new GruntTask
                    {
                        Id                  = 13,
                        Name                = "ImpersonateUser",
                        Description         = "Find a process owned by the specified user and impersonate the token. Used to execute subsequent commands as the specified user.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "ImpersonateUser" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 13,
                                OptionId    = 1,
                                Name        = "Username",
                                Description = "User to impersonate. \"DOMAIN\\Username\" format expected.",
                                Value       = "DOMAIN\\Username"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 14,
                        Name                = "ImpersonateProcess",
                        Description         = "Impersonate the token of the specified process. Used to execute subsequent commands as the user associated with the token of the specified process.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "ImpersonateUser" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 14,
                                OptionId    = 1,
                                Name        = "ProcessID",
                                Description = "Process ID of the process to impersonate.",
                                Value       = "1234"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 15,
                        Name                = "GetSystem",
                        Description         = "Impersonate the SYSTEM user. Equates to ImpersonateUser(\"NT AUTHORITY\\SYSTEM\").",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "GetSystem" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>()
                    },
                    new GruntTask
                    {
                        Id                  = 16,
                        Name                = "MakeToken",
                        Description         = "Makes a new token with a specified username and password, and impersonates it to conduct future actions as the specified user.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "MakeToken" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 16,
                                OptionId    = 1,
                                Name        = "Username",
                                Description = "Username to authenticate as.",
                                Value       = "username1"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 16,
                                OptionId    = 2,
                                Name        = "Domain",
                                Description = "Domain to authenticate the user to.",
                                Value       = "DOMAIN"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 16,
                                OptionId    = 3,
                                Name        = "Password",
                                Description = "Password to authenticate the user.",
                                Value       = "Password123"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 16,
                                OptionId    = 4,
                                Name        = "LogonType",
                                Description = "LogonType to use. Defaults to LOGON32_LOGON_NEW_CREDENTIALS, which is suitable to perform actions that require remote authentication. LOGON32_LOGON_INTERACTIVE is suitable for local actions.",
                                Value       = "LOGON32_LOGON_NEW_CREDENTIALS"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 17,
                        Name                = "RevertToSelf",
                        Description         = "Ends the impersonation of any token, reverting back to the initial token associated with the current process. Useful in conjuction with functions impersonate a token and do not automatically RevertToSelf, such as ImpersonateUser(), ImpersonateProcess(), GetSystem(), and MakeToken().",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "RevertToSelf" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>()
                    },
                    new GruntTask
                    {
                        Id                  = 18,
                        Name                = "WMI",
                        Description         = "Execute a process on a remote system using Win32_Process Create with specified credentials.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "WMI" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 18,
                                OptionId    = 1,
                                Name        = "ComputerName",
                                Description = "Username to authenticate as.",
                                Value       = "192.168.1.1"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 18,
                                OptionId    = 2,
                                Name        = "Username",
                                Description = "Username to authenticate as.",
                                Value       = "DOMAIN\\Username"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 18,
                                OptionId    = 3,
                                Name        = "Password",
                                Description = "Password to authenticate the user.",
                                Value       = "Password123"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 18,
                                OptionId    = 4,
                                Name        = "Launcher",
                                Description = "Launcher to execute on the remote system.",
                                Value       = "PowerShell"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 18,
                                OptionId    = 5,
                                Name        = "Command",
                                Description = "Command line to execute on the remote system.",
                                Value       = ""
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 19,
                        Name                = "DCOM",
                        Description         = "Execute a process on a remote system using various DCOM methods.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "DCOM" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 19,
                                OptionId    = 1,
                                Name        = "ComputerName",
                                Description = "Username to authenticate as.",
                                Value       = "192.168.1.1"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 19,
                                OptionId    = 2,
                                Name        = "Launcher",
                                Description = "Launcher to execute on the remote system.",
                                Value       = "PowerShell"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 19,
                                OptionId    = 3,
                                Name        = "Command",
                                Description = "Command line to execute on the remote system.",
                                Value       = ""
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 19,
                                OptionId    = 4,
                                Name        = "Method",
                                Description = "DCOM method to use for execution.",
                                Value       = "MMC20.Application"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 20,
                        Name                = "BypassUAC",
                        Description         = "Bypasses UAC through token duplication and spawns a specified process with high integrity.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "BypassUAC" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 20,
                                OptionId    = 1,
                                Name        = "Launcher",
                                Description = "Launcher to execute on the remote system.",
                                Value       = "PowerShell"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 20,
                                OptionId    = 2,
                                Name        = "Command",
                                Description = "Launcher to execute on the remote system.",
                                Value       = ""
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 21,
                        Name                = "GetDomainUser",
                        Description         = "Gets a list of specified (or all) user `DomainObject`s in the current Domain.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "GetDomainUser" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 21,
                                OptionId    = 1,
                                Name        = "Identities",
                                Description = "List of comma-delimited usernames to retrieve.",
                                Value       = "username"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 22,
                        Name                = "GetDomainGroup",
                        Description         = "Gets a list of specified (or all) group `DomainObject`s in the current Domain.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "GetDomainGroup" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 22,
                                OptionId    = 1,
                                Name        = "Identities",
                                Description = "List of comma-delimited groups to retrieve.",
                                Value       = "Domain Admins"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 23,
                        Name                = "GetDomainComputer",
                        Description         = "Gets a list of specified (or all) computer `DomainObject`s in the current Domain.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "GetDomainComputer" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 23,
                                OptionId    = 1,
                                Name        = "Identities",
                                Description = "List of comma-delimited computers to retrieve.",
                                Value       = "DC01"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 24,
                        Name                = "GetNetLocalGroup",
                        Description         = "Gets a list of `LocalGroup`s from specified remote computer(s).",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "GetNetLocalGroup" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 24,
                                OptionId    = 1,
                                Name        = "ComputerNames",
                                Description = "List of comma-delimited ComputerNames to query.",
                                Value       = "DC01"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 25,
                        Name                = "GetNetLocalGroupMember",
                        Description         = "Gets a list of `LocalGroupMember`s from specified remote computer(s).",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "GetNetLocalGroupMember" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 25,
                                OptionId    = 1,
                                Name        = "ComputerNames",
                                Description = "List of comma-delimited ComputerNames to query.",
                                Value       = "DC01"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 25,
                                OptionId    = 2,
                                Name        = "LocalGroup",
                                Description = "LocalGroup name to query for members.",
                                Value       = "Administrators"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 26,
                        Name                = "GetNetLoggedOnUser",
                        Description         = "Gets a list of `LoggedOnUser`s from specified remote computer(s).",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "GetNetLoggedOnUser" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 26,
                                OptionId    = 1,
                                Name        = "ComputerNames",
                                Description = "List of comma-delimited ComputerNames to query.",
                                Value       = "DC01"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 27,
                        Name                = "GetNetSession",
                        Description         = "Gets a list of `SessionInfo`s from specified remote computer(s).",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "GetNetSession" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 27,
                                OptionId    = 1,
                                Name        = "ComputerNames",
                                Description = "List of comma-delimited ComputerNames to query.",
                                Value       = "DC01"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 28,
                        Name                = "RegistryRead",
                        Description         = "Reads a value stored in registry.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "RegistryRead" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 28,
                                OptionId    = 1,
                                Name        = "RegPath",
                                Description = "The full path to the registry value to be read.",
                                Value       = "HKEY_CURRENT_USER\\Environment\\Path"
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 29,
                        Name                = "RegistryWrite",
                        Description         = "Writes a value into the registry.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "RegistryWrite" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 29,
                                OptionId    = 1,
                                Name        = "RegPath",
                                Description = "The full path to the registry value to be read.",
                                Value       = "HKEY_CURRENT_USER\\Environment\\Path"
                            },
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 29,
                                OptionId    = 2,
                                Name        = "Value",
                                Description = "The value to write to the registry key.",
                                Value       = ""
                            }
                        }
                    },
                    new GruntTask
                    {
                        Id                  = 30,
                        Name                = "ShellCode",
                        Description         = "Executes a specified shellcode byte array by copying it to pinned memory, modifying the memory permissions, and executing.",
                        ReferenceAssemblies = String.Join(",", new List <string>()),
                        Code                = File.ReadAllText(Path.Combine(Common.CovenantTaskDirectory, "ShellCode" + ".task")),
                        Options             = new List <GruntTask.GruntTaskOption>
                        {
                            new GruntTask.GruntTaskOption
                            {
                                TaskId      = 30,
                                OptionId    = 1,
                                Name        = "Hex",
                                Description = "Hex string representing the Shellcode bytes to execute.",
                                Value       = ""
                            }
                        }
                    }
                };

                foreach (GruntTask task in GruntTasks)
                {
                    context.GruntTasks.Add(task);
                }
            }
        }
示例#29
0
 public GruntController(CovenantContext context)
 {
     _context = context;
 }
 public ImplantTemplateApiController(CovenantContext context)
 {
     _context = context;
 }