Плагин волатильности для извлечения файла конфигурации из памяти: падает после компиляции yara

Я пытаюсь написать плагин Volatility для извлечения файла конфигурации, используемого вредоносным ПО, из дампа памяти. Однако, когда я запускаю этот плагин (без 'sudo') без привилегий root, плагин вылетает в строке yara.compile. Если я запускаю этот плагин с "sudo", код после строки yara.compile не выполняется. Я не уверен, почему yara.compile вызывает эту проблему. Может ли кто-нибудь помочь мне с этим? Ниже приведен код, который я написал:

import volatility.plugins.common as common 
import volatility.utils as utils
import volatility.win32.tasks as tasks 
import volatility.debug as debug
import volatility.plugins.malware.malfind as malfind
import volatility.conf as conf
import volatility.plugins.taskmods as taskmods

try:
    import yara
    HAS_YARA = True
except ImportError:
    HAS_YARA = False

YARA_SIGS = {
    'malware_conf' : 'rule malware_conf {strings: $a = /<settings/ condition: $a}'
}

class malwarescan(taskmods.PSList):

    def get_vad_base(self, task, address):
        for vad in task.VadRoot.traverse():
            if address >= vad.Start and address < vad.End:
                return vad.Start
        return None

    def calculate(self):
        if not HAS_YARA:
            debug.error('Yara must be installed for this plugin')
        print "in calculate function"
        kernel_space = utils.load_as(self._config)
        print "before yara compile"
        rules = yara.compile(sources=YARA_SIGS)
        print "after yara compile"
        for process in tasks.pslist(kernel_space):
             if "IEXPLORE.EXE".lower() == process.ImageFileName.lower():
                 scanner = malfind.VadYaraScanner(task=process, rules=rules)
                 for hit, address in scanner.scan():
                     vad_base_addr = self.get_vad_base(process, address)
                     yield process, address



    def render_text(self, outfd, data):
        for process, address in data:

            outfd.write("Process: {0}, Pid: {1}\n".format(process.ImageFileName, process.UniqueProcessId))

Поэтому, когда я запускаю этот плагин с привилегиями root, я не вижу строки "print" после выполнения yara compile ". Что может быть причиной? Спасибо.

1 ответ

Я установил "yara" через "pip". Если вы устанавливаете yara через pip, вы фактически получаете yara-ctypes ( https://github.com/mjdorma/yara-ctypes), который немного отличается от yara-python. Поэтому я удалил yara-ctypes и установил yara-python. Тогда это сработало.

Другие вопросы по тегам