Hard and Soft Links in Windows 7
Hoy hablaremos de enlaces simbólicos y de enlaces duros. Pero nos centraremos en Windows 7. Efectivamente, aunque su uso no está muy extendido el sistema de Redmond tiene esta capacidad. Para ilustarla, mostraremos cómo crear estos enlaces y después, mediante procedimientos forenses, veremos en qué consiste cada uno de ellos.
Enlaces duros (Hard Links)
Un enlace duro o hard link es una copia total del fichero, entendiendo por total la copia de los metadatos asociados. En el caso de Windows 7 nos estamos refiriendo a la MFT (Master File Table) del fichero.
Imaginemos que tenemos un fichero llamado “fichero.txt” y queremos hacer un hard link, lo ejecutaríamos con el siguiente comando:
Como resultado tenemos un enlace duro en el fichero “hard_link.txt”
Enlaces simbólicos (Soft Links)
El enlace simbólico es un enlace al fichero original, no una copia del mismo. Imaginemos que tenemos un fichero llamado “fichero.txt” y queremos hacer un soft link, lo ejecutaríamos con el siguiente comando:
Como podemos apreciar en la imágen, no se ha creado por falta de permisos.Esto es debido a que ciertas aplicaciones no se comportan de manera segura en presencia de enlaces simbólicos, por lo que la creación de estos enlaces requiere el privilegio “SeCreateSymbolicLink”.
Lo ejecutamos desde una consola con privilegios de administración:
Como resultado tenemos un enlace duro en el fichero “hard_link.txt“. Si abrimos la carpeta que contiene los ficheros podemos apreciar algunas diferencias a simple vista:
Pero vamos a ver las implicaciones de manea forense. Es por ello que tomamos evidencia de toda la carpeta (miento, en realidad de una unidad NTFS que contiene dicha carpeta). Para ello utilizé la herramienta FTK Imager y el contenedor forense AFF (Advanced Forensic Format). Mi evidencia forense es el fichero “links_w7.aff“, que tiene la siguiente información:
Created By AccessData® FTK® Imager 3.0.1.1467 110406
Case Information:
Acquired using: ADI3.0.1.1467
Case Number: Ejemplo hard and soft links
Evidence Number: 001
Unique description: links_w7
Examiner: dmedianero
Notes: Ejemplo hard and soft links————————————————————–
Information for C:\tmp\links_w7:
Physical Evidentiary Item (Source) Information:
[Drive Geometry]
Bytes per Sector: 512
Sector Count: 18.432
Source data size: 9 MB
Sector count: 18432
[Computed Hashes]
MD5 checksum: 03d6fb63927ce8df2697a2ece063b13d
SHA1 checksum: d4717b8960afd3bb7bb07556cf2877a73855c180Image Information:
Acquisition started: Thu Jan 05 16:40:53 2012
Acquisition finished: Thu Jan 05 16:40:56 2012
Segment list:
C:\tmp\links_w7.aff
Para analizar la evidencia utilizaremos la conocida suite Sleuthkit. Antes que nada, vamos a fijarnos en la MFT del fichero original, el fichero “fichero.txt”:
$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 260 ()
Created: Thu Jan 5 16:37:16 2012
File Modified: Thu Jan 5 16:37:16 2012
MFT Modified: Thu Jan 5 16:37:27 2012
Accessed: Thu Jan 5 16:37:16 2012$FILE_NAME Attribute Values:
Flags: Archive
Name: hard_link.txt, fichero.txt
Parent MFT Entry: 5 Sequence: 5
Allocated Size: 0 Actual Size: 0
Created: Thu Jan 5 16:37:16 2012
File Modified: Thu Jan 5 16:37:16 2012
MFT Modified: Thu Jan 5 16:37:16 2012
Accessed: Thu Jan 5 16:37:16 2012
Notese que la salida está limitada a los atributos $Standard_Information y $File_Name por claridad. Contrastemos dichos datos con la MFT de nuestro enlace duro o hard link:
$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 260 ()
Created: Thu Jan 5 16:37:16 2012
File Modified: Thu Jan 5 16:37:16 2012
MFT Modified: Thu Jan 5 16:37:27 2012
Accessed: Thu Jan 5 16:37:16 2012$FILE_NAME Attribute Values:
Flags: Archive
Name: hard_link.txt, fichero.txt
Parent MFT Entry: 5 Sequence: 5
Allocated Size: 0 Actual Size: 0
Created: Thu Jan 5 16:37:16 2012
File Modified: Thu Jan 5 16:37:16 2012
MFT Modified: Thu Jan 5 16:37:16 2012
Accessed: Thu Jan 5 16:37:16 2012
Como podemos apreciar es exactamente la misma MFT. A continuación mostramos la MFT del enlace simbólico “soft_link.txt”:
$STANDARD_INFORMATION Attribute Values:
Flags: Archive, Reparse Point
Owner ID: 0
Security ID: 264 ()
Created: Thu Jan 5 16:38:09 2012
File Modified: Thu Jan 5 16:38:09 2012
MFT Modified: Thu Jan 5 16:38:09 2012
Accessed: Thu Jan 5 16:38:09 2012$FILE_NAME Attribute Values:
Flags: Archive
Name: soft_link.txt
Parent MFT Entry: 5 Sequence: 5
Allocated Size: 0 Actual Size: 0
Created: Thu Jan 5 16:38:09 2012
File Modified: Thu Jan 5 16:38:09 2012
MFT Modified: Thu Jan 5 16:38:09 2012
Accessed: Thu Jan 5 16:38:09 2012
Como podíamos esperar todos los timestamps son posteriores. Un análisis pormenorizado nos llevaría a descubrir que en el soft link el atributo $Data ocupa 0 bytes, esto se debe, logicamente, a que es un enlace, no tiene contenido propio. La manera de “enlazar” se hace a través del atributo $Reparse_point, cuyo contenido muestro a continuación:
00000000: 0C00 00A0 3800 0000 1600 1600 0000 1600 ....8........... 00000010: 0100 0000 6600 6900 6300 6800 6500 7200 ....f.i.c.h.e.r. 00000020: 6F00 2E00 7400 7800 7400 6600 6900 6300 o...t.x.t.f.i.c. 00000030: 6800 6500 7200 6F00 2E00 7400 7800 7400 h.e.r.o...t.x.t.
Asique ya sabéis, los enlaces duros y simbólicos existen en Windows y aunque apenas sean utilizados, no por ello dejan de ser interesantes.


Leave a Reply