-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
References: * ucoProject/UCO#251 Signed-off-by: Alex Nelson <[email protected]>
- Loading branch information
1 parent
9f38733
commit af85597
Showing
5 changed files
with
997 additions
and
133 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,9 @@ | ||
<!-- | ||
GENERATED FILE README.md is generated from source files. Edits to it will be overwritten by automated processes.: | ||
If you need to edit its content, edit src/README.md.in, and then re-run `make` to re-build the file. | ||
--> | ||
|
||
|
||
# Recoverability Examples | ||
|
||
|
@@ -10,7 +16,7 @@ These states can be represented using the `UnallocatedRecoverabilityFacet` with | |
* `metadataRecoverabilityStatus`: recovered, overwritten, unknown | ||
* `contentRecoverabilityStatus`: recovered, partially recovered, overwritten, unknown | ||
|
||
This representation applies to file systems as well as “file system within a file“ data structures such as SQLite databases and Windows Registry hives. | ||
This representation applies to file systems as well as "file system within a file" data structures such as SQLite databases and Windows Registry hives. | ||
For further details and background, see [Standardization of File Recovery Classification and Authentication](https://www.nist.gov/publications/standardization-file-recovery-classification-and-authentication). Additional recoverability scenarios are available in the initial proposal [Representing Recoverability of Unallocated Files](https://caseontology.org/resources/references/Representing%20Recoverability%20of%20Unallocated%20Files%20using%20CASE%20UCO%2031Jan2018.pdf) with the caveat that examples use an early version of CASE/UCO. | ||
|
||
# File System Recoverability | ||
|
@@ -23,171 +29,176 @@ Using the NIST image `dfr-01-fat.dd` of a FAT 12 file system with unallocated fi | |
|
||
```json | ||
[ | ||
{ | ||
"@id": "kb:CB0354F5-2DBD-4C02-8A6C-011B77125EE2", | ||
"@type": "uco-observable:ObservableObject" | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "FileFacet", | ||
"createdTime": "2011-12-25T19:02:22Z", | ||
"modifiedTime": "2000-02-29T19:11Z", | ||
"accessedTime": "1999-01-02T05:00Z", | ||
"extension": "txt", | ||
"fileName": "_BEID.txt", | ||
"filePath": "/img_dfr-01-fat.dd/vol_vol2/_BEID.txt", | ||
"isDirectory": false, | ||
"sizeInBytes": 712 | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "recovered", | ||
"uco-observable:contentRecoverabilityStatus": "recovered" | ||
} | ||
], | ||
} | ||
{ | ||
"@id": "kb:CB0354F5-2DBD-4C02-8A6C-011B77125EE2", | ||
"@type": "uco-observable:ObservableObject", | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "uco-observable:FileFacet", | ||
"uco-observable:createdTime": "2011-12-25T19:02:22Z", | ||
"uco-observable:modifiedTime": "2000-02-29T19:11Z", | ||
"uco-observable:accessedTime": "1999-01-02T05:00Z", | ||
"uco-observable:extension": "txt", | ||
"uco-observable:fileName": "_BEID.txt", | ||
"uco-observable:filePath": "/img_dfr-01-fat.dd/vol_vol2/_BEID.txt", | ||
"uco-observable:isDirectory": false, | ||
"uco-observable:sizeInBytes": 712 | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "recovered", | ||
"uco-observable:contentRecoverabilityStatus": "recovered" | ||
} | ||
] | ||
} | ||
] | ||
``` | ||
|
||
Using the [Crossover](https://caseontology.org/examples/crossover/) shared dataset, specifically the Windows computer available here: [Switch Drive](https://drive.switch.ch/index.php/s/0c7BiyQZRKOtMMq) | ||
The following shows a file system entry that has recoverable filename “~[email protected]“ , but the status of associated metadata and content are unknown. | ||
The following shows a file system entry that has recoverable filename "~[email protected]" , but the status of associated metadata and content are unknown. | ||
|
||
INSERT IMAGE | ||
![AutopsyCrossoverDeleted.png](https://files.caseontology.org/CASE-Examples/examples/illustrations/recoverability/AutopsyCrossoverDeleted.png) | ||
|
||
This recovered file system entry can be represented using the `observable:UnallocatedRecoverabilityFacet` as follows: | ||
|
||
```json | ||
[ | ||
{ | ||
"@id": "kb:BD64BDD9-3DCD-4828-A25B-A72C06E472CD" | ||
"@type": "uco-observable:ObservableObject" | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "uco-observable:FileFacet", | ||
"uco-observable:accessedTime": "null", | ||
"uco-observable:extension": "tmp", | ||
"uco-observable:fileName": "[email protected]", | ||
"uco-observable:filePath": "/Users/Harley Quinn/AppData/Local/Microsoft/Outlook/[email protected]", | ||
"uco-observable:isDirectory": false, | ||
"uco-observable:sizeInBytes": null, | ||
"uco-observable:createdTime": "null", | ||
"uco-observable:modifiedTime": "null" | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "unknown", | ||
"uco-observable:contentRecoverabilityStatus": "unknown" | ||
} | ||
], | ||
} | ||
{ | ||
"@id": "kb:BD64BDD9-3DCD-4828-A25B-A72C06E472CD", | ||
"@type": "uco-observable:ObservableObject", | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "uco-observable:FileFacet", | ||
"uco-observable:accessedTime": "null", | ||
"uco-observable:extension": "tmp", | ||
"uco-observable:fileName": "[email protected]", | ||
"uco-observable:filePath": "/Users/Harley Quinn/AppData/Local/Microsoft/Outlook/[email protected]", | ||
"uco-observable:isDirectory": false, | ||
"uco-observable:sizeInBytes": null, | ||
"uco-observable:createdTime": "null", | ||
"uco-observable:modifiedTime": "null" | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "unknown", | ||
"uco-observable:contentRecoverabilityStatus": "unknown" | ||
} | ||
] | ||
} | ||
] | ||
``` | ||
|
||
Again using the [Crossover](https://caseontology.org/examples/crossover/) shared dataset, the LNK file “Users/Harley Quinn/AppData/Roaming/Microsoft/Windows/Recent/Thebatplan.lnk” references a file on a USB device “D:\Thebatplan“ with associated metadata represented here, and the `contentRecoverabilityStatus` unknown: | ||
Again using the [Crossover](https://caseontology.org/examples/crossover/) shared dataset, the LNK file "Users/Harley Quinn/AppData/Roaming/Microsoft/Windows/Recent/Thebatplan.lnk" references a file on a USB device "D:\Thebatplan" with associated metadata represented here, and the `contentRecoverabilityStatus` unknown: | ||
|
||
```json | ||
[ | ||
{ | ||
"@id": "kb:665D63BE-93E6-4D3E-8E75-3112BE091E93", | ||
"@type": "uco-observable:ObservableObject" | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "uco-observable:FileFacet", | ||
"uco-observable:extension": "", | ||
"uco-observable:fileName": "Thebatplan", | ||
"uco-observable:filePath": "D:\\Thebatplan", | ||
"uco-observable:isDirectory": false, | ||
"uco-observable:sizeInBytes": 1389601, | ||
"uco-observable:createdTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-11-19T00:29:15Z" | ||
}, | ||
"uco-observable:accessedTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-11-18T22:53:09.595Z" | ||
}, | ||
"uco-observable:modifiedTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-11-18T20:10:48.00Z" | ||
} | ||
{ | ||
"@id": "kb:665D63BE-93E6-4D3E-8E75-3112BE091E93", | ||
"@type": "uco-observable:ObservableObject", | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "uco-observable:FileFacet", | ||
"uco-observable:extension": "", | ||
"uco-observable:fileName": "Thebatplan", | ||
"uco-observable:filePath": "D:\\Thebatplan", | ||
"uco-observable:isDirectory": false, | ||
"uco-observable:sizeInBytes": 1389601, | ||
"uco-observable:createdTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-11-19T00:29:15Z" | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "recovered", | ||
"uco-observable:contentRecoverabilityStatus": "unknown" | ||
"uco-observable:accessedTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-11-18T22:53:09.595Z" | ||
}, | ||
"uco-observable:modifiedTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-11-18T20:10:48.00Z" | ||
} | ||
], | ||
} | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "recovered", | ||
"uco-observable:contentRecoverabilityStatus": "unknown" | ||
} | ||
] | ||
} | ||
] | ||
``` | ||
|
||
Similar to a LNK file on Windows, entries in the external.db entry on the Samsung device in the Crossover shared dataset can be represented using the `observable:UnallocatedRecoverabilityFacet` with the `contentRecoverabilityStatus` unknown. For instance, the “files” table in the SQLite database “Samsung Galaxy S6 Edge / UFED File Root / USERDATA (ExtX) / Root / data / com.android.providers.media / databases / external.db” references the file IMG-20181120-WA0000.jpg: | ||
Similar to a LNK file on Windows, entries in the external.db entry on the Samsung device in the Crossover shared dataset can be represented using the `observable:UnallocatedRecoverabilityFacet` with the `contentRecoverabilityStatus` unknown. For instance, the "files" table in the SQLite database "Samsung Galaxy S6 Edge / UFED File Root / USERDATA (ExtX) / Root / data / com.android.providers.media / databases / external.db" references the file IMG-20181120-WA0000.jpg: | ||
|
||
```json | ||
[ | ||
{ | ||
"@id": "kb:4026FABD-924D-4138-A6BA-73DF2EB37BCB", | ||
"@type": "uco-observable:ObservableObject" | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "uco-observable:FileFacet", | ||
"uco-observable:extension": "jpg", | ||
"uco-observable:fileName": "IMG-20181120-WA0000", | ||
"uco-observable:filePath": "/storage/emulated/0/WhatsApp/Media/WhatsApp Images/Sent/IMG-20181120-WA0000.jpg", | ||
"uco-observable:isDirectory": false, | ||
"uco-observable:sizeInBytes": 1389601, | ||
"uco-observable:createdTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-11-19T00:29:15Z" | ||
}, | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "recovered", | ||
"uco-observable:contentRecoverabilityStatus": "unknown" | ||
{ | ||
"@id": "kb:4026FABD-924D-4138-A6BA-73DF2EB37BCB", | ||
"@type": "uco-observable:ObservableObject", | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "uco-observable:FileFacet", | ||
"uco-observable:extension": "jpg", | ||
"uco-observable:fileName": "IMG-20181120-WA0000", | ||
"uco-observable:filePath": "/storage/emulated/0/WhatsApp/Media/WhatsApp Images/Sent/IMG-20181120-WA0000.jpg", | ||
"uco-observable:isDirectory": false, | ||
"uco-observable:sizeInBytes": 1389601, | ||
"uco-observable:createdTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-11-19T00:29:15Z" | ||
} | ||
], | ||
} | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "recovered", | ||
"uco-observable:contentRecoverabilityStatus": "unknown" | ||
} | ||
] | ||
} | ||
] | ||
``` | ||
|
||
# SQLite Entry Recoverability | ||
|
||
SQLite records that are recoverable can also be represented using the `observable:UnallocatedRecoverabilityFacet`. For example, this Facebook messenger chat: | ||
|
||
INSERT IMAGE | ||
![FacebookChat.png](https://files.caseontology.org/CASE-Examples/examples/illustrations/recoverability/FacebookChat.png) | ||
|
||
|
||
This recovered chat message can be represented using the `observable:UnallocatedRecoverabilityFacet`, noting that the sent location does not appear to be recovered, indicating that the content is partially recovered. | ||
|
||
```json | ||
[ | ||
{ | ||
"@id":"kb:C01E67F9-ADB5-48BD-B09D-E7326FA8D592", | ||
"@type":"uco-observable:ObservableObject", | ||
"uco-core:hasFacet":[ | ||
{ | ||
"@type":"uco-observable:MessageFacet", | ||
"uco-observable:messageText":"Diana sent a location.", | ||
"uco-observable:from":{ | ||
"@id":"kb:e1e34d20-e77c-4087-a87d-d169d7155b8d" | ||
}, | ||
"uco-observable:to":[{"@id":"kb:f96cfe21-1149-4a46-acb9-7299152c776b"}], | ||
"uco-observable:sentTime":{ | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-12-04T07:52:47Z" | ||
} | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "recovered", | ||
"uco-observable:contentRecoverabilityStatus": "partially recovered" | ||
} | ||
] | ||
}, | ||
{ | ||
"@id": "kb:C01E67F9-ADB5-48BD-B09D-E7326FA8D592", | ||
"@type": "uco-observable:ObservableObject", | ||
"uco-core:hasFacet": [ | ||
{ | ||
"@type": "uco-observable:MessageFacet", | ||
"uco-observable:messageText": "Diana sent a location.", | ||
"uco-observable:from": { | ||
"@id": "kb:e1e34d20-e77c-4087-a87d-d169d7155b8d" | ||
}, | ||
"uco-observable:to": [ | ||
{ | ||
"@id": "kb:f96cfe21-1149-4a46-acb9-7299152c776b" | ||
} | ||
], | ||
"uco-observable:sentTime": { | ||
"@type": "xsd:dateTime", | ||
"@value": "2018-12-04T07:52:47Z" | ||
} | ||
}, | ||
{ | ||
"@type": "uco-observable:UnallocatedRecoverabilityFacet", | ||
"uco-observable:nameRecoverabilityStatus": "recovered", | ||
"uco-observable:metadataRecoverabilityStatus": "recovered", | ||
"uco-observable:contentRecoverabilityStatus": "partially recovered" | ||
} | ||
] | ||
} | ||
] | ||
``` | ||
|
Oops, something went wrong.