Mac os x
Apple Inc.'s Macintosh OS X (pronounced "OS Ten") is the operating system distributed with Apple computers. It includes heavily used several programs by default, including Apple Mail, a web browser called Safari, and an Apple Address Book, and iCal.
EFI boot
The firmware is responsible for initializing the hardware and performing a POST (Power-On Self Test).
The default boot volume is stored in NVRAM and can be configured through the "Startup Disk" preference pane or the nvram command line utility. E.g. to print all of the firmware variables.
nvram -p
Additional boot arguments can be provided via the "boot-args" value 2.
Mac OS X extends EFI with a read-only HFS+ driver. According to 3 HFS+ volume header fields are used to point to a "blessed file" to be loaded as an EFI application. Though it is not clear which header field the source is referring to but likely related to the "bless" utility
The firmware starts the Mac OS X boot loader (boot.efi). The bootloader displays a dark grey Apple logo on the screen and loads the Darwin kernel from disk, as well as the essential driver extensions.
The bootloader can be eithe a MZ-PE/COFF or EFI fat binary type executables and is commonly stored in:
/com.apple.recovery.boot/boot.efi
/System/Library/CoreServices/boot.efi
/usr/standalone/i386/boot.efi
The behavior of the bootloader can be configured in the com.apple.Boot.plist which can be found in:
/Library/Preferences/SystemConfiguration/
Disk image types
Mac OS X has support for various disk image types built-in, some of which are:
- read-write disk image (.dmg), which can be stored in Raw Image Format or Universal Disk Image Format (udif)
- Sparse disk image (.spareimage)
- Sparse bundle disk image (.sparsebundle)
Burn Folder
Mac OS X Burn Folder:
$NAME.fpbf
This folder normally contains alias files (similar to LNK files under Windows). Which should have the following signature.
00000000 62 6f 6f 6b 00 00 00 00 6d 61 72 6b 00 00 00 00 |book....mark....|
These alias files contain additional date and time values.
Also check the following files for references to deleted .fpbf paths:
/Users/$USERNAME/Library/Preferences/com.apple.finder.plist
/Users/$USERNAME/Library/Preferences/com.apple.sidebarlists.plist
Actual burning of optical media is logged in:
/var/log/system.log
/Users/$USERNAME/Library/Logs/DiscRecording.log
/private/var/.logs_exporter/cache/Users/$USERNAME/Library/Logs/DiscRecording.log
Launch Agents
System-wide:
/Library/LaunchAgents
/System/Library/LaunchAgents
Per user:
/Users/$USERNAME/Library/LaunchAgents
These directories contain Property list (plist) files.
Launch Daemons
System-wide:
/Library/LaunchDaemons
/System/Library/LaunchDaemons
These directories contain Property list (plist) files.
Startup Items
/Library/StartupItems/
/System/Library/StartupItems/
Crash Reporter
/Library/Application Support/CrashReporter
Contains text files named .crash, .diag, .spin
Diagnostic Reports
/Library/Logs/DiagnosticReports
Internet Plug-Ins
System-wide:
/Library/Internet Plug-Ins
Per user:
/Users/$USERNAME/Library/Internet Plug-Ins
Quarantine event database
See 6
Snow Leopard and earlier
/Users/$USER/Library/Preferences/com.apple.LaunchServices.QuarantineEvents
SELECT datetime(LSQuarantineTimeStamp + 978307200, "unixepoch") as LSQuarantineTimeStamp, LSQuarantineAgentName, LSQuarantineOriginURLString, LSQuarantineDataURLString from LSQuarantineEvent;
Lion and later
/Users/$USER/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2
sleepimage
This file is similar to the hibernation file on Windows.
/private/var/vm/sleepimage
Also see: 7
Last shutdown logs
/private/var/log/com.apple.launchd/launchd-shutdown.system.log
/private/var/log/com.apple.launchd/launchd-shutdown.system.log.1
Package Files (.PKG)
Package Files (.PKG) are XAR archives that contain a cpio archive and metadata 9.
Encodings / Codepages
Mac OS X typically uses UTF-16 big-endian to store Unicode strings, it also defines several codepages 10 that can be used to store ASCII strings.
Note that some of these codepages can differ for different versions of Mac OS.
Codepage | Identifier | Description |
---|---|---|
0 | MacRoman | Encoding used for English and several other Western languages, also see: Wikipedia: Mac OS Roman,Unicode.org: ROMAN.TXT (sometimes referred to as Microsoft codepage 10000 though it is unclear if this is the pre Mac OS 8.5 MacRoman variant) |
1 | MacJapanese | also see: Unicode.org: JAPANESE.TXT (sometimes referred to as Mac Shift Jis or Microsoft codepage 10001) |
2 | MacChineseTrad | also see: Unicode.org: CHINTRAD.TXT (sometimes referred to as Mac Big5 or Microsoft codepage 10002) |
3 | MacKorean | also see: Unicode.org: KOREAN.TXT (sometimes referred to as Mac Hangul or Microsoft codepage 10003) |
4 | MacArabic | Encoding used for Arabic texts, also see: Wikipedia: MacArabic encoding, Unicode.org: ARABIC.TXT (sometimes referred to as Microsoft codepage 10004). Note that certain Unicode characters can be translated into multiple codepage characters such as U+0020 can be represented as 0x20 or 0xa0. |
5 | MacHebrew | also see: Unicode.org: HEBREW.TXT (sometimes referred to as Microsoft codepage 10005) |
6 | MacGreek | Encoding used for Greek scripts, Wikipedia: MacGreek encoding, Unicode.org: GREEK.TXT (sometimes referred to as Microsoft codepage 10006) |
7 | MacCyrillic | Encoding used for Cyrillic scripts, also see: Wikipedia: Mac OS Cyrillic encoding, Unicode.org: CYRILLIC.TXT. Note that MacCyrillic supersedes the MacCyrillic encoding prior to Mac OS 9.0 (sometimes referred to as MacCyrillicCurrSignStdVariant, MacRussian or Microsoft codepage 10007) and MacUkrainian, Unicode.org: UKRAINE.TXT (sometimes referred to as MacCyrillicCurrSignUkrVariant or Microsoft codepage 10017). |
9 | MacDevanagari | also see: Unicode.org: DEVANAGA.TXT |
10 | MacGurmukhi | also see: Unicode.org: GURMUKHI.TXT |
11 | MacGujarati | also see: Unicode.org: GUJARATI.TXT |
12 | MacOriya | |
13 | MacBengali | |
14 | MacTamil | |
15 | MacTelugu | |
16 | MacKannada | |
17 | MacMalayalam | |
18 | MacSinhalese | |
19 | MacBurmese | |
20 | MacKhmer | |
21 | MacThai | also see: Wikipedia: ISO/IEC 8859-11 - Mac OS Thai, Unicode.org: THAI.TXT (sometimes referred to as Microsoft codepage 10021) |
22 | MacLaotian | |
23 | MacGeorgian | |
24 | MacArmenian | |
25 | MacChineseSimp | also see: Unicode.org: CHINSIMP.TXT (sometimes referred to as Mac GB2312 or Microsoft codepage 10008) |
26 | MacTibetan | |
27 | MacMongolian | |
28 | MacEthiopic | |
29 | MacCentralEurRoman | Encoding used for languages that use the Latin script, such as Central European and Southeastern European languages, also see: Wikipedia: Mac OS Central European encoding, Unicode.org: CENTEURO.TXT (sometimes referred to as Mac East Europe or Microsoft codepage 10029) |
30 | MacVietnamese | |
31 | MacExtArabic | |
33 | MacSymbol | also see: Unicode.org: SYMBOL.TXT |
34 | MacDingbats | also see: Wikipedia: Zapf Dingbats, Unicode.org: DINGBATS.TXT |
35 | MacTurkish | also see: Wikipedia: Mac OS Turkish encoding, Unicode.org: TURKISH.TXT (sometimes referred to as Microsoft codepage 10081) |
36 | MacCroatian | also see: Wikipedia: Mac OS Croatian encoding,Unicode.org: CROATIAN.TXT (sometimes referred to as Microsoft codepage 10082) |
37 | MacIcelandic | also see: Wikipedia: Mac OS Icelandic encoding, Unicode.org: ICELAND.TXT (sometimes referred to as Microsoft codepage 10079) |
38 | MacRomanian | also see: Wikipedia: Mac OS Romanian encoding,Unicode.org: ROMANIAN.TXT (sometimes referred to as Microsoft codepage 10010) |
39 | MacCeltic | also see: Unicode.org: CELTIC.TXT |
40 | MacGaelic | also see: Unicode.org: GAELIC.TXT |
140 | MacFarsi | also see: Wikipedia: MacFarsi encoding, Unicode.org: FARSI.TXT |
152 | MacUkrainian | see: MacCyrillic |
236 | MacInuit | also see: Unicode.org: INUIT.TXT |
252 | MacVT100 | |
255 | MacHFS | |
2564 | MacRomanLatin1 |
Also see
- MacOS Process Monitoring
- Acquiring a MacOS System with Target Disk Mode
- Converting Binary Plists
- FileVault Disk Encryption
- File Vault
Formats
- Apple File System (apfs)
- Apple Partition Map (apm)
- Basic Security Module (BSM) file format
- DMG
- Hierarchical File System Plus (HFS+) format
- Property list (plist)
External Links
- Wikipedia entry on OS X
- Inside Macintosh, by Apple Computer, Inc., 1993
- Command Line ALF on Mac OS X
- mac-security-tips
- Hidden backdoor API to root privileges in Apple OS X, by Emil Kvarnhammar, April 9, 2015
- Max OS X Internals book (1st ed) by Jonathan Levin
- The Boot Loader, by Apple
EFI
- The Intel Mac boot process, by the rEFIt project - Carving up EFI fat binaries, by snare, February 24, 2012
iCloud
Background and login items
- Apple's BookmarkData - exposed!, by Michael Lynn, October 24, 2015
- Block Blocking Login Items - parsing apple's login item files to detect persistence, by Objective See, July 23, 2018
- Mac Alias Format, by mac-alias project
- Mac Bookmark Format, by mac-alias project
ColorSync
- Technical Note TN2035 - ColorSync on Mac OS X
- Internet Archive: Managing Color With ColorSync
- ICC.1:2004-10 - Image technology colour management - Architecture, profile format, and data structure, by International Color Consortium (ICC)
- ICC Profile Format Specification, by International Color Consortium (ICC), November 20, 1995
- ICC profiles
- ICC_Profile Tags
- Adobe XMP Developer Center
Device Management Profile
Finder Alias and Bookmark
- Apple's BookmarkData - exposed!, by Michael Lynn, October 24, 2015
- Bookmarks, a type of Alias: their access and use
- Explainer: Links, Aliases and Bookmarks
Quarantine event database
NSKeyedArchiver
- NSKeyedArchiver - An encoder that stores an object’s data to an archive referenced by keys
- NSKeyedArchiver files – what are they, and how can I use them?, by Alex Caithness, April 4, 2012
- Manual Analysis of ‘NSKeyedArchiver’ Formatted Plist Files - A Review of the NEW OS X 10.11 "Recent Items", January 01, 2016
- How NSCoding and NSKeyedArchiver/Unarchiver Work Together to Encode/Decode Object, by Mark van Wijnen, August 16, 2022
Unified logging
- New macOS Sierra (10.12) Forensic Artifacts – Introducing Unified Logging, by Sarah Edwards, November 13, 2016
- Reviewing macOS Unified Logs, by Alexander Holcomb, August 31, 2022
Yet Another Assembler (YAA)
- YAA: An Obscure MacOS Compressed File Format, by nightwatchcyber, June 14, 2020