В этой главе мы сконцентрируемся на исследовании энергозависимой памяти с помощью Volatility , криминалистической среды на основе Python, применимой к следующим платформам: Android и Linux .
Летучая память
Энергозависимая память — это тип хранилища, в котором содержимое стирается, когда питание системы отключается или прерывается. ОЗУ является лучшим примером энергозависимой памяти. Это означает, что если вы работали с документом, который не был сохранен в энергонезависимой памяти, такой как жесткий диск, и компьютер потерял питание, то все данные будут потеряны.
Как правило, криминалистическая экспертиза изменчивой памяти следует той же схеме, что и другие криминалистические исследования —
- Выбор цели расследования
- Получение криминалистических данных
- Судебный анализ
Основные плагины волатильности, которые используются для Android, собирают дамп оперативной памяти для анализа. Как только дамп ОЗУ собран для анализа, важно начать поиск вредоносного ПО в ОЗУ.
Правила YARA
YARA — это популярный инструмент, который обеспечивает надежный язык, совместим с регулярными выражениями на основе Perl и используется для проверки подозрительных файлов / каталогов и сопоставления строк.
В этом разделе мы будем использовать YARA на основе реализации сопоставления с образцом и объединять их с энергопотреблением. Весь процесс будет полезен для судебного анализа.
пример
Рассмотрим следующий код. Этот код помогает в извлечении кода.
import operator import os import sys sys.path.insert(0, os.getcwd()) import plyara.interp as interp # Plyara is a script that lexes and parses a file consisting of one more Yara # rules into a python dictionary representation. if __name__ == '__main__': file_to_analyze = sys.argv[1] rulesDict = interp.parseString(open(file_to_analyze).read()) authors = {} imps = {} meta_keys = {} max_strings = [] max_string_len = 0 tags = {} rule_count = 0 for rule in rulesDict: rule_count += 1 # Imports if 'imports' in rule: for imp in rule['imports']: imp = imp.replace('"','') if imp in imps: imps[imp] += 1 else: imps[imp] = 1 # Tags if 'tags' in rule: for tag in rule['tags']: if tag in tags: tags[tag] += 1 else: tags[tag] = 1 # Metadata if 'metadata' in rule: for key in rule['metadata']: if key in meta_keys: meta_keys[key] += 1 else: meta_keys[key] = 1 if key in ['Author', 'author']: if rule['metadata'][key] in authors: authors[rule['metadata'][key]] += 1 else: authors[rule['metadata'][key]] = 1 #Strings if 'strings' in rule: for strr in rule['strings']: if len(strr['value']) > max_string_len: max_string_len = len(strr['value']) max_strings = [(rule['rule_name'], strr['name'], strr['value'])] elif len(strr['value']) == max_string_len: max_strings.append((rule['rule_name'], strr['key'], strr['value'])) print("\nThe number of rules implemented" + str(rule_count)) ordered_meta_keys = sorted(meta_keys.items(), key = operator.itemgetter(1), reverse = True) ordered_authors = sorted(authors.items(), key = operator.itemgetter(1), reverse = True) ordered_imps = sorted(imps.items(), key = operator.itemgetter(1), reverse = True) ordered_tags = sorted(tags.items(), key = operator.itemgetter(1), reverse = True)
Приведенный выше код даст следующий вывод.
Количество реализованных правил YARA помогает получить лучшее представление о предполагаемых файлах. Косвенно, список подозреваемых файлов помогает в сборе соответствующей информации для криминалистов.
Ниже приведен исходный код в github: https://github.com/radhikascs/Python_yara