StayKit is an extension for Cobalt Strike persistence by leveraging the execute_assembly function with the SharpStay .NET assembly. The aggressor script handles payload creation by reading the template files for a specific execution type.

IMPORTANT: To use the script a user will only need to load the StayKit.cna aggressor script. Additionally, the SharpStay assembly will need to be compiled and placed into the directory where StayKit.cna is located. Finally, if selecting a template for the payload some may require dynamic compiling which will uses Mono.

The persistence menu will be added to the beacon. Due to the nature of how each technique is different there is only a GUI menu and no beacon commands.

Available options:

  • ElevatedRegistryKey
  • UserRegistryKey
  • UserInitMprLogonScriptKey
  • ElevatedUserInitKey
  • ScheduledTask
  • ListScheduledTasks
  • ScheduledTaskAction
  • SchTaskCOMHijack
  • CreateService
  • ListRunningServices
  • WMIEventSub
  • GetScheduledTaskCOMHandler
  • JunctionFolder
  • StartupDirectory
  • NewLNK
  • BackdoorLNK
  • ListTaskNames


  • Mono (MCS) for compiling .NET assemblies (Used with dynamic payload creation)


  • WMI Event Subscription – WQL Query from Empire Project and Matt Graeber’s research
  • Scheduled Task COM Handler Hijack – idea from enigma0x3’s research
  • Junction Folder – code and idea comes from matterpreter’s OffensiveCSharp project
  • Backdoor LNK – comes from harmj0y’s LNKBackdoor script
Download StayKit

If you like the site, please consider joining the telegram channel or supporting us on Patreon using the button below.


Original Source