デジタルフォレンジックでは、調査担当者はベストプラクティスとして、揮発性が最も高いソースから揮発性が最も低いソースまでデータを収集する必要があります。通常、ライブ/ダイナミックアクイジションについて話すとき、ほとんどの教科書は、CPUレジスタがより揮発性であるにもかかわらず、RAMが最も揮発性の高いデータソースとして始まります。しかし、ソースを見つけることができないようです。疑わしいデバイスのCPUからのデータ取得について説明します。プログラムを実行すると少なくとも1つのレジスタ(EIP/RIP)が変更されるため、私の質問は、レジスタ内のデータを無視しているのは、調査値がないためですか?不可能である?
そして-上記の質問の答えに応じて-そうする方法はありますか?
programが実行されなくても、OS自体が実行されます。そして、それを変更することはできません-技術的にも法医学的にも。
さらに、最近のクアッドコアCPUは数百のCPUレジスタを持つことができそれらのほとんどは非表示です!これは最適化です。CPUレジスタからキャッシュに値を書き込む場合、しばらく時間がかかることがあります。非表示のレジスタを使用してしばらくの間値を保持することにより、CPUは続行できます。ただし、値が書き込まれるとすぐに、レジスタをクリアできます。つまり、プログラムが実行されていなくても状態が変化する非表示のレジスタを効果的に処理していることになります。
これは次の問題にもつながります。CPUキャッシュは永続的かつかなり独立して自身を更新しています。これがプログラムの制御下にあるとしたら効率的ではありません。
これでが可能なことは、プログラムをdumpすることです。典型的な最近のOSは、完全なプログラム状態レジスタを含むをディスクファイルに保存できます。 Linuxでは、これはcoreファイルとして、Windowsではユーザーモードダンプとして知られています。とにかく、マルチタスクOSが実行中のプロセスを一時停止および再開する必要があるため(たとえば、別のプロセスの実行がスケジュールされている場合)、この容量が必要でした。明らかに、プロセスを再開するには、レジスタを復元する必要があります。とにかくプログラムの正確さに影響を与えてはならないので、通常はキャッシュがクリアされるだけで、ダンプファイルにもなりません。
これを行う方法としては、ロジックプローブをCPUや回路内の他の場所に取り付ける方法が一般的です。
この配置により、CPUに出入りする命令とデータの動きを追跡でき、それに応じてレジスタの状態を推定できます。
しかし、システムに新しい実行中のプログラムを導入すると、法的に使用可能な法医学的証拠に関する最初の規則に違反したことになります。システムを変更しました。きちんとした弁護人は、そのような証拠を弾劾することができます。