Last active
April 6, 2017 18:22
-
-
Save SadProcessor/187cfa9f07a216eedfb277476f315c95 to your computer and use it in GitHub Desktop.
Empire Module file for Invoke-CheeseOnToast
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 Module: | |
def __init__(self, mainMenu, params=[]): | |
self.info = { | |
'Name': 'Invoke-CheeseOnToast', | |
'Author': ['SadProcessor'], | |
'Description': ('Priv Esc Vuln Finder'), | |
'Background' : True, | |
'OutputExtension' : None, | |
'NeedsAdmin' : True, | |
'OpsecSafe' : False, | |
'MinPSVersion' : '2', | |
'Comments': [ | |
'Test Version', | |
'http://No/Link' | |
] | |
} | |
# any options needed by the module, settable during runtime | |
self.options = { | |
# format: | |
# value_name : {description, required, default_value} | |
'Agent' : { | |
# The 'Agent' option is the only one that MUST be in a module | |
'Description' : 'Agent to run Module from', | |
'Required' : True, | |
'Value' : '' | |
}, | |
'Vuln' : { | |
'Description' : 'Vuln', | |
'Required' : False, | |
'Value' : '' | |
}, | |
'ComputerName' : { | |
'Description' : 'Target (defaults to LocalHost)', | |
'Required' : False, | |
'Value' : '' | |
}, | |
'User' : { | |
'Description' : 'UserName (defaults to Current User)', | |
'Required' : False, | |
'Value' : '' | |
}, | |
'Pass' : { | |
'Description' : 'Password', | |
'Required' : False, | |
'Value' : '' | |
}, | |
'ShowAll' : { | |
'Description' : 'Show All (by default only return risk -eq $true)', | |
'Required' : False, | |
'Value' : '' | |
} | |
} | |
# save off a copy of the mainMenu object to access external functionality | |
# like listeners/agent handlers/etc. | |
self.mainMenu = mainMenu | |
# During instantiation, any settable option parameters | |
# are passed as an object set to the module and the | |
# options dictionary is automatically set. This is mostly | |
# in case options are passed on the command line | |
if params: | |
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): | |
# read in the common module source code | |
moduleSource = self.mainMenu.installPath + "/data/module_source/recon/Invoke-CheeseOnToast.ps1" | |
try: | |
f = open(moduleSource, 'r') | |
except: | |
print helpers.color("[!] Could not read module source path at: " + str(moduleSource)) | |
return "" | |
moduleCode = f.read() | |
f.close() | |
script = moduleCode | |
script += "Invoke-CheeseOnToast " | |
for option,values in self.options.iteritems(): | |
if option.lower() != "agent": | |
if values['Value'] and values['Value'] != '': | |
if values['Value'].lower() == "true": | |
# if we're just adding a switch | |
script += " -" + str(option) | |
else: | |
script += " -" + str(option) + " " + str(values['Value']) | |
script += "|Out-String;'Done!'" | |
return script |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment