Альтернативные потоки данных в NTFS или создание секретных файлов
Приветствую Вас, уважаемые читатели блога webcodius.ru. Файловая система NTFS обладает интересной возможностью поддержки альтернативных потоков данных (Alternate Data Stream, ADS). Технология подразумевает под собой, то, что каждый файл в файловой системе NTFS может иметь несколько потоков, в которых могут храниться данные. Проводник и большинство других приложений работают только со стандартным потоком и не могут получить данные их альтернативных. Таким образом с помощью технологии ADS можно скрывать данные, которые не удастся обнаружить стандартными способами.
Поддержка альтернативных потоков данных была добавлена в NTFS для совместимости с файловой системой HFS, использующейся на MacOS.
Немного теории
В файловой системе NTFS файлы имеют атрибуты. Один из атрибутов $DATA
является атрибутом данных. В свою очередь атрибут $DATA
может иметь несколько потоков. По умолчанию существует один основной поток $DATA:""
, который называют неименованным. С этим потоком как раз и работает проводник windows. При желании к файлу можно добавить несколько именованных потоков (например $DATA:"potok1"
), которые будут содержать различные не связанные между собой данные.
По умолчанию все данные, записываемые в файл, попадают в основной неименованный поток данных. И при открытии файла мы видим только основной поток. Альтернативные потоки NTFS, которые есть у файла, скрыты от пользователя и штатными средствами их не увидеть. Поэтому удалив файл с потоками, содержащими объемные данные, можно заметить, что места на устройстве хранения данных освободилось значительно больше, чем занимал файл по мнению того же Проводника. Альтернативными потоками часто пользуются вирусы, которые могут прописать себя в именованый поток какого-нибудь безобидного файла.
Для работы с альтернативными потоками можно использовать специальные программы, либо командную строку.
Как создать альтернативный поток NTFS
Создать альтернативный поток можно с помощью консольной команды echo
.
Для начала откроем командную строку cmd.exe и с помощью команды echo
создадим текстовый файл example.txt и запишем в него текст:
echo Главный поток>example.txt
Следующей командой запишем данные в альтернативный поток. Для этого после названия файла ставите двоеточие (:) и даете название потоку:
echo Альтернативный поток>example.txt:test
Теперь если открыть файл example.txt в любом тестовом редакторе, то будет виден только первый текст «Главный поток»:
Получить информацию содержащуюся в потоке можно с помощью команды more
:
more <example.txt:test
Увидеть содержимое потока можно не только в командной строке. Например, открыть альтернативный поток в популярном текстовом редакторе Notepad++ можно с помощью следующей команды:
«C:\Program Files (x86)\Notepad++\notepad++.exe» example.txt:test
Обычный Блокнот может открывать только те потоки, название которых заканчивается на «.txt». Для примера, добавим к нашему файлу поток test.txt:
echo Альтернативный поток для блокнота>example.txt:test.txt
И откроем его в блокноте:
notepad.exe example.txt:test.txt
В альтернативные потоки, можно помещать не только текстовые данные, а абсолютно любые типы данных. Кроме того к любым типам файлов можно добавлять любые данные — к текстовым файлам добавлять видео, а к изображениям текстовую информацию.
Для примера добавим к нашему файлу поток с изображением img.jpg. Для этого воспользуемся командой type
:
type img.jpg>example.txt:img.jpg
В результате мы получили обычный текстовый файл. Если открыть его обычным способом: двойным щелчком через проводник, то откроется текстовый редактор с содержимым главного потока:
Чтобы открыть содержащееся в альтернативном потоке изображение, например в Paint-е, достаточно воспользоваться командой:
mspaint example.txt:img.jpg
Что самое интересное альтернативные потоки не увеличивают видимый объем файла. Так если к текстовому файлу размером 1 Кб добавить видео размером 30 Гб, то проводник все равно покажет размер файла 1 Кб.
Также потоки можно добавлять для папок и даже для разделов жесткого диска. Делается все также как и для файлов:
echo Текст в папке>c:\test:hide.txt
И открываем в блокноте:
notepad c:\test:hide.txt
Так как наличие альтернативных потоков никак не отображается в проводнике и других файловых менеджерах, самый простой способ их обнаружить это воспользоваться командой dir /R
:
Скрытие приложений в альтернативных потоках и их запуск
Поместить исполняемые файлы в альтернативные потоки также легко как и обычные файлы. Для примера возьмем наш файл example.txt и поместим приложение Блокнот (notepead.exe) в поток hideapp.exe:
type C:\Windows\system32\notepad.exe>example.txt:hideapp.exe
Чтобы запустить скрытый Блокнот используется следующая команда:
start .\example.txt:hideapp.exe
С помощью описанных приемов можно легко спрятать информацию от неподготовленных пользователей. Вообще применение альтернативных потоков данных ADS ограничено только вашей фантазией.
На этом все, до новых встреч!
Похожие статьи:
Оставить комментарий
Спасибочки за подробную инструкцию по созданию альтернативных потоков)) Будем пробовать)