18.2 Virtualization, Container & Microservices Forensics, Bluetooth and Electron Chat Applications

Key Takeaways

  • Suspending a VMware virtual machine writes its entire RAM to a .vmem file next to the .vmss suspend state, which yields a complete memory image without running any acquisition agent inside the guest.
  • VMware snapshots create delta .vmdk files while Hyper-V checkpoints create .avhdx differencing disks; both mean the current disk state is a chain of parents and children that must be collected in full to be mountable.
  • Container filesystems are ephemeral union mounts over read-only image layers, so docker diff shows what changed, docker commit or docker export preserves it, and killing the container destroys the writable layer permanently.
  • Electron desktop applications such as Slack, Discord, and Microsoft Teams are Chromium processes that store message and workspace data in LevelDB directories under the user's AppData path, recoverable with LevelDB parsers and by carving .log and .ldb files.
  • Bluetooth pairing records prove device proximity and association: Windows stores paired device keys and identifiers under SYSTEM\\CurrentControlSet\\Services\\BTHPORT\\Parameters\\Devices, and Linux under /var/lib/bluetooth/<adapter MAC>/<device MAC>/.
Last updated: September 2026

18.2 Virtualization, Container & Microservices Forensics, Bluetooth and Electron Chat Applications

Quick Answer: Blueprint Domain 4 lists virtualization forensics, forensic methodologies for containers and microservices, Bluetooth forensics, and Electron applications and chat application forensics among the investigative methodologies. The unifying theme is ephemerality: a container's writable layer, a suspended VM's memory file, and an Electron app's LevelDB cache all vanish or mutate quickly. The single highest-value trick in this section is that suspending a VMware virtual machine writes its full RAM to a .vmem file — a complete memory image obtained without touching the guest.


Virtualization Forensics

VMware File Types

ExtensionContentsForensic value
.vmdkVirtual disk (monolithic, split, or thin)The guest's disk image; mountable read-only with standard tools
.vmxPlain-text configurationHardware inventory, MAC addresses, attached devices, snapshot references, annotation field
.vmemGuest RAM, paged out to diskA full memory image — analyze directly with Volatility
.vmssSuspend stateAccompanies .vmem; written on suspend
.vmsnSnapshot state (includes memory when "snapshot the VM's memory" was selected)Point-in-time RAM plus disk state
.vmsdSnapshot metadata and relationshipsThe map of the snapshot chain
.nvramVirtual BIOS/UEFI stateBoot order and firmware settings
vmware.logHypervisor logPower on/off, snapshot operations, device connect/disconnect, guest crashes

[!IMPORTANT] Suspending a VM is a memory acquisition technique. Suspend writes the entire guest RAM to .vmem, so an examiner can obtain a memory image with no agent inside the guest, no acquisition tool footprint, and no anti-forensic interference from the guest OS. Copy the .vmem and analyze it with Volatility as an ordinary raw memory image. Note the caveat: suspension is an intrusive act on a running system — it is a deliberate, documented decision, not a side effect.

Hyper-V and Others

PlatformDiskMemory / stateConfiguration
Hyper-V.vhd, .vhdx, .avhdx (checkpoint differencing disk).vmrs (runtime state), legacy .bin/.vsv.vmcx (binary), .vmgs
VirtualBox.vdi (also .vmdk, .vhd).sav.vbox XML
QEMU/KVM.qcow2, rawvirsh dump / virsh save outputlibvirt XML
Proxmox/oVirtBacking storage volumesManaged snapshotsCluster configuration database

The Snapshot Chain Problem

Both VMware snapshots and Hyper-V checkpoints work by freezing the parent disk read-only and writing all subsequent changes to a child delta file. The live state is therefore the parent plus every child in order.

Collect the entire chain. A delta .vmdk or .avhdx copied alone is unusable — it contains only changed blocks and has no base. Conversely, a base disk copied alone reflects the state before the incident, which is why an examiner who grabs only the largest file often ends up with the wrong point in time. Preserve .vmsd and the configuration file so the relationships can be reconstructed.

Forensic advantages of virtualization: snapshots give genuine point-in-time evidence; cloning a VM produces a working copy while the original stays untouched; the malware analysis lab depends entirely on snapshot-and-revert.

Forensic disadvantages: thin-provisioned disks may never write deleted blocks to physical storage, so unallocated-space carving yields less; storage deduplication at the datastore level breaks the assumption that a logical block maps to one physical location; and a shared datastore means the physical medium holds other tenants' data, which constrains what may lawfully be imaged.


Container and Microservices Forensics

Containers are processes on the host kernel, isolated by namespaces and cgroups, running on a union filesystem: read-only image layers with a thin writable layer on top.

The Evidence Model

LayerPersistenceHow to collect
Image layersImmutable, reproducible from the registrydocker save, registry digest, docker history
Writable container layerDestroyed when the container is removeddocker diff <id>, then docker commit or docker export
Volumes / bind mountsPersist beyond the containerHost filesystem collection
Container logsHost-side, driver dependent/var/lib/docker/containers/<id>/<id>-json.log
Process memoryVolatileHost-level memory acquisition — the container's processes are in the host's memory image
Orchestrator recordsControl-plane databaseKubernetes audit log, kubectl describe, etcd

Live Container Triage Sequence

docker ps -a                                   # inventory including stopped containers
docker inspect <id>   > /evidence/inspect.json # config, mounts, network, env, start time
docker diff   <id>    > /evidence/diff.txt     # A=added C=changed D=deleted in writable layer
docker logs   <id>    > /evidence/stdout.log   # captured stdout/stderr
docker top    <id>    > /evidence/procs.txt    # processes with HOST pids
docker export <id>    > /evidence/fs.tar       # flattened filesystem, no history
docker commit <id> evidence/case123:t0         # preserves layers AND metadata

[!WARNING] docker kill or docker rm destroys the writable layer irreversibly. In a GitOps or autoscaling environment the orchestrator may do this on its own within minutes (see Section 1.4). The first response action is to cordon the node, suspend reconciliation, and pause rather than kill the container. docker pause uses the cgroup freezer to stop the processes while leaving memory intact.

Kubernetes specifics: the audit log on the API server records every kubectl exec, create, delete, and secret access with the authenticated identity — the equivalent of a control-plane command history and usually the most important single artifact. crictl performs the same inspection where the runtime is containerd rather than Docker. Node-level evidence lives at /var/log/pods/ and in the kubelet journal, and etcd holds cluster state and secrets.

Microservices complications: a single transaction traverses many services, so the timeline must be assembled from distributed tracing (trace and span IDs) and centralized logging rather than from one host; service-mesh sidecars (Envoy) log every inter-service call; and secrets injected as environment variables appear in docker inspect output — which is itself a finding when a secret was never meant to be there.


Electron Application and Chat Application Forensics

Electron packages a Chromium renderer and a Node.js runtime into a desktop application. Slack, Discord, Microsoft Teams (classic), Signal Desktop, WhatsApp Desktop, Notion, and many others are Electron apps, which means they leave browser-style artifacts on the desktop.

Where the Data Lives

Base path: %AppData%\<AppName>\ on Windows, ~/Library/Application Support/<AppName>/ on macOS, ~/.config/<AppName>/ on Linux.

Sub-pathContents
Local Storage\leveldb\LevelDB key-value store holding messages, workspace and channel metadata, and cached user objects — .ldb (SST) files, .log write-ahead files, MANIFEST-*, CURRENT
IndexedDB\Larger structured data, also LevelDB-backed
Cache\ and Code Cache\Chromium cache: downloaded images, avatars, and attachments
Session Storage\Per-session state
CookiesSQLite database; authentication tokens
logs\Application-specific diagnostic logs with timestamps
config.json / PreferencesAccount identifiers, workspace/server list, and in Signal Desktop the SQLCipher key

Recovery Technique

  1. Collect the entire application directory — a LevelDB store is only consistent as a set (.ldb + .log + MANIFEST + CURRENT).
  2. Parse with a LevelDB reader (plyvel, ccl_leveldb, Nirsoft/Magnet/Axiom LevelDB viewers). Never open the store with a writable client, which triggers compaction and destroys deleted-record remnants.
  3. Carve the .log write-ahead files: deleted and superseded records frequently persist there until compaction, which is the richest source of "deleted" chat content.
  4. strings over .ldb files recovers message fragments even where the structure is damaged.
  5. Correlate the Chromium Cache for attachments and avatars, and the cookies database for the authenticated account.

Signal Desktop is the instructive special case: messages live in an SQLCipher-encrypted db.sqlite, and the decryption key sits in plaintext in config.json in the same directory (protected on newer builds by OS-level encryption such as DPAPI). Collecting the database without the configuration file yields an undecryptable blob.


Bluetooth Forensics

Bluetooth evidence proves proximity and association — that two specific devices were close enough to pair and that a user accepted the pairing.

PlatformArtifact location
WindowsSYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Devices\<MAC> — paired device MAC, name, and link-key material; plus Microsoft-Windows-Bluetooth-* operational logs
Linux/var/lib/bluetooth/<adapter MAC>/<device MAC>/info — device class, name, link key, and first/last-seen data
macOS/Library/Preferences/com.apple.Bluetooth.plist — paired devices with names, addresses, and last-connection timestamps
Android/data/misc/bluedroid/bt_config.conf — paired devices, link keys, and timestamps
iOScom.apple.MobileBluetooth.*.plist in the backup or full file system extraction

What it establishes: the device address (BD_ADDR) identifies a specific physical device; the friendly name often embeds the owner's name ("Sarah's AirPods"); pairing timestamps place the two devices in physical proximity at a specific moment. In vehicle infotainment forensics this is decisive — a head unit retains paired phone identities, contact lists, and call logs long after the phone is gone.

Attack-side terminology the exam expects: bluejacking (unsolicited message push), bluesnarfing (unauthorized data theft from a paired or vulnerable device), bluebugging (command execution over the device's control channel), and BlueBorne-class remote code execution in Bluetooth stacks. Address randomization in Bluetooth Low Energy (resolvable private addresses) complicates tracking, but a bonded device stores the identity resolving key, so paired-device records still resolve to a stable identity.

Loading diagram...
Ephemeral Evidence: What Dies First in Virtual, Container, and Electron Environments
Test Your Knowledge

An examiner must obtain a memory image from a running VMware virtual machine whose guest operating system is suspected of hosting a kernel-mode rootkit that tampers with acquisition tools. What approach avoids the rootkit entirely?

A
B
C
D
Test Your Knowledge

A Kubernetes pod is confirmed compromised. The incident commander wants to kill the pod immediately to stop the attacker. What is the correct first action, and why?

A
B
C
D
Test Your Knowledge

Investigating a harassment case, an examiner images a workstation and finds the Slack desktop application directory. The suspect claims all relevant messages were deleted from the workspace. Which artifact most likely still contains the deleted message content, and what handling error would destroy it?

A
B
C
D