
直接メモリアクセス(DMA)攻撃ソフトウェア
PCILeech は PCIe ハードウェアデバイスを使用して、ターゲットシステムのメモリを読み書きします。これは PCIe 経由の DMA を使用して実現されます。ターゲットシステムにドライバは不要です。
PCILeech はハードウェアなしでも、LeechCore ライブラリがサポートする幅広いソフトウェアベースのメモリ取得手法と組み合わせて動作します。これには DumpIt や WinPmem を使用したリモートのライブメモリのキャプチャが含まれます。PCILeech はローカルメモリのキャプチャや、数多くのメモリダンプファイル形式もサポートしています。
PCILeech は複数のメモリ取得デバイスをサポートしています。ハードウェアベースとソフトウェアベースの両方があります。USB3380 ベースのハードウェアはネイティブでは 4GB のメモリしか読み取れませんが、カーネルモジュール (KMD) を最初にターゲットシステムのカーネルに挿入すればすべてのメモリを読み取ることができます。FPGA ベースのハードウェアおよびソフトウェアベースの手法は、すべてのメモリを読み取ることができます。
PCILeech は幅広いカーネルインプラントをターゲットカーネルに挿入することができ、「マウントされたドライブ」を介してライブ RAM やファイルシステムへの容易なアクセスを可能にします。また、ログオンパスワード要件の削除、未署名ドライバのロード、コードの実行、システムシェルの起動も可能です。PCILeech は Windows と Linux で動作します。サポートされるターゲットシステムは現在、以下の x64 版です: UEFI、Linux、FreeBSD、Windows。これにはメモリへの書き込みアクセスが必要です (USB3380 ハードウェア、FPGA ハードウェア、LiveCloudKd または CVE-2018-1038 "Total Meltdown")。
始めるには、リポジトリのソースをクローンするか、最新の バイナリ、モジュール、設定ファイル をダウンロードしてください。
PCILeech 用の PushPin GUI フロントエンド は、一般的な RedTeam タスクを非常に簡単にします。PushPin は公式の PCILeech ディストリビューションの一部ではないことに注意してください。







*) macOS High Sierra 以降はサポートされていません。
PCILeech はハードウェアベースとソフトウェアベースの両方のメモリ取得方法をサポートしています。すべてのメモリ取得は LeechCore ライブラリによって処理されます。
サポートされているハードウェアベースのメモリ取得方法の概要を以下に示します。すべてのハードウェアベースのメモリ取得方法は Windows と Linux の両方でサポートされています。ただし FPGA ベースの方法は Linux では若干のパフォーマンスペナルティがあり、Windows の 150MB/s と比較して約 90MB/s が最大となります。
| デバイス | タイプ | インターフェース | 速度 | 64-bit メモリアクセス | PCIe TLP アクセス | プロジェクト スポンサー |
|---|---|---|---|---|---|---|
| ZDMA | FPGA | Thunderbolt3 | 1000MB/s | はい | はい | 💖 |
| GBOX | FPGA | OCuLink | 400MB/s | はい | はい | 💖 |
| LeetDMA | FPGA | USB-C | 190MB/s | はい | はい | 💖 |
| CaptainDMA M2 | FPGA | USB-C | 190MB/s | はい | はい | 💖 |
| CaptainDMA M2 100T | FPGA | USB-C | 220MB/s | はい | はい | 💖 |
| CaptainDMA 4.1th | FPGA | USB-C | 190MB/s | はい | はい | 💖 |
| CaptainDMA 75T | FPGA | USB-C | 200MB/s | はい | はい | 💖 |
| CaptainDMA 100T | FPGA | USB-C | 220MB/s | はい | はい | 💖 |
| AC701/FT601 | FPGA | USB3 | 190MB/s | はい | はい | |
| USB3380-EVB | USB3380 | USB3 | 150MB/s | いいえ | いいえ | |
| DMA patched HP iLO | BMC | TCP | 1MB/s | はい | いいえ |
サポートされているソフトウェアベースのメモリ取得方法の概要を以下に示します。LeechService はリモートの LeechCore ライブラリへのネットワーク接続を提供するだけであることに注意してください。接続後はハードウェアベースとソフトウェアベースの両方のメモリ取得を使用することが可能です。
| デバイス | タイプ | 揮発性 | 書き込み | Linux サポート | プラグイン |
|---|---|---|---|---|---|
| RAW physical memory dump | ファイル | いいえ | いいえ | はい | いいえ |
| Full Microsoft Crash Dump | ファイル | いいえ | いいえ | はい | いいえ |
| Full ELF Core Dump | ファイル | いいえ | いいえ | はい | いいえ |
| VMware | ライブ メモリ | はい | はい | いいえ | いいえ |
| VMware memory save file | ファイル | いいえ | いいえ | はい | いいえ |
| TotalMeltdown | CVE-2018-1038 | はい | はい | いいえ | いいえ |
| DumpIt /LIVEKD | ライブ メモリ | はい | いいえ | いいえ | いいえ |
| WinPMEM | ライブ メモリ | はい | いいえ | いいえ | いいえ |
| LiveKd | ライブ メモリ | はい | いいえ | いいえ | いいえ |
| LiveCloudKd | ライブ メモリ | はい | はい | いいえ | はい |
| Hyper-V Saved State | ファイル | いいえ | いいえ | いいえ | はい |
| LeechAgent* | リモート | いいえ | いいえ |