Python-forensics-memory-and-python-forensics

提供:Dev Guides
移動先:案内検索

Pythonフォレンジック-メモリとフォレンジック

この章では、 Android および Linux プラットフォームに適用可能なPythonベースのフォレンジックフレームワークである Volatility を使用して、揮発性メモリの調査に焦点を当てます。

揮発性メモリ

揮発性メモリは、システムの電源が切れたり中断されたりすると内容が消去されるストレージの一種です。 RAMは、揮発性メモリの最良の例です。 つまり、ハードドライブなどの不揮発性メモリに保存されていないドキュメントで作業しており、コンピューターの電源が切れると、すべてのデータが失われます。

一般的に、揮発性メモリの法医学は、他の法医学調査と同じパターンに従います-

  • 調査対象の選択
  • 法医学データの取得
  • 法医学分析

Androidで使用される基本的な*揮発性プラグイン*は、分析のために* RAMダンプ*を収集します。 分析のためにRAMダンプを収集したら、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)

上記のコードは次の出力を生成します。

メモリおよびフォレンジックの出力

実装されたYARAルールの数は、疑わしいファイルのより良い画像を提供するのに役立ちます。 間接的に、疑わしいファイルのリストは、法医学のための適切な情報を収集するのに役立ちます。

githubのソースコードは次のとおりです。https://github.com/radhikascs/Python_yara