
직접 메모리 접근 (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비트 메모리 액세스 | PCIe TLP 액세스 | 프로젝트 스폰서 |
|---|---|---|---|---|---|---|
| ZDMA | FPGA | Thunderbolt3 | 1000MB/s | Yes | Yes | 💖 |
| GBOX | FPGA | OCuLink | 400MB/s | Yes | Yes | 💖 |
| LeetDMA | FPGA | USB-C | 190MB/s | Yes | Yes | 💖 |
| CaptainDMA M2 | FPGA | USB-C | 190MB/s | Yes | Yes | 💖 |
| CaptainDMA M2 100T | FPGA | USB-C | 220MB/s | Yes | Yes | 💖 |
| CaptainDMA 4.1th | FPGA | USB-C | 190MB/s | Yes | Yes | 💖 |
| CaptainDMA 75T | FPGA | USB-C | 200MB/s | Yes | Yes | 💖 |
| CaptainDMA 100T | FPGA | USB-C | 220MB/s | Yes | Yes | 💖 |
| AC701/FT601 | FPGA | USB3 | 190MB/s | Yes | Yes | |
| USB3380-EVB | USB3380 | USB3 | 150MB/s | No | No | |
| DMA patched HP iLO | BMC | TCP | 1MB/s | Yes | No |
지원되는 소프트웨어 기반 메모리 획득 방법의 요약은 아래에 나열되어 있습니다. LeechService는 원격 LeechCore 라이브러리에 대한 네트워크 연결만 제공합니다. 연결되면 하드웨어 및 소프트웨어 기반 메모리 획득을 모두 사용할 수 있습니다.
| 장치 | 유형 | 휘발성 | 쓰기 | Linux 지원 | 플러그인 |
|---|---|---|---|---|---|
| RAW physical memory dump | File | No | No | Yes | No |
| Full Microsoft Crash Dump | File | No | No | Yes | No |
| Full ELF Core Dump | File | No | No | Yes | No |
| VMware | Live Memory | Yes | Yes | No | No |
| VMware memory save file | File | No | No | Yes | No |
| TotalMeltdown | CVE-2018-1038 | Yes | Yes | No | No |
| DumpIt /LIVEKD | Live Memory | Yes | No | No | No |
| WinPMEM | Live Memory | Yes | No | No | No |
| LiveKd | Live Memory | Yes | No | No | No |
| LiveCloudKd | Live Memory | Yes | Yes | No | Yes |
| Hyper-V Saved State | File | No | No | No | Yes |
| LeechAgent* | Remote | No | No |
PCILeech GitHub 저장소(https://github.com/ufrisk/pcileech)를 방문하여 최신 버전의 PCILeech를 보유하고 있는지 확인하세요.
최신 릴리스에서 최신 바이너리, 모듈 및 구성 파일을 받으세요. 또는 저장소를 클론하고 소스에서 빌드하세요.
Windows에서 PCILeech를 실행하는 방법에 대한 정보는 Windows에서 PCILeech 가이드를 참조하세요.