Плагин волатильности для извлечения файла конфигурации из памяти: падает после компиляции 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. Тогда это сработало.