NTFS – główne atrybuty

Jeżeli ktoś śledzi moje artykuły od początki, a przynajmniej od początku systemów plików to zauważył że w przypadku organizacji danych na dysku mamy do czynienia z wielokrotnym zagnieżdżeniem w sobie kolejnych struktur.

Przyjrzyjmy się NTFS. Wszystko zaczyna się od MBR lub GPT, które definiują partycje. Na partycjach zagnieżdżony jest NTFS. NTFS zawiera MFT (Master File Table), która z kolei zawiera rekordy MFT dla każdego pliku.  Kaidy rekord MFT z kolei składa się z kilkunastu atrybutów, atrybuty zaś mogą mieć swoją własną strukturę, czasami również zagnieżdżoną.

Powyższy wstęp to jedno akapitowe streszczenie poprzednich artykułów przygotowujące do omówienia kilku najważniejszych atrybutów:

  • $STANDARD_INFORMATION ($SI)
  • $FILE_NAME ($FN)
  • $DATA

$SI – atrybut ten zawiera podstawowe informacje o pliku takie jak:

  •  znaczniki czasowe (czas utworzenia, ostatniego zapisu, dostępu i ostatniej zmiany rekordu $MFT).
  • Flagi – czyli informacje czy plik jest tylko do odczytu, ukryty, systemowy, przeznaczony do archiwizacji itp Flag jest ponad dziesięć.
  • Informacje dotyczące ile quoty dyskowej używa plik (o ile limity przestrzeni dyskowej zostały ustawione).
  • Identyfikator pliku.
  • Właściciel pliku
  • Kilka innych dodatkowych informacji.

Na przykład Autopsy 4.0  odnalazł następujące informacje w $SI:

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 270  (S-1-5-18)
Created:	2014-07-09 14:39:12.252905300 (BST)
File Modified:	2010-03-10 14:23:54.000000000 (GMT)
MFT Modified:	2015-12-01 16:52:34.046058100 (GMT)
Accessed:	2016-01-27 08:45:05.897414000 (GMT)

$FN – jak sama nazwa wskazuje odpowiedzialny jest za nazwę pliku. I tutaj niespodzianka. Niespodzianka, którą większość flagowego oprogramowania do informatyki śledczej, poza może Xwaysem stara się ignorować za wszelką cenę.  Chodzi tutaj mianowicie o kolejny zestaw znaczników czasowych. A atrybucie $FN znajdziemy mianowicie taki sam zestaw znaczników co w w $SI – czas utworzenia, ostatniego zapisu, dostępu i ostatniej zmiany rekordu $MFT (created, modified, last accessed, record changed). Znaczniki w $FN zapisywane są niezależnie od $SI dlatego czasy często różnią się między sobą. Ma to duże znaczenie w przypadku analizy, w której podejrzewamy manipulację czasem.

Wracając do atrybutu $FN, posiada on następujące dane:

  • Już wymienione znaczniki czasowe (czas utworzenia, ostatniego zapisu, dostępu i ostatniej zmiany rekordu $MFT).
  • Referencję do nadrzędnego folderu.
  • Rzeczywisty i za-alokowany rozmiar pliku (zwykle nieprawidłowe).
  • Flagi – takie same jak w $SI.
  • Długość nazwy pliku, wliczając rozszerzenie i … kropkę.
  • Nazwa pliku.
  • Kodowanie nazwy pliku – POSIX, WIn32, DOS, WIn32 & DOS.

Systemy Windows ciągle starają się być kompatybilne z DOS-em, a w szczególności z nazewnictwem plików stosowanym w tym systemie. 8+3 to magiczna zasada dla nazewnictwa w DOS-ie – 8 to długość nazwy a trzy rozszerzenia. Aby zachować kompatybilność, rekord pliku w MFT będzie zawierać po prostu dwa atrybuty $FN. Jeden w formacie Win32 a jeden DOS. Widać tutaj jak skalowalny jest NTFS. Jeżeli nazwa pliku jest w oryginale zgodna z DOS-em i dwa atrybuty nie są potrzebne, atrybut będzie zapisany jako Win32 & DOS.

Autopsy 4.0 odnalazł następujące informacje w $FN:

$FILE_NAME Attribute Values:
Flags: Archive
Name: index.php
Parent MFT Entry: 5951 	Sequence: 214
Allocated Size: 440   	Actual Size: 435
Created:	2015-05-04 07:35:28.784686300 (BST)
File Modified:	2015-05-04 07:35:29.370719800 (BST)
MFT Modified:	2015-05-04 07:35:29.370719800 (BST)
Accessed:	2015-05-04 07:35:28.784686300 (BST)

Tytułem wyjaśnienia wskaże, że flagowe oprogramowanie informatyki śledczej – Ecnase, FTK, Xways, nie dają nam możliwości bezpośredniego przejrzenia zawartości atrybutów. Możemy oczywiście przeanalizować je w edytorze szesnastkowym, ale to już zupełnie ręczna robota. Oprogramowanie tego typu przetworzy zawartość MFT i to co co uzna za słuszne skopiuje do swojej bazy danych. Właśnie zawartość tej bazy danych, informatyk śledczy będzie przeglądał, filtrował i analizował. Jeżeli program nie obsługuje w pełni lub w ogóle danego atrybutu to jego zawartości tam nie zobaczymy. Należy więc pamiętać, że oprogramowanie do informatyki śledczej to jedynie narzędzie. Informatyk śledczy powinien w pełni rozumieć co to narzędzie robi i skąd się biorą dane wyświetlane na interfejsie. Jeżeli wiedza informatyka śledczego wskazuje, że istotne dane znajdują się w strukturach danych nieobsługiwanych przez dane oprogramowanie, należy użyć innego oprogramowania, lub do danych dokopać się ręcznie.

Autopsy z kolei wyświetla zawartość atrybutów, a to dlatego, że oparte jest ono na oprogramowaniu Sleuth Kit, które jest chyba najlepszym narzędziem do ręcznej analizy systemów plików.

Kolejnym atrybutem, który warto znać to $DATA. Zawiera on zawartość danego pliku. Dla plików poniżej 700 B jest on zwykle rezydentny i zawartość pliku zapisana jest bezpośrednio w rekordzie MFT. Większe pliki, które nie mieszczą się w rekordzie MFT zapisywane są na dysku w klastrach. W rekordzie MFT w takim wypadku zapisywane są numery klastrów w których znajduje się plik.

Autopsy pokazuje to w ten sposób:

Type: $DATA (128-3)   Name: N/A   Non-Resident   size: 34573  init_size: 34573
4241996 4241997 4241998 4241999 4242000 4242001 4242002 4242003 
4242004

Liczby na  końcu to numery klastrów. Jak widać ten plik nie jest sfragmentowany.

Ciekawostką jest, że plik może posiadać kilka atrybutów $DATA. W takim wypadku do czynienia mamy z Alternate Data Streams (ADS). Pierwszy stream będzie domyślną zawartością pliku, a drugi ukrytą – Windows nam jej nie pokaże.

Aby szybko stworzyć ADS w wierszu poleceń należy wpisać na przykład następne komendy

>notepad test.txt

(w notatniku wpisać cokolwiek, zapisać i zamknąć)

>notepad test.txt:ukryty_ads.txt

(w notatniku wpisać cokolwiek, zapisać i zamknąć)

Plik test.txt będzie miał teraz dwie alternatywne zawartości ($DATA streams):

  • test.txt
  • test.txt:ukryty_ads.txt

Jak widać ADS-y adresuje się w linii poleceń znakiem dwukropka.

Aby zobaczyć ADS-y w lini poleceń w nowych wersjach Windows używamy:

dir /R

Oprogramowanie do informatyki śledczej uznaje wykrywanie ADS-ów za punkt honoru, dlatego ADS-y będą w większości przypadków obsługiwane i z punktu widzenia hakera nie jest to najlepszy sposób na ukrycie danych. Zostaną one odkryte przy pierwszej profesjonalnej analizie.