System

System Information

Overview

System information collection gathers comprehensive metadata about the macOS system under investigation. This data serves three critical forensic purposes:

  1. Evidence identification -- Precisely identifies the device through serial number, model, hostname, and volume UUID.
  2. Context for analysis -- OS version, architecture, and security state determine which artifact locations, file formats, and parsing strategies apply.
  3. Chain of custody -- Documents the exact system state at collection time, who performed the collection, and with what privileges.

macfor collects system information automatically at the start of every collection run. The data is embedded in the evidence container manifest and is available to all plugins for version-aware behaviour.

Forensic Significance

CategoryForensic Value
OS version and buildDetermines artifact paths, database schemas, and format versions
Hardware model and serialUniquely identifies the physical device for evidence tracking
Security state (SIP, FileVault, Gatekeeper)Indicates system hardening level and potential attacker capabilities
Boot time and uptimeAnchors timeline -- identifies when the system was last restarted
TimezoneCritical for correlating timestamps from different artifact sources
Network identityHostname variants help match the device to network logs
Collection environmentDocuments who ran the tool, with what privileges, and when

File Locations

System information is not stored in a single file. It is collected from multiple sources:

InformationSourceMethod
OS version, build/System/Library/CoreServices/SystemVersion.plistPlist parsing
Hardware modelsysctl hw.modelSysctl query
CPU typesysctl machdep.cpu.brand_stringSysctl query
CPU coressysctl hw.physicalcpuSysctl query
Memorysysctl hw.memsizeSysctl query
Kernel versionsysctl kern.osreleaseSysctl query
Serial numberioreg -l (IOPlatformSerialNumber)IOKit registry
SIP statuscsrutil statusCommand execution
FileVault statusfdesetup statusCommand execution
Gatekeeper statusspctl --statusCommand execution
Secure boot levelbputil -d (Apple Silicon only)Command execution
Hostnameos.Hostname()Go runtime
Local hostnamescutil --get LocalHostNameCommand execution
Computer namescutil --get ComputerNameCommand execution
Timezone/etc/localtime, time.LocalSystem library
Boot timesysctl kern.boottimeSysctl query
Boot volume infodiskutil info -plist /Command execution + plist

Database Schema / File Format

SystemVersion.plist

Located at /System/Library/CoreServices/SystemVersion.plist, this binary plist contains:

KeyExample ValueDescription
ProductVersion"14.2.1"macOS version (major.minor.patch)
ProductBuildVersion"23C71"Build identifier
ProductName"macOS"Product name

Boot Time (sysctl)

The kern.boottime sysctl returns a timeval struct as text:

{ sec = 1706428530, usec = 0 }

The sec value is a Unix epoch timestamp. macfor parses this to determine the last boot time.

Disk Utility Output

diskutil info -plist / returns a binary plist with:

KeyDescription
VolumeNameBoot volume name (e.g., "Macintosh HD")
VolumeUUIDVolume UUID
FilesystemTypeFilesystem type (e.g., "apfs")

Key Fields for Analysis

Operating System

FieldDescriptionExample
os_nameAlways "macOS""macOS"
os_versionMajor.minor.patch version"14.2.1"
os_buildBuild identifier"23C71"
os_codenameMarketing name (derived)"Sonoma"
kernel_versionDarwin kernel version"23.2.0"

Hardware

FieldDescriptionExample
hardware_modelModel identifier"Mac14,2"
hardware_model_nameHuman-readable model name"MacBook Air (M2, 2022)"
serial_numberSystem serial number (may require root)"C02XX123XXXX"
architectureCPU architecture"arm64" or "amd64"
cpu_typeCPU identifier string"Apple M2"
cpu_coresPhysical core count8
memory_gbTotal RAM in GB16

Security State

FieldDescriptionExample
sip_enabledSystem Integrity Protection statustrue
filevault_enabledFileVault full-disk encryptiontrue
gatekeeper_enabledGatekeeper application verificationtrue
secure_boot_levelSecure boot setting (Apple Silicon only)"full"
boot_volume_encryptedBoot volume encryption statetrue

Network Identity

FieldDescriptionExample
hostnamePrimary hostname"investigators-mac.local"
local_hostnameBonjour/mDNS name"investigators-mac"
computer_nameSharing display name"Investigator's Mac"

Temporal Context

FieldDescriptionExample
timezoneSystem timezone (IANA name)"America/Los_Angeles"
timezone_offsetUTC offset"-08:00"
boot_timeLast boot timestamp (UTC)"2026-01-28T09:15:30Z"
uptime_secondsSeconds since last boot86400
collection_timeWhen macfor ran (UTC)"2026-01-29T14:30:00Z"

Collection Environment

FieldDescriptionExample
collection_userUser running macfor"investigator"
collection_uidUID of collection user501
is_rootWhether running as roottrue
source_typeCollection source type"live"

Timestamps

System information timestamps use standard formats:

SourceFormatNotes
Boot timeUnix epoch (from sysctl)Parsed from kern.boottime timeval struct
Collection timeUTC (from Go time.Now().UTC())Always in UTC

Boot time and collection time are stored as RFC 3339 timestamps in the evidence manifest.

Analysis Notes

Security State Interpretation

The security state fields provide immediate insight into the system's hardening level:

StateForensic Interpretation
SIP disabledAttacker may have had access to protected system locations; rootkit possible
FileVault offDisk contents accessible without user password from another boot device
Gatekeeper offUnsigned or unnotarised applications could run without warnings
Secure Boot reduced/offBoot chain integrity not guaranteed; bootkits possible

A system with all security features disabled warrants heightened scrutiny. On managed enterprise systems, these should typically all be enabled.

Timeline Anchoring

The boot time and timezone are critical for timeline analysis:

  • Boot time establishes when the current session began. Commands and file modifications before this time occurred in a previous session.
  • Timezone is essential for converting local time references in other artifacts to UTC. Misinterpreting timezone can shift entire timelines by hours.
  • Uptime combined with boot time validates temporal consistency.

Device Identification

For chain of custody and evidence attribution:

  • Serial number uniquely identifies the physical hardware.
  • Hardware model + model name identifies the device type.
  • Hostname variants help correlate the device with network logs, DHCP records, and Active Directory entries.
  • Boot volume UUID ties filesystem artifacts to this specific installation.

Privilege Assessment

The collection environment fields indicate what data macfor could access:

Collection ContextAccessible Data
Root (is_root: true)All user directories, system keychains, protected artifacts
Standard userOnly the collection user's own files

If is_root is false, the evidence container may be incomplete for multi-user systems.

Hardware Model Database

macfor includes a comprehensive mapping of model identifiers (e.g., Mac14,2) to human-readable names (e.g., "MacBook Air (M2, 2022)"). This covers all Mac models from 2012 onwards. Unknown model identifiers are returned as-is for future-proofing.

Version Differences

macOS Codename Mapping

VersionCodenameRelease YearNotable Forensic Changes
10.12Sierra2016Minimum supported version
10.13High Sierra2017APFS default filesystem
10.14Mojave2018Full Disk Access (FDA) requirement introduced
10.15Catalina2019APFS volume split (read-only system + data volume)
11Big Sur2020Apple Silicon support, Signed System Volume
12Monterey2021Passkeys introduced
13Ventura2022Rapid Security Response updates
14Sonoma2023Various Safari and system changes
15Sequoia2024Apple Intelligence, Passwords app

Architecture Differences

ArchitecturePlatformsNotes
arm64Apple Silicon (M1, M2, M3, M4)Secure Enclave, always-on SIP by default
amd64Intel MacsT2 chip on later models provides some Secure Enclave features

Sysctl Key Reference

KeyDescriptionType
hw.modelHardware model identifierstring
hw.physicalcpuPhysical CPU core countint
hw.memsizeTotal memory in bytesint64
machdep.cpu.brand_stringCPU brand stringstring
kern.osreleaseKernel versionstring
kern.boottimeLast boot timestamp (timeval)struct
kern.hostnameHostnamestring

Tool Support

ToolSupport
macforComprehensive system info collection embedded in evidence manifest
system_profiler (macOS built-in)Detailed hardware and software reports
sw_vers (macOS built-in)OS version and build information
sysctl (macOS built-in)Kernel and hardware parameters
diskutil (macOS built-in)Volume and disk information
csrutil (macOS built-in)SIP status check
fdesetup (macOS built-in)FileVault status

References

Previous
System Overview