Содержание
Здравствуйте, уважаемые компьютерщики и специалисты в области ИБ. Сегодня я расскажу об одной незамысловатой особенности файловой системы 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! Видео выкладываются весьма регулярно и будет здорово увидеть что-то одним из первых!
Comments: