Volatility - An Open Source Memory Forensics Framework
The Volatility Framework is a completely open collection of tools, implemented in Python under the GNU General Public License, for the extraction of digital artifacts from volatile memory (RAM) samples. The extraction techniques are performed completely independent of the system being investigated but offer visibility into the runtime state of the system. The framework is intended to introduce people to the techniques and complexities associated with extracting digital artifacts from volatile memory samples and provide a platform for further work into this exciting area of research.
Volatility supports investigations of the following memory images:
- 32-bit Windows XP Service Pack 2 and 3
- 32-bit Windows 2003 Server Service Pack 0, 1, 2
- 32-bit Windows Vista Service Pack 0, 1, 2
- 32-bit Windows 2008 Server Service Pack 1, 2 (there is no SP0)
- 32-bit Windows 7 Service Pack 0, 1
- 32-bit Windows 8, 8.1, and 8.1 Update 1
- 32-bit Windows 10 (initial support)
- 64-bit Windows XP Service Pack 1 and 2 (there is no SP0)
- 64-bit Windows 2003 Server Service Pack 1 and 2 (there is no SP0)
- 64-bit Windows Vista Service Pack 0, 1, 2
- 64-bit Windows 2008 Server Service Pack 1 and 2 (there is no SP0)
- 64-bit Windows 2008 R2 Server Service Pack 0 and 1
- 64-bit Windows 7 Service Pack 0 and 1
- 64-bit Windows 8, 8.1, and 8.1 Update 1
- 64-bit Windows Server 2012 and 2012 R2
- 64-bit Windows 10 (including at least 10.0.14393)
- 64-bit Windows Server 2016 (including at least 10.0.14393.0)
- 32-bit Linux kernels 2.6.11 to 4.2.3
- 64-bit Linux kernels 2.6.11 to 4.2.3
- OpenSuSE, Ubuntu, Debian, CentOS, Fedora, Mandriva, etc
- Mac OSX:
- 32-bit 10.5.x Leopard (the only 64-bit 10.5 is Server, which isn't supported)
- 32-bit 10.6.x Snow Leopard
- 64-bit 10.6.x Snow Leopard
- 32-bit 10.7.x Lion
- 64-bit 10.7.x Lion
- 64-bit 10.8.x Mountain Lion (there is no 32-bit version)
- 64-bit 10.9.x Mavericks (there is no 32-bit version)
- 64-bit 10.10.x Yosemite (there is no 32-bit version)
- 64-bit 10.11.x El Capitan (there is no 32-bit version)
- 64-bit 10.12.x Sierra (there is no 32-bit version)
Note: Volatility does not provide memory sample acquisition capabilities.
Volatility supports a variety of sample file formats and the ability to convert between these formats:
- Raw linear sample (dd)
- Hibernation file (from Windows 7 and earlier)
- Crash dump file
- VirtualBox ELF64 core dump
- VMware saved state and snapshot files
- EWF format (E01)
- LiME format
- Mach-O file format
- QEMU virtual machine dumps
- HPAK (FDPro)
Here is a list of memory samples that you can use for testing purposes:
- Art of Memory Forensics Images (Assorted Windows, Linux, and Mac)
- Jackcr's forensic challenge
- GrrCon forensic challenge ISO (Windows XP x86)
- Malware Cookbook DVD (Black Energy, CoreFlood, Laqma, Prolaco, Sality, Silent Banker, Tigger, Zeus, etc)
- Malware - Cridex (Windows XP SP2 x86)
- Malware - R2D2 (pw: infected) [Windows XP SP2 x86]
- Windows 7 SP1 x64
- NIST (Windows XP SP2, 2003 SP0, and Vista Beta 2 (all x86))
- Moyix's Fuzzy Hidden Process Sample (Windows XP SP3 x86)
- Honeynet Banking Troubles Image (Windows XP SP2 x86)
- NPS 2009-M57 (~70 samples) [Various XP / Vista x86]
- Honeynet Compromised Server Challenge (Linux Debian 2.6.26-26 x86)
- A single, cohesive framework analyzes RAM dumps from 32- and 64-bit Windows, Linux, Mac, and android systems. Volatility's modular design allows it to easily support new operating systems and architectures as they are released. All your devices are targets...
- It is Open Source GPLv2, which means you can read it, learn from it, and extend it. Why use a tool that outputs results without giving you any indication where the values came from or how they were interpreted? Learn how your tools work, understand why and how to tweak and enhance them - help yourself become a smarter analyst. You can also immediately fix any issues you discover, instead of having to wait weeks or months for vendors to communicate, reproduce, and publish patches.
- It is written in Python, an established forensic and reverse engineering language with loads of libraries that can easily integrate into volatility. Most analysts are already familiar with Python and don't want to learn new languages. For example, windbg's scripting syntax which is often seen as cryptic and many times the capabilities just aren't there. Other memory analysis frameworks require you to use Visual Studio to compile C# DLLs and the rest don't expose a programming API at all.
- Runs on windows, Linux, or mac analysis systems (anywhere Python runs) - a refreshing break from other memory analysis tools that only run on windows and require dot NET installations and admin privileges just to open. If you're already accustomed to performing forensics on a particular host OS, by all means keep using it - and take volatility with you.
- Extensible and scriptable API gives you the power to go beyond and continue innovating. For example, you can use volatility to build a customized web interface or GUI, drive your malware sandbox, perform virtual machine introspection or just explore kernel memory in an automated fashion. Analysts can add new address spaces, plugins, data structures, and overlays to truly weld the framework to their needs. You can explore the Doxygen documentation for Volatility to get an idea of its internals.
- Unparalleled feature sets based on reverse engineering and specialized research. Volatility provides capabilities that Microsoft's own kernel debugger doesn't allow, such as carving command histories, console input/output buffers, USER objects (GUI memory), and network-related data structures. Just because it is not documented doesn't mean you can't analyze it!
- Comprehensive coverage of file formats - volatility can analyze raw dumps, crash dumps, hibernation files, VMware .vmem, VMware saved state and suspended files (.vmss/.vmsn), VirtualBox core dumps, LiME (Linux Memory Extractor), expert witness (EWF), and direct physical memory over Firewire. You can even convert back and forth between these formats. In the heat of your incident response moment, don't get caught looking like a fool when someone hands you a format your other tools can't parse.
- Fast and efficient algorithms let you analyze RAM dumps from large systems without unnecessary overhead or memory consumption. For example, volatility is able to list kernel modules from an 80 GB system in just a few seconds. There is always room for improvement, and timing differs per command, however other memory analysis frameworks can take several hours to do the same thing on much smaller memory dumps.
- Serious and powerful community of practitioners and researchers who work in the forensics, IR, and malware analysis fields. It brings together contributors from commercial companies, law enforcement, and academic institutions around the world. Don't just take our word for it - check out the Volatility Documentation Project - a collection of over 200 docs from 60+ different authors. Volatility is also being built on by a number of large organizations such as Google, National DoD Laboratories, DC3, and many Antivirus and security shops.
- Forensics/IR/malware focus - Volatility was designed by forensics, incident response, and malware experts to focus on the types of tasks these analysts typically form. As a result, there are things that are often very important to a forensics analysts that are not as important to a person debugging a kernel driver (unallocated storage, indirect artifacts, etc).
You might also like: