Análisis Forense de Volúmenes NTFS Roberto Arbeláez, M.Sc, CISSP, CISA, PMP Security Program Manager for Latin America CSS Security Microsoft Corp. [email protected] Terminología Bit B t Byte Sector Cluster Volúmen Partición • • • • Página Bl Bloque Bloque lógico Cluster Lógico Bloques estructurales de NTFS •Bits •Bytes •Sector: El contenedor más básico para referenciar datos en un disco (variable en tamaño – depende del violúmen, pero usualmente es de 512 bytes) •Cluster: La cantidad más pequeña de espacio en Disco que puede asignarse para almacenar un archivo (usualmente 4 u 8 KB, se puede configurar durante el formato). Clusters Físicos y Lógicos Los clusters virtuales representan clusters contíguos g para archivos, aunque físicamente p , q puedan estar fragmentados (existen en el contexto de la memoria)) Co po e tes ese c a es de u Componentes esenciales de un Drive e MBR (Master Boot Record) Tabla de Partición GPT (Partición GUID) GPT (Partición GUID) Sector de Arranque (Bloque de parámetros del BIOS) MFT (Master File Table) Versiones de NTFS v1.0, con NT 3.1 10 NT 3 1 v1.1, con NT 3.5 v1.2, com NT 3.51 v3.0, con Windows 2000 v3.1 de Windows XP a Windows 7 3 1 d Wi d XP Wi d 7 Un sistema de archivos con muchas características •Data Streams alternos p Files •Sparse •Reparse Points •Hard Links •Volume Shadow Copy •Compresión de archivos •Encripción de Archivos •Sistema de Archivos Transaccional (Vista y posteriores) •Journaling ¿Qué existe en el bloque Cero? Depende Disco Físico Disco Físico MBR, incluyendo Master Boot Code y la Tabla de Partición Disco Lógico Debe existir un Sector de Arranque para poder «montar» el volúmen El sector de arranque contiene el BPB (BIOS Parameter Block) que ayuda a la máquina a arrancar del volúmen – Block) que ayuda a la máquina a arrancar del volúmen si este está configurado para arrancar Arquitectura de NTFS O Organización de un Drive NTFS i ió d D i NTFS MBR MBR (2) MBR (2) Tabla de Particiones 16 bytes para cada una de las 4 posibles particiones MBR ‐ Tabla de Particiones Organización de los Volúmenes El Sector de Arranque del Volúmen Conocido como «boot sector» Registro de Arranque del Volúmen Registro de Arranque del Volúmen en WinHex Bloque de Parámetros del BIOS (BPB) Define metadatos sobre el volúmen Bytes opor Bytes opor sector Sectores por clúster T Typo d di de disco Sectores Totales D d Donde encontrar el MFT l MFT Clusters por registro del MFT Número serial del volúmen BPB BPB(2) Introducción a $MFT •Master File Table •Un arreglo plano de registros MFT de longitud fij (típicamente fija (tí i t 1KB). 1KB) •Todo es un archivo en el MFT •NTFS.sys crea la abstracción bt ió folders/tree f ld /t para el usuario final Offset Size Description 0x00B 2 BPS=Bytes per sector 0x00D 1 SPC=Sectors per Cluster 0x030 8 MFT Offset (in Clusters) Ubicando el MFT durante el arranque Master Boot Record (MBR) Partition 1 (Active, System) Partition TableTable Boot Sector Boot Code (15 sectors) \Boot\BCD $MFT \bootmgr \Windows\System32\ Winload.exe Archivos especiales de NTFS (1) Indice Nombre Descripción 0x00 $MFT Master File Table – Un índice de cada archivo 0x01 $MFTMirr Una copia de respaldo de respaldo de los 4 primeros de los 4 primeros registros del MFT del MFT 0x02 $LogFile Archivo de registro transaccional 0x03 $Volume Numero de serie, tiempo de creación, bandera sucia (dirty flag) 0x04 $AttrDef Definiciones de Atributos 0x05 \ Directorio raíz del disco 0x06 $Bitmap El mapa de clusters del volúmen (en uso vs. libre) 0x07 $Boot Arranque (boot record) del volúmen Archivos especiales de NTFS (2) Indice Nombre Descripción 0x08 $BadClus Lista clusters dañados en el volúmen 0x09 $Secure p de seguridad g usados por p el volúmen Descriptores 0x0A $UpCase Tabla de caracteres en mayúsculas usados para cotejar 0x0B $Extend Directorio: $ObjId, $ObjId $Quota, $Quota $Reparse, $Reparse $UsnJrnl 0x0C-0x0F <Unused> Marcado como en uso pero vacío A Any $ObjId Id tifi d único Identificador ú i dado d d a cada d archivo hi Any $Quota Información de cuota Nota: Detalles específicos de NT4/2000 omitidos por claridad Archivos especiales de NTFS (3) Indice Nombre Descripción Any $Reparse Información de Punto de Reparse Any $UsnJrnl Journalling Legible >16 A_File Un archivo ordinario (pero, típicamente >24) >16 A_Dir Un directorio ordinario (p (pero,, típicamente p >24)) … … … Nota: Detalles específicos de NT4/2000 omitidos por claridad Registros de MFT MFT Record “FILE” Header Attributes $STANDARD_INFORMATION $FILE_NAME $ $DATA Offset Size Description 0x04 2 Offset to the Update Sequence 0x06 2 Size of the Update Sequence&Array 0x08 8 $LogFile Seq. Number 0x10 2 Sequence Number 0x12 2 Hard link Count 0x14 2 Offset to First Attribute 0x16 2 Flags (InUse, Directory) 0x18 4 Size of record 0x1C 4 Allocated Size (i.e. MFT record size) 0x20 8 Base Record reference 0x28 2 Reserved 0x2A 0x2C 4‐2 This record s reference number $STANDARD_INFORMATION Offset Size Description 0x00 8 C Time - File Creation 0x08 8 A Time - File Altered 0x10 8 M Time - MFT Changed 0x18 8 R Time - File Read 0x20 4 DOS File Permissions 0x24 4 Maximum Number of Versions 0x28 4 Version Number 0x2C 4 Class Id 0x30 4 Owner Id 0x34 4 Securityy Id 0x38 8 Quota Charged 0x40 8 Update Sequence Number (USN) $FILE_NAME Offset Size Description 0x00 8 File reference to the parent directory. 0x08 8 C Time ‐ File Creation 0x10 8 A Time ‐ File Altered 0x18 8 M Time ‐ MFT Changed M Time MFT Changed 0x20 8 R Time ‐ File Read 0x28 8 Allocated size of the file 0x30 8 Real size of the file 0x38 4 Flags, e.g. Posix, Dos, Win32 0x3C 4 reserved 0x40 1 Filename length in characters (L) 0x41 1 Filename starts here Atributos residentes/No residentes MFT Record 0 d Resident Attributes: Data is inside the record Record 1 Attributes Data Non Resident Attributes: Data is D t i on disk di k outside t id of MFT f MFT Record N Data Runs of Attrs Data Runs of Attrs Attributes Data Encabezado de Atributos Residentes MFT Attribute Header Attribute’s specifics Offset Size Description 0x00 4 Attribute Type Code 0x04 4 Length (incl Header) Length (incl. 0x08 1 Form Code (Resident/NonResident) 0x09 1 be 0)) Name Length (can g ( 0x0A 2 Offset to the Name 0x0C 2 Flags (Compressed, Encryted,Sparse) 0x0E 2 AttributeID 0x10 4 Attribute s length 0x14 2 Offset to attribute 0x16 1 Indexed flag Encabezado de Atributos no Residentes MFT Attribute Header Att ib t ’ d t Attribute’s data runs Offset Size Description 0x00 4 Attribute Type Code 0x04 4 Length (incl. (incl Header) 0x08 1 Form Code (Resident/NonResident) 0x09 1 Name Length g ((can be 0)) 0x0A 2 Offset to the Name 0x0C 2 Flags (Compressed, Encryted,Sparse) 0x0E 2 AttributeID 0x10 8 Starting VCN 0x18 8 Last VCN 0x20 2 Offset to DataRuns …. $DATA (Residente) Los datos Los datos son el atributo son el atributo El tamaño de los datos son el tamaño del atributo $DATA (No Residente) Las formas no residentes de $Data son típicas de atributos no residentes. no residentes Los datos son la suma de los data runs L D t R Los Data Runs son almacenados l d de manera d comprimida Offset (in nibble) Offset (in nibble) Size (in nibble) Size (in nibble) Description 0 1 F=Size of the Offset field 1 1 L=Size of the Length field 2 2*L Length 2+2*L 2*F Offset to the beginning of previous Run (signed) Data Runs MFT Record “FILE” Header Attributes Data stored Data stored in disk in disk clusters clusters Hello World 1!!! Hello World 2!!! Hello World 3!!! …….. $STANDARD_INFORMATION $FILE_NAME $DATA Hello World 7!!! Hello World 7!!! Hello World 8!!! Hello World 9!!! …….. Data Run #1 Data Run #2 Data Run #3 Hello World 4!!! Hello World 5!!! Hello World 6!!! ll ld !!! …….. Data Runs 21 20 ED 05 22 48 07 48 22 21 28 C8 DB Sizeof Length Sizeof Length Sizeof Length Sizeof Offset Sizeof Offset Sizeof Offset Run # Size of Run Offset to Previous 1st Cluster of Cluster 1 0x0020 +0x05ED 0x0000+0x05ED = 0x05ED 2 0x0748 +0x2248 0x05ED+0x2248 = 0x2835 3 0x0028 +0xDBC8 0x2835+0xDBC8 = 0x03FD USN Journal •Metadatos (relacionados con el MFT) actualizados en orden •Con estampillas de tiempo (timestamps)! •Tracks: k –Creación –Borrado –Truncado –Cierre de Handles –Otros… USN Journal #2 •Habilitados por defecto desde Windows Vista ((desabilitados p por defecto en 2000/XP/2003) / / ) •Pueden ser habilitados ser habilitados desde Windows 2000 Windows 2000 usando: f til usn createjournal fsutil t j l m=1000 a=100 C: 1000 100 C Shape Stock MFT Attribute MFT Record “FILE” Header Attributes $STANDARD_INFORMATION $DATA Header $INDEX_ALLOCATION Attribute’s specifics $OBJECT_ID $FILE_NAME $ATTRIBUTE LIST $ATTRIBUTE_LIST $ATTRIBUTE_LIST ¿Preguntas?