Python Forensics - Memori dan Forensik
Dalam bab ini, kami akan fokus untuk menyelidiki memori volatil dengan bantuan Volatility, kerangka kerja forensik berbasis Python yang dapat diterapkan pada platform berikut: Android dan Linux.
Memori Volatile
Memori volatil adalah jenis penyimpanan di mana konten akan terhapus saat daya sistem dimatikan atau terganggu. RAM adalah contoh terbaik dari memori yang mudah menguap. Artinya, jika Anda sedang mengerjakan dokumen yang belum disimpan ke memori non-volatile, seperti hard drive, dan komputer kehilangan daya, maka semua data akan hilang.
Secara umum, forensik memori volatil mengikuti pola yang sama seperti investigasi forensik lainnya -
- Memilih target investigasi
- Memperoleh data forensik
- Analisis forensik
Dasar volatility plugins yang digunakan untuk mengumpulkan Android RAM dumpuntuk analisis. Setelah dump RAM dikumpulkan untuk dianalisis, penting untuk mulai berburu malware di RAM.
Aturan YARA
YARA adalah alat populer yang menyediakan bahasa yang kuat, kompatibel dengan Ekspresi Reguler berbasis Perl, dan digunakan untuk memeriksa file / direktori yang dicurigai dan mencocokkan string.
Pada bagian ini, kita akan menggunakan YARA berdasarkan implementasi pencocokan pola dan menggabungkannya dengan daya utilitas. Proses lengkap akan bermanfaat untuk analisis forensik.
Contoh
Perhatikan kode berikut. Kode ini membantu dalam mengekstrak kode.
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)
Kode di atas akan menghasilkan keluaran sebagai berikut.
Jumlah aturan YARA yang diterapkan membantu memberikan gambaran yang lebih baik tentang file yang dicurigai. Secara tidak langsung, daftar file yang dicurigai membantu mengumpulkan informasi yang sesuai untuk forensik.
Berikut ini adalah kode sumber di github: https://github.com/radhikascs/Python_yara