Python Forensics - Gedächtnis und Forensik
In diesem Kapitel konzentrieren wir uns auf die Untersuchung des flüchtigen Speichers mit Hilfe von Volatility, ein Python-basiertes Forensik-Framework, das auf den folgenden Plattformen anwendbar ist: Android und Linux.
Flüchtiger Speicher
Der flüchtige Speicher ist eine Art von Speicher, bei dem der Inhalt gelöscht wird, wenn das System ausgeschaltet oder unterbrochen wird. RAM ist das beste Beispiel für einen flüchtigen Speicher. Wenn Sie an einem Dokument gearbeitet haben, das nicht in einem nichtflüchtigen Speicher wie einer Festplatte gespeichert wurde, und der Computer die Stromversorgung verloren hat, gehen alle Daten verloren.
Im Allgemeinen folgt die flüchtige Speicherforensik demselben Muster wie andere forensische Untersuchungen -
- Auswahl des Untersuchungsziels
- Forensische Daten erfassen
- Forensische Analyse
Das Grundlegende volatility plugins die für Android-Gather verwendet werden RAM dumpzur Analyse. Sobald der RAM-Speicherauszug zur Analyse erfasst wurde, ist es wichtig, mit der Suche nach Malware im RAM zu beginnen.
YARA-Regeln
YARA ist ein beliebtes Tool, das eine robuste Sprache bietet, mit Perl-basierten regulären Ausdrücken kompatibel ist und zum Untersuchen der verdächtigen Dateien / Verzeichnisse und zum Übereinstimmen von Zeichenfolgen verwendet wird.
In diesem Abschnitt verwenden wir YARA basierend auf der Implementierung des Mustervergleichs und kombinieren sie mit der Stromversorgung. Der gesamte Prozess ist für die forensische Analyse von Vorteil.
Beispiel
Betrachten Sie den folgenden Code. Dieser Code hilft beim Extrahieren des Codes.
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)
Der obige Code erzeugt die folgende Ausgabe.
Die Anzahl der implementierten YARA-Regeln hilft dabei, ein besseres Bild der verdächtigen Dateien zu erhalten. Indirekt hilft die Liste der verdächtigen Dateien beim Sammeln geeigneter Informationen für die Forensik.
Es folgt der Quellcode in Github: https://github.com/radhikascs/Python_yara