- Python取证教程
- 首页
- 简介
- Python安装
- Python概述
- 基本取证应用
- 哈希函数
- 破解加密
- 虚拟化
- 网络取证
- Python模块
- Dshell和Scapy
- 搜索
- 索引
- Python图像库
- 移动取证
- 网络时间协议
- 多处理支持
- 内存与取证
- Linux中的取证
- 入侵指标
- 云的实施
- Python取证有用资源
- Python取证 - 快速指南
- Python取证 - 有用资源
- Python取证 - 讨论
Python取证 - 内存和取证
在本章中,我们将重点关注使用Volatility(一个基于Python的取证框架,适用于以下平台:Android和Linux)来调查易失性内存。
易失性内存
易失性内存是一种存储类型,当系统电源关闭或中断时,其内容会被擦除。RAM是易失性内存的最佳示例。这意味着,如果您正在处理尚未保存到非易失性内存(如硬盘驱动器)的文档,并且计算机断电,则所有数据都将丢失。
通常,易失性内存取证遵循与其他取证调查相同的模式:
- 选择调查目标
- 获取取证数据
- 取证分析
用于Android的基本Volatility插件会收集内存转储以进行分析。一旦收集了内存转储以进行分析,就需要开始在内存中搜索恶意软件。
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
广告