Что такое альтернативные потоки данных в Windows

Что такое альтернативные потоки данных в Windows

Что такое альтернативные потоки данных в Windows

Категория: Windows / Функционал Windows
Добавил:
access_timeОпубликовано: 22-08-2019
visibilityПросмотров: 8 905
chat_bubble_outlineКомментариев: 3
Если вы запустите скачанный из интернета файл реестра или скрипт, то неожиданно для себя можете обнаружить, что система блокирует его выполнение. Обратившись за помощью к Google или к более опытному в делах компьютерных другу, вы, наконец, найдете для себя ответ. Оказывается, полученные из интернета файлы могут автоматически блокироваться системой безопасности Windows, и чтобы иметь возможность их запускать, нужно сначала снять блокировку в их свойствах.

Что такое альтернативные потоки данных в Windows

Ну ладно, это понятно, но откуда Windows узнала, что вы скачали файл с интернета? Если честно, тема эта довольно старая, с корнями, уходящими еще в эпоху Windows NT, но поскольку число новых пользователей, ничего об этой версии не ведающих, постоянно растет, считаем нужным времени от времени ее освещать. Другой вопрос, найдете ли вы полученным знаниям практическое применение. 

d187d182d0be d182d0b0d0bad0bed0b5 d0b0d0bbd18cd182d0b5d180d0bdd0b0d182d0b8d0b2d0bdd18bd0b5 d0bfd0bed182d0bed0bad0b8 d0b4d0b0d0bdd0bd 65d2e5d80e762

Что, собственно, представляет собой файл? Если говорить максимально доступным языком это контейнер, в котором хранятся некие данные. Возьмем обычный текстовый документ, созданный в блокноте. Пустой текстовый файл — это оболочка, а то, что в него записано — полезное содержимое или контент, отображаемый в текстовом редакторе или вьювере. Но в файл может быть записана и другая информация, которая не отображается в текстовом редакторе, например, метаданные.

d187d182d0be d182d0b0d0bad0bed0b5 d0b0d0bbd18cd182d0b5d180d0bdd0b0d182d0b8d0b2d0bdd18bd0b5 d0bfd0bed182d0bed0bad0b8 d0b4d0b0d0bdd0bd 65d2e5d831226

Эти дополнительные сведения хранятся в так называемых потоках данных, по-английски Alternate Data Stream или ADS, являющимися свойствами атрибутов, из которых по представлению NTFS состоит любой файл. Атрибуты в NTFS играют примерно ту же роль, что и массивы данных. В свою очередь свойства атрибутов могут быть как основными, так и альтернативными. Вернее, основным может быть только один поток, безымянный, именно в нём хранится полезное содержимое файла. 
Так, записанный в текстовый файл текст содержится в основном потоке атрибута $DATA ($dаta:»»). Разобьем его на части. $DATA — это название атрибута, двоеточие — это разделитель, а то, что содержится между прямыми кавычками есть название потока. Поток с пустым именем в NTFS является основным, все остальные именованные потоки — альтернативными. Например, поток $dаta: «Stream1» — альтернативный. 
Как записать данные в альтернативный поток? Самый простой способ — воспользоваться командной строкой. Запишем для примера в текстовый файл content.txt, уже содержащий текст «Привет», скрытую строку «Совершенно секретно». Открываем командную строку и выполняем в ней такую команду:
echo «Совершенно секретно» > D:content.txt:stream1 

d187d182d0be d182d0b0d0bad0bed0b5 d0b0d0bbd18cd182d0b5d180d0bdd0b0d182d0b8d0b2d0bdd18bd0b5 d0bfd0bed182d0bed0bad0b8 d0b4d0b0d0bdd0bd 65d2e5d846c55

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

d187d182d0be d182d0b0d0bad0bed0b5 d0b0d0bbd18cd182d0b5d180d0bdd0b0d182d0b8d0b2d0bdd18bd0b5 d0bfd0bed182d0bed0bad0b8 d0b4d0b0d0bdd0bd 65d2e5d85d4d7

Но это впечатление обманчиво, файл уже содержит скрытый текст, который вы можете прочитать только в командной строке командой: more

d187d182d0be d182d0b0d0bad0bed0b5 d0b0d0bbd18cd182d0b5d180d0bdd0b0d182d0b8d0b2d0bdd18bd0b5 d0bfd0bed182d0bed0bad0b8 d0b4d0b0d0bdd0bd 65d2e5d872d52

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

А теперь возвратимся к тому, откуда Windows в курсе, что файл был скачан с интернета. А потому, что в процессе его передачи в альтернативной поток Zone.Identifier, хранящий сведения о зоне безопасности, браузером были записаны соответствующие данные. Проверим присутствие альтернативных потоков в полученном из интернета скрипте WUModule.ps1. Открываем командную строку, переходим в ней в каталог с файлом и выполняем команду:
 dir /r

d187d182d0be d182d0b0d0bad0bed0b5 d0b0d0bbd18cd182d0b5d180d0bdd0b0d182d0b8d0b2d0bdd18bd0b5 d0bfd0bed182d0bed0bad0b8 d0b4d0b0d0bdd0bd 65d2e5d88adf1

В результате в консоли будут выведены имена всех файлов в выбранной папке с указанием их размера в байтах и атрибутов, в данном примере $DATA с альтернативными потоками. Как можно видеть из скриншота выше, файл 1.tхt не имеет альтернативных потоков, файл content.tхt содержит альтернативный поток stream1, а файл скрипта WUModule.ps1 включает альтернативный поток Zone.Identifier, указывающий, что файл был получен из некой зоны. Для получения более подробных сведений можно использовать PowerShell. Проверим тот же скрипт. 

d187d182d0be d182d0b0d0bad0bed0b5 d0b0d0bbd18cd182d0b5d180d0bdd0b0d182d0b8d0b2d0bdd18bd0b5 d0bfd0bed182d0bed0bad0b8 d0b4d0b0d0bdd0bd 65d2e5d8ac443

Запускаем консоль, выполняем команду Get-Item D:/WUModule.ps1 -Stream * и видим, что в файл содержит атрибут $DATA с потоком Zone.Identifier. Уточняем данные командой Get-Content D:/WUModule.ps1 -Stream Zone.Identifier. В результате получаем не только номер зоны безопасности, но и URL-адрес ресурса, с которого был скачан файл. Точно так же можно получить сведения и о других альтернативных потоках. Разница во второй команде лишь в том, что вместо Zone.Identifier нужно указать название потока, которое было получено в ходе выполнения первой команды.

d187d182d0be d182d0b0d0bad0bed0b5 d0b0d0bbd18cd182d0b5d180d0bdd0b0d182d0b8d0b2d0bdd18bd0b5 d0bfd0bed182d0bed0bad0b8 d0b4d0b0d0bdd0bd 65d2e5d8cc5fe

tagsКлючевые слова
     Рекомендуем другие статьи по данной теме
Ctrl
Enter
Заметили ошибку

Выделите и нажмите Ctrl+Enter

Windows, Функционал Windows
Что такое альтернативные потоки данных в Windows