У Windows 7 і Windows Vista на будь-якому розділі NTFS є набір системних файлів, які приховані і доступ до яких користувачеві заборонений. Назви цих файлів починаються з символу долара. Вони мають відношення до функціонування самої системи NTFS, на розділах з іншими файловими системами їх немає. Про призначення цих файлів написано в тексті «Спеціальні файли NTFS». У Windows Vista і Windows 7 в числі прихованих системних файлів з'явилися ще файли, розташовані в папці $ RmMetadata.
Ці файли відносяться до підтримки технології транзакцій в NTFS, про що свідчать назви файлів типу $ TxfLog (TxF означає Transactional NTFS). Деякі програми вважають наявність цих файлів на комп'ютері ознакою зараження системи руткітом. Насправді це просто системні файли Windows. Вони можуть бути присутніми на будь-якому томі NTFS, який коли-небудь використовувався з-під операційної системи Windows Vista і Windows 7.
У Windows 7 список прихованих системних файлів в корені диска C: може виглядати так:
уразливість:
Відсутність захисту доступу до файлу $ Repair в системному каталозі $ Extend \ $ RmMetadata. Системний файл відноситься до реалізації підтримки транзакцій NTFS.
застосування:
Приховане зберігання інформації, яку можна розміщувати в альтернативних файлових потоках файлу $ Repair.
Операційна система:
Windows Vista, Windows 7.
Слід звернути увагу, що в списку, крім звичайних файлів присутні також і додаткові файлові потоки NTFS. Це потік $ Bad у файлу $ BadClus, потік $ SDS у файлу $ Secure, два потоки у журналу $ UsnJrnl - $ J і $ Max. Крім того, в каталозі $ RmMetadata, який знаходиться всередині прихованих каталогів $ Extend знаходиться файл $ Repair з альтернативним потоком, і в папці $ TxfLog знаходиться файл $ Tops з потоком $ T.
Інтерес представляє файл \ $ Extend \ $ RmMetadata \ $ Repair. На відміну від всіх інших файлів, доступ до яких блокується на рівні драйвера ntfs.sys, цей файл доступний для читання. Тобто система не буде лаятися на спробу прочитати цей файл. Порівняйте, наприклад, результат виконання команд
Правда, файл $ Repair порожній, а записати туди нічого не виходить, так як відбувається помилка «порушення спільного доступу до файлу». У файлу $ Repair є прикріплений потік $ Config. Його можна прочитати, і він, на відміну від файлу, доступний на запис.
Усередині потоку $ Config знаходиться сукупність електронних даних 01 00 00 00 01 00 00 00. Можна записати замість неї якісь свої дані, але хто знає, як це позначиться на правильності роботи TxF і на цілісності томи NTFS? Замість перезапису системного потоку можна причепити до файлу $ Repair свої власні альтернативні потоки. Наприклад, натиснути в файловому менеджері FAR клавіші Shift + F4, ввести шлях C: \ $ Extend \ $ RmMetadata \ $ Repair: MyOwnStream і натиснути «продовжити». У створений потік MyOwnStream можна записати свої дані. Можна також скопіювати в потік вміст якого-небудь файлу за допомогою more:
Взагалі, весь вміст каталогу $ Extend має бути захищене від доступу ззовні. Однак тут ми маємо ситуацію, коли ми можемо зберігати в захищеному системній папці свої дані, нехай навіть не у вигляді файлів, а у вигляді потоків NTFS. Виходить приховане сховище даних, і все це через помилки, через яку один конкретний файл виявився незахищеним від доступу.
Програми для пошуку і виведення списку потоків NTFS можуть не впоратися з перерахуванням потоків у файлу $ Repair. Наприклад, програма streams.exe Марка Руссиновича не відображує їх:
З цього випливає, що досить важко дізнатися, чи є там прикріплені потоки там чи ні. Тут допоможе хіба що детектор руткітів, або пошук потоків з Linux-системи.