A forced crash or restart is one of the simplest ways to disrupt a system or load changes that only take effect at boot, and an uptime counter that suddenly resets to zero is often the only trace. MITRE D3FEND names this countermeasure Platform Uptime Monitoring (D3-PUM) and defines it as "Monitor the amount of time since the last power cycle or restart." It sits under the Detect tactic as a child of Platform Monitoring (D3-PM). D3FEND's own data for it is thin: one artefact, one reference and no ATT&CK mapping, so this is a short reference card. It covers what the technique does, where the uptime value comes from on controllers, network devices and servers, how to verify alerts fire, and why the value cannot always be trusted. It is written for OT engineers, infrastructure monitoring owners and SOC analysts.
Key takeaways
- A reset is the signal. D3FEND says monitoring time since the last restart alerts operators to unexpected restarts and their frequency, and gives forensic value as well.
- D3FEND lists no ATT&CK mapping. The D3FEND page shows no related offensive techniques; the Top 20 Secure PLC Coding Practices, D3FEND's reference, ties the practice to ATT&CK for ICS T0816 Device Restart/Shutdown.
- The source can lie. D3FEND's own consideration is that the uptime value may be mutable depending on the platform and its provenance.
- SNMP sysUpTime is not host uptime. RFC 3418 defines it as time since the network management portion of the system was last re-initialised, so an agent restart also resets it.
- Pair uptime with the reason. A reset alone says something happened; shutdown reason codes, crash records and change tickets say whether it was expected.
D3-PUM at a glance
| Attribute | Value |
|---|---|
| D3FEND ID | D3-PUM (d3f:PlatformUptimeMonitoring) |
| Tactic | Detect |
| Parent technique | Platform Monitoring (D3-PM) |
| Digital artefact | monitors Platform Uptime, "A variable that notes the amount of time a platform has been running since its last power cycle or reset." |
| Artefact note | D3FEND comments that in OT controllers this may not be a default tag and may need to be defined from other system tags |
| D3FEND reference | Secure PLC Coding Practices: Top 20 List (practice 17, "Log PLC uptime and trend it on the HMI") |
| ATT&CK relations in D3FEND | None listed (D3FEND 1.6.0, checked November 2026) |
What it detects
The Top 20 Secure PLC Coding Practices (V1.0, June 2021), D3FEND's reference, gives the security reasoning in practice 17: forcing a crash or restart is a basic attack vector, so unexpected restarts can signal unusual activity. It adds a maintenance reason: restart records show which PLCs were worked on and when. Its guidance is to track uptime inside the PLC where a system variable exists, inside the PLC through MIB-2 and SNMP where supported, or externally over SNMP, and to raise an HMI alert on any restart. Practice 18, "Log PLC hard stops and trend them on the HMI", is the companion: record fault or shutdown error codes, log the first scan after the PLC wakes up, and time-synchronise the records.
Outside OT, the same signal applies to servers, hypervisors and network devices. An unexpected reboot can mean a crash caused by exploitation, a deliberate shutdown to disrupt service, or a reboot to activate a bootkit, driver or changed boot configuration.
ATT&CK techniques and D3-PUM
Relationship type: none in D3FEND. The D3FEND page for D3-PUM lists no related ATT&CK techniques and the ontology gives it no artefact shared with ATT&CK. The rows below are NHI Mgmt Group's view of where an uptime reset is a useful signal; the T0816 row follows D3FEND's reference, which maps practices 17 and 18 to it. Each ID was checked against ATT&CK v20.
| ATT&CK ID | Technique | What an uptime reset shows | Basis |
|---|---|---|---|
| T0816 | Device Restart/Shutdown (ICS) | A controller or device restarted outside maintenance | Top 20 Secure PLC Coding Practices, practices 17 and 18 |
| T1529 | System Shutdown/Reboot (Enterprise) | A server or endpoint rebooted without a matching change | NHI Mgmt Group view |
| T0814 | Denial of Service (ICS) | Repeated resets after malformed traffic crashes a device | NHI Mgmt Group view |
| T1688 | Safe Mode Boot (Enterprise) | A reboot that brings a host up in a mode where security tools do not load | NHI Mgmt Group view |
See MITRE ATT&CK for ICS T0816 Device Restart/Shutdown and MITRE ATT&CK T1529 System Shutdown/Reboot for the attack side.
Where the uptime value comes from
Platform classes are listed alphabetically.
| Platform class | Source of the value | Note |
|---|---|---|
| Linux hosts | /proc/uptime, whose first value is total uptime in seconds including time spent in suspend | Collected by monitoring agents; a decrease between polls means a reboot |
| Network devices and SNMP-capable controllers | sysUpTime, OID 1.3.6.1.2.1.1.3, in hundredths of a second (RFC 3418) | Measures the SNMP agent since it was last re-initialised, so an agent restart resets it without a device reboot |
| PLCs and controllers | A system variable or status tag where the platform has one; otherwise a counter built from other system tags, as D3FEND's artefact note says | Trend on the HMI and log to the historian, as practice 17 recommends |
| Windows hosts | System log events: 12 (Kernel-General, operating system started), 13 (shutting down), 1074 (User32, a process initiated a restart with a reason code), 41 (Kernel-Power, rebooted without cleanly shutting down), 6008 (EventLog, previous shutdown was unexpected), 1001 (bug check) | Microsoft's troubleshooting guidance treats 1074, 13, 6009 as a normal reboot and 41 with 6008 as unexpected |
For the controller side, see the PLC Security Guide; for the Windows log pipeline, the Windows Event Log Guide.
Deployment steps
- Pick the source per platform class. Prefer a host-level value (Windows events, /proc/uptime, a controller status tag) over SNMP sysUpTime where both exist, and record which one each asset uses.
- Collect on a fixed interval. Poll or stream the value centrally. A value lower than the previous reading is a reset.
- Attach the reason. On Windows, correlate with 1074 reason codes, 41 and 6008; on controllers, with the hard stop records from practice 18; everywhere, with change and patch windows.
- Alert on unexplained resets. Resets with no change ticket, maintenance window or patch job are alerts. For critical controllers, D3FEND's reference recommends alerting on any restart.
- Trend frequency. Repeated resets on one asset point at instability or an ongoing denial of service.
- Roll back. Monitoring is read-only; if a new rule floods the queue, return it to logging only while maintenance windows are wired in.
How to verify it works
- Planned reboot test: reboot a test server, a network device in the lab and a test controller, inside and outside a declared window. The first should be suppressed or labelled expected; the second should alert.
- Agent restart test: restart only the SNMP agent on a lab device and confirm the rule does not report it as a device reboot, or that it is labelled as an agent restart.
- Unclean shutdown test: on a lab Windows host, cut power and confirm events 41 and 6008 produce an "unexpected restart" alert.
- Coverage check: compare assets reporting uptime against the inventory each week.
| Metric | Example target (NHI Mgmt Group suggestion, not a standard) |
|---|---|
| Critical assets reporting an uptime value | 100% |
| Restarts matched to a change, patch or maintenance record | Above 95% |
| Unexplained restarts investigated within one shift | 100% |
| Assets with more than one unexplained restart in 30 days | Tracked and reviewed monthly |
Limits, bypasses and failure patterns
- Mutable values: D3FEND warns that the source of the value may be mutable depending on the platform. An attacker with control of a device may be able to alter what it reports; cross-check with an independent source such as network monitoring or the HMI's own records.
- Polling gaps: a reboot that completes between polls still shows as a lower value, but a device that is offline when polled may be recorded as a monitoring failure instead of a restart.
- Counter wrap: sysUpTime is a TimeTicks value in hundredths of a second and wraps after a long uptime; treat a wrap as a possible false reset.
- No reason data: uptime alone cannot separate a patch reboot from an attack, so alert volume grows unless reasons are correlated.
- Treating restart as the only sign: many changes take effect without a reboot; D3-PUM complements, and never replaces, configuration and firmware monitoring such as D3-FV Firmware Verification.
Framework mapping
| Framework | Reference | Relevance |
|---|---|---|
| NIST SP 800-53 Rev 5 | SI-4 System Monitoring | Monitoring for events that indicate attack, including unexpected restarts |
| NIST SP 800-53 Rev 5 | CA-7 Continuous Monitoring | Ongoing collection of platform state |
| NIST CSF 2.0 | DE.CM-09, DE.AE-02 | Monitoring computing hardware and software; analysing adverse events |
| Top 20 Secure PLC Coding Practices | Practices 17 and 18 | Log PLC uptime and hard stops and trend them on the HMI |
| MITRE D3FEND | D3-PM, D3-PUM | Parent and technique |
Practitioner checklist
- Record the uptime source for every critical asset.
- Prefer host-level values to SNMP sysUpTime where both exist.
- Correlate every reset with a change, patch or maintenance record.
- Alert on any restart of a critical controller.
- Log controller hard stops and the first scan after wake-up, with synchronised time.
- Trend restart frequency per asset.
- Test with planned, unplanned and agent-only restarts in the lab.
Standards and references
- MITRE D3FEND: Platform Uptime Monitoring (D3-PUM)
- PLC Security: Top 20 Secure PLC Coding Practices V1.0
- IETF: RFC 3418 Management Information Base for SNMP (sysUpTime)
- Microsoft Learn: Troubleshoot unexpected reboots using system event logs
- Linux man-pages: proc_uptime(5)
- NIST: SP 800-53 Rev. 5 Security and Privacy Controls
Related NHI Mgmt Group resources: MITRE D3FEND Guide · D3-OSM Operating System Monitoring · D3-OPM Operational Process Monitoring · PLC Security Guide · MITRE ATT&CK for ICS T0816 Device Restart/Shutdown