Lab Technical Report LAB-TR-0022

Most Ordinary Phones Trip a Naive Clock-Anomaly Check: Base Rates of Clock Anomalies in Unselected Mobile Extractions

Lab Technical Report, preprint, not peer reviewed

Abstract

Checks for clock manipulation on phones compare clocks or look for impossible times, and are tested on devices whose clock was changed on purpose. How often ordinary devices show the same signs, which sets the false-alarm rate, has not been reported. We pre-registered fifteen checks computed from the data, on file times in full file system extractions, the wall-clock and continuous-time pairs of the iOS unified log, and the clock state in Android bug reports, and applied them read-only to every readable extraction of a research corpus: 46 devices with full file systems, 31 iPhones with time-sync records and 7 Android bug reports. Simple checks fired on almost every device: a file time within a day of the Unix epoch on 41 of 46, a file dated over 48 h after acquisition on 16 of 46, a wall-clock step above 60 s within a boot on 23 of 31, and some file-system check on 45 of 46. Most file-system alarms are constant default times and future-dated cache files; most boot-order alarms are iPhones booting on an unset clock. A check against the build time never fired. At these base rates, a simple check’s alarm barely changes the odds of manipulation.

CCS Concepts • Applied computing → Evidence collection, storage and analysis; • Applied computing → System forensics.

Keywords mobile forensics, clock manipulation, timestamp reliability, base rate, false alarm, positive predictive value, iOS unified log, Android bug report, file system times

ACM Reference FormatDaniel Addai, Selorm Adjabeng, Kingsley Albert Egyir, and Sanders Larweh Tetteh. 2026. Most Ordinary Phones Trip a Naive Clock-Anomaly Check: Base Rates of Clock Anomalies in Unselected Mobile Extractions. Lab Technical Report LAB-TR-0022, version 1.0. SectraTEK Lab, Prudential Associates. Preprint, not peer reviewed. https://lab.sectratek.com/research/reports/lab-tr-0022/

1 Introduction

A phone keeps several clocks. The wall clock that dates most records can be set by the network, by the user or by an application; a continuous counter measures time since boot; and file times, logs and databases each copy one of these clocks at the moment they write. When a user moves the wall clock, some records follow it and others do not, and a check that compares them can expose the change. Such checks have been built and tested on phones whose clock was changed on purpose [6], [8], [10].

A motivating example. Consider the simplest check an examiner might run on a full file system extraction: raise an alarm if any file in the user data area is dated more than 48 h after the extraction ended. Future dates cannot come from a correct clock, so the check sounds safe. On the research devices examined here, it raised an alarm on 16 of 46 devices. We have no independent record of what happened to these clocks, but most of the future-dated files sat in application caches (Section 5.2). An examiner who saw this alarm on a single phone, without knowing that one ordinary phone in three raises it, would overrate it.

The problem. The value of an alarm depends on how often the same alarm occurs on devices whose clocks were not manipulated: the base rate. Studies of manipulation measure whether a check fires when the clock was changed, and the Lab's earlier report found recovery-log clocks that print 1970, a fixed year or a constant impossible year on ordinary Android phones [1]. What has not been reported is how often ordinary devices show each kind of clock anomaly, and therefore what an alarm means. This report measures those base rates.

Approach. We wrote fifteen checks down before computing any of them, ran them read-only on every readable full file system extraction, sysdiagnose and Android bug report in the Lab's research corpus, and reported each rate with a confidence interval. We ask three research questions.

  • RQ1 (Prevalence). On how many devices does each clock anomaly occur, and how large are the anomalies?
  • RQ2 (Composition). Which kinds of record produce the alarms on these devices?
  • RQ3 (Meaning). How often does a naive comparison of two clocks fire, and what does an alarm from each check mean at the measured base rate?

Contributions. This report makes four contributions.

  • A pre-registered set of fifteen clock-anomaly checks that can be computed from an extraction alone, with definitions precise enough to be re-run (Section 3, Table 1).
  • Base rates with 95 percent intervals on 46 full file system devices, 31 iPhones with unified-log time-sync records and 7 Android bug reports, by platform and, where a cell holds five or more devices, by operating system version and vendor (Sections 5.1 and 5.5).
  • A breakdown of what the alarms consist of: constant default times, cache files, clocks set during boot and time zone changes (Sections 5.2 and 5.3).
  • A translation of the base rates into what an alarm is worth, with the positive predictive value at stated prior rates and the bound that a check which never fired still carries (Section 6.1, Table 6).

Scope. Nothing is known independently about what happened to their clocks, so no alarm is classed as true or false; an alarm means that the data are inconsistent with an ordinary clock history in the way the check defines, not that a clock was manipulated. The rates describe this sample and are not rates from cases. Section 7 states the limits.

2 Background and Related Work

This section describes the clocks the checks read, then places the work among studies of timestamp manipulation, studies of clock behaviour, and work on base rates.

2.1 Clocks in an extraction

The wall clock. On Android, a time detector service sets the system clock from time suggestions; network time and telephony time are enabled by default, with satellite and external sources available but off by default [2]. A bug report records the state of this service and of the alarm service, which counts time changes since boot and prints the current wall-clock and elapsed-realtime values together. On iOS, the unified log keeps time-sync records.

Time-sync records. The unified log stores, per boot, a boot record with a boot identifier, the timebase, the wall-clock boot time and a time zone offset with a daylight-saving flag, followed by records that pair a continuous (Mach continuous) time with a wall-clock time, each again with a zone offset and a flag [7]. Within one boot the continuous time only advances, so the difference between the wall-clock step and the continuous-time step between two records measures how far the wall clock was set in between.

File times in an extraction. Full file system extractions are delivered as ZIP containers whose entries carry the extended-timestamp extra field, a signed count of seconds since the Unix epoch in UTC [5]. It keeps the modification time each file had on the device, written by the device's clock (or set explicitly by the software that wrote the file).

2.2 Detecting timestamp and clock manipulation

Verma, Govindaraj and Gupta proposed preserving kernel-generated event times off the device so that later manipulation of dates and timestamps on an Android phone can be detected [10]. Pieterse, Olivier and van Heerden manipulated timestamps in SQLite databases on one rooted Android phone and derived heuristics from the file system and the databases that indicate manipulation [8]. A DFRWS APAC 2026 study changed the system clock on four Samsung phones (unmodified, backdated and forward-dated), found that some artifacts follow the device clock while others keep external time, and proposed comparing the two to detect manipulation [6]. A systematization of timeline-based event reconstruction lists the detection of manipulation among the strands of that field [4]. These studies establish whether a check can see a manipulation; as far as we could read them (Section 7), none reports how often the same check fires on unselected devices.

2.3 Clock behaviour and base rates

Schatz, Mohay and Clark showed for personal computers that real clock behaviour departs from common assumptions about it, and correlated local timestamps with an independent source to characterize a machine's clock over time [9]. For intrusion detection, Axelsson showed that when the events of interest are rare, the false-alarm rate rather than the detection rate limits the probability that an alarm is real [3]. The same arithmetic applies to clock checks. The Lab's earlier report classified the header clock of Samsung recovery logs into five behaviours: plausible and in order, 1970, a fixed year (2010), a constant year that cannot be the true year, and unresolved [1]. Its central lesson was that a wrong clock does not show in the date it prints.

Position of this work. Manipulation studies measure sensitivity on a few devices; this study measures the other half of the problem, the alarm rate on devices selected without regard to their clocks, across three evidence families and both platforms. The checks are simple on purpose: they are the kind an examiner or a tool would apply first, and the earlier report's clock classes reappear here as properties of file systems and logs rather than of one log file.

3 Method

This section states how the checks were fixed in advance, defines them, describes the reference clocks and the unit of analysis, and gives the statistics.

3.1 Pre-registration

Before any check was computed, we wrote the sampling frame, the unit of analysis, the fifteen checks with their thresholds, the area classes used to attribute alarms, the statistics and the planned figures into a dated private note. Probes run before that note looked only at formats: which ZIP extra fields exist, how container paths are laid out, which section names bug reports contain, and how many time-sync records one archive holds. Analyses added after the results were seen are labelled post hoc wherever they appear. One pre-registered check, T2, is computed in two ways (Section 3.6).

3.2 Checks

Each check gives one alarm per device if at least one instance occurs. Table 1 defines the fifteen checks. Thresholds of 48 h absorb any confusion of time zones (at most 14 h). The first two file-system checks are the file-system form of the earlier report's 1970 and fixed-year classes [1].

Table 1: The fifteen pre-registered checks. An alarm is raised when at least one instance occurs on a device.
IdCheck: alarm when
File-system times (full file system extractions)
F1Epoch zero: a user-area file time lies within 1 day of the Unix epoch
F2Before 2007: a user-area file time precedes 2007-01-01 (F1 band excluded)
F3Future: a user-area file time lies more than 48 h after the acquisition reference time (also 30 d, 365 d)
F4Behind build: the newest user-area file time that is not in the future precedes the build time by more than 48 h
F5Boot-history order (Android): the epochs of the boot-reason history are not strictly decreasing, or one lies in the future
F6Two clocks: the newest user-area file time and the workstation's acquisition end time differ by more than 48 h
Unified-log time-sync records (iOS)
T1Step: between two consecutive records of one boot, the wall-clock step differs from the continuous-time step by more than 60 s (also 1 s, 1 h, 1 d)
T2Boot order: a boot's wall-clock boot time precedes the last wall-clock time of the preceding boot by more than 60 s
T3Zone: the records carry more than one time zone offset
Android bug reports
A1Clock set: the alarm service counts one or more time change events since boot
A2Boot time: the runtime first-boot time minus (wall clock minus elapsed realtime) lies outside 0 to 600 s
A3Zones: the telephony zone suggestions name more than one zone
A4Boot-history order: as F5, against the report's wall clock
A5Behind build: the report's wall clock precedes the build time by more than 48 h
A6Two clocks: the report's wall clock and the time the report file was written to Lab storage differ by more than 48 h

3.3 Reference clocks and areas

Acquisition reference time. Where the extraction tool's metadata records an acquisition end time with its zone offset, that workstation time is used. Otherwise the container file's last-write time on Lab storage is used; it cannot precede the end of acquisition, so it makes the future-time check conservative.

Build time. On Android, ro.build.date.utc from the system build properties; on iOS, the file time of SystemVersion.plist on the system volume of the same container. Both are read from the extraction; no external table of release dates is used.

User area and area classes. The user area is /data on Android (a duplicate mirror view excluded) and /private/var on iOS. Alarms are attributed to five area classes fixed in advance: application payloads (installed packages, compiled code, downloaded assets), media, application data, logs and other system data. A variant of F1 to F3 that ignores payloads was also pre-registered.

3.4 Unit of analysis

The unit is the device. Sources of the same device were merged privately: iPhones by shared unified-log boot identifiers or a hashed hardware identifier, Android devices by a hashed identifier from the extraction metadata, bug reports by a hashed serial number. For the file-system checks the extraction with the latest reference time represents a device; for the time-sync checks all unique records of a device are pooled. Devices were not matched across evidence families, so a phone may appear in more than one family.

3.5 Statistics

Each rate is reported as k of n devices with a 95 percent Wilson score interval [11]. Rates by operating system version and vendor are reported only for cells of at least five devices. The meaning of an alarm is expressed as a positive predictive value (Listing 1). With an alarm rate f on the sample, an assumed sensitivity s and a prior share π of manipulated devices among those examined, the probability that an alarm is a manipulation is given below. We set s = 1, the most favourable value for the check, and evaluate π at 1, 10 and 50 percent. If any sample device was in fact manipulated, f overstates the false-alarm rate and the values below are lower bounds.

Listing 1: Positive predictive value and likelihood ratio of an alarm.

PPV(π) = s·π / ( s·π + f·(1 − π) )
LR+     = s / f          (posterior odds = LR+ × prior odds)

3.6 T2 definition and post hoc analyses

The definition of T2 in Table 1 speaks of boots, so T2 compares distinct boots. Time-sync files repeat the header of a boot when a new segment starts, so a variant that compares every boot header with the one before it also compares the repeated header of the same boot with its own earlier records; both results are reported (Table 3). Post hoc we also (1) split each time-sync step above 60 s by whether the clock before it read a date before 2007 (an unset clock) and by direction, (2) split T2 inversions by whether the later boot's wall-clock time was before 2007, (3) grouped file times before 2007 into families of values, and (4) located future-dated files within application containers.

4 Evidence and Setup

Sample. The sampling frame is the Lab's census of its research corpus on the drives attached at the time of the study: 101 unique extractions. Extractions held on other drives were not readable for this study and are not part of the sample. Every frame item of the four eligible classes was processed, and none was selected by its clock behaviour (Table 2). One container listed as an iOS full file system held no device file system and was excluded; an engineered test trace (a 1.8 kB archive of eight small text members with identical member times, one of them named as a placeholder) and four truncated sysdiagnose archives (which ended before any time-sync member) were also excluded. Logical extractions and backups (36 items) are outside the scope.

Table 2: From the sampling frame to the analysed devices.
FamilySourcesExcludedDevices
Full file system (iOS)34132
Full file system (Android)14014
Time-sync records (iOS)30 + 100 + 531
Android bug reports707

Two iOS extractions of one device were merged. Time-sync sources: records from 30 iOS full file system extractions plus 10 sysdiagnose sources (four archives, one of them an engineered trace, and six iOS quick-capture packages); five sysdiagnoses were excluded (one engineered trace, four truncated), and four sources of one iPhone were merged. 29 time-sync devices come from full file systems and 2 from sysdiagnoses alone.

Composition. The 46 file-system devices are 32 Apple devices (20 on iOS 26, 11 on iOS 15 to 18, one undetermined) and 14 Android phones (9 on Android 16, 5 on Android 10 to 14; 12 Samsung and two other vendors). The 31 time-sync devices run iOS 15 to 27, 21 of them iOS 26; per device they cover 4 to 3,051 boots (median 84) and a span of wall-clock time of 1 to 2,445 days (median 293). The 7 bug-report devices come from four vendors (four Samsung) and run Android 10 to 16. In all, the checks read 21,561,059 user-area file times, 508,299 time-sync records in 7,751 boots and 7 bug reports. Every user-area file carried the extended timestamp. The acquisition reference time came from tool metadata on 29 file-system devices and from the container's write time on 17.

Procedure. One runner script processed every source in sequence, each in its own process with a time limit, and wrote an aggregate report; no source hit its limit. It reads the ZIP central directory without extracting the container, decompresses only the few members a check needs (build properties, the persistent property store, SystemVersion.plist, time-sync files), and streams sysdiagnose archives. It is written in Python with the standard library only and was not derived from an existing parser; the time-sync layout follows a public open-source description [7]. All inputs were opened read-only.

5 Results

Simple checks fired on almost every device; checks that compare the device clock with an anchor fired rarely or never. Figure 1 and Table 3 give every rate.

Alarm rate of each pre-registered detector with 95 percent Wilson intervalsDot and interval plot. Epoch-zero file time 41 of 46 (89%, 95% CI 77% to 95%); File time before 2007 36 of 46 (78%, 95% CI 64% to 88%); Future file time, > 48 h 16 of 46 (35%, 95% CI 23% to 49%); Future file time, > 1 year 10 of 46 (22%, 95% CI 12% to 36%); Newest file before build 0 of 44 (0%, 95% CI 0% to 8%); Two clocks differ > 48 h 8 of 29 (28%, 95% CI 15% to 46%); Boot-history order (Android) 1 of 14 (7%, 95% CI 1% to 31%); Any file-system detector 45 of 46 (98%, 95% CI 89% to 100%); Clock step > 60 s in a boot 23 of 31 (74%, 95% CI 57% to 86%); Boot earlier than last boot 18 of 31 (58%, 95% CI 41% to 74%); Zone offset changed 27 of 31 (87%, 95% CI 71% to 95%); Any time-sync detector 30 of 31 (97%, 95% CI 84% to 99%); Clock set since boot 4 of 7 (57%, 95% CI 25% to 84%); Boot-time disagreement 1 of 7 (14%, 95% CI 3% to 51%); Boot-history order 0 of 7 (0%, 95% CI 0% to 35%); Clock before build 0 of 7 (0%, 95% CI 0% to 35%); Two clocks differ > 48 h 0 of 7 (0%, 95% CI 0% to 35%). File-system times (46 devices) Epoch-zero file time 41/46 File time before 2007 36/46 Future file time, > 48 h 16/46 Future file time, > 1 year 10/46 Newest file before build 0/44 Two clocks differ > 48 h 8/29 Boot-history order (Android) 1/14 Any file-system detector 45/46 Unified-log time sync (31 iOS devices) Clock step > 60 s in a boot 23/31 Boot earlier than last boot 18/31 Zone offset changed 27/31 Any time-sync detector 30/31 Bug report (7 Android devices) Clock set since boot 4/7 Boot-time disagreement 1/7 Boot-history order 0/7 Clock before build 0/7 Two clocks differ > 48 h 0/7 0% 25% 50% 75% 100% share of devices with at least one alarm
Figure 1: Alarm rate of each pre-registered check (dot) with its 95 percent Wilson interval (line); the right column gives devices with an alarm over devices tested. T2 is shown over distinct boots (Section 3.6). The three bug-report rows at zero share one interval. Source: Table 3.

5.1 How often each anomaly occurs (RQ1)

File-system times. At least one file-system check fired on 45 of 46 devices (98 percent; 95 percent interval 89 to 100). A file time within a day of the epoch occurred on 41 devices, a file time before 2007 on 36, and a file dated more than 48 h after acquisition on 16 (15 of 32 iOS devices, 1 of 14 Android). On 10 devices the latest future time lay more than a year ahead. Ignoring application payloads changed only F1, from 41 to 40 devices. The one device without any file-system alarm runs iOS 15.

Table 3: Alarm rates (devices with an alarm, k of n) with 95 percent Wilson intervals. Rows marked † are post hoc.
Checkk/nRate95% CI
F1 epoch zero41/460.890.77–0.95
F1 without payloads40/460.870.74–0.94
F2 before 200736/460.780.64–0.88
F3 future > 48 h16/460.350.23–0.49
F3 future > 30 d13/460.280.17–0.43
F3 future > 365 d10/460.220.12–0.36
F4 behind build0/440.000.00–0.08
F5 boot-history order1/140.070.01–0.31
F6 two clocks8/290.280.15–0.46
Any of F1 to F545/460.980.89–1.00
T1 step > 1 s31/311.000.89–1.00
T1 step > 60 s23/310.740.57–0.86
T1 step > 1 h18/310.580.41–0.74
T1 > 60 s, not from an unset clock†21/310.680.50–0.81
T1 backward step > 60 s†11/310.350.21–0.53
T2 boot order (distinct boots)18/310.580.41–0.74
T2, every boot header29/310.940.79–0.98
T2, later boot not on an unset clock†2/310.060.02–0.21
T3 zone offset changed27/310.870.71–0.95
T3, minority offset > 1% of records†18/310.580.41–0.74
Any of T1 to T330/310.970.84–0.99
A1 clock set since boot4/70.570.25–0.84
A2 boot-time disagreement1/70.140.03–0.51
A4, A5, A6 (each)0/70.000.00–0.35

F4 needs a build time (44 devices); F5 a boot-reason history (14 Android devices); F6 a workstation acquisition time (29 devices). A3 could be evaluated on only two bug reports and is not reported.

Time-sync records. Every one of the 31 iPhones showed a wall-clock step above 1 s inside a boot, 23 a step above 60 s and 18 a step above an hour; all 74 steps above an hour exceeded a day. Of 500,548 pairs of consecutive records, 108 differed by more than 60 s. The first record after a boot differed from the boot time by more than 60 s at 353 of 7,751 boots. A boot that started earlier than the previous boot ended (T2) occurred on 18 devices, and more than one zone offset on 27.

Bug reports. The alarm service had counted one or more time changes since boot on 4 of 7 devices (one to three changes). The first-boot property of the runtime agreed with the boot time derived from the current wall clock and elapsed time to within 42 to 453 s on six devices and differed by 4,589 s on one. No boot-history order break, no wall clock before the build time and no disagreement above 48 h with the time the report reached Lab storage occurred; the largest such difference was 0.05 days.

5.2 What the file-system alarms consist of (RQ2)

Times before 2007. Of the 46 devices, 44 held user-area files dated before 2007, and most of these times are constants shared by many files (Figure 2). On the median device 93 percent of such times belonged to a value shared by at least 100 files, and on 27 of the 44 devices at least 90 percent did. Files at exactly the Unix epoch occurred on 37 devices and files within a day of it on 35. A family within five weeks before the start of 1980, the epoch of the DOS date format used in ZIP and FAT, occurred on 34 devices; values around the turn of 2000 on 6. Times between the second and sixtieth day of 1970 occurred on 15 devices (24,799 files); we did not identify their writer. By area, epoch-zero times lay mostly in application payloads (98,162 files on 16 devices) but also in other system data on 38 devices and in application data on 22; times before 2007 lay in application data on 32 devices and in payloads on 20. These are the earlier report's 1970 and fixed-year clock classes [1], now seen in file times: values written by software, not read from a running clock.

Families of file times before 2007 in the user data areaBar chart of the 46 file-system devices. Exactly the Unix epoch: 37 devices, 56,872 files; Within 1 d of the epoch: 35 devices, 51,123 files; 1970, days 2 to 60: 15 devices, 24,799 files; Before 1970: 3 devices, 616 files; DOS-epoch family: 34 devices, 18,355 files; Turn of 2000: 6 devices, 2,366 files; Other, before 2007: 19 devices, 71,469 files. Exactly the Unix epoch 37 56,872 Within 1 d of the epoch 35 51,123 1970, days 2 to 60 15 24,799 Before 1970 3 616 DOS-epoch family 34 18,355 Turn of 2000 6 2,366 Other, before 2007 19 71,469 devices (of 46) files
Figure 2: Families of user-area file times before 2007 (post hoc grouping of F1 and F2 instances): number of the 46 file-system devices with at least one such time (bar) and the number of files (right). Source: runner report, post hoc section.

Future times. The 1,786 future-dated files on the 16 alarm devices lay mostly in application data: 683 files under Library/Caches of iOS application containers on 13 devices, 154 under Documents on 3, and 875 inside installed application bundles on 2 (Table 4). The excess over the acquisition time was under 30 days for 440 files, 30 to 365 days for 305, 1 to 10 years for 930 and 10 years or more for 111. Per alarm device, 2 to 655 files were future-dated (median 17). That cache files carry times in the future is consistent with software that sets a file's time to a planned expiry, but we did not test this. The rate was 7 of 29 devices when the acquisition time came from tool metadata and 9 of 17 when it came from the container's write time, although the latter makes the check more lenient; the two groups also differ in extraction tool and device mix, so the difference is not attributed to the reference time.

Table 4: Where the future-dated user-area files lay (F3, post hoc location within the area classes).
LocationDevicesFiles
App data: Library/Caches13683
App data: Documents3154
App data: other Library folders219
Installed application bundles2875
Other payloads and system data255
All161,786

5.3 What the time-sync alarms consist of (RQ2)

Most large wall-clock steps are a clock that read an impossible date being set, but not all (Figure 3). Of the 108 steps above 60 s, 40 started from a wall clock before 2007, an unset clock, on 18 devices; all were above an hour. Of the rest, 44 were forward (31 of them above an hour, on 14 devices) and 24 backward on 11 devices: 21 between 1 and 28 minutes and 3 of about 12, 12 and 23 days, each on a different device.

Kinds of wall-clock steps larger than 60 s inside one bootBar chart of the 31 time-sync devices. From an unset clock, > 1 h: 18 devices, 40 steps; Forward, > 1 h: 14 devices, 31 steps; Forward, 1 min to 1 h: 10 devices, 13 steps; Backward, 1 min to 1 h: 8 devices, 21 steps; Backward, > 1 h: 3 devices, 3 steps. From an unset clock, > 1 h 18 40 Forward, > 1 h 14 31 Forward, 1 min to 1 h 10 13 Backward, 1 min to 1 h 8 21 Backward, > 1 h 3 3 devices (of 31) steps
Figure 3: Wall-clock steps larger than 60 s between consecutive time-sync records of one boot, by kind (post hoc split): devices with at least one such step (bar) and number of steps (right), 31 devices.

Boot order. Of the 46 boots that started earlier than the preceding boot ended, 44 started on a wall clock before 2007; only 2, on two devices, started on a plausible date, 4.5 and 28.7 days before the end of the preceding boot. A check that compares boot times without testing for an unset clock therefore mostly detects that iPhones boot on an unset clock.

Zones. Four devices carried one zone offset, fifteen two, and twelve three to eight. On 9 of the 27 devices with a change, the less frequent offsets held at most 1 percent of the records; on 18, more. The daylight-saving flag took both values on 27 devices. Travel and a default zone before the zone is set would both produce such changes; the records do not tell them apart.

5.4 Checks anchored to another clock (RQ3)

Checks that compare the device clock with an anchor outside the record being tested fired rarely. No device's newest ordinary file preceded its build time (0 of 44; upper bound 8 percent), and no bug report's wall clock preceded its build time or differed from the Lab storage time by more than 48 h (0 of 7 each). The naive two-clock check F6 fired on 8 of 29 devices. On 7 of them it fired because future-dated files made the device look ahead; measured with the newest file that is not in the future, the device clock agreed with the workstation within 2 days on 28 of 29 devices and within an hour on 15. The remaining device's newest ordinary file was more than a year older than the acquisition, which is consistent both with a device that wrote nothing in that time and with a clock that was behind. The Android boot-reason history broke order on 1 of 14 devices.

5.5 Operating system version and vendor

Only four cells hold five or more file-system devices and one cell five or more time-sync devices (Table 5); all others are suppressed. Within them the pattern is the same as overall. The difference in future-dated files between iOS 26 (8 of 20) and Android 16 (0 of 9) is the one platform contrast in the data, and the intervals overlap.

Table 5: Rates in cells of at least five devices (k/n, 95 percent interval).
CellAny F1–F5F2F3
iOS 2620/20 (0.84–1)15/20 (0.53–0.89)8/20 (0.22–0.61)
Android 169/9 (0.70–1)9/9 (0.70–1)0/9 (0–0.30)
Apple31/32 (0.84–0.99)––
Samsung12/12 (0.76–1)––

Time-sync, iOS 26 (21 devices): T1 14/21 (0.45–0.83), T3 19/21 (0.71–0.97). F1 on iOS 26: 19/20. Vendor cells were tabulated for the combined file-system rate only.

6 Discussion

The results say less about whether these clocks were wrong than about which checks can carry weight. This section turns the base rates into what an alarm is worth and draws the consequences for examiners and tools.

6.1 What an alarm means

With a sensitivity of 1, an alarm multiplies the prior odds of manipulation by 1/f. For the combined file-system check (f = 0.98) the factor is 1.02: the alarm carries almost no information, and at a prior of 1 percent the probability that an alarming device was manipulated stays at 1 percent (Table 6, Figure 4). The time-sync step check (0.74) raises it to 1.3 percent, the future-file check (0.35) to 2.8 percent. Even at a prior of 50 percent, where half of all examined devices would have been manipulated, no check with an alarm rate above 0.3 gives more than 0.74.

Table 6: Probability that an alarm is a manipulation (positive predictive value, sensitivity 1) at three prior shares π, with the measured alarm rate f. For checks with no alarm the upper interval bound of f is used, giving a lower bound.
Checkfπ = 1%10%50%
Any file-system check0.980.0100.100.51
T3 zone change0.870.0110.110.53
T1 step > 60 s0.740.0130.130.57
A1 clock set since boot0.570.0170.160.64
F3 future > 48 h0.350.0280.240.74
F6 two clocks0.280.0350.290.78
T2, plausible boot only†0.060.1350.630.94
F4 behind build (0/44)≤ 0.08≥ 0.11≥ 0.58≥ 0.93

† Post hoc. Rows computed in the runner report from the rates of Table 3.

Positive predictive value of an alarm against the prior share of manipulated devicesLine chart, sensitivity assumed 1. any file-system detector (alarm rate 0.98): PPV 0.010 at 1%, 0.10 at 10%, 0.51 at 50%; time-sync step > 60 s (alarm rate 0.74): PPV 0.013 at 1%, 0.13 at 10%, 0.57 at 50%; future file time (alarm rate 0.35): PPV 0.028 at 1%, 0.24 at 10%, 0.74 at 50%; clock set since boot (alarm rate 0.57): PPV 0.017 at 1%, 0.16 at 10%, 0.64 at 50%; newest file before build (0 of 44, upper bound 0.08): PPV at least 0.11 at 1%. 0.00 0.25 0.50 0.75 1.00 0.1% 1% 10% 50% prior share of manipulated devices (log scale) probability that an alarm is a manipulation f=0.08 f=0.35 f=0.57 f=0.74 f=0.98
Figure 4: Positive predictive value of an alarm against the prior share of manipulated devices (log scale), sensitivity 1, for four measured alarm rates and for the upper bound (0.08) of a check that never fired. The lower curves belong to the frequent checks, whose alarms barely raise the prior. Source: Table 6.

Two cautions bound this reading. First, a sensitivity of 1 flatters every check; a real check that misses some manipulations is worth less. Second, a low alarm rate is necessary but not sufficient: the checks that never fired (F4, A5, A6) see only a narrow kind of manipulation, a clock set back before the build date or a capture clock far from the workstation, and their sensitivity to anything else is unknown. Their value lies in the bound: if they fire, the alarm is rare in ordinary data, and on this sample it would multiply the odds by at least 12 for F4 (upper bound 0.08) and at least 2.8 for the bug-report checks (upper bound 0.35).

6.2 Consequences for examiners and tools

  1. Do not report a single file time at the epoch, before 2007 or in the future as a clock anomaly. On these devices such times were the norm, written by software rather than read from a running clock.
  2. Before comparing two clocks, remove what is known to be written, not measured: constant values shared by many files, payload and cache files, and records written while the clock was still unset.
  3. Prefer checks anchored outside the tested record: the build time, the acquisition workstation, the continuous time within a boot. In this sample they rarely or never fired; their sensitivity has to be measured on devices with a known clock change.
  4. Report a clock finding as an inconsistency with a stated check and its base rate, not as manipulation.

6.3 Relation to the earlier report

The earlier report found, in one Samsung log file, clocks that print 1970, a fixed year and a constant impossible year [1]. The same classes are common elsewhere: epoch and fixed-year times appear in the file systems of 44 of 46 devices, and an unset clock that is set during boot appears in the time-sync records of 18 of 31 iPhones. What the earlier report showed for one source holds across sources: a date does not reveal the clock that produced it, and a check must establish that clock first.

7 Threats to Validity

Construct validity. No independent record says what happened to these clocks, so an alarm is classed only as an inconsistency with the check's assumption. A sample device may have been manipulated, in which case the alarm rate overstates the false-alarm rate and the values in Table 6 are lower bounds. File times are the modification times stored in the container; software can set them explicitly, so a file time is not always a reading of the clock. The acquisition reference time for 17 devices is the container's write time, an upper bound. The time-sync layout follows an open-source description [7] rather than vendor documentation; the parser reproduced its record sizes and found no undecodable record in the sources read.

Internal validity. The checks and thresholds were fixed before computation, but a second computation of T2 and several breakdowns are post hoc; both are labelled. Device merging used identifiers and shared boot identifiers; two extractions of one device that share neither would be counted twice. A further iOS extraction may duplicate a device seen only through a sysdiagnose.

External validity. The devices are the Lab's research corpus, most from one market; iOS 26 and Android 16 make up 29 of the 46 file-system devices, and most other version cells hold one to four devices. Two families are small: 7 bug reports and, for F5, 14 Android devices. The rates should not be read as rates from cases or for any population.

Conclusion validity. Intervals are wide where n is small; a zero count bounds a rate only from above (8 percent for F4, 35 percent for the bug-report checks). The positive predictive values assume a sensitivity of 1 and an exchangeable sample.

Limitations. We did not run controlled clock changes, so no sensitivity is measured; we did not read the full text of the DFRWS APAC 2026 study [6], whose page could not be fetched, so its discussion of ordinary devices may go beyond its abstract; database timestamps, application logs and Android logs other than the bug report were not examined; the A3 zone check could be evaluated on two bug reports only; and the extractions on drives not attached during the study were not read.

8 Conclusion and Future Work

A clock-manipulation check is only as useful as its alarm is rare on devices whose clocks were not manipulated. We measured that rate for fifteen checks on every readable extraction of a research corpus. Simple checks fired on almost every device: epoch and pre-2007 file times on most, future-dated cache files on one device in three, wall-clock steps inside a boot on three iPhones in four, and at least one file-system alarm on 45 of 46. Most file-system alarms consist of values that software writes rather than reads from a clock, and most boot-order alarms of an unset clock at boot; the forward and backward steps on 21 iPhones are not explained by the data. Checks anchored to the build time never fired, and the workstation comparison fired on one device of 29 once the newest ordinary file was used. On these devices, therefore, an alarm from a simple check says almost nothing about manipulation, and a clock finding needs its check and base rate stated beside it. Tools that flag clock anomalies, open-source parsers included, can report the same base rates with their alarms.

Future work, in order of value: (1) controlled forward and backward clock changes on the Lab's own test devices, to measure the sensitivity of each check and turn Table 6 into measured values; (2) the same census on the parts of the collection held on other drives, to fill the suppressed version and vendor cells; (3) checks on database and application-log timestamps, the records that manipulation studies show to follow the device clock [6].

Artifact Availability

The readers, the analysis code, the counts printed in Table 3 and a generator of invented archives will be released as a package (Python 3.10 or later, standard library only) in the Lab's public artifacts repository, with no release date set. The package is not public yet, and the sentences that follow describe it as planned. Code is under the MIT licence, data and text under CC BY 4.0. From the counts printed in this report the package rebuilds Table 1, the rates and Wilson intervals of Table 3, the positive predictive values of Table 6, the arithmetic of Section 6.1, and Figures 1 and 4. It also runs the whole pipeline on small invented archives, in which each invented device carries a record of what every check must find; the readers agree with that record in all 300 comparisons. That run shows how the code works and produces Tables 2, 4 and 5 and Figures 2 and 3 in form only; it does not reproduce the findings. The counts of Table 3 and the numbers of Section 5 were computed on the Lab's research corpus, which cannot be released, so they cannot be reproduced from the package. The package does not contain the Lab's census, the reader of the extraction record or the handling of device identifiers: acquisition times and device groups are given in a configuration file. The extractions, sysdiagnoses and bug reports cannot be released.

Data Handling Statement

