Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Альтернативні потоки даних в NTFS.

Файлова система NTFS володіє безліччю цікавих можливостей, однією з яких є наявність альтернативних потоків даних (Alternate Data Stream, ADS). Суть їх у тому, що кожен файл в NTFS являє собою набір потоків, в яких зберігаються дані. За замовчуванням всі дані знаходяться в основному потоці, але при необхідності до файлу можна додавати додаткові, альтернативні потоки даних.

Примітка. Альтернативні потоки даних в NTFS з'явилися давним-давно, ще в Windows NT. Створені вони були для сумісності з файлової системою HFS, що використовується тоді на MacOS. HFS зберігала дані про файлі в спеціальному ресурсному потоці.

Файли в NTFS поділені на атрибути, одним з яких є $ DATA, або атрибут даних.Потоки ж є додатковими властивостями атрибута $ DATA. За замовчуванням існує один, основний потік $ DATA: "". Як бачите, він не має назви, тому зветься неіменованого. Також при бажанні можна створювати додаткові, іменовані потоки, напр. $ DATA: "Stream1". У кожного файлу в NTFS може кілька потоків даних, що містять різні, ніяк не пов'язані між собою дані.

Всі дані, що записуються в файл, за замовчуванням потрапляють в основний потік даних. Коли ми відкриваємо файл, то бачимо стандартний потік, альтернативні ж потоки приховані від користувача і не відображаються за допомогою звичайних засобів. Їх не можна побачити стандартними способами, хоча деякі програми вміють читати приховані в них дані.Також для роботи з потоками можна використовувати командний рядок.

Для прикладу відкриємо консоль і за допомогою команди echo створимо текстовий файл streams.txt і запишемо в нього текст:

echo This is main stream > streams.txt

А за допомогою такої команди запишемо текст в альтернативний потік stream1:

echo This is alternate stream> streams.txt: stream1

Якщо тепер відкрити файл streams.txt в будь-якому текстовому редакторі, то ми побачимо тільки перший запис, текст «This is alternate stream» залишиться прихованим. Прочитати приховану в потоці stream1 інформацію можна командою:

more: stream2

І виведемо потік stream2 наступною командою:

more streams.txt: stream1.txt

І відкриємо альтернативний потік в блокноті командою:

notepad streams.txt: stream1.txt



Примітка. Стандартний Блокнот вимагає розширення txt в назві потоку, інакше він не зможе його відкрити. Більш просунуті редактори, наприклад той же Notepad ++, можуть показувати вміст альтернативного потоку незалежно від його назви.

Наявність альтернативних потоків у файлу ніяк не відображається в Провіднику та інших файлових менеджерах. Для того, щоб їх знайти, найпростіший спосіб - це скористатися командою dir/R (починаючи з Windows Vista), яка показує всі потоки даних, в тому числі й альтернативні.



Вам може здатися, що застосування альтернативних потоків обмежено текстовими даними. Це зовсім не так, і в альтернативних потоках можна зберігати абсолютно будь-яку інформацію. Для прикладу створимо файл picture.txt і додамо до нього потік pic1.jpg, в який помістимо однойменне зображення:

echo Picture> picture.txt
type pic1.jpg> picture.jpg: pic1.jpg

Таким чином, зовні ми маємо звичайний текстовий файл, а для відкриття зображення з альтернативного потоку в графічному редакторі Paint скористаємося командою:

mspaint picture.txt: pic1.jpg



Так само можна додавати до будь-яким типам файлів будь-які дані - до текстових файлів додавати зображення, до медіафайлів додавати текстову інформацію і т.п. Що цікаво, альтернативне вміст не збільшує видимий розмір файлу, наприклад додавши до 1кб текстового файлу HD-відео на 30Гб, провідник все одно покаже розмір файлу 1кб.

Ще в альтернативні потоки можна ховати виконувані файли. Наприклад візьмемо файл test.txt і додамо додаток Блокнот (notepad.exe) в альтернативний потік note.exe:

type notepad.exe> ​​test.txt: note.exe

А для запуску прихованого блокнота скористаємося командою:

start. \ test.txt: note.exe

до речі цією можливістю користуються деякі шкідливі програми, додаючи виконуваний код в альтернативні потоки NTFS.

Утиліта Streams

Для роботи з альтернативними потоками існує кілька сторонніх утиліт, наприклад консольна утиліта Streams від Sysinternals.Вона може визначати наявність альтернативних потоків і видаляти їх. Утиліта не вимагає установки, досить розпакувати її і запустити. Для прикладу перевіримо наявність потоків в папці Streams командою:

Streams.exe -s C: \ Streams

І видалимо альтернативні потоки з файлу streams.txt:

Streams.exe -d C: \ Streams \ streams.txt



PowerShell

PowerShell також вміє працювати з альтернативними потоками - створювати, виявляти, виводити їх вміст і навіть видаляти. Для прикладу створимо текстовий файл:

New-Item -Type file -Path C: \ Streams \ stream.txt

Додамо запис в основний потік:

Set -Content -Path C: \ Streams \ stream.txt -Value "Main stream"

І в альтернативний потік з ім'ям Second:

Set-Content -Path C: \ Streams \ stream.txt -Value "Second stream" -Stream Second

Потім виведемо вміст основного

Get-Content -Path C: \ Streams \ stream.txt

і альтернативного потоків:

Get-Content -Path C: \ Streams \ stream.txt -Stream Second



Для того , щоб виявити наявність альтернативних потоків, можна скористатися командою:

Get-Item -Path C: \ Streams \ stream.txt -Stream *

А видалити зайві потоки можна командою:

Remove-Item -Path C: \ Streams \ streams.txt -Stream *



Використання

Альтернативні потоки використовується як самої Windows, так і деякими програмами. Наприклад, Internet Explorer ділить мережу на 4 зони безпеки і при завантаженні файлів додає до них мітки, які містять інформацію про зону, з якої вони були завантажені.



Мітки ці зберігаються в альтернативному потоці і вдають із себе число від 0 до 4:

• Інтернет (3)
• Місцева мережа (1)
• Надійні сайти (2)
• Небезпечні сайти (4)
• Локальний комп'ютер (0)

щоб переконається в цьому, перейдемо в папку завантажень, візьмемо файл, завантажений з інтернету і перевіримо його на наявність альтернативних потоків.Як бачите, в ньому присутня потік з ім'ям Zone.Identifier, в якому є рядок ZoneID = 3.



Це означає, що файл відноситься до недовірених зоні Інтернет, і при його відкритті треба бути обережним. Деякі програми, наприклад Word, зчитують ці дані при відкритті файлу і видають відповідне попередження.



Також інфраструктура класифікації файлів (File Classification Infrastracture, FCI) заснована на використанні альтернативних потоків. З сторонніх програм альтернативні потоки використовують деякі антивірусні програми, зокрема антивірус Касперського зберігає в них контрольну суму, отриману в результаті перевірки.

Втім, застосування альтернативних потоків цим не обмежується, ви самі можете придумати для них будь-яке застосування. Наприклад, з їх допомогою можна заховати від сторонніх очей особисту інформацію. Файли, що містять альтернативні потоки, можна вільно копіювати або переносити з диска на диск, все потоки будуть скопійовані разом з файлом.

І ще, при використанні альтернативних потоків треба пам'ятати, що вони жорстко прив'язані до файлової системи NTFS. Для того, щоб використовувати їх, файли повинні розташовуватися на дисках з NTFS, відповідно працювати з ними можна тільки з під Windows. Якщо ж перемістити файл на будь-яку іншу файлову систему, то все потоки крім основного будуть втрачені.Також альтернативні потоки обрізаються при передачі файлів по FTP або при пересиланні в якості поштового вкладення.

.