Альтернативные потоки данных в 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 ограничено только вашей фантазией.
На этом все, до новых встреч!
Похожие записи
Оставить комментарий
Спасибочки за подробную инструкцию по созданию альтернативных потоков)) Будем пробовать) =)
В 1993 году Microsoft выпустила первую версию операционной системы Windows NT , в которой была реализована файловая система NTFS. Эта файловая система может работать с несколькими именованными потоками, получившими название «Альтернативные потоки данных». Поддержка ADS была реализована для совместимости с уже существующими операционными системами, позволяющими хранить метаданные для файлов (например, файловая система HFS ).
В операционной системе Windowsальтернативные потоки данных используются для хранения таких атрибутов, как сведения об авторе, название и иконка файла. Начиная с Service Pack 2 для Windows XP , Microsoft представила службу Attachment Execution Service , которая сохраняет в альтернативных потоках данных подробную информацию о происхождении загруженных файлов в целях повышения безопасности.
У меня разрыв шаблона, какой-то трешак! В каждом файле можно спрятать что угодно. Сразу возникают вопросы:
1) Видят ли антивирусы и онлайн-сканеры (VirusTotal например) альтернативные потоки в файлах? Сдаётся мне что ничерта они не видят, так же как и всякие сравнивалки файлов через подсчёт контрольных сумм.
2) Какие системы программирования поддерживают работу с альтернативными потоками?
3) Вопрос риторический, к «микрософту»: «это сделано для безопасности»? Ох, рилли? Лукаво скрывать полную информацию, хранимую в файле? Неосведомлённость обычного юзера — самая первая огромная дырень в безопасности!!! Вообще, любые усложнения редко приводят к повышению безопасности. Безопасная система => простая система. Вот один из постулатов настоящей безопасности. А глядя на винду, возникает чувство что она специально задумывалась как рассадник червей, троянов, уязвимостей и прочего дерьма!
Поискал — большинство вменяемых антивирусов — их видят и сканируют тоже. А вот до VirusTotal они не доходят!
Вопром к автору, а на Windows XP как узнать список потоков? Ключа R там нет...