Python取证-内存和取证

Python取证-内存和取证

在这一章中,我们将着重于在 Volatility 的帮助下调查易 失性 内存,这是一个基于Python的取证框架,适用于以下平台: AndroidLinux。

易失性内存

易失性存储器是一种存储类型,当系统电源关闭或中断时,其内容会被清除。RAM是易失性存储器的最好例子。这意味着,如果你正在处理一份没有保存到非易失性存储器(如硬盘)的文件,而计算机失去了电源,那么所有的数据都将丢失。

一般来说,易失性存储器取证遵循与其他取证调查相同的模式–

  • 选择调查的目标
  • 获取取证数据
  • 取证分析

用于安卓的基本 波动性插件 收集 RAM转储 以供分析。一旦收集到RAM dump进行分析,就必须开始猎取RAM中的恶意软件。

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)

上述代码将产生以下输出。

Python取证--内存和取证

实现的YARA规则的数量有助于更好地了解可疑文件的情况。间接来说,可疑文件的列表有助于为取证收集适当的信息。

以下是github中的源代码https://github.com/radhikascs/Python_yara

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程