Exemple #1
0
def run_modules(category_selected, subcategories):
    """
    Run modules
    """
    modules = create_module_dic()
    categories = {category_selected: get_categories()[category_selected]} \
        if category_selected != 'all' else get_categories()

    # Sort dict in reverse mode to run libsecrets as first module
    for cat in OrderedDict(
            reversed(sorted(categories.items(), key=lambda t: t[0]))):
        for r in run_module(modules[cat], subcategories):
            yield r
Exemple #2
0
def run_category(category_selected, subcategories={}, system_module=False):
    constant.module_to_exec_at_end = {
        "winapi": [],
        "dpapi": [],
    }
    modules = create_module_dic()
    categories = [category_selected] if category_selected != 'all' else get_categories()
    for category in categories:
        for r in run_modules(modules[category], subcategories, system_module):
            yield r

    if not system_module:
        if constant.is_current_user:
            # Modules using Windows API (CryptUnprotectData) can be called from the current session
            for module in constant.module_to_exec_at_end.get('winapi', []):
                for m in run_module(title=module['title'], module=module['module']):
                    yield m

            if constant.module_to_exec_at_end.get('dpapi', []):
                if are_masterkeys_retrieved():
                    for module in constant.module_to_exec_at_end.get('dpapi', []):
                        for m in run_module(title=module['title'], module=module['module']):
                            yield m
        else:
            if constant.module_to_exec_at_end.get('dpapi', []) or constant.module_to_exec_at_end.get('winapi', []):
                if are_masterkeys_retrieved():
                    # Execute winapi/dpapi modules - winapi decrypt blob using dpapi without calling CryptUnprotectData
                    for i in ['winapi', 'dpapi']:
                        for module in constant.module_to_exec_at_end.get(i, []):
                            for m in run_module(title=module['title'], module=module['module']):
                                yield m
Exemple #3
0
def run_category(category_selected, subcategories={}, system_module=False):
    constant.module_to_exec_at_end = {
        "winapi": [],
        "dpapi": [],
    }
    modules = create_module_dic()
    categories = [category_selected] if category_selected != 'all' else get_categories()
    for category in categories:
        for r in run_modules(modules[category], subcategories, system_module):
            yield r

    if not system_module:
        if constant.is_current_user:
            # Modules using Windows API (CryptUnprotectData) can be called from the current session
            for module in constant.module_to_exec_at_end.get('winapi', []):
                for m in run_module(title=module['title'], module=module['module']):
                    yield m

            if constant.module_to_exec_at_end.get('dpapi', []):
                if are_masterkeys_retrieved():
                    for module in constant.module_to_exec_at_end.get('dpapi', []):
                        for m in run_module(title=module['title'], module=module['module']):
                            yield m
        else:
            if constant.module_to_exec_at_end.get('dpapi', []) or constant.module_to_exec_at_end.get('winapi', []):
                if are_masterkeys_retrieved():
                    # Execute winapi/dpapi modules - winapi decrypt blob using dpapi without calling CryptUnprotectData
                    for i in ['winapi', 'dpapi']:
                        for module in constant.module_to_exec_at_end.get(i, []):
                            for m in run_module(title=module['title'], module=module['module']):
                                yield m
Exemple #4
0
def run_modules(category_selected, subcategories):
    """
    Run modules
    """
    modules = create_module_dic()
    categories = [category_selected] if category_selected != 'all' else get_categories()
    for cat in categories:
        for r in run_module(modules[cat], subcategories):
            yield r
Exemple #5
0
def runModule(category_choosed,
              need_high_privileges=False,
              need_system_privileges=False,
              not_need_to_be_in_env=False,
              cannot_be_impersonate_using_tokens=False):
    categories = [category_choosed
                  ] if category_choosed != 'all' else get_categories()
    for category in categories:
        for r in launch_module(modules[category]):
            yield r
Exemple #6
0
def run_category(category_selected, system_module=False):
    module_to_exec_at_end = constant.module_to_exec_at_end

    categories = [category_selected
                  ] if category_selected != 'all' else get_categories()
    for category in categories:
        for r in run_modules(modules[category], system_module):
            yield r

    if not system_module:
        if constant.is_current_user:
            # Modules using Windows API (CryptUnprotectData) can be called from the current session
            for module in constant.module_to_exec_at_end.get('winapi', []):
                for m in run_module(title=module['title'],
                                    module=module['module']):
                    yield m

            if constant.module_to_exec_at_end.get('dpapi', []):
                # These modules will need the windows user password to be able to decrypt dpapi blobs
                constant.user_dpapi = UserDpapi(
                    password=constant.user_password)
                # Add username to check username equals passwords
                constant.password_found.append(constant.username)
                constant.user_dpapi.check_credentials(constant.password_found)
                if constant.user_dpapi.unlocked:
                    for module in constant.module_to_exec_at_end.get(
                            'dpapi', []):
                        for m in run_module(title=module['title'],
                                            module=module['module']):
                            yield m
        else:
            if constant.module_to_exec_at_end.get(
                    'dpapi', []) or constant.module_to_exec_at_end.get(
                        'winapi', []):
                # These modules will need the windows user password to be able to decrypt dpapi blobs
                constant.user_dpapi = UserDpapi(
                    password=constant.user_password)
                # Add username to check username equals passwords
                constant.password_found.append(constant.username)
                constant.user_dpapi.check_credentials(constant.password_found)
                if constant.user_dpapi.unlocked:
                    # Execute winapi and dpapi modules (winapi will decrypt blob using dpapi without calling CryptUnprotectData)
                    for i in ['winapi', 'dpapi']:
                        for module in constant.module_to_exec_at_end.get(
                                i, []):
                            for m in run_module(title=module['title'],
                                                module=module['module']):
                                yield m
Exemple #7
0
def create_module_dic():
    if constant.modules_dic:
        return constant.modules_dic
    
    modules = {}

    # Define a dictionary for all modules
    for category in get_categories():
        modules[category] = {}

    # Add all modules to the dictionary
    for m in get_modules():
        modules[m.category][m.options['dest']] = m

    constant.modules_dic = modules
    return modules
Exemple #8
0
def create_module_dic():
    if constant.modules_dic:
        return constant.modules_dic

    modules = {}

    # Define a dictionary for all modules
    for category in get_categories():
        modules[category] = {}

    # Add all modules to the dictionary
    for m in get_modules():
        modules[m.category][m.options['dest']] = m

    constant.modules_dic = modules
    return modules
Exemple #9
0
def run_category(category_selected,
                 dpapi_used=True,
                 registry_used=True,
                 system_module=False):
    constant.module_to_exec_at_end = []

    categories = [category_selected
                  ] if category_selected != 'all' else get_categories()
    for category in categories:
        for r in run_modules(modules[category], dpapi_used, registry_used,
                             system_module):
            yield r

    if constant.module_to_exec_at_end:
        # These modules will need the windows user password to be able to decrypt dpapi blobs
        constant.dpapi = Decrypt_DPAPI(password=constant.user_password)
        # Add username to check username equals passwords
        constant.passwordFound.append(constant.username)
        constant.dpapi.check_credentials(constant.passwordFound)

        for module in constant.module_to_exec_at_end:
            for m in run_module(title=module['title'],
                                module=module['module']):
                yield m
Exemple #10
0
                        help='destination path to store results (default:.)')

    # Windows user password
    PPwd = argparse.ArgumentParser(
        add_help=False,
        formatter_class=lambda prog: argparse.HelpFormatter(
            prog,
            max_help_position=constant.MAX_HELP_POSITION)
    )
    PPwd._optionals.title = 'Windows User Password'
    PPwd.add_argument('-password', dest='password', action='store',
                      help='Windows user password (used to decrypt creds files)')

    # -------------------------- Add options and suboptions to all modules --------------------------
    all_subparser = []
    all_categories = get_categories()
    for c in all_categories:
        all_categories[c]['parser'] = argparse.ArgumentParser(
            add_help=False,
            formatter_class=lambda prog: argparse.HelpFormatter(prog,
                                                                max_help_position=constant.MAX_HELP_POSITION)
        )
        all_categories[c]['parser']._optionals.title = all_categories[c]['help']

        # Manage options
        all_categories[c]['subparser'] = []
        for module in modules[c]:
            m = modules[c][module]
            all_categories[c]['parser'].add_argument(m.options['command'], action=m.options['action'],
                                                 dest=m.options['dest'], help=m.options['help'])
Exemple #11
0
def run_module(category_selected):
    categories = [category_selected] if category_selected != 'all' else get_categories()
    for cat in categories:
        for r in launch_module(modules[cat]):
            yield r
Exemple #12
0
from lazagne.config.write_output import parse_json_result_to_buffer, print_debug, StandardOutput
from lazagne.config.manage_modules import get_categories, get_modules
from lazagne.config.constant import *

import time

# Object used to manage the output / write functions (cf write_output file)
constant.st = StandardOutput()

# Tab containing all passwords
stdoutRes = []
modules = {}

# Define a dictionary for all modules
for c in get_categories():
    modules[c] = {}

# Add all modules to the dictionary
for m in get_modules():
    modules[m.category][m.options['dest']] = m


def output():
    if args['output']:
        if os.path.isdir(args['output']):
            constant.folder_name = args['output']
        else:
            print('[!] Specify a directory, not a file !')

    if args['write_normal']:
Exemple #13
0
import logging
import getpass
import time
import json
import sys
import os

# Object used to manage the output / write functions (cf write_output file)
constant.st = StandartOutput()

# Tab containing all passwords
stdoutRes = []
modules = {}

# Define a dictionary for all modules
for category in get_categories():
    modules[category] = {}

# Add all modules to the dictionary
for module in get_modules():
    modules[module.category][module.options['dest']] = module
modules['mails']['thunderbird'] = Mozilla(
    True)  # For thunderbird (firefox and thunderbird use the same class)


def output():
    if args['output']:
        if os.path.isdir(args['output']):
            constant.folder_name = args['output']
        else:
            print('[!] Specify a directory, not a file !')
Exemple #14
0
import logging
import getpass
import time
import json
import sys
import os

# Configuration
from lazagne.config.write_output import parseJsonResultToBuffer, print_debug, StandartOutput
from lazagne.config.manage_modules import get_categories, get_modules
from lazagne.config.constant import *

# Object used to manage the output / write functions (cf write_output file)
constant.st = StandartOutput()

category = get_categories()
moduleNames = get_modules()

# Tab containing all passwords
stdoutRes = []

# Define a dictionary for all modules
modules = {}
for categoryName in category:
    modules[categoryName] = {}

# Add all modules to the dictionary
for module in moduleNames:
    modules[module.category][module.options['dest']] = module
modules['mails']['thunderbird'] = Mozilla(
    True)  # For thunderbird (firefox and thunderbird use the same class)
Exemple #15
0
                        help='destination path to store results (default:.)')

    # Windows user password
    PPwd = argparse.ArgumentParser(
        add_help=False,
        formatter_class=lambda prog: argparse.HelpFormatter(
            prog,
            max_help_position=constant.max_help)
    )
    PPwd._optionals.title = 'Windows User Password'
    PPwd.add_argument('-password', dest='password', action='store',
                      help='Windows user password (used to decrypt creds files)')

    # -------------------------- Add options and suboptions to all modules --------------------------
    all_subparser = []
    all_categories = get_categories()
    for c in all_categories:
        all_categories[c]['parser'] = argparse.ArgumentParser(
            add_help=False,
            formatter_class=lambda prog: argparse.HelpFormatter(prog,
                                                                max_help_position=constant.max_help)
        )
        all_categories[c]['parser']._optionals.title = all_categories[c]['help']

        # Manage options
        all_categories[c]['subparser'] = []
        for module in modules[c]:
            m = modules[c][module]
            all_categories[c]['parser'].add_argument(m.options['command'], action=m.options['action'],
                                                 dest=m.options['dest'], help=m.options['help'])
Exemple #16
0
# Configuration
from lazagne.config.write_output import parse_json_result_to_buffer, print_debug, StandardOutput
from lazagne.config.manage_modules import get_categories, get_modules
from lazagne.config.constant import constant

from lazagne.softwares.browsers.chrome import Chrome

# Object used to manage the output / write functions (cf write_output file)
constant.st = StandardOutput()

# Tab containing all passwords
stdoutRes = []
modules = {}

# Define a dictionary for all modules
for category_name in get_categories():
    modules[category_name] = {}

# Add all modules to the dictionary
for module in get_modules():
    modules[module.category][module.options['dest']] = module


def output():
    if args['output']:
        if os.path.isdir(args['output']):
            constant.folder_name = args['output']
        else:
            print_debug('ERROR', '[!] Specify a directory, not a file !')

    if args['write_normal']: