Análisis Forense de Volúmenes NTFS

Anuncio
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?
Descargar