It is very strange why PowerShell would return a date where the year is wrong ( 0x451a1eb0d869cc01).
PS> get-date 129594868675516997
Saturday, September 3, 0411 1:27:47 AM
Try more than just one value and see if there is a pattern of miscalculation.
PS> get-date 128989761240000000
Friday, October 2, 0409 4:55:24 PM
Always use a tool to validate your findings and keep you on the right track. Here, I'm using FTK Imager to decode the date/time of a little endian value to make sure I get the same results by hand and to identify any mistakes I might make with the manual conversion. This way, I can also double check if PowerShell interprets the values correctly.
The same value returns the correct date and time if used in this format
PS>[datetime]::fromfiletime("129594868675516997")
Friday, September 2, 2011 8:27:47 PM
UTC time is also returns the correct date and time. It seems like that is also what the get-date is trying to do.
PS> [datetime]::fromfiletimeUTC("129594868675516997")
Saturday, September 3, 2011 1:27:47 AM
Converting the hex values in Excel and working with the rounded scientific notation should not be used due to the rounding error.
PS> [datetime]::fromfiletime("1.29595E+17")
Saturday, September 3, 2011 12:06:40 AM
If you know the epoc of a time, then you can easily adjust PowerShell to give you the correct time from the epoc by adding the origin to the datetime.
[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').addseconds("1337329458"))
Friday, May 18, 2012 3:24:18 AM
Microsoft counts 100-nanoseconds, so the time value needs to be divided by 1e7 to get the second values from the epoc time. 129594868675516997/1e7 = 12959486867.55169
[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1601').addseconds(12959486867.55169))
Friday, September 2, 2011 8:27:47 PM
Thus, analyzing Mozilla Firefox, we can examine places.sqlite database for downloaded applications in the moz_annos table. We can see values under content column like:
(C:\Users\<UID>\AppData\Roaming\Mozilla\Firefox\Profiles\<random>.default-<random>)
{"state":1,"endTime":1413773919879,"fileSize":4210920}
Based on the given file size ( in Bytes ), we can correlate an exfiltrated file even if its name was changed. In order to find the time ( tracks it in milliseconds, so divide the value by 1000 ) when the exfiltration was completed we can run PowerShell with the Unix epoc date:
[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').addseconds("1413773919.879"))
Sunday, October 19, 2014 9:58:39 PM
This value can be verified by Decode
( http://www.digital-detective.net/digital-forensic-software/free-tools/ )
Thus, testing, verification, and validation should be part of every analysis especially before a new tool or a tool update is implemented. Risk management is as important part of forensic analysis as technical knowledge.
No comments:
Post a Comment