análisis forense de volúmenes ntfsacistente.acis.org.co/typo43/fileadmin/base_de... · 2011. 6....
TRANSCRIPT
-
Análisis Forense de Volúmenes NTFS
Roberto Arbeláez, M.Sc, CISSP, CISA, PMPSecurity Program Manager for Latin America
CSS SecurityMicrosoft Corp.
-
Terminología
Bit
B t
• PáginaBlByte
Sector
• Bloque • Bloque lógico
Cluster
Volúmen
• Cluster LógicoVolúmen
Partición
-
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ógicosLos clusters virtuales representan clusters
contíguos para archivos, aunque físicamente g p , qpuedan estar fragmentados (existen en el
contexto de la memoria))
-
Componentes esenciales de un DriveCo po e tes ese c a es de u 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)BIOS)
MFT (Master File Table)
-
Versiones de NTFS
1 0 NT 3 1v1.0, con NT 3.1
v1.1, con NT 3.5
v1.2, com NT 3.51
v3.0, con Windows 2000
3 1 d Wi d XP Wi d 7v3.1 de Windows XP a Windows 7
-
Un sistema de archivos con muchas característicascaracterísticas
•Data Streams alternos•Sparse Filesp•Reparse Points•Hard Links•Volume Shadow Copy•Compresión de archivos•Encripción de Archivos•Sistema de Archivos Transaccional (Vista y posteriores)posteriores)•Journaling
-
¿Qué existe en el bloque Cero?Depende
Disco FísicoDisco FísicoMBR, incluyendo Master Boot Code y la Tabla de Partición
Disco LógicoDebe existir un Sector de Arranque para poder «montar» el volúmen
El sector de arranque contiene el BPB (BIOS ParameterBlock) 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 i ió d D i NTFSOrganización de un Drive NTFS
-
MBR
-
MBR (2)MBR (2)
-
Tabla de Particiones16 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úmenConocido como «boot sector»
-
Registro de Arranque del Volúmen
-
Registro de Arranque del Volúmen en WinHexWinHex
-
Bloque de Parámetros del BIOS (BPB)Define metadatos sobre el volúmen
Bytes opor sectorBytes opor sector
Sectores por clúster
T d diTypo de disco
Sectores Totales
D d l MFTDonde encontrar el 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 longitudfij (tí i t 1KB)
Offset Size Description
fija (típicamente 1KB).•Todo es un archivo en el MFT
0x00B 2 BPS=Bytes per sector
0x00D 1 SPC=Sectors per MFT•NTFS.sys crea la b t ió f ld /t
Cluster
0x030 8 MFT Offset (in Clusters)
abstracción folders/tree para el usuario final
-
Ubicando el MFT durante el arranqueMaster Boot
Record (MBR)Partition 1
(Active, System)
Partition TableTable
Boot Sector \Boot\BCD\Windows\System32\
Winload.exe
Boot Code (15 sectors) \bootmgr$MFT
-
Archivos especiales de NTFS (1)Indice Nombre DescripciónIndice Nombre Descripción
0x00 $MFT Master File Table – Un índice de cada archivo
0x01 $MFTMirr Una copia de respaldo de los 4 primeros registros del MFT0x01 $MFTMirr Una copia de respaldo de los 4 primeros registros 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 Descriptores de seguridad usados por el volúmenp g p
0x0A $UpCase Tabla de caracteres en mayúsculas usados para cotejar
0x0B $Extend Directorio: $ObjId $Quota $Reparse $UsnJrnl0x0B $Extend Directorio: $ObjId, $Quota, $Reparse, $UsnJrnl
0x0C-0x0F Marcado como en uso pero vacío
A $ObjId Id tifi d ú i d d d hiAny $ObjId Identificador único dado a cada archivo
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 (pero, típicamente >24)_ (p , p )
… … …
Nota: Detalles específicos de NT4/2000 omitidos por claridad
-
Registros de MFTOffset Size Description
0x04 2 Offset to the Update Sequence
0x06 2 Size of the Update Sequence&Array
0x08 8 $LogFile Seq. Number
MFT Record“FILE”“FILE”
Header0x10 2 Sequence Number
0x12 2 Hard link Count
Header
Attributes
0x14 2 Offset to First Attribute
0x16 2 Flags (InUse, Directory)
0x18 4 Size of record
$STANDARD_INFORMATION
$FILE NAME
0x1C 4 Allocated Size (i.e. MFT record size)
0x20 8 Base Record reference
0x28 2 Reserved
$ _
$DATA
0x2A0x2C
4‐2 This record s reference number
-
$STANDARD_INFORMATIONOffset Size Description
0x00 8 C Time - File Creation0x08 8 A Time - File Altered0x10 8 M Time - MFT Changed0x18 8 R Time - File Read0x20 4 DOS File Permissions0x20 4 DOS File Permissions0x24 4 Maximum Number of Versions0x28 4 Version Number0x2C 4 Class Id0x30 4 Owner Id0x34 4 Security Idy0x38 8 Quota Charged0x40 8 Update Sequence Number (USN)
-
$FILE_NAMEOffset 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 Changed0x18 8 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 residentesMFT
dResident Attributes:
Record 0
Record 1Attributes Data
Data is inside the record
Non Resident Attributes: D t i di k t id f MFT
Record NData Runs of Attrs Attributes Data
Data is on disk outside of MFT
Data Runs of Attrs Attributes Data
-
Encabezado de Atributos ResidentesOffset Size Description
MFT Attribute
Header
Offset Size Description
0x00 4 Attribute Type Code
0x04 4 Length (incl Header)Header 0x04 4 Length (incl. Header)
0x08 1 Form Code (Resident/NonResident)
0x09 1 Name Length (can be 0)
Attribute’s specifics
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 ResidentesOffset Size Description
MFT Attribute
Offset Size Description
0x00 4 Attribute Type Code
0x04 4 Length (incl Header)Header
0x04 4 Length (incl. Header)
0x08 1 Form Code (Resident/NonResident)
0x09 1 Name Length (can be 0)
Att ib t ’ d t
g ( )
0x0A 2 Offset to the Name
0x0C 2 Flags (Compressed, Encryted,Sparse)Attribute’s data runs
0x0E 2 AttributeID
0x10 8 Starting VCN
0x18 8 Last VCN
0x20 2 Offset to DataRuns ….
-
$DATA (Residente)
Los datos son el atributoLos datos son el atributo
El tamaño de los datos son el tamaño del atributoatributo
-
$DATA (No Residente)Las formas no residentes de $Data son típicas de
atributos no residentesatributos no residentes.
Los datos son la suma de los data runs
L D t R l d dLos Data Runs son almacenados de maneracomprimida
Offset (in nibble) Size (in nibble) DescriptionOffset (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 stored in disk clusters
Data RunsData stored in disk clusters
MFT Record“FILE”“FILE”
Header
Hello World 1!!!Hello World 2!!!
Header
Attributes$STANDARD_INFORMATION
……..Hello World 3!!!……..
Hello World 7!!!
$DATA
$FILE_NAME
……..
Hello World 7!!!Hello World 8!!!Hello World 9!!!……..
Data Run #1
Data Run #2
Data Run #3
Hello World 4!!!Hello World 5!!!
ll ld !!!……..Hello World 6!!!……..
-
Data Runs
21 20 ED 05 22 48 07 48 22 21 28 C8 DB
Sizeof Length Sizeof Length Sizeof Length
21 20 ED 05 22 48 07 48 22 21 28 C8 DB
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) actualizadosen orden•Con estampillas de tiempo (timestamps)!
k•Tracks:–Creación–Borrado–Borrado–Truncado–Cierre de Handles–Otros…
-
USN Journal #2•Habilitados por defecto desde Windows Vista (desabilitados por defecto en 2000/XP/2003)( p / / )
•Pueden ser habilitados desde Windows 2000•Pueden ser habilitados desde Windows 2000 usando:
f til t j l 1000 100 Cfsutil usn createjournal m=1000 a=100 C:
-
Shape StockMFT Record
“FILE”“FILE”
Header$DATA
MFT Attribute
HeaderHeader
Attributes$STANDARD_INFORMATION
$INDEX_ALLOCATION
$OBJECT_ID
Attribute’s specifics
$ATTRIBUTE LIST
$FILE_NAME
$ATTRIBUTE_LIST
$ATTRIBUTE_LIST
-
¿Preguntas?