Part I: Basic Concepts
Chapter 1: The Spirit of Forensic Discovery
1.1 Introduction
1.2 Unusual Activity Stands Out
1.3 The Order of Volatility (OOV)
1.4 Layers and Illusions
1.5 The Trustworthiness of Information
1.6 The Fossilization of Deleted Information
1.7 Archaeology vs. Geology
Chapter 2: Time Machines
2.1 Introduction
2.2 The First Signs of Trouble
2.3 What's Up, MAC? An Introduction to MACtimes
2.4 Limitations of MACtimes
2.5 Argus: Shedding Additional Light on the Situation
2.6 Panning for Gold: Looking for Time in Unusual Places.
2.7 DNS and Time
2.8 Journaling File Systems and MACtimes
2.9 The Foibles of Time
2.10 Conclusion
Part II: Exploring System Abstractions
Chapter 3: File System Basics
3.1 Introduction
3.2 An Alphabet Soup of File Systems
3.3 UNIX File Organization
3.4 UNIX File Names
3.5 UNIX Pathnames
3.6 UNIX File Types
Regular Files
Directories
Symbolic Links
IPC Endpoints
Device Files
3.7 A First Look Under the Hood: File System Internals
3.8 UNIX File System Layout
3.9 I've Got You Under My Skin: Delving into the File System
3.10 The Twilight Zone, or Dangers Below the File System
Interface
3.11 Conclusion
Chapter 4: File System Analysis
4.1 Introduction
4.2 First Contact
4.3 Preparing the Victim's File System for Analysis
4.4 Capturing the Victim's File System Information
4.5 Sending a Disk Image Across the Network
4.6 Mounting Disk Images on an Analysis Machine
4.7 Existing File MACtimes
4.8 Detailed Analysis of Existing Files
4.9 Wrapping Up the Existing File Analysis
4.10 Intermezzo: What Happens When a File Is Deleted?
Parent Directory Entry
Parent Directory Attributes
Inode Blocks
Data Blocks
4.11 Deleted File MACtimes
4.12 Detailed Analysis of Deleted Files
4.13 Exposing Out-of-Place Files by Their Inode Number
4.14 Tracing a Deleted File Back to Its Original Location
4.15 Tracing a Deleted File Back by Its Inode Number
4.16 Another Lost Son Comes Back Home
4.17 Loss of Innocence
4.18 Conclusion
Chapter 5: Systems and Subversion
5.1 Introduction
5.2 The Standard Computer System Architecture
5.3 The UNIX System Life Cycle, from Start-up to Shutdown
5.4 Case Study: System Start-up Complexity
5.5 Kernel Configuration Mechanisms
5.6 Protecting Forensic Information with Kernel
Security Levels
5.7 Typical Process and System Status Tools
5.8 How Process and System Status Tools Work
5.9 Limitations of Process and System Status Tools
5.10 Subversion with Rootkit Software
5.11 Command-Level Subversion
5.12 Command-Level Evasion and Detection
5.13 Library-Level Subversion
5.14 Kernel-Level Subversion
5.15 Kernel Rootkit Installation
5.16 Kernel Rootkit Operation
5.17 Kernel Rootkit Detection and Evasion
5.18 Conclusion
Chapter 6: Malware Analysis Basics
6.1 Introduction
6.2 The Dangers of Dynamic Program Analysis
6.3 Program Confinement with Hard Virtual Machines
6.4 Program Confinement with Soft Virtual Machines
6.5 The Dangers of Confinement with Soft Virtual Machines
6.6 Program Confinement with Jails and chroot()
6.7 Dynamic Analysis with System-Call Monitors
6.8 Program Confinement with System-Call Censors
6.9 Program Confinement with System-Call Spoofing
6.10 The Dangers of Confinement with System Calls
6.11 Dynamic Analysis with Library-Call Monitors
6.12 Program Confinement with Library Calls
6.13 The Dangers of Confinement with Library Calls
6.14 Dynamic Analysis at the Machine-Instruction Level
6.15 Static Analysis and Reverse Engineering
6.16 Small Programs Can Have Many Problems
6.17 Malware Analysis Countermeasures
6.18 Conclusion
Part III: Beyond the Abstractions
Chapter 7: The Persistence of Deleted File Information
7.1 Introduction
7.2 Examples of Deleted Information Persistence
7.3 Measuring the Persistence of Deleted File Contents
7.4 Measuring the Persistence of Deleted File MACtimes
7.5 The Brute-Force Persistence of Deleted File MACtimes
7.6 The Long-Term Persistence of Deleted File MACtimes
7.7 The Impact of User Activity on Deleted File MACtimes
7.8 The Trustworthiness of Deleted File Information
7.9 Why Deleted File Information Can Survive Intact
7.10 Conclusion
Chapter, 8: Beyond Processes
8.1 Introduction
8.2 The Basics of Virtual Memory
8.3 The Basics of Memory Pages
8.4 Files and Memory Pages
8.5 Anonymous Memory Pages
8.6 Capturing Memory
8.7 The savecore Command
Memory Device Files: / dev / mem and / dev / kmem
Swap Space
Other Memory Locations
8.8 Static Analysis: Recognizing Memory from Files
8.9 Recovering Encrypted File Contents Without Keys
Creating an Encrypted File
Recovering the Encrypted File from Main Memory
8.10 File System Blocks vs. Memory Page Technique
8.11 Recognizing Files in Memory
8.12 Dynamic Analysis: The Persistence of Data in Memory
8.13 File Persistence in Memory
8.14 The Persistence of Nonfile, or Anonymous, Data
8.15 Swap Persistence
8.16 The Persistence of Memory Through the Boot Process
8.17 The Trustworthiness and Tenacity of Memory Data
8.18 Conclusion
Appendix A
The Coroner's Toolkit and Related Software
A.1 Introduction
A.2 Data Gathering with grave-robber
A.3 Time Analysis with mact ime
A.4 File Reconstruction with lazarus
A.5 Low-Level File System Utilities
A.6 Low-Level Memory Utilities
Appendix B
Data Gathering and the Order of Volatility
B.1 Introduction
B.2 The Basics of Volatility
B.3 The State of the Art
B.4 How to Freeze a Computer
Before You Start
Actually Collecting Data
B.5 Conclusion
References 199
Index 207