

WinPmem は長年にわたり、Windows向けのデフォルトのオープンソースメモリ取得ドライバーでした。以前はRekallプロジェクトに含まれていましたが、最近独自のリポジトリに分離されました。
これは Windows 版です。Linux 版の Linpmem はこちら: https://github.com/Velocidex/Linpmem
このコードは元々Google内で開発されましたが、Apache Licenseのもとで公開されました。
WinPmem は以下の機能を備えた物理メモリ取得ツールです:
オープンソース
Win7~Win10、x86 + x64をサポート。WDK7600を使用すればWinXPサポートも可能です。 デフォルトでは、提供されるWinPmem実行可能ファイルはWDK10でコンパイルされ、Win7~Win10をサポートし、より近代的なコードを備えています。
3つの独立した読み取り方法と、完全なメモリダンプを作成する2つの方法。 カーネルモードルートキットに直面しても、常に動作する方法が1つあります。
Rawメモリダンプイメージのサポート。
他のイメージャのようにカーネルからイメージを書き込む代わりに、読み取りデバイスインターフェースを使用します。 これにより、複雑なユーザースペースイメージャ(例:ネットワーク経由のコピー、ハッシュなど)を実現し、またライブシステム上で解析を実行できます(例:デバイス上で直接実行可能)。
このディレクトリ内のファイル(WinPmemソースと署名済みバイナリを含む)は、以下のライセンスで利用可能です: Apache License, Version 2.0
WinPmem 実行可能ファイルは2つあります: winpmem_mini_x86.exe と winpmem_mini_x64.exe。どちらのバージョンも両方のドライバ(32ビット版と64ビット版)を含んでいます。
バイナリ名の「mini」は、このイメージャがシンプルなイメージャであり、RAW形式でのみイメージを生成できることを示しています。以前、AFF4ベースのWinPmemイメージャをリリースしましたが、それは新しいドライバへの更新がまだです。AFF4ベースのイメージャが必要な場合はお知らせください。
Pythonプログラムは現在構築中ですが、Pythonからイメージャを使用する方法のデモとして機能します。
このプログラムは、実行可能ファイル自体以外に依存関係を必要としないため、インシデントレスポンスに最も使いやすいです。プログラムは正しいドライバ(32ビットまたは64ビット)を自動的にロードし、自己完結型です。
winpmem_mini_x64.exe physmem.raw
デフォルトの取得方法を使用して、physmem.rawにRawイメージを書き込みます。
winpmem_mini_x64.exe
使用法の表示/短いマニュアルを呼び出します。
特にMmMapIoSpaceメソッドを使用してRawイメージを取得するには:
winpmem.exe -1 myimage.raw
イメージ取得後、ドライバは自動的にアンロードされます!
MicrosoftがMJ READ関数を設計した方法により、UINT64の最大値の半分よりも 大きい 物理アドレスが指定された場合、Winpmemでの物理メモリの読み取りはSTATUS_INVALID_PARAMETERで失敗します。例えば、物理メモリの高位部分を読み取りたい かつ 巨大な物理メモリ(9,223,372,036,854,775,807以上)を持つ場合に該当します。これは非常に考えにくいですが、今日のRAMサイズは増加し続けています。
WinPmem ソースコードは読み取りだけでなくメモリへの書き込みもサポートしています。この機能は、多くのルートキット隠蔽技術をメモリへの直接書き込みでエミュレートできるため、優れた学習ツールです。
この機能は細心の注意を払って使用すべきです!
注: これはかなり危険な機能であるため、署名済みバイナリドライバでは書き込みサポートが無効になっています。この機能を使用したい場合は、ドライバを再ビルドしてテスト署名バイナリを生成できます。署名なしバイナリ(実際にはテスト証明書で自己署名)はテスト自己署名であるため、通常のシステムではロードできませんが、以下のコマンドを発行することでテストシステムで署名なしドライバのロードを許可できます(https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option 参照:
Bcdedit.exe -set TESTSIGNING ON
そして再起動します。デスクトップに「Test Mode」という小さなテキストが表示され、このマシンがテスト署名ドライバ用に構成されていることを思い出させます。
さらに、書き込みサポートはロード時にも有効にする必要があります:
winpmem.exe -w -l
これによりドライバがロードされ、書き込みサポートが有効になります。
WinpmemとLinpmemは、(現在は終了した)REKALLプロジェクトの先駆者たちの研究がなければ存在しませんでした: https://github.com/google/rekall
このプロジェクトは、より広いDFIRコミュニティからのサポートがなければ実現できませんでした:
私たちのオープンソースコントリビューター: