40
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]

Análisis Forense de Volúmenes NTFSacistente.acis.org.co/typo43/fileadmin/Base_de... · 2011. 6. 14. · Bloques estructurales de NTFS •Bits •Bytes •Sector: El contenedor más

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • Análisis Forense de Volúmenes NTFS

    Roberto Arbeláez, M.Sc, CISSP, CISA, PMPSecurity Program Manager for Latin America

    CSS SecurityMicrosoft Corp.

    [email protected]

  • 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?