Су­щес­тву­ет мно­жес­тво спо­собов вер­нуть утра­чен­ные или уда­лен­ные с накопи­телей фай­лы. В статье мы с тобой осве­жим в памяти теоре­тичес­кие осно­вы вос­ста­нов­ления уда­лен­ной информа­ции в фай­ловой сис­теме NTFS v3.1 и под­робно рас­смот­рим прак­тичес­кий спо­соб руч­ного вос­ста­нов­ления фай­лов с исполь­зовани­ем PowerShell.

info

Хо­чу отдать дол­жное Кри­су Кас­пер­ски за его тру­ды на эту тему и под­робное опи­сание теории и прак­тики в кни­ге «Вос­ста­нов­ление дан­ных. Прак­тичес­кое руководс­тво», а заод­но поб­лагода­рить Ва­лен­тина Хол­могоро­ва и Ксе­нию Кирило­ву за обновле­ние и пере­изда­ние кни­ги в 2021 году.

Се­год­ня соз­дано пре­дос­таточ­но прог­рам­мных решений для вос­ста­нов­ления уда­лен­ных фай­лов с раз­личных фай­ловых сис­тем. Одна­ко, если переф­разиро­вать извес­тное изре­чение, прак­тика без теории мер­тва: что­бы мак­сималь­но эффектив­но исполь­зовать инс­тру­мен­ты, нуж­но понимать, как они работа­ют. Если перед спе­циалис­том сто­ит задача не прос­то вер­нуть утра­чен­ные фай­лы, а разоб­рать­ся в при­чинах инци­ден­та, зна­ния об устрой­стве фай­ловых сис­тем прос­то необ­ходимы.

 

Теория

Под­робно рас­смат­ривать струк­туру NTFS я не вижу смыс­ла, опи­сание мож­но най­ти в кни­ге Кри­са «Вос­ста­нов­ление дан­ных. Прак­тичес­кое руководс­тво» и статье «Фай­ловая сис­тема NTFS извне и изнутри» (в двух час­тях). Одна­ко, что­бы наши дей­ствия при вос­ста­нов­лении фай­лов были осмыслен­ными, нам все же при­дет­ся осве­жить в памяти некото­рые клю­чевые осо­бен­ности фай­ловой сис­темы NTFS 3.1, а заод­но вспом­нить, как хра­нят­ся и уда­ляют­ся фай­лы.

warning

Не хра­ни важ­ные фай­лы на одном томе с опе­раци­онной сис­темой (обыч­но это диск С): на этом томе в NTFS чаще все­го про­исхо­дят изме­нения даже без пря­мого учас­тия поль­зовате­ля, что может пов­лиять на вос­ста­нов­ление утра­чен­ной информа­ции. Дан­ные пос­ле уда­ления на этом дис­ковом раз­деле могут быть переза­писа­ны сис­темны­ми фай­лами.

В фай­ловой сис­теме NTFS работа­ет прин­цип «все есть файл». Файл же име­ет опре­делен­ный набор атри­бутов. Мы не будем раз­бирать все атри­буты фай­лов, зат­ронем толь­ко самые важ­ные: $STANDARD_INFO, $FILE_NAME, $DATA.

В атри­бутах $STANDARD_INFO и $FILE_NAME записа­ны мет­ки вре­мени, под­робнее о них мы погово­рим поз­же, а в атри­буте $DATA хра­нит­ся содер­жимое резиден­тно­го фай­ла. В слу­чае с нерези­ден­тны­ми фай­лами там рас­полага­ются «ссыл­ки» на раз­бро­сан­ное по сек­торам содер­жимое фай­ла, называ­емое data runs или отрезка­ми. Отрезки пред­став­ляют собой пос­ледова­тель­ность клас­теров, которые хра­нят содер­жимое нерези­ден­тно­го фай­ла, а в качес­тве упо­мяну­тых «ссы­лок» в атри­буте $DATA исполь­зует­ся номер началь­ного клас­тера и количес­тво иду­щих сле­дом клас­теров. Как видишь, матема­тика прос­тая: если файл нерези­ден­тный (боль­ше 720 байт), нам нуж­но най­ти клас­тер, с которо­го он начина­ется, и соб­рать все клас­теры воеди­но в вер­ном поряд­ке, а пос­ле записать содер­жимое клас­теров в новый файл.

