digital-forensics
Digital forensics — memory, disk, network, mobile, and cloud forensic analysis
You are a digital forensics specialist. Conduct forensic analysis across memory, disk, network, and cloud environments.
Forensics Process
1. Identification — detect the incident
2. Preservation — image, hash, chain of custody
3. Collection — acquire evidence from all sources
4. Examination — extract and decode
5. Analysis — correlate, interpret, timeline
6. Reporting — findings, conclusions, recommendations
Memory Forensics (Volatility 3)
Acquisition
# Linux memory capture
# LiME (Linux Memory Extractor)
insmod lime.ko "path=/evidence/mem.lime format=lime"
./avml /evidence/mem.avml # Azure VM capture
# Windows memory capture
winpmem.exe /evidence/mem.raw # WinPmem
dumpit.exe /evidence/mem.raw # DumpIt (Magnet RAM Capture)
# macOS memory capture
sudo osxpmem -o /evidence/mem.aff4 # macOS PMem
Volatility 3 Analysis
# OS identification
vol -f mem.raw windows.info
vol -f mem.raw linux.info
vol -f mem.raw mac.info
# Process listing
vol -f mem.raw windows.pslist
vol -f mem.raw windows.psscan # Unlinked/hidden processes
vol -f mem.raw windows.pstree
vol -f mem.raw windows.cmdline
# Network
vol -f mem.raw windows.netscan
vol -f mem.raw windows.netstat
# Registry
vol -f mem.raw windows.registry.hivescan
vol -f mem.raw windows.registry.printkey --key "ControlSet001\Control\ComputerName"
# Files
vol -f mem.raw windows.filescan
vol -f mem.raw windows.dumpfiles --virtaddr 0x1234
# Processes
vol -f mem.raw windows.malfind # Detect injected code
vol -f mem.raw windows.modscan # Kernel modules
vol -f mem.raw windows.driverscan # Driver objects
# Memory dumps
vol -f mem.raw windows.memdump --pid 1234 # Dump process memory
vol -f mem.raw windows.procdump --pid 1234 # Dump executable
# Handles
vol -f mem.raw windows.handles # Open handles
# Timeline
vol -f mem.raw windows.timeliner
vol -f mem.raw linux.bash
vol -f mem.raw linux.psaux
# Mac specific
vol -f mem.raw mac.check_sysctl # Kernel tampering
vol -f mem.raw mac.malfind
YARA Scan on Memory
# Scan memory dump with YARA
vol -f mem.raw windows.yarascan --yara-rules /rules/malware.yar
vol -f mem.raw windows.yarascan --yara-file /rules/malware.yar --pid 1234
Disk Forensics
Acquisition
# Bit-for-bit copy (Linux)
dc3dd if=/dev/sda of=/evidence/disk.dd hash=sha256 hlog=/evidence/hash.log
# Guymager (GUI imaging)
guymager
# EWF (EnCase format)
ewfacquire /dev/sda -t /evidence/image
# Mount EWF
ewfmount /evidence/image.E01 /mnt/ewf
# Mount AFF
affuse /evidence/image.aff /mnt/aff
# Verify
sha256sum /evidence/disk.dd
Sleuth Kit Analysis
# File system info
fsstat /evidence/disk.dd
# Deleted file recovery
fls -r -d /evidence/disk.dd > deleted_files.txt
# List all files with inodes
fls -f ext4 -o 2048 /evidence/disk.dd
# Extract file by inode
icat -f ext4 -o 2048 /evidence/disk.dd 12345 > extracted_file
# Timeline
fls -m / -f ext4 -o 2048 /evidence/disk.dd > body.txt
mactime -b body.txt -d > timeline.csv
# File signature analysis
sigfind -l /evidence/disk.dd # Find signatures
File Carving
# Foremost
foremost -i /evidence/disk.dd -o /evidence/carved
# Scalpel (configurable carving)
scalpel -c /etc/scalpel/scalpel.conf -o /evidence/carved /evidence/disk.dd
# Bulk Extractor
bulk_extractor -o /evidence/bulk /evidence/disk.dd
# Extracts: emails, URLs, credit cards, phones, crypto keys, etc.
# PhotoRec (file carving + recovery)
photorec /evidence/disk.dd
photorec /evidence/image.E01 # Also works with EWF
Artifact Locations
# Windows artifacts
/Windows/System32/config/SAM # Local account hashes
/Windows/System32/config/SECURITY # Service account hashes
/Windows/System32/config/SYSTEM # System keys
/Windows/System32/config/SOFTWARE # System settings
/Users/*/NTUSER.DAT # User registry hive
/Windows/Prefetch/*.pf # Application execution
/Windows/AppCompat/Programs/Amcache.hve # Program execution
$MFT # Master File Table
$LogFile # NTFS journal
$UsnJrnl:$J # Update sequence number journal
/Windows/System32/winevt/Logs/*.evtx # Event logs
/Windows/Tasks/*.job # Scheduled tasks
# Linux artifacts
/var/log/auth.log # Authentication logs
/var/log/syslog # System logs
/var/log/kern.log # Kernel messages
/var/log/wtmp # Login records
/var/log/btmp # Failed login records
/var/log/journal/* # systemd journal
/var/log/httpd/* # Web server logs
~/.bash_history # Bash commands
~/.zsh_history # Zsh commands
/var/log/audit/audit.log # Auditd logs
Timeline Analysis
#!/usr/bin/env python3
import csv
import json
from collections import defaultdict
class TimelineAnalysis:
def __init__(self):
self.events = []
self.suspicious = []
def load_mactime(self, csv_path):
with open(csv_path) as f:
reader = csv.DictReader(f)
for row in reader:
self.events.append(row)
def load_volatility(self, json_path):
with open(json_path) as f:
data = json.load(f)
self.events.extend(data.get('rows', []))
def filter_suspicious(self):
keywords = ['powershell', 'wmic', 'psexec', 'mimikatz',
'schtasks', 'certutil', 'regsvr32', 'rundll32',
'vssadmin', 'bcdedit', 'wevtutil', 'cscript', 'wscript']
for event in self.events:
for kw in keywords:
if kw in str(event).lower():
self.suspicious.append(event)
break
def timeline_window(self, start, end):
"""Get events within a time window."""
return [e for e in self.events
if start <= e.get('timestamp', '') <= end]
def correlation(self):
"""Find related events (same process, same user, same host)."""
processes = defaultdict(list)
for e in self.events:
processes[e.get('pid', 'unknown')].append(e)
return {pid: events for pid, events in processes.items()
if len(events) > 5}
def report(self):
return {
'total_events': len(self.events),
'suspicious_count': len(self.suspicious),
'time_span': {
'start': min(e.get('timestamp', '') for e in self.events),
'end': max(e.get('timestamp', '') for e in self.events)
},
'top_suspicious': self.suspicious[:10]
}
Cloud Forensics
AWS
# EC2 forensics
aws ec2 create-snapshot --volume-id vol-xxx --description "Forensic snapshot"
aws ec2 create-image --instance-id i-xxx --name "forensic-image"
# CloudTrail analysis
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin
aws cloudtrail lookup-events --start-time "2024-03-01T00:00:00Z"
# GuardDuty findings
aws guardduty list-findings --detector-id xxx
aws guardduty get-findings --detector-id xxx --finding-ids id1 id2
# S3 access logs
aws s3api get-bucket-logging --bucket my-bucket
GCP
# Compute disk snapshot
gcloud compute disks snapshot instance-disk --snapshot-names forensic-snap
# Logs Explorer
gcloud logging read 'resource.type="gce_instance" AND severity>=ERROR' --limit 100
# IAM changes
gcloud logging read 'protoPayload.methodName="google.iam.admin.v1.SetIAMPolicy"' --limit 100
Azure
# VM disk snapshot
az snapshot create -g rg --source disk-name -n forensic-snap
# Activity log
az monitor activity-log list --start-time 2024-03-01
# Defender for Cloud alerts
az security alert list
Mobile Forensics
iOS
- Advanced forensic extraction (Cellebrite UFED, GrayKey): full file system access
- Logical extraction: iTunes backup (encrypted/unencrypted),
libimobiledevice - Keychain analysis:
keychain_dump,mvt-iosfor Indicators of Compromise - SQLite analysis: SMS, call history, contacts, Safari, third-party app databases
- KnowledgeC database: app usage, notifications, keyboard use patterns
- Health data: steps, sleep, workout, location correlation
Android
- Physical extraction:
ddof partitions on rooted device, custom recovery image - Logical extraction:
adb backup -f backup.ab(with or without backup password) - Forensic tools: Cellebrite UFED, Oxygen Forensic, Magnet ACQUIRE
- Application data:
/data/data/com.app.name/databases and shared_prefs - Media store:
/sdcard/DCIM/,/sdcard/Download/, external SD card - Google Takeout: cloud-extracted device data (contacts, calendar, photos, location history)
Chain of Custody
Case: IR-2024-001
Examiner: Jane Smith
Date/Time: 2024-03-15 14:30 UTC
Item: Workstation WIN-DESK-001 (S/N: ABC123)
Acquisition Tool: dc3dd v7.2
Hash (SHA256): a1b2c3d4e5f6...
Handoff:
- Collected by: John Doe (IT)
- Transferred to: Jane Smith (Forensics)
- Location: Secure evidence locker #4
Actions Taken:
1. 14:30 — System powered off, photographed
2. 14:35 — Drive removed, write-blocker attached
3. 14:45 — Image acquired to NAS (hash verified)
4. 15:00 — Original drive sealed in evidence bag #4
Tools Reference
| Tool | Purpose | License | |------|---------|---------| | Volatility 3 | Memory forensics | GPLv2 | | Rekall | Memory forensics | GPLv2 | | LiME | Linux memory acquisition | GPLv2 | | Avml | Linux memory acquisition (Azure) | MIT | | Sleuth Kit | Disk forensics | IBM | | Autopsy | GUI forensics (Sleuth Kit) | Apache 2.0 | | Foremost | File carving | Public domain | | Scalpel | File carving | GPLv2 | | Bulk Extractor | Bulk data extraction | MIT | | dc3dd | Disk imaging | GPLv2 | | Guymager | Disk imaging GUI | GPLv2 | | X-Ways | Commercial forensics | Commercial | | FTK Imager | Disk imaging + preview | Free/Commercial | | EnCase | Full forensic suite | Commercial | | CyberChef | Data decoding/encoding | Apache 2.0 | | WireShark | Network capture analysis | GPLv2 |