The evidence for this study is drawn from the Lab's research corpus of mobile device extractions, sysdiagnoses and bug reports and was read only. The runner read container directories and a small number of system members (build properties, the persistent property store, the system version file, time-sync files and bug-report text). The report gives aggregate counts, rates, device classes, operating system versions and offsets between times. It contains no identifiers, personal data, message or file content, or case information; no names, identifiers, file contents, package lists, file paths from the devices or dates of real events appear in this paper or its figures, and the constant times named in Section 5.2 are software defaults, not events.

Declaration of AI Assistance

The authors conceived the research questions and directed the work. The measurement code, the data checks and the first draft of this report were produced with AI assistance (Anthropic Claude). The authors reviewed the results and the text and are responsible for the content.

References

  1. Daniel Addai. 2026. Informative but Individually Unreliable: An Empirical Study of Android Reset Indicators and Their Clocks. Lab Technical Report LAB-TR-0004, version 1.0. SectraTEK Lab, Prudential Associates. https://doi.org/10.5281/zenodo.23717927
  2. Android Open Source Project. [n. d.]. Time overview. Retrieved October 27, 2026 from https://source.android.com/docs/core/connect/time
  3. Stefan Axelsson. 2000. The base-rate fallacy and the difficulty of intrusion detection. ACM Transactions on Information and System Security 3, 3 (2000), 186–205. https://doi.org/10.1145/357830.357849 (Bibliographic data from index records; full text not read.)
  4. Frank Breitinger, Hudan Studiawan, and Chris Hargreaves. 2025. SoK: Timeline based event reconstruction for digital forensics: Terminology, methodology, and current challenges. In DFRWS USA 2025; Forensic Science International: Digital Investigation. https://doi.org/10.1016/j.fsidi.2025.301932; arXiv:2504.18131. (Abstract read.)
  5. Info-ZIP. [n. d.]. Extended Timestamp Extra Field (0x5455). In extrafld.txt: the known types of zipfile extra fields. Retrieved October 27, 2026 from https://libzip.org/specifications/extrafld.txt
  6. Jihye Jang, Eunji Lee, Yeon Baek, Jungho Kim, Sungjin Lee, and Gibum Kim. 2026. Time-Anchor: Detecting System Clock Manipulation in Android. DFRWS APAC 2026. https://dfrws.org/?p=21466 (Title, authors and abstract from the DFRWS presentation page as returned by search; the page itself could not be fetched; full text not read.)
  7. Mandiant. [n. d.]. macos-UnifiedLogs: timesync.rs. GitHub repository (Apache-2.0). Retrieved October 27, 2026 from https://github.com/mandiant/macos-UnifiedLogs
  8. Heloise Pieterse, Martin S. Olivier, and Renier P. van Heerden. 2015. Playing hide-and-seek: Detecting the manipulation of Android timestamps. In 2015 Information Security for South Africa (ISSA). IEEE, 1–8. https://doi.org/10.1109/ISSA.2015.7335065
  9. Bradley Schatz, George Mohay, and Andrew Clark. 2006. A correlation method for establishing provenance of timestamps in digital evidence. Digital Investigation 3, Supplement (2006), 98–107. DFRWS 2006. (Bibliographic data and abstract from index records; full text not read.)
  10. Robin Verma, Jayaprakash Govindaraj, and Gaurav Gupta. 2014. Preserving dates and timestamps for incident handling in Android smartphones. In Advances in Digital Forensics X (IFIP AICT 433). Springer, 209–225. https://doi.org/10.1007/978-3-662-44952-3_14 (Bibliographic data from index records; full text not read.)
  11. Edwin B. Wilson. 1927. Probable inference, the law of succession, and statistical inference. Journal of the American Statistical Association 22, 158 (1927), 209–212. https://doi.org/10.1080/01621459.1927.10502953 (Bibliographic data from index records.)

Cite and download

Cite as

Daniel Addai, Selorm Adjabeng, Kingsley Albert Egyir, and Sanders Larweh Tetteh. 2026. Most Ordinary Phones Trip a Naive Clock-Anomaly Check: Base Rates of Clock Anomalies in Unselected Mobile Extractions. Lab Technical Report LAB-TR-0022, version 1.0. SectraTEK Lab, Prudential Associates. Preprint, not peer reviewed. https://lab.sectratek.com/research/reports/lab-tr-0022/

Citation guide
lab-tr-0022.bib
@techreport{addai2026labtr0022,
  author      = {Addai, Daniel and Adjabeng, Selorm and Egyir, Kingsley Albert and Tetteh, Sanders Larweh},
  title       = {Most Ordinary Phones Trip a Naive Clock-Anomaly Check: Base Rates of Clock Anomalies in Unselected Mobile Extractions},
  institution = {SectraTEK Lab, Prudential Associates},
  type        = {Lab Technical Report},
  number      = {LAB-TR-0022},
  year        = {2026},
  howpublished = {https://lab.sectratek.com/research/reports/lab-tr-0022/},
  note        = {Version 1.0, preprint, not peer reviewed. CC BY 4.0}
}

Licence: CC BY 4.0. The print layout of this page is set for US Letter in two columns. Related: the Lab's report on Android reset indicators and their clocks, LAB-TR-0004.

Versions and corrections

VersionDateChange
1.02026-10-27First release.

Corrections: none so far. Errors can be reported through the corrections page.