-
Notifications
You must be signed in to change notification settings - Fork 773
Launchers
Launchers are used to generate, host, and download binaries, scripts, and one-liners to launch new Grunts.
Once a listener has been started, you'll want to generate a launcher to use in kicking off Grunts. To get started, navigate to the Launchers navigation page:
Launchers are named roughly by the system binary that will be used to execute the launcher. Currently, Covenant supports the following launchers:
-
Binary - The
Binary
launcher is used to generate custom binaries that launch a Grunt. This is currently the only launcher that does not rely on a system binary. -
ShellCode - The
ShellCode
launcher converts a Grunt binary to ShellCode using Donut. -
PowerShell - The
PowerShell
launcher is used to generate PowerShell code and/or a PowerShell one-liner that launches a Grunt usingpowershell.exe
. -
MSBuild - The
MSBuild
launcher is used to generate an MSBuild XML file that launches a Grunt usingmsbuild.exe
. -
InstallUtil - The
InstallUtil
launcher is used to generate an InstallUtil XML file that launches a Grunt usinginstallutil.exe
. -
Mshta - The
Mshta
launcher is used to generate an HTA file and/or a mshta one-liner that launches a Grunt usingmshta.exe
that relies on DotNetToJScript. -
Regsvr32 - The
Regsvr32
launcher is used to generate an SCT file and/or regsvr32 one-liner that launches a Grunt usingregsvr32.exe
that relies on DotNetToJScript. -
Wmic - The
Wmic
launcher is used to generate an xsl file and/or wmic one-liner that launches a Grunt usingwmic.exe
that relies on DotNetToJScript. -
Cscript - The
Cscript
launcher is used to generate a JScript file a Grunt usingcscript.exe
that relies on DotNetToJScript. -
Wscript - The
Wscript
launcher is used to generate a JScript file a Grunt usingwscript.exe
that relies on DotNetToJScript.
Please keep in mind that any of the launchers that rely on DotNetToJScript may not work on some of the latest versions of Windows 10 and Windows Server 2016 and/or may be signatured by some AMSI providers.
To generate a binary launcher, click on the "Binary" link within the launchers table. This will reveal some configuration options to consider before you generate the launcher:
Other launchers may have some additional configuration options, but these options are common to all launcher types. The configuration options to consider are:
-
Listener - The
Listener
is the name of the listener that this Grunt should communicate with. If you have multiple active listeners, be sure to select the correct listener. -
ImplantTemplate - The
ImplantTemplate
is the type of implant that the launcher will generate. -
DotNetVersion - The
DotNetVersion
of the implant that will be generated. You'll be limited to a choice of theDotNetVersion
s compatible with the chosenImplantTemplate
. -
Delay - The
Delay
is the time that the Grunt will sleep in-between each poll of the server. A largerDelay
value will result in stealthier communication, but increase the time it takes to task a Grunt. -
JitterPercent - The
JitterPercent
is the percentage of variability in theDelay
value. -
ConnectAttempts - The
ConnectAttempts
is the number of consective times a Grunt will attempt to poll the listener before quitting. If a Grunt cannot reach the listener and fails to successfully poll the listener more times than theConnectAttempts
value, it will quit. -
KillDate - The
KillDate
is the date at which a Grunt will quit and stop calling back to the listener.
Some other options may be displayed based upon the ImplantTemplate
that has been selected. If you select an ImplantTemplate
with an HTTP
CommType
:
-
ValidateCert - The
ValidateCert
option determines if the Grunt will validate the listener's SSL certificate to prevent MiTM attacks. There are scenarios where target network proxies can interfere with certificate validation, and it's preferrable to not validate the certificate. This option is only relavent when using the HTTPCommType
, and will only be displayed if you have selected the HTTPCommType
. -
UseCertPinning - The
UseCertPinning
option determines if the Grunt will use cert pinning of the listener's SSL certificate to prevent MiTM attacks. There are scenarios where target network proxies can interfere with certificate pinning, and it's preferrable to not perform cert pinning. This option is only relavent when using the HTTPCommType
, and will only be displayed if you have selected the HTTPCommType
.
If you select an ImplantTemplate
with an SMB
CommType
:
-
SMBPipeName - The
SMBPipeName
is the name of the named pipe that the Grunt will bind to and listen on. This option is only relavent when using the SMBCommType
, and will only be displayed if you have selected the SMBCommType
.
Once the options are configured as desired, click the "Generate" button to generate the launcher. Now that the launcher is generated, you can choose to download the launcher to a local file or host the launcher on the listener. You must generate the launcher prior to downloading or hosting.
To download the launcher to a local file, click the "Download" button.
To host the launcher, click on the "Host" tab. This will provide a Url option:
Choose a URL at which you would like to host the launcher and click the "Host" button to host.
You may wish to view the source code of the launcher's GruntStager
. To view the code click on the "Code" tab:
You can use this code to create a custom Grunt that does not utilize any of the built-in launchers. Click the "Copy" button to copy the code to the clipboard.