Что такое атрибут $DATA в NTFS и как спрятать в него секретные файлы

Просмотреть содержимое любого файла можно соответствующей ему программой, но в действительности файл может содержать больше данных, причем совершенно иного типа. Например, изображение может хранить в себе текст или даже исполняемый код, оставаясь с виду тем же изображением. Такое возможно благодаря особенностям файловой системы NTFS, а если быть конкретными — альтернативным потокам, которые могут хранить любые данные параллельно с основным контентом.

На низком уровне файл — это бинарный код, однако с точки зрения NTFS файл представляет собой пул массивов, именуемых атрибутами. Каждый атрибут, читай массив, имеет свойства или потоки, представленные набором данных, которые могут быть как видимыми, так и невидимыми (метаданные). Так, атрибут $SECURITY_DESСRIPTOR содержит сведения о владельце, атрибут $STANDART_INFORMATION — временные метки файла, $DATA — основные данные, то есть контент, а $FILE_NAME — имя файла длиной не более восьми символов.

FILE_NAME

Ну хорошо, а что, если имя файла содержит более восьми символов, ведь такое встречается сплошь и рядом? Всё очень просто, системой будет создан второй атрибут специально для длинного имени. То есть файл может иметь несколько атрибутов одного и того же типа, включая и атрибут $DATA. Однако нам уже известно, что атрибут $DATA хранит основные данные, если у нас появится дополнительный атрибут, будет ли это означать, что файл содержит еще какие-то основные данные?

Нет, основной массив данных потому-то и называется основным, что он один, все остальные будут уже дополнительными или иначе альтернативными.

Продемонстрируем это на примере, добавив в обычный текстовый файл альтернативный поток данных, представленный изображением формата JPG.

Создать альтернативный поток NTFS можно в командной строке, но гораздо удобнее использовать для этой цели утилиту NTFS Stream Explorer.

Создадим текстовый файл log.txt и запишем в него какой-нибудь текст, допустим «Hello».

Открываем его утилитой NTFS Stream Explorer и на первой же вкладке «Базовая информация» идем в меню «Добавить» и выбираем «Файловый поток».

NTFS Stream Explorer

В следующем окне жмем кнопку с изображением знака плюс, даем альтернативному потоку имя и нажимаем «Создать».

Файловый поток

Так как добавлять в него мы будем файл, оставляем в настройках «Из файла» и указываем через обзор путь к нашему изображению. При этом в окне утилиты тут же появляется новая вкладка «Потоки» с созданным нами дополнительным атрибутом.

Потоки

Открыв такой файл текстовым редактором, вы не обнаружите в нём никаких изменений, но если открыть его свойства, то можно будет увидеть, что он занимает на диске больше места, чем следует исходя из его содержимого.

Свойства файла

Атрибуты MFT

Где же изображение? Открываем диск в шестнадцатеричном редакторе WinHex, находим файл, пробуем его открыть и получаем сообщение, что файл имеет некий дочерний объект.

WinHex

Жмем «Explorer» и видим в расположении (Root directory) некий объект с именем HIDE — наш альтернативный поток в MFT.

Root directory

Если его скопировать на рабочий стол и присвоить расширение JPG, то его можно будет открыть любой программой для просмотра картинок.

Извлечь альтернативный поток из файла можно и в самой NTFS Stream Explorer, воспользовавшись опцией «Export».

Export

Также для оных целей подойдет бесплатная тулза AlternativeStreamView от NirSoft. К сожалению, определять тип содержимого альтернативного потока придется по его заголовку.

AlternativeStreamView

Существуют и другие ограничения работы с файлами, имеющими дополнительный атрибут $DATA.

При копировании файлов «два в одном» на другой физический диск данные альтернативного потока $DATA будут потеряны.

Копирование файлов

Чтобы его передать по сети или скопировать на другой диск, файл необходимо заархивировать, не забыв установить на вкладке «Дополнительно» птичку «Сохранять файловые потоки».

Параметры архива

Тулза для работы с атрибутами: hex.pp.ua/ntfs-stream-explorer.php

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Рекомендуемые публикации:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *