• Stars
    star
    576
  • Rank 75,020 (Top 2 %)
  • Language
    C
  • License
    Apache License 2.0
  • Created about 5 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The multi-platform memory acquisition tool.

The WinPmem memory acquisition driver and userspace.

alt text

WinPmem has been the default open source memory acquisition driver for windows for a long time. It used to live in the Rekall project, but has recently been separated into its own repository.

Copyright

This code was originally developed within Google but was released under the Apache License.

Description

WinPmem is a physical memory acquisition tool with the following features:

  • Open source

  • Support for WinXP - Win 10, x86 + x64. The WDK7600 can be used to include WinXP support. As default, the provided WinPmem executables will be compiled with WDK10, supporting Win7 - Win10, and featuring more modern code.

  • Three different independent methods to create a memory dump. One method should always work even when faced with kernel mode rootkits.

  • Raw memory dump image support.

  • A read device interface is used instead of writing the image from the kernel like some other imagers. This allows us to have complex userspace imager (e.g. copy across network, hash etc), as well as run analysis on the live system (e.g. can be run directly on the device).

The files in this directory (Including the WinPmem sources and signed binaries), are available under the following license: Apache License, Version 2.0

How to use

There are two WinPmem executables: winpmem_mini_x86.exe and winpmem_mini_x64.exe. Both versions contain both drivers (32 and 64 bit versions).

The mini in the binary name refers to this imager being a plain simple imager - it can only produce images in RAW format. In the past we release a WinPmem imager based on AFF4 but that one is yet to be updated to the new driver. Please let us know if you need the AFF4 based imager.

The Python acquisition tool winpmem.py

The python program is currently under construction but works as a demonstration for how one can use the imager from Python.

winpmem_mini_x64.exe (standalone executable)

This program is easiest to use for incident response since it requires no other dependencies than the executable itself. The program will load the correct driver (32 bit or 64 bit) automatically and is self-contained.

Examples:

winpmem_mini_x64.exe physmem.raw

Writes a raw image to physmem.raw using the default method of acquisition.

winpmem_mini_x64.exe

Invokes the usage print / short manual.

To acquire a raw image using specifically the MmMapIoSpace method:

winpmem.exe -1 myimage.raw

The driver will be automatically unloaded after the image is acquired!

Experimental write support

The WinPmem source code supports writing to memory as well as reading. This capability is a great learning tool since many rootkit hiding techniques can be emulated by writing to memory directly.

This functionality should be used with extreme caution!

NOTE: Since this is a rather dangerous capability, the signed binary drivers have write support disabled. You can rebuild the drivers to produce test signed binaries if you want to use this feature. The unsigned binaries (really self signed with a test certificate) can not load on a regular system due to them being test self signed, but you can allow the unsigned drivers to be loaded on a test system by issuing (see https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option:

Bcdedit.exe -set TESTSIGNING ON

and reboot. You will see a small "Test Mode" text on the desktop to remind you that this machine is configured for test signed drivers.

Additionally, Write support must also be enabled at load time:

winpmem.exe -w -l

This will load the drivers and turn on write support.

Acknowledgments

This project would also not be possible without support from the wider DFIR community:

  • We would like to thank Emre Tinaztepe and Mehmet GÖKSU at Binalyze.

Our open source contributors:

  • Viviane Zwanger
  • Mike Cohen

More Repositories

1

velociraptor

Digging Deeper....
Go
2,595
star
2

c-aff4

An AFF4 C++ implementation.
C++
180
star
3

evtx

Golang Parser for Microsoft Event Logs
Go
92
star
4

go-ntfs

An NTFS file parser in Go
Go
61
star
5

Linpmem

Linpmem is a linux memory acquisition tool
C
53
star
6

go-pe

A Portable Executable parser for Golang
Go
45
star
7

oleparse

Golang parser for OLE files
Go
30
star
8

velociraptor-docs

Documentation site for Velociraptor
HTML
27
star
9

evtx-data

Publicly shareable windows event log message data
25
star
10

go-ese

Go implementation of an Extensible Storage Engine parser
Go
25
star
11

go-prefetch

A golang implementation of a prefetch parser.
Go
18
star
12

vfilter

A library implementing a generic SQL like query language.
Go
18
star
13

cloudvelo

An experimental Velociraptor implementation using cloud infrastructure
Go
17
star
14

pyvelociraptor

PyVelociraptor contains the python bindings for the Velociraptor API.
Python
12
star
15

vtypes

VTypes is a data driven binary parsing system in Go.
Go
10
star
16

regparser

A Golang Registry parser
Go
10
star
17

eql2vql

Transform EQL detection rules to VQL artifacts
Python
9
star
18

Tools

Distribute third party tools for use with Velociraptor
8
star
19

SQLiteHunter

Hunt for SQLite files used by various applications
Go
7
star
20

yara-tools

Tools to manipulate yara files.
Go
5
star
21

binparsergen

Binary Parser Generator for Go
Go
5
star
22

ordereddict

A simple Ordered Dict implementation.
Go
4
star
23

velociraptor-sigma-rules

A Compiler from Sigma rules to VQL
Go
4
star
24

go-magic

Go bindings for libmagic
C
3
star
25

go-fat

Parser for FAT filesystems
Go
2
star
26

go-ewf

A Library for reading EWF files
Go
2
star
27

Audit

Collection of Audit and Compliance related VQL artifacts
Go
2
star
28

velociraptor-web

Velociraptor's documentation site.
CSS
2
star
29

zip

Enhanced zip library
Go
2
star
30

presentations

Presentations and Workshops
HTML
2
star
31

injector

A simple tool for testing memory based detection
Go
1
star
32

registry_hunter

Hunt the windows Registry automatically using VQL
Rebol
1
star
33

json

A fork of golang's encoding/json with options.
Go
1
star