
직접 메모리 접근 (DMA) 공격 소프트웨어
PCILeech는 PCIe 하드웨어 장치를 사용하여 대상 시스템 메모리를 읽고 씁니다. 이는 PCIe를 통한 DMA를 사용하여 달성됩니다. 대상 시스템에는 드라이버가 필요하지 않습니다.
PCILeech는 또한 하드웨어 없이도 LeechCore 라이브러리에서 지원하는 다양한 소프트웨어 메모리 획득 방법과 함께 작동합니다 - DumpIt 또는 WinPmem을 사용한 원격 라이브 메모리 캡처를 포함합니다. PCILeech는 또한 로컬 메모리 캡처와 여러 메모리 덤프 파일 형식을 지원합니다.
PCILeech는 여러 메모리 획득 장치를 지원합니다. 하드웨어 기반과 소프트웨어 기반 모두. USB3380 기반 하드웨어는 기본적으로 4GB 메모리만 읽을 수 있지만, 커널 모듈(KMD)이 먼저 대상 시스템 커널에 삽입되면 모든 메모리를 읽을 수 있습니다. FPGA 기반 하드웨어와 소프트웨어 기반 방법은 모든 메모리를 읽을 수 있습니다.
PCILeech는 대상 커널에 다양한 커널 임플란트를 삽입할 수 있어 "마운트된 드라이브"를 통해 라이브 램과 파일 시스템에 쉽게 접근할 수 있습니다. 또한 로그온 암호 요구 사항을 제거하고, 서명되지 않은 드라이버를 로드하고, 코드를 실행하고, 시스템 셸을 생성하는 것도 가능합니다. 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에서 약간의 성능 저하가 있어 최대 약 90MB/s로 제한되며, Windows에서는 150MB/s입니다.
| 장치 | 유형 | 인터페이스 | 속도 | 64비트 메모리 접근 | 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 물리 메모리 덤프 | 파일 | 아니오 | 아니오 | 예 | 아니오 |
| 전체 Microsoft 크래시 덤프 | 파일 | 아니오 | 아니오 | 예 | 아니오 |
| 전체 ELF 코어 덤프 | 파일 | 아니오 | 아니오 | 예 | 아니오 |
| VMware | 라이브 메모리 | 예 | 예 | 아니오 | 아니오 |
| VMware 메모리 저장 파일 | 파일 | 아니오 | 아니오 | 예 | 아니오 |
| TotalMeltdown | CVE-2018-1038 | 예 | 예 | 아니오 | 아니오 |
| DumpIt /LIVEKD | 라이브 메모리 | 예 | 아니오 | 아니오 | 아니오 |
| WinPMEM | 라이브 메모리 | 예 | 아니오 | 아니오 | 아니오 |
| LiveKd | 라이브 메모리 | 예 | 아니오 | 아니오 | 아니오 |
| LiveCloudKd | 라이브 메모리 | 예 | 예 | 아니오 | 예 |
| Hyper-V 저장 상태 | 파일 | 아니오 | 아니오 | 아니오 | 예 |
| LeechAgent* | 원격 | 아니오 | 아니오 |
PCILeech github 저장소(https://github.com/ufrisk/pcileech)를 방문하여 최신 버전의 PCILeech를 보유하고 있는지 확인하십시오.