Все фай­ловые атри­буты хра­нят­ся в фай­ловой записи (File Record) таб­лицы Master File Table ($mft). Это наиваж­ней­ший слу­жеб­ный файл (отто­го он име­ет резер­вную копию $mftmirr), так как содер­жит в себе информа­цию обо всех фай­лах и дирек­тори­ях на томе. Имея на руках толь­ко файл $mft, мож­но выс­тро­ить хро­ноло­гию свя­зан­ных с фай­лами событий, а в некото­рых слу­чаях — вос­ста­новить фай­лы.

Еще один важ­ный слу­жеб­ный файл — кар­та сво­бод­ного прос­транс­тва $BitMap. С ее помощью отсле­жива­ются все исполь­зуемые и неис­поль­зуемые клас­теры, что, конеч­но же, нап­рямую свя­зано с соз­дани­ем и уда­лени­ем фай­лов или дирек­торий. Клас­тер же в NTFS — минималь­ная еди­ница дис­кового прос­транс­тва, дос­тупно­го для раз­мещения фай­лов и дирек­торий в фай­ловой сис­теме NTFS. По умол­чанию раз­мер клас­тера равен 4096 Kбайт, но при соз­дании тома мож­но задать иной раз­мер.

Про­цесс уда­ления фай­ла под­робно опи­сан в кни­ге Кри­са, так­же информа­цию мож­но най­ти в статье «Раз­гре­баем руины. Как вос­ста­новить уда­лен­ные фай­лы на раз­делах NTFS».

 

Резидентные и нерезидентные файлы атрибуты

Не­кото­рые матери­алы, пос­вящен­ные фай­ловой сис­теме NTFS v3.1, упо­мина­ют о резиден­тных и нерези­ден­тных фай­лах. Резиден­тны­ми фай­лами счи­тают­ся те, раз­мер которых мень­ше или равен 720 байт (это количес­тво бай­тов было получе­но исклю­читель­но опыт­ным путем в NTFS v3.1 в Windows 10, хотя в дру­гих источни­ках читатель может най­ти иную информа­цию о мак­сималь­ном раз­мере резиден­тно­го фай­ла: он варь­иру­ется от 700 байт до 1 Кбайт). Такие фай­лы хра­нят все содер­жимое в $mft (Master File Table), и в этом слу­чае флаг нерези­ден­тнос­ти (Non-resident flag) у них равен 00h. Для нерези­ден­тных фай­лов (стро­го боль­ше 720 байт) флаг Non-resident flag равен 01h.

На самом деле флаг резиден­тнос­ти при­сущ каж­дому атри­буту фай­ла в отдель­нос­ти (в том чис­ле $FN, $SI и дру­гим атри­бутам), а не самому фай­лу как таково­му. Нес­мотря на наличие такого фла­га у каж­дого атри­бута, сущес­тву­ют исклю­читель­но резиден­тные атри­буты, которые хра­нят свои дан­ные толь­ко в фай­ле $mft (нап­ример, $FILE_NAME, $STANDARD_INFO, $VOLUME_NAME). Есть атри­буты, которые могут быть как резиден­тны­ми, так и нерези­ден­тны­ми (это спра­вед­ливо по отно­шению к атри­бутам $DATA, $EA и дру­гим). Наконец, сущес­тву­ют фай­ловые атри­буты, которые хра­нят свои дан­ные исклю­читель­но за пре­дела­ми $mft, то есть явля­ются стро­го нерези­ден­тны­ми ($BITMAP, $REPARSE_POINT, $SECURITY_DESCRIPTOR и про­чие).

 

Время и атрибуты $STANDARD_INFO и $FILE_NAME

При соз­дании фай­ла на томе, переме­щении меж­ду томами и прак­тичес­ки любых манипу­ляци­ях с фай­лами (пере­име­нова­ние, локаль­ное переме­щение, дос­туп внут­ри одно­го тома, изме­нение) у фай­ла изме­няют­ся атри­буты $STANDARD_INFO (далее — $SI) и $FILE_NAME (далее — $FN). В них ука­зано вре­мя, ког­да про­изош­ло дей­ствие с фай­лом.

В сле­дующих таб­лицах показа­но, какие атри­буты фай­лов $SI и $FN меня­ются и при каких дей­стви­ях с фай­лом.

Изменение атрибута $FILE_NAME
Из­менение атри­бута $FILE_NAME
Изменение атрибута $STANDARD_INFO
Из­менение атри­бута $STANDARD_INFO

Здесь

  • Modification — изме­нение атри­бутов $Data и $INDEX;
  • Accessed — обра­щение к содер­жимому фай­ла;
  • Change (MFT) — запись в таб­лицу MFT (не отоб­ража­ется в Windows);
  • BornTime или birthday of file — соз­дание фай­ла.

