Skip to content

Latest commit

 

History

History

recoverability

Recoverability Examples

A file containing all of the JSON-LD content within this page is here: recoverability.json.

A file containing draft ontology concepts is here: drafting.ttl. It is expected to be removed with the completion of UCO Issue 251.

There is a requirement to represent the recoverability status of entries in file systems, particularly in digital forensic examinations. For clarity and completeness, it is necessary to represent the recoverability of unallocated filename, metadata, and content.

These states can be represented using the RecoveredObjectFacet with the following properties and values:

  • nameRecoveredStatus: recovered, overwritten, unknown
  • metadataRecoveredStatus: recovered, overwritten, unknown
  • contentRecoveredStatus: 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. For further details and background, see Standardization of File Recovery Classification and Authentication. Additional recoverability scenarios are available in the initial proposal Representing Recoverability of Unallocated Files with the caveat that examples use an early version of CASE/UCO.

File System Recoverability

Illustrative examples are provided here to cover conditions commonly encountered when recovering unallocated files. These examples use shared datasets that contain FAT and NTFS file systems, but the representation of unallocated recoverability can be translated to other file systems such as EXT.

When information is recoverable, it is represented explicitly in these examples. Recoverable metadata are represented using the FileFacet, including fileName and filePath.

Using the NIST image dfr-01-fat.dd of a FAT 12 file system with unallocated files see NIST website, particularly XBIED.txt at file offset 11040 (logical sector 170, physical sector 298):

[
    {
        "@id": "kb:cb0354f5-2dbd-4c02-8a6c-011b77125ee2",
        "@type": [
            "uco-observable:RecoveredObject",
            "uco-observable:File"
        ],
        "uco-core:hasFacet": [
            {
                "@id": "kb:file-facet-41e9483b-8b13-42d6-a05b-431b78906a05",
                "@type": "uco-observable:FileFacet",
                "uco-observable:observableCreatedTime": {
                    "@type": "xsd:dateTime",
                    "@value": "2011-12-25T19:02:22Z"
                },
                "uco-observable:modifiedTime": {
                    "@type": "xsd:dateTime",
                    "@value": "2000-02-29T19:11Z"
                },
                "uco-observable:accessedTime": {
                    "@type": "xsd:dateTime",
                    "@value": "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
            },
            {
                "@id": "kb:recovered-object-facet-cdb678d8-f75c-4997-a975-59966d8c5530",
                "@type": "uco-observable:RecoveredObjectFacet",
                "uco-observable:nameRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:metadataRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:contentRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                }
            }
        ]
    }
]

Using the Crossover shared dataset, specifically the Windows computer available here: Switch Drive The following shows a file system entry that has recoverable filename "~[email protected]" , but the status of associated metadata and content are unknown.

AutopsyCrossoverDeleted.png

This recovered file system entry can be represented using the observable:RecoveredObjectFacet as follows:

[
    {
        "@id": "kb:bd64bdd9-3dcd-4828-a25b-a72c06e472cd",
        "@type": [
            "uco-observable:RecoveredObject",
            "uco-observable:File"
        ],
        "uco-core:hasFacet": [
            {
                "@id": "kb:file-facet-ebb15653-ea33-43f4-995e-b8ab9a1e6378",
                "@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:observableCreatedTime": null,
                "uco-observable:modifiedTime": null
            },
            {
                "@id": "kb:recovered-object-facet-b95a915a-d4f4-4dd7-8367-b11dce27c9cc",
                "@type": "uco-observable:RecoveredObjectFacet",
                "uco-observable:nameRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:metadataRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "unknown"
                },
                "uco-observable:contentRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "unknown"
                }
            }
        ]
    }
]

Again using the 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 contentRecoveredStatus unknown:

[
    {
        "@id": "kb:665d63be-93e6-4d3e-8e75-3112be091e93",
        "@type": [
            "uco-observable:RecoveredObject",
            "uco-observable:File"
        ],
        "uco-core:hasFacet": [
            {
                "@id": "kb:file-facet-4783de40-fcad-4e9b-9090-5c5cb4871a93",
                "@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:observableCreatedTime": {
                    "@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:recovered-object-facet-65fd4337-734a-4350-ab0c-18d8098b8b0e",
                "@type": "uco-observable:RecoveredObjectFacet",
                "uco-observable:nameRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:metadataRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:contentRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "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:RecoveredObjectFacet with the contentRecoveredStatus 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:

[
    {
        "@id": "kb:4026fabd-924d-4138-a6ba-73df2eb37bcb",
        "@type": [
            "uco-observable:RecoveredObject",
            "uco-observable:File"
        ],
        "uco-core:hasFacet": [
            {
                "@id": "kb:file-facet-8ce65705-90ab-4934-abb3-67d9c84d81a0",
                "@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:observableCreatedTime": {
                    "@type": "xsd:dateTime",
                    "@value": "2018-11-19T00:29:15Z"
                }
            },
            {
                "@id": "kb:recovered-object-facet-95c7b098-ab46-4867-b050-6b095a7bd1b8",
                "@type": "uco-observable:RecoveredObjectFacet",
                "uco-observable:nameRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:metadataRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:contentRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "unknown"
                }
            }
        ]
    }
]

SQLite Entry Recoverability

SQLite records that are recoverable can also be represented using the observable:RecoveredObjectFacet. For example, this Facebook messenger chat:

FacebookChat.png

This recovered chat message can be represented using the observable:RecoveredObjectFacet, noting that the sent location does not appear to be recovered, indicating that the content is partially recovered.

[
    {
        "@id": "kb:c01e67f9-adb5-48bd-b09d-e7326fa8d592",
        "@type": [
            "uco-observable:RecoveredObject",
            "uco-observable:Message"
        ],
        "uco-core:hasFacet": [
            {
                "@id": "kb:message-facet-1cd126fc-e556-4460-9c1e-37c2ed553367",
                "@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"
                }
            },
            {
                "@id": "kb:recovered-object-facet-1dc5e3f4-4951-44ff-b9f3-14bd63684b29",
                "@type": "uco-observable:RecoveredObjectFacet",
                "uco-observable:nameRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:metadataRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "recovered"
                },
                "uco-observable:contentRecoveredStatus": {
                    "@type": "uco-vocabulary:RecoveredObjectStatusVocab",
                    "@value": "partially recovered"
                }
            }
        ]
    }
]