
iOS Forensics for Investigators
By :

Performing a forensic examination of digital evidence from a mobile device requires not only a full understanding of the data but also basic knowledge of how the device itself works and how that data was generated. This is particularly challenging on iOS devices due to the closed source nature of the platform, which makes it difficult to understand how exactly iOS interfaces with all this data and what's going on behind the scenes on the device.
Apple invests heavily in restricting the operating system and application software that can run on their hardware through several security features: applications running on Apple devices don't interact directly with the underlying hardware – they do so through a system interface. The iOS can be defined as an intermediary between the device's hardware components and the applications on the device.
Tip
Many publications provide information regarding iOS hardware. For a full list of iPhone components and devices, you can refer to the Apple Support page: https://support.apple.com/specs/iphone.
Since iOS 10, Apple File System (APFS) has replaced HFS+ as the default filesystem. APFS is a proprietary filesystem that has been designed with mobile devices in mind: it's optimized for SSD storage and supports strong encryption. On iOS devices, the filesystem is configured into two logical disk partitions – the system partition and the user partition:
/private/var
directory, contains all user-created data and provides most of the evidentiary information that's pertinent to investigators.One of the examples of how iOS manages communication between applications and hardware is sandboxing, which enables users to interact with an application without accessing the filesystem directly, ensuring that each app is contained within one or more specified containers that are automatically created when a new app is installed on the device. This organization makes things a lot easier for investigators as all the files related to a specific app are grouped in specific locations.
Each container has a specific role:
The following diagram shows the containers for each application:
Figure 1.1 – A representation of application containers
The data container contains several different folders:
Documents/
: This folder contains user-created files and is automatically included in iTunes backups and iCloud backups.Library/
: This folder is used by the application to store app-related data and is not created by the user. This folder is included in iTunes and iCloud backups.Temp/
: Contains application-related temporary files and is not included in backups.As you can see, all application files are perfectly organized into their respective data containers. However, you may be wondering where exactly these containers are stored on the device's filesystem. Each application on a device is identified through a globally unique identifier (GUID), also known as a BundleID
identifier. This identifier is uniquely generated when an application is first installed and can change if the app is updated or reinstalled.
Application bundle containers are stored at the following path on the iOS filesystem:
/private/var/containers/Bundle/Application/<app-GUID>/
Application data containers are stored at the following path:
/private/var/mobile/Containers/Data/Application/<app-GUID>/
Group containers are stored at the following path:
/private/var/mobile/Containers/Shared/AppGroup/<app-GUID>/
Tip
In this section, we've seen where applications store data on the iOS filesystem. But what about system artifacts? System-related data is stored all over the filesystem, so we won't find everything all in one place! We'll dive deep into system artifacts and where to find them in Chapter 4, Working with Common iOS Artifacts.
So far, we've learned how iOS organizes application data into containers and where these containers are stored on the filesystem. Now, let's discuss the types of files that commonly contain useful evidence within the iOS filesystem.
Other than user-generated content (such as documents, photos, videos, or text files), data stored on an iOS device usually consists of the following items:
This is what a property list looks like in XML format:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>UUID</key> <string>3bdd52c7-ee36-4689-8517-c5fed2c98s5</string> <key>ClientID</key> <string>3bdd52c7-ee36-4689-8517-c5fed2c98s5</string> <key>ClientEnabled</key> <false/> </dict> </plist>
In the following chapters, we will do a deep dive into the details to understand what the best practices are for parsing plists and querying SQLite databases, how to handle SQLite temporary files in a forensically sound way, and where to locate core iOS artifacts.
Change the font size
Change margin width
Change background colour