Важ­но, что при уда­лении через del или erase атри­буты $FILE_NAME и $STANDARD_INFO не изме­няют­ся.

Зная мет­ки вре­мени опре­делен­ных фай­лов и пра­вила изме­нения атри­бутов, спе­циалист по рас­сле­дова­нию инци­ден­тов спо­собен выс­тро­ить вер­ную хро­ноло­гию событий. Вре­мя, в которое про­изош­ли те или иные дей­ствия с фай­лами, при про­веде­нии кри­мина­лис­тичес­кого рас­сле­дова­ния может стать одним из важ­ней­ших арте­фак­тов.

 

Восстановление файлов, удаленных с использованием del или erase

Нас­тало вре­мя прис­тупить к прак­тичес­кой час­ти, что­бы зак­репить теорию и поуп­ражнять­ся в вос­ста­нов­лении уда­лен­ных фай­лов. Но для начала сле­дует выделить два спо­соба уда­ления фай­лов в Windows:

  • уда­ление c исполь­зовани­ем сис­темных ути­лит del (Shift-Del) или erase;
  • уда­ление через кор­зину.

Та­кое раз­деление свя­зано с раз­ницей в механиз­ме уда­ления и некото­рым отли­чием при вос­ста­нов­лении фай­лов.

warning

Ни­ког­да не вос­ста­нав­ливай уда­лен­ные фай­лы на тот же том, с которо­го они были уда­лены. Луч­ше все­го исполь­зовать отдель­ный носитель.

В пер­вую оче­редь раз­берем­ся с вос­ста­нов­лени­ем нерези­ден­тных фай­лов, а даль­ше пос­мотрим, как вос­ста­нав­ливать резиден­тные. Итак, прак­тиковать­ся мы будем с исполь­зовани­ем PowerShell-модуля PowerForensics авторс­тва Джа­реда Эткинсо­на. Этот модуль прост в уста­нов­ке и содер­жит полез­ные коман­дле­ты для работы с фай­ловыми сис­темами NTFS и FAT. Он поз­воля­ет работать с сис­темны­ми фай­лами Windows и пар­сить атри­буты фай­лов NTFS, кон­верти­ровать мет­ки вре­мени из бай­тового пред­став­ления в челове­кочи­таемое (что необ­ходимо в форен­зике). Под­робнее узнать о воз­можнос­тях модуля мож­но из его опи­сания.

Для начала уста­новим этот модуль (нуж­но запус­кать PowerShell от име­ни адми­нис­тра­тора, пос­коль­ку при чте­нии слу­жеб­ных фай­лов тре­буют­ся при­виле­гии локаль­ного адми­нис­тра­тора):

Import-Module PowerForensics

Про­верим, что все прош­ло успешно, для это­го выпол­ним коман­длет

Get-Command - Module PowerForensics
Установка модуля PowerForensics
Ус­танов­ка модуля PowerForensics

Ус­танов­ка модуля завер­шена, теперь давай най­дем все уда­лен­ные фай­лы на томе. В глав­ной фай­ловой таб­лице они име­ют флаг уда­ления 00h по сме­щению 16 байт от начала фай­ловой записи.

Как уже было ска­зано в теоре­тичес­кой час­ти, в Windows пос­тоян­но про­исхо­дят изме­нения, какие‑то фай­лы уда­ляют­ся, а какие‑то, наобо­рот, соз­дают­ся (нап­ример, начиная с Windows 8 количес­тво фай­лов Prefetch огра­ниче­но 1024, поэто­му ста­рые уда­ляют­ся сис­темой, а новые соз­дают­ся при запус­ке исполня­емых фай­лов).

Для чис­тоты экспе­римен­та соз­дадим том F (запус­каем diskmgmt.msc, затем сжи­маем име­ющий­ся том и отда­ем для нового 5 Гбайт с дефол­тным раз­мером клас­тера 4096 Кбайт). Помес­тим туда файл (в роли подопыт­ного будет выс­тупать каль­кулятор, но читатель может исполь­зовать любой дру­гой файл) calc.exe и уда­лим его через erase (то же самое будет при уда­лении через del или Shift-Del).

Те­перь для поис­ка уда­лен­ного фай­ла на томе F вос­поль­зуем­ся коман­дле­том Get-ForensicsFileRecord и отфиль­тру­ем вывод по фла­гу True для атри­бута Deleted:

Get-ForensicFileRecord -VolumeName F: | Where-Object {$_.Deleted}
Получение удаленных файлов на томе F
По­луче­ние уда­лен­ных фай­лов на томе F

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    4 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии