Example #1
0
 def run(self):
     return renderers.TreeGrid([
         ('Allocation', format_hints.Hex),
         ('Tag', str),
         ('PoolType', str),
         ('NumberOfBytes', format_hints.Hex),
     ], self._generator())
Example #2
0
 def run(self):
     return renderers.TreeGrid([("Function", format_hints.Hex),
                                ("Param 0", format_hints.Hex),
                                ("Param 1", format_hints.Hex),
                                ("Deadline", int), ("Entry Time", int),
                                ("Module", str), ("Symbol", str)],
                               self._generator())
Example #3
0
    def run(self):
        offset = self.config.get('offset', None)

        syshive = sechive = None

        for hive in hivelist.HiveList.list_hives(
                self.context,
                self.config_path,
                self.config['primary'],
                self.config['nt_symbols'],
                hive_offsets=None if offset is None else [offset]):

            if hive.get_name().split('\\')[-1].upper() == 'SYSTEM':
                syshive = hive
            if hive.get_name().split('\\')[-1].upper() == 'SECURITY':
                sechive = hive

        if syshive is None:
            raise exceptions.VolatilityException(
                'Unable to locate SYSTEM hive')
        if sechive is None:
            raise exceptions.VolatilityException(
                'Unable to locate SECURITY hive')

        return renderers.TreeGrid([("Username", str), ("Domain", str),
                                   ("Domain name", str), ('Hashh', bytes)],
                                  self._generator(syshive, sechive))
Example #4
0
 def run(self):
     return renderers.TreeGrid([("Filter", format_hints.Hex), ("Name", str),
                                ("Member", str),
                                ("Socket", format_hints.Hex),
                                ("Handler", format_hints.Hex),
                                ("Module", str), ("Symbol", str)],
                               self._generator())
Example #5
0
    def run(self):
        if not has_pefile:
            vollog.info(
                "Python pefile module not found, plugin (and dependent plugins) not available"
            )
            raise

        filter_func = pslist.PsList.create_pid_filter(
            [self.config.get('pid', None)])

        hashlist = []
        if self.config.get('imphash', None) is not None:
            hashlist.append(self.config['imphash'])
        elif self.config.get('imphashlist', None) is not None:
            rf = open(self.config['imphashlist'], "r")
            lines = rf.readlines()
            for line in lines:
                hashlist.append(line.rstrip())

        return renderers.TreeGrid(
            [("PID", int), ("ImageFileName", str),
             ("Module Base", format_hints.Hex), ("Module Name", str),
             ("imphash", str)],
            self._generator(
                pslist.PsList.list_processes(
                    context=self.context,
                    layer_name=self.config['primary'],
                    symbol_table=self.config['nt_symbols'],
                    filter_func=filter_func), hashlist))
Example #6
0
 def run(self):
     return renderers.TreeGrid([
         ("Offset", format_hints.Hex),
         ("CreateTime", datetime.datetime),
         ("From Name", str),
         ("To Name", str),
     ], self._generator())
Example #7
0
    def run(self):

        return renderers.TreeGrid([("Session ID", int), ('Session Type', str),
                                   ("Process ID", int), ("Process", str),
                                   ("User Name", str),
                                   ("Create Time", datetime.datetime)],
                                  self._generator())
Example #8
0
    def run(self):
        crash_layer = None
        for layer_name in self._context.layers:
            layer = self._context.layers[layer_name]
            if isinstance(layer, crash.WindowsCrashDump32Layer):
                crash_layer = layer
                break

        if crash_layer is None:
            vollog.error("This plugin requires a Windows crash dump")
            raise

        return renderers.TreeGrid([
            ("Signature", str),
            ("MajorVersion", int),
            ("MinorVersion", int),
            ("DirectoryTableBase", format_hints.Hex),
            ("PfnDataBase", format_hints.Hex),
            ("PsLoadedModuleList", format_hints.Hex),
            ("PsActiveProcessHead", format_hints.Hex),
            ("MachineImageType", int),
            ("NumberProcessors", int),
            ("KdDebuggerDataBlock", format_hints.Hex),
            ("DumpType", str),
            ("SystemUpTime", str),
            ("Comment", str),
            ("SystemTime", datetime.datetime),
            ("BitmapHeaderSize", format_hints.Hex),
            ("BitmapSize", format_hints.Hex),
            ("BitmapPages", format_hints.Hex),
        ], self._generator(crash_layer))
Example #9
0
    def run(self):
        offset = self.config.get('offset', None)

        syshive = sechive = None
        kernel = self.context.modules[self.config['kernel']]

        for hive in hivelist.HiveList.list_hives(
                self.context,
                self.config_path,
                kernel.layer_name,
                kernel.symbol_table_name,
                hive_offsets=None if offset is None else [offset]):

            if hive.get_name().split('\\')[-1].upper() == 'SYSTEM':
                syshive = hive
            if hive.get_name().split('\\')[-1].upper() == 'SECURITY':
                sechive = hive

        if syshive is None or sechive is None:
            if syshive is None:
                vollog.warning('Unable to locate SYSTEM hive')
            if sechive is None:
                vollog.warning('Unable to locate SECURITY hive')
            return

        return renderers.TreeGrid([("Username", str), ("Domain", str),
                                   ("Domain name", str), ('Hash', bytes)],
                                  self._generator(syshive, sechive))
Example #10
0
    def run(self):
        offsettype = "(V)" if not self.config.get('physical', self.PHYSICAL_DEFAULT) else "(P)"

        return renderers.TreeGrid([("PID", int), ("PPID", int), ("ImageFileName", str),
                                   ("Offset{0}".format(offsettype), format_hints.Hex), ("Threads", int),
                                   ("Handles", int), ("SessionId", int), ("Wow64", bool),
                                   ("CreateTime", datetime.datetime), ("ExitTime", datetime.datetime),
                                   ("File output", str)], self._generator())
Example #11
0
    def run(self):
        filter_func = pslist.PsList.create_pid_filter(self.config.get('pid', None))

        return renderers.TreeGrid([("PID", int), ("Process", str), ("FD", int), ("Path", str)],
                                  self._generator(
                                      pslist.PsList.list_tasks(self.context,
                                                               self.config['kernel'],
                                                               filter_func = filter_func)))
Example #12
0
    def run(self):
        pids = self.config.get('pid')
        include_threads = self.config.get('threads')
        decorate_comm = self.config.get('decorate_comm')
        filter_func = self.create_pid_filter(pids)

        columns = [("OFFSET (V)", format_hints.Hex), ("PID", int), ("TID", int), ("PPID", int), ("COMM", str)]
        return renderers.TreeGrid(columns, self._generator(filter_func, include_threads, decorate_comm))
Example #13
0
    def run(self):
        self._reg_table_name = intermed.IntermediateSymbolTable.create(self.context, self._config_path, 'windows',
                                                                       'registry')

        return renderers.TreeGrid([("Hive Offset", renderers.format_hints.Hex), ("Hive Name", str), ("Path", str),
                                   ("Last Write Time", datetime.datetime), ("Type", str), ("Name", str), ("ID", int),
                                   ("Count", int), ("Focus Count", int), ("Time Focused", str),
                                   ("Last Updated", datetime.datetime), ("Raw Data", format_hints.HexBytes)],
                                  self._generator())
Example #14
0
    def run(self) -> renderers.TreeGrid:
        filter_func = pslist.PsList.create_pid_filter(self.config.get('pid', None))
        list_tasks = pslist.PsList.get_list_tasks(self.config.get('pslist_method', pslist.PsList.pslist_methods[0]))

        return renderers.TreeGrid([("PID", int), ("Process", str), ("Argc", int), ("Arguments", str)],
                                  self._generator(
                                      list_tasks(self.context,
                                                 self.config['kernel'],
                                                 filter_func = filter_func)))
Example #15
0
 def run(self):
     return renderers.TreeGrid([("Valid pages (all)", int),
                                ("Valid pages (large)", int),
                                ("Swapped Pages (all)", int),
                                ("Swapped Pages (large)", int),
                                ("Invalid Pages (all)", int),
                                ("Invalid Pages (large)", int),
                                ("Other Invalid Pages (all)", int)],
                               self._generator())
Example #16
0
 def run(self):
     return renderers.TreeGrid([("Member", str), ("Policy Name", str),
                                ("Handler Address", format_hints.Hex),
                                ("Handler Module", str),
                                ("Handler Symbol", str)],
                               self._generator(
                                   lsmod.Lsmod.list_modules(
                                       self.context,
                                       self.config['kernel'])))
Example #17
0
 def run(self):
     return renderers.TreeGrid([("PID", int), ("PPID", int),
                                ("ImageFileName", str),
                                ("Offset", format_hints.Hex),
                                ("Threads", int), ("Handles", int),
                                ("SessionId", int), ("Wow64", bool),
                                ("CreateTime", datetime.datetime),
                                ("ExitTime", datetime.datetime),
                                ("File output", str)], self._generator())
Example #18
0
 def run(self):
     return renderers.TreeGrid([("URI", str), ("Valid", str),
                                ("Number of base_types", int),
                                ("Number of types", int),
                                ("Number of symbols", int),
                                ("Number of enums", int),
                                ("Windows info", str),
                                ("Linux banner", str), ("Mac banner", str)],
                               self._generator())
Example #19
0
 def run(self) -> renderers.TreeGrid:
     return renderers.TreeGrid([
         ("Offset", format_hints.Hex),
         ("Type", str),
         ("DriverName", str),
         ("DeviceName", str),
         ("DriverNameOfAttDevice", str),
         ("DeviceType", str),
     ], self._generator())
Example #20
0
    def run(self):
        filter_func = pslist.PsList.create_pid_filter(self.config.get('pid', None))

        return renderers.TreeGrid([("PID", int), ("Process", str), ("Start", format_hints.Hex),
                                   ("End", format_hints.Hex), ("File Path", str)],
                                  self._generator(
                                      pslist.PsList.list_tasks(self.context,
                                                               self.config['primary'],
                                                               self.config['vmlinux'],
                                                               filter_func = filter_func)))
Example #21
0
    def run(self):

        return renderers.TreeGrid([
            ("Offset", format_hints.Hex),
            ("Driver Name", str),
            ("IRP", str),
            ("Address", format_hints.Hex),
            ("Module", str),
            ("Symbol", str),
        ], self._generator())
Example #22
0
    def run(self):

        filter_func = pslist.PsList.create_pid_filter(self.config.get('pid', None))

        return renderers.TreeGrid([("PID", int), ("Process", str), ("Block", str), ("Variable", str), ("Value", str)],
                                  self._generator(
                                      pslist.PsList.list_processes(context = self.context,
                                                                   layer_name = self.config['primary'],
                                                                   symbol_table = self.config['nt_symbols'],
                                                                   filter_func = filter_func)))
Example #23
0
    def run(self):
        """Isolate each plugin and run it."""

        # Use all the plugins if there's no filter
        self.usable_plugins = self.usable_plugins or self.get_usable_plugins()
        self.automagics = self.automagics or automagic.available(self._context)
        plugins_to_run = []
        requirement_configs = {}

        filter_list = self.config['plugin-filter']
        # Identify plugins that we can run which output datetimes
        for plugin_class in self.usable_plugins:
            try:
                automagics = automagic.choose_automagic(self.automagics, plugin_class)

                for requirement in plugin_class.get_requirements():
                    if requirement.name in requirement_configs:
                        config_req, config_value = requirement_configs[requirement.name]
                        if requirement == config_req:
                            self.context.config[interfaces.configuration.path_join(
                                self.config_path, plugin_class.__name__)] = config_value

                plugin = plugins.construct_plugin(self.context, automagics, plugin_class, self.config_path,
                                                  self._progress_callback, self.open)

                for requirement in plugin.get_requirements():
                    if requirement.name not in requirement_configs:
                        config_value = plugin.config.get(requirement.name, None)
                        if config_value:
                            requirement_configs[requirement.name] = (requirement, config_value)

                if isinstance(plugin, TimeLinerInterface):
                    if not len(filter_list) or any(
                            [filter in plugin.__module__ + '.' + plugin.__class__.__name__ for filter in filter_list]):
                        plugins_to_run.append(plugin)
            except exceptions.UnsatisfiedException as excp:
                # Remove the failed plugin from the list and continue
                vollog.debug(f"Unable to satisfy {plugin_class.__name__}: {excp.unsatisfied}")
                continue

        if self.config.get('record-config', False):
            total_config = {}
            for plugin in plugins_to_run:
                old_dict = dict(plugin.build_configuration())
                for entry in old_dict:
                    total_config[interfaces.configuration.path_join(plugin.__class__.__name__, entry)] = old_dict[entry]

            with self.open("config.json") as file_data:
                with io.TextIOWrapper(file_data, write_through = True) as fp:
                    json.dump(total_config, fp, sort_keys = True, indent = 2)

        return renderers.TreeGrid(columns = [("Plugin", str), ("Description", str), ("Created Date", datetime.datetime),
                                             ("Modified Date", datetime.datetime), ("Accessed Date", datetime.datetime),
                                             ("Changed Date", datetime.datetime)],
                                  generator = self._generator(plugins_to_run))
Example #24
0
    def run(self):
        filter_func = pslist.PsList.create_pid_filter(self.config.get('pid', None))

        return renderers.TreeGrid([("PID", int), ("Process", str), ("Start VPN", format_hints.Hex),
                                   ("End VPN", format_hints.Hex), ("Tag", str), ("Protection", str),
                                   ("CommitCharge", int), ("PrivateMemory", int), ("File output", str),
                                   ("Hexdump", format_hints.HexBytes), ("Disasm", interfaces.renderers.Disassembly)],
                                  self._generator(
                                      pslist.PsList.list_processes(context = self.context,
                                                                   layer_name = self.config['primary'],
                                                                   symbol_table = self.config['nt_symbols'],
                                                                   filter_func = filter_func)))
Example #25
0
 def run(self):
     return renderers.TreeGrid([
         ('Offset', format_hints.Hex),
         ('Order', int),
         ('PID', int),
         ('Start', str),
         ('State', str),
         ('Type', str),
         ('Name', str),
         ('Display', str),
         ('Binary', str),
     ], self._generator())
Example #26
0
    def run(self):

        kernel = self.context.modules[self.config['kernel']]

        filter_func = pslist.PsList.create_pid_filter(self.config.get('pid', None))

        return renderers.TreeGrid([("PID", int), ("Process", str), ("Args", str)],
                                  self._generator(
                                      pslist.PsList.list_processes(context = self.context,
                                                                   layer_name = kernel.layer_name,
                                                                   symbol_table = kernel.symbol_table_name,
                                                                   filter_func = filter_func)))
Example #27
0
    def run(self):
        filter_func = pslist.PsList.create_pid_filter(
            self.config.get('pid', None))
        list_tasks = pslist.PsList.get_list_tasks(
            self.config.get('pslist_method', pslist.PsList.pslist_methods[0]))

        return renderers.TreeGrid([("PID", int), ("File Descriptor", int),
                                   ("File Path", str)],
                                  self._generator(
                                      list_tasks(self.context,
                                                 self.config['kernel'],
                                                 filter_func=filter_func)))
Example #28
0
    def run(self):
        filter_func = pslist.PsList.create_pid_filter(
            self.config.get('pid', None))

        return renderers.TreeGrid([("PID", int), ("Process", str),
                                   ("CommandTime", datetime.datetime),
                                   ("Command", str)],
                                  self._generator(
                                      pslist.PsList.list_tasks(
                                          self.context,
                                          self.config['primary'],
                                          self.config['vmlinux'],
                                          filter_func=filter_func)))
Example #29
0
    def run(self):
        kernel = self.context.modules[self.config['kernel']]

        return renderers.TreeGrid(
            [("PID", int), ("Process", str), ("Skeleton Key Found", bool),
             ("rc4HmacInitialize", format_hints.Hex),
             ("rc4HmacDecrypt", format_hints.Hex)],
            self._generator(
                pslist.PsList.list_processes(
                    context=self.context,
                    layer_name=kernel.layer_name,
                    symbol_table=kernel.symbol_table_name,
                    filter_func=self._lsass_proc_filter)))
Example #30
0
    def run(self):
        filter_func = pslist.PsList.create_pid_filter(
            self.config.get('pid', None))

        return renderers.TreeGrid(
            [("PID", int), ("Process", str), ("Start", format_hints.Hex),
             ("End", format_hints.Hex), ("Protection", str),
             ("Hexdump", format_hints.HexBytes),
             ("Disasm", interfaces.renderers.Disassembly)],
            self._generator(
                pslist.PsList.list_tasks(self.context,
                                         self.config['kernel'],
                                         filter_func=filter_func)))