Windows Memory Analysis
Data types typical to the WINAPI are documented by Microsoft in MS-DTYP .
Sample Memory Images
Getting started with memory analysis can be difficult without some known images to practice with.
- The 2005 Digital Forensic Research Workshop Memory Analysis Challenge published two Windows 2000 Service Pack 1 memory images with some malware installed.
- A number of RAM images can be downloaded from http://forensic.belkasoft.com/bfs/en/download.asp. Images include ones with Gmail emails, Skype activity, Paltalk chats, browser URLs etc.
- Memory analysis
- Tools:Memory Imaging
- Memory Limits for Windows Releases, Microsoft MSDN.
During the 1990s, it became a best practice to capture a memory image during incident response. At the time, the only way to analyze such memory images was using strings. Although this method could reveal interesting details about the memory image, there was no way to associate what data came from what program, let alone what user.
In the summer 2005 the Digital Forensic Research Workshop published a Memory Analysis Challenge. They distributed two memory images and asked researchers to answer a number of questions about a security incident. The challenge produced two seminal works. The first, by Chris Betz, introduced a tool called memparser. The second, by George Garner and Robert-Jan Mora produced KnTList.
At the Blackhat Federal conference in March 2007, AAron Walters and Nick Petroni released a suite called volatools. Although it only worked on Windows XP Service Pack 2 images, it was able to produce a number of useful data. volatools was updated and re-released as Volatility in August 2007, and is now maintained and distributed by Volatile Systems.
- Defeating Windows memory forensics, by Luka Milkovic, 29C3: 29th Chaos Communication Congress
- Tracking Stuxnet's Footprint Through Memory, Michael Ligh, Open Memory Forensics Workshop
- Extracting Windows Command Line Details from Physical Memory, Richard Stevens and Eoghan Casey, DFRWS
- Robust Signatures for Kernel Data Structures B. Dolan-Gavitt, et al., ACM Conference on Computer and Communications Security
- Win32dd : Challenges of Windows physical memory acquisition and exploitation, Matthieu Suiche, Netherlands Forensics Institute, Shakacon - June 2009
- Lest We Remember: Cold Boot Attacks on Encryption Keys (PDF), Usenix Security 2008 (Best student paper)
- Pushing the Limits of Windows: Physical Memory, Mark Russinovich, Technet Blogs, July 21, 2008
- The impact of Microsoft Windows pool allocation strategies on memory forensics, Andreas Schuster, DFRWS 2008 [slides]
- Finding Digital Evidence In Physical Memory, Mariusz Burdach, Black Hat Federal, 2008
- Forensic Memory Analysis: Files mapped in memory, Ruud van Baar, DFRWS 2008, [slides]
- Forensic Analysis of the Windows Registry in Memory, Brendan Dolan-Gavitt, DFRWS 2008 [slides]
- Beyond The CPU: Defeating Hardware Based RAM Acquisition (part I: AMD case), Joanna Rutkowska COSEINC Advanced Malware Labs
- Forensic Memory Analysis: From Stack and Code to Execution History, Ali Reza Arasteh and Mourad Debbabi, DFRWS 2007
- BodySnatcher: Towards Reliable Volatile Memory Acquisition by Software, Bradley Schatz, DFRWS 2007
- The VAD Tree: A Process-Eye View of Physical Memory, Brendan F Dolan-Gavitt, DFRWS 2007
- FireWire Memory Dump of a Windows XP Computer: A Forensic Approach, Antonio Martin, 2007
- Searching for Processes and Threads in Microsoft Windows Memory Dumps, Andreas Schuster, Deutsche Telekom AG, Germany, DFRWS 2006
- Using every part of the buffalo in Windows memory an, Jesse D. Kornblum, DFRWS 2006
- NTAPI Undocumented Functions
- MS-DTYP: Windows Data Types
- Catalog of key Windows kernel data structures
- Jesse Kornblum Memory Analysis discussion on Cyberspeak
- Fatkit: Links
- Kernel Debugging with WinDbg
- Attacking the Windows kernel, by Jonathan Lindsay, BlackHat 2007
- The VAD tree: A process-eye view of physical memory, by Brendan Dolan-Gavitt, DFRWS 2007
- Malware Analysis Tutorial 7: Exploring Kernel Data Structure, by Dr. Fu, December 14, 2011
- Windows Virtual Address Translation and the Pagefile, by Michael Cohen, October 31, 2014
- Advanced Windows Debugging, by Mario Hewardt, Daniel Pravat, November 8, 2007
- Advanced Windows Debugging: Memory Corruption Part II—Heaps, by Daniel Pravat and Mario Hewardt, November 9, 2007
- Finding Kernel Global Variables in Windows, by Brendan Dolan-Gavitt, April 16, 2008
- Finding the Kernel Debugger Block, by Michael Cohen, November 18, 2012
- Do we need the Kernel Debugging Block?, by Michael Cohen, February 21, 2014
- MoVP 1.1 Logon Sessions, Processes, and Images
- MoVP 1.2 Window Stations and Clipboard Malware
- MoVP 1.3 Desktops, Heaps, and Ransomware
- MoVP 2.1 Atoms (The New Mutex), Classes and DLL Injection
- MoVP 2.2 Malware In Your Windows
- MoVP 2.3 Event Logs and Service SIDs
- MoVP 3.1 Detecting Malware Hooks in the Windows GUI Subsystem
- HowTo: Scan for Internet Cache/History and URLs
- MoVP 3.2 Shellbags in Memory, SetRegTime, and TrueCrypt Volumes
- MoVP 3.3 Analyzing USER Handles and the Win32k.sys Gahti
- MoVP 3.4: Recovering tagCLIPDATA: What's In Your Clipboard?
- MoVP 4.1 Detecting Malware with GDI Timers and Callbacks
- MoVP 4.2 Taking Screenshots from Memory Dumps
- MoVP 4.4 Cache Rules Everything Around Me(mory)
- OMFW 2012: Malware In the Windows GUI Subsystem
- OMFW 2012: Reconstructing the MBR and MFT from Memory
- OMFW 2012: The Analysis of Process Token Privileges
- OMFW 2012: Mining the PFN Database for Malware Artifacts
- Getting Started with WinDBG - Part 1, by Brad Antoniewicz, December 17, 2013
- Getting Started with WinDBG - Part 2, by Brad Antoniewicz, December 24, 2013
- Getting Started with WinDBG - Part 3, by Brad Antoniewicz, December 31, 2013
- Developing WinDbg ExtEngCpp Extension in C++ – Introduction – Part 1, by Matt Suiche, January 12, 2014
- Developing WinDbg ExtEngCpp Extension in C++ – COM Interface – Part 2, by Matt Suiche, January 15, 2014
- Developing WinDbg ExtEngCpp Extension in C++ – Memory & Debugger Markup Language (DML) – Part 3, by Matt Suiche, January 20, 2014
- SwishDbgExt - Incident Response & Digital Forensics Debugging Extension