Компьютерден файлдың жойылуы үнемі ол туралы ақпараттың толық жойылғанын білдірмейді. Файлдық жүйеде оның атауы, орналасуы, уақыт белгілері және басқа да қызметтік мәліметтер сақталуы мүмкін. Осыған сүйене отырып, мамандар бұған дейін құрылғыда қандай файлдар болғанын және олармен қандай іс-әрекеттер орындалғанын анықтай алады.
Мұндай деректер компьютерлік инциденттерді талдау, жойылған объектілерді қалпына келтіру мен цифрлық іздерді зерттеу кезінде маңызды ақпарат көзі болып табылады.
Мемлекеттік техникалық қызметтің Зиянды кодты зерттеу орталығының қызметкерлері Windows операциялық жүйелерінде файлдық деректерді сақтау механизмдерін зерттеу жөніндегі жұмысты жүргізу. Зерттеу барысында MFT файлдық кестесінің құрылымы мен мазмұны, сондай-ақ файлдар жойылғаннан кейін ақпаратты сақтау ерекшеліктері қаралды.
MFT (Master File Table) файлдық кестесі Windows операциялық жүйелерінде әдеттегідей пайдаланылатын NTFS файлдық жүйесінің негізгі құрылымы болып табылады. Дискідегі барлық файлдар мен папкалар туралы ақпарат MFT-те сақталады. Әрбір объект үшін жеке жазба жасалады, әр жазбада файл туралы негізгі мәліметтер қамтылады. Файл жойылғаннан кейін оның жазбасы біраз уақыт MFT-те қалып, бұл жойылған деректерді қалпына келтіруге мүмкіндік береді.
MFT жазбасы бірнеше атрибуттардан тұрады. Алдымен Header (FILE Record Signature) орналасады, одан кейін $STANDARD_INFORMATION (0x10) атрибуты, ол қол жеткізу құқықтарын қоса алғанда, уақыт белгілері мен файлдың атрибуттарын қамтиды. $FILE_NAME (0x30) атрибуты файлдың немесе каталогтың атауын, сондай-ақ негізгі каталогқа сілтемені сақтайды. $DATA (0x80) атрибуты файлдың деректерін немесе дискінің олар орналасқан аймаққа сілтемелерді қамтиды. Егер файлдың көлемі 700 байттан кем болса, оның деректері тікелей MFT жазбасында сақталуы мүмкін.

1-сурет. NTFS-тегі MFT жазбасының құрылымы
MFT жазбасының құрылымы
Әрбір атрибут екі бөліктен тұрады: тақырыбы (Header) және мазмұны (Content). Тақырыптың құрылымы барлық атрибуттар үшін бірдей және онда атрибут типі, оның көлемі мен атауы туралы ақпарат болады. Мазмұны атрибут типіне байланысты және көлемі әртүрлі болады.
Атрибуттардың деректері NTFS-те екі тәсілмен сақталуы мүмкін. Резидентті атрибут (resident attribute) өзінің тақырыбымен бірге тікелей MFT жазбасында сақталады. Мұндай тәсіл тек қана шағын атрибуттар үшін қолайлы. Резидентті емес атрибут (non-resident attribute) MFT жазбасынан тыс дискінің кластерлерінде сақталады. Егер атрибут резидентті болса, оның деректері тақырыптан кейін бірден орналастырылады. Егер атрибут резидентті болмаса, тақырыпта оның деректері дискінің қай жерінде орналасқаны туралы ақпаратты қамтиды.
FTK Imager-дегі $MFT файлының талдауы

2-сурет. FTK Imager-дегі NTFS бейнесі
2-суреттегі FTK Imager-де NTFS файлдық жүйесінің бейнесі беріледі. Терезенің сол жақ бөлігінде дәлелдер дарағы (Evidence Tree) бейнеленіп, дискінің бейнесі, NTFS бөлімі, сондай-ақ оның негізгі элементтері көрсетілген. Сол жақ төменгі бөлігінде томның негізгі ерекшеліктері, соның ішінде томды бірегей сәйкестендіру үшін пайдаланылатын оның сериялық нөмірі (Volume Serial Number) беріледі, ал оң жақта файлдық жүйенің типін растайтын NTFS сигнатурасы он алты санмен белгіленіп бөлінген.

3-сурет. FTK Imager-дегі $MFT файлы
3-суретте NTFS файлдық жүйесінің негізгі каталогында $MFT файлының орналасуы көрсетіледі. Evidence Tree терезесінде томның ([root]) NTFS жүйелік файлдары орналасқан негізгі каталогына өту бейнеленеді. Файлдар тізімінде $MFT файлы беріледі, ерекшеліктер панелінде оның негізгі сипаттамалары, соның ішінде объектінің типі, файлдың көлемі және дискідегі файлды сақтаудың басталу орнын анықтайтын бастапқы кластердің (Start Cluster) нөмірі келтіріледі.

4-сурет. Он алты санмен белгіленген MFT жазбасы
4-суретте он алты санмен белгіленген MFT жазбасы беріледі. Жазбаның басында 46 49 4C 45 байттарының реттілігі көрсетілген, ол ASCII-де FILE жолына сәйкес келеді және MFT жазбасының сигнатурасы болып табылады. Жазбаның соңында MFT жазбасының аяқталғанын білдіретін FF FF FF FF
реттілігі белгіленген. Windows заманауи нұсқаларында MFT жазбасынан тасымалдағаннан кейін файлдың мазмұны жазбаның бос аймағында сақталмайды. Оның орнына бос кеңістік нөлдік байттармен (\x00) толықтырылады.
MFT қалдық деректерін талдау
Әрбір MFT жазбасының көлемі белгіленген 1024 байттан тұрады. Онда файл немесе каталог туралы мәліметтер сақталады. Егер каталогтың деректері шағын болса, олар нақты MFT жазбасында сақталады. Ақпараттың көлемі ұлғайып, сыймаған кезде деректер дискідегі басқа орынға тасымалданады, ал MFT жазбасында олардың орналасқан орнына сілтеме қалады. Файлдар жойылғаннан кейін немесе ақпарат каталогтан тасымалданғаннан кейін қызметтік деректердің бір бөлігі MFT жазбасының MFT Slack Space деп аталатын бос аймағында қалуы мүмкін. Бұл аймақта файлдардың атаулары, олардың орналасуы және басқа да метадеректер туралы мәліметтер сақталуы ықтимал. Осы деректер файлдың өзі жайылған болса да, файлдың бұған дейін жүйеде болғанын және белгілі бір каталогта орналасқанын анықтауға мүмкіндік береді.

5-сурет. Зерттелетін test каталогы
MFT қалдық деректерін зерттеу үшін үш файлды: 1a.txt, 2a.txt және 3a.txt қамтитын test каталогы құрылды (5-сурет). Каталог шағын болғандықтан, оның мазмұны туралы ақпарат MFT жазбасының $INDEX_ROOT атрибутының өзінде сақталады. 6-суретте файлдардың негізгі метадеректері қамтылған индекстік жазбалары, сондай-ақ FF FF FF FF индекстік жазабалары тізімінің аяқталу сигнатурасы көрсетілген.

6-сурет. 3a.txt. файлы жойылғанға дейінгі MFT жазбасы

7-сурет. 3a.txt. файлы жойылғаннан кейінгі MFT жазбасы
3a.txt файлы жойылғаннан кейін 7-суреттегі test каталогының MFT жазбасы қайтадан зерттелді. Талдау $INDEX_ROOT атрибутының қызметтік парольдері өзгергенін көрсетті, бұл каталог индексінің құрылымы жаңарғанын дәлелдейді. Бұл ретте 3a.txt файлының жазбасы MFT жазбасының бинарлы деректерінде ішінара сақталған. FF FF FF FF индекстік жазабаларының аяқталу сигнатуралары арасында жойылған файл метадеректерінің бөлігін қамтитын қалдық деректер сақталып қалады (MFT Slack).
MFTECmd көмегімен MFT талдау

8-сурет. MFTECmd-дегі MFT жазбасы
$MFT файлына талдау жүргізу үшін MFTECmd утилитасы пайдаланылды. 8-суретте $MFT файлына сәйкес келетін 0 деген жазба көрсетілген. Flags өрісіндегі InUse мәні жазбаны файлдық жүйе пайдаланатынын білдіреді. IsFree мәні жазба бос, ал файл немесе каталог жойылғанын білдірер еді, бірақ оның метадеректері әлі де сақталуы мүмкін. $MFT файлына ол NTFS жасырын жүйелік файлы болып табылатынын және дискінің мазмұнын әдеттегідей қараған кезде пайдаланушыға бейнеленбейтінін көрсететін Hidden, System атрибуттары белгіленген. Сонымен қатар, $MFT жүйелік файлы туралы негізгі мәліметтерді қамтитын STANDARD_INFO және FILE_NAME атрибуттары бейнеленеді.
$STANDARD_INFORMATION атрибутында төрт уақыт белгісі сақталады. Олар MAC(B)-уақыт белгілері деп аталады:
- Modified (Modified) – файлдың мазмұнын соңғы өзгерту уақыты. Құжатты сақтаған кезде бұл мән жаңартылады. Файлдың атауын өзгерткен немесе файлдың орнын ауыстырған кезде ол өзгермейді.
- Accessed (Last Accessed) – файлға соңғы жүгіну уақыты. Ол файлды ашқан немесе оқыған кезде өзгереді. Windows заманауи нұсқаларында бұл белгіні жаңарту жиі жағдайларда ажыратылған, сондықтан ол үнемі дәл бола бермейді.
- Changed (Record Modified) – MFT жазбасын соңғы өзгерту уақыты. Бұл белгі файлдың қол жеткізу құқықтары, атрибуттары немесе қатқыл сілтемелердің саны сияқты метадеректері өзгерген кезде жаңартылады. Ол файлды құру уақыты болып табылмайды.
- Birth (Created) – осы NTFS томында файлды құру уақыты. Файлды көшіру кезінде бұл бастапқы файл құрылған күнін емес, көшіру уақытын бейнелейді.
Birth уақыты барлық файлдық жүйелерде сақтала бермейді. Бұл белгі NTFS-те ғана бар. NTFS-тегі әрбір файл сегіз уақыт белгісін қамтиды. Оның төртеуі $STANDARD_INFORMATION атрибутында, төртеуі $FILE_NAME атрибутында.

9-сурет. MFTECmd-дегі MFT жазбасы
9-суретте $MFT файлының DATA атрибуты көрсетілген. Resident мәні: False файлдың мазмұны нақты MFT жазбасында сақталмай, дискінің жеке кластерлерінде орналастырылғанын көрсетеді. Олардың орналасуы файлдың деректерін сақтау үшін бөлінген кластерлердің қозғалуы мен саны көрсетілген NTFS Data Runs (DataRuns Entries) тізімімен анықталады. Бірнеше Data Runs жазбаларының болуы файлдың деректері дискінің бірнеше аймағы бойынша бөлінгенін дәлелдейді.

10-сурет. Timeline Explorer-дегі MFT уақыт белгілері
10-суретте Timeline Explorer қаралады, мұнда әрбір уақыт белгісі үшін екі баған бейнеленеді: Created, Last Modified, Last Record Change және Last Access. 0x10 болып аяқталатын бағандар $STANDARD_INFORMATION атрибутынан алынған мәндерді, ал 0x30 болып аяқталатын бағандар $FILE_NAME атрибутынан алынған мәндерді қамтиды. $STANDARD_INFORMATION уақыт белгілері Windows API арқылы қолжетімді және, мәселен, Windows өткізгішінде, бейнеленеді. $FILE_NAME уақыт белгілері Windows құралдарымен тікелей бейнеленбейді және әдетте NTFS файлдық жүйесі оларды өзі пайдаланады. 0x30 бағандарының бөлігі бос болып қалады. Бұл $FILE_NAME атрибутындағы уақыт белгісінің мәні $STANDARD_INFORMATION (0x10) тиісті бағанындағы мәнге сәйкес келетінін білдіреді. Егер олардың арасында айырмашылық болса, бұл уақыт белгілерінің өзгергенін (timestomping) көрсетуі мүмкін. Алайда мұндай айырмашылықтардың өздері уақыттың өзгеруінің дәлелі болып табылмайды, себебі олар Windows әдеттегі жұмысы кезінде де пайда болуы мүмкін.
Қорытынды
MFT файлдық кестесін қарау барысында оның құрылымы, NTFS жазбаларының негізгі атрибуттары мен файлдардың метадеректерін сақтау ерекшеліктері зерттелді. FTK Imager, MFTECmd және Timeline Explorer пайдалана отырып, жүргізілген практикалық талдау $MFT файлының мазмұнын зерделеуге, файлдарды жойғаннан кейін жазбалардың өзгерістерін байқауға және MFT Slack Space аймағында қалдық деректердің сақталуын анықтауға мүмкіндік берді. Осымен, талдау MFT файлдар, каталогтар және файлдық жүйенің оқиғалары туралы маңызды ақпарат көзі болып табылатынын, сондықтан негізгі зерттеу объектілерінің бірі екенін көрсетті.