Как спрятать файл в Альтернативный поток данных в NTFS

Здравствуйте, уважаемые компьютерщики и специалисты в области ИБ. Сегодня я расскажу об одной незамысловатой особенности файловой системы NTFS, которая может быть полезна вам, дабы раскрыть коварный план злоумышленника, намеревающегося сокрыть важную информацию.

Думаю, что никто не станет спорить с тем, что файловая система NTFS сейчас прочно заняла первое место среди пользователей операционных систем семейства Windows, вытеснив такие файловые системы как FAT16 и FAT32 (которые в общем-то схожи), а файловая система exFAT, несмотря на значительно более проработанную концепцию, всё ещё не дотягивает по популярности до NTFS.

Откуда пошли альтернативные потоки данных?

Ключевым термином NTFS является MFT – Master File Table. Каждая запись MFT описывает конкретный файл и состоит из набора фиксированных атрибутов. Каждый атрибут содержит список полей, содержащих определённые значения.

Атрибуты бывают такими:

  • $10 – $STANDART_INFORMATION
  • $30 – $FILE_NAME
  • $80 – $DATA

Вообще их довольно таки много, но важно понимать, что каждая запись MFT представляет собой набор этих атрибутов.

Вот скриншот из программы DiskExplorer от Runtime’s (создатели GetDataBack). Я открыл произвольный файл (LOG.old) и слева отобразился перечень атрибутов. Здесь есть $10 – $STANDART_INFORMATION – стандартная информация. В этом атрибуте указываются временные метки файла и атрибуты DOS.

Атрибут $30 – $FILE_NAME – содержит имя файла. Если длина имени больше 8 символов (стандарт 8.3), то создаётся дополнительный атрибут $30 как для длинного имени, так и для короткого. Всё просто.

А вот другой скрин, на котором я отобразил атрибут $80 – $DATA, то есть содержимое файла:

Помните, я сказал, что если имя длинное, то у файла два атрибута $30, для каждого из имён? Это ключевой момент. Мы почти подошли к сути вопроса. Вообще у файла может быть несколько однотипных атрибутов, никто не запрещает. Так вот, а что будет, если у файла будет несколько атрибутов $DATA? То есть непосредственно содержимого. Да, такая ситуация возможна!…

Это и называется альтернативным потоком данных. Единственная особенность – должен быть атрибут $DATA по умолчанию (он задаётся без имени), остальные атрибуты $DATA должны быть поименованы, чтобы к ним можно было обратиться.

Как создать альтернативный поток данных?

Из доступных способов – командная строка. Для обращения к дополнительным атрибутам $DATA используется суффикс <имя файла>:<имя потока>. Например, если мы хотим поместить в текстовый файлик 1.txt содержимое файла sekret.rar в альтернативный поток, то должны выполнить команду:

type sekret.rar > 1.txt:litl-admin.ru

Данная команда создаст новый атрибут $DATA с именем litl-admin.ru (как мило) и перенаправит в него содержимое архива sekret.rar. Проверим?

С виду размер файла 1.txt не изменился. Я написал туда произвольный фрагмент данных. Посмотрим его содержимое блокнотом:

Ничего необычного не видно. А теперь найдём-ка его MFT-запись.

Видите второй атрибут $80 с именем litl-admin.ru? Это и есть наш “скрытый” альтернативный поток данных. На самом деле таких потоков у файла может быть огромное количество. Но не нужно думать, что эти возможности используются исключительно злоумышленниками в корыстных интересах.

Для чего можно использовать скрытые потоки?

По секрету скажу, что в вашей системе скорее всего используется огромное количество файлов со скрытыми потоками. Наиболее популярные варианты использования – это пометки файлов, скачанных с недоверенных источников, пометки файлов, проверенных антивирусами, иные метки, позволяющие каким-то способом “подписать” файл. Замечали, что иногда, при открытии файла, скачанного с Интернета, появляется окно с предупреждением, что файл получен из Интернета и относиться к нему нужно осторожно? Как думаете, каким способом помечен файл? ;)

Как идентифицировать скрытые потоки?

Вместе с тем, существует способ массово просканировать каталог и вывести все альтернативные потоки данных в имеющихся файлах. Для этого существует бесплатная программка AlternativeStreamView от Nirsoft.

Работа с ней очень проста. Запускаете, выбираете каталог для сканирования и получаете результаты:

При помощи неё же можно извлечь поток в отдельный файл:

Расширение файла при этом, правда, будет утрачено, зато можно определить тип по содержимому:

Обратите внимание на то, что размер файлов совпадает – это и есть содержимое потока:

Что я имел ввиду, когда говорил о том, чтобы определить тип файла по содержимому? А вот что:

У многих файлов есть конкретная сигнатура. Для архивов WinRAR это “Rar!” Встретили – меняем расширение на “.rar” и получаем рабочий архив.

Пользуйтесь!

Друзья! Вступайте в нашу группу Вконтакте, чтобы не пропустить новые статьи! Хотите сказать спасибо? Ставьте Like, делайте репост! Это лучшая награда для меня от вас! Так я узнаю о том, что статьи подобного рода вам интересны и пишу чаще и с большим энтузиазмом!

Также, подписывайтесь на наш канал в YouTube! Видео выкладываются весьма регулярно и будет здорово увидеть что-то одним из первых!

Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Leave a Reply