Каталог $RmMetadata (original) (raw)

Скрытое хранение данных в потоках файла RepairвсистемномкаталогеRepair в системном каталоге RepairвсистемномкаталогеRmMetadata

В 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всистемномкаталогеRepair в системном каталоге RepairвсистемномкаталогеExtend\$RmMetadata. Системный файл относится к реализации поддержки транзакций NTFS.

Применение:
Скрытое хранение информации, которую можно размещать в альтернативных файловых потоках файла $Repair.

Операционная система:
Windows Vista, Windows 7.

Компонент:
ntfs.sys

C:$AttrDef C:$BadClus C:$BadClus:$Bad C:$Bitmap C:$Boot C:$LogFile C:$MFT C:$MFTMirr C:$Secure C:$Secure:$SDS C:$UpCase C:$Volume C:$Extend
C:$Extend$ObjId C:$Extend$Quota C:$Extend$Reparse C:$Extend$UsnJrnl C:$Extend$UsnJrnl:$J C:$Extend$UsnJrnl:$Max C:$Extend$RmMetadata
C:$Extend$RmMetadata$Repair C:$Extend$RmMetadata$Repair:$Config C:$Extend$RmMetadata$Txf
C:$Extend$RmMetadata$TxfLog
C:$Extend$RmMetadata$TxfLog$Tops C:$Extend$RmMetadata$TxfLog$Tops:$T C:$Extend$RmMetadata$TxfLog$TxfLog.blf C:$Extend$RmMetadata$TxfLog$TxfLogContainer00000000000000000002 C:$Extend$RmMetadata$TxfLog$TxfLogContainer00000000000000000003

Следует обратить внимание, что в списке, кроме обычных файлов присутствуют также и дополнительные файловые потоки NTFS. Это поток BadуфайлаBad у файла BadуфайлаBadClus, поток SDSуфайлаSDS у файла SDSуфайлаSecure, два потока у журнала UsnJrnl—UsnJrnl — UsnJrnlJ и Max.Крометого,вкаталогеMax. Кроме того, в каталоге Max.Крометого,вкаталогеRmMetadata, который находится внутри скрытого каталога ExtendнаходитсяфайлExtend находится файл ExtendнаходитсяфайлRepair с альтернативным потоком, и в папке TxfLogнаходитсяфайлTxfLog находится файл TxfLogнаходитсяфайлTops с потоком $T.

Интерес представляет файл \$Extend\$RmMetadata\$Repair. В отличие от всех остальных файлов, доступ к которым блокируется на уровне драйвера ntfs.sys, этот файл доступен для чтения. То есть система не будет ругаться на попытку прочитать этот файл. Сравните, например, результат выполнения команд

C:>more < C:$Extend$RmMetadata$Repair

C:>more < C:$Boot Отказано в доступе.

Правда, файл Repairпустой,азаписатьтуданичегонеполучается,таккакпроисходитошибка«нарушениесовместногодоступакфайлу».УфайлаRepair пустой, а записать туда ничего не получается, так как происходит ошибка «нарушение совместного доступа к файлу». У файла Repairпустой,азаписатьтуданичегонеполучается,таккакпроисходитошибка«нарушениесовместногодоступакфайлу».УфайлаRepair есть прикреплённый поток $Config. Его можно прочитать, и он, в отличие от файла, доступен на запись.

C:>more < C:$Extend$RmMetadata$Repair:$Config

Внутри потока Configнаходитсяпоследовательностьбайт‘0100000001000000‘.Можнозаписатьвместонеёкакие−нибудьсвоиданные,ноктознает,какэтоскажетсянаправильностиработыTxFинацелостноститомаNTFS?ВместоперезаписисистемногопотокаможноприцепитькфайлуConfig находится последовательность байт 01 00 00 00 01 00 00 00. Можно записать вместо неё какие-нибудь свои данные, но кто знает, как это скажется на правильности работы TxF и на целостности тома NTFS? Вместо перезаписи системного потока можно прицепить к файлу Configнаходитсяпоследовательностьбайт‘0100000001000000‘.Можнозаписатьвместонеёкакиенибудьсвоиданные,ноктознает,какэтоскажетсянаправильностиработыTxFинацелостноститомаNTFS?ВместоперезаписисистемногопотокаможноприцепитькфайлуRepair свои собственные альтернативные потоки. Например, нажать в файловом менеджере FAR клавиши Shift+F4, ввести путь C:\$Extend\$RmMetadata\$Repair:MyOwnStream и нажать «продолжить». В созданный поток MyOwnStream можно записать свои данные. Можно также скопировать в поток содержимое какого-нибудь файла с помощью more:

C:>more < file.txt > C:$Extend$RmMetadata$Repair:file.txt

Вообще, всё содержимое каталога $Extend должно быть защищено от доступа извне. Однако здесь мы имеем ситуацию, когда мы можем хранить в защищённой системной папке свои данные, пусть даже не в виде файлов, а в виде потоков NTFS. Получается скрытое хранилище данных, и всё это из-за ошибки, из-за которой один конкретный файл оказался незащищённым от доступа.

Например, некая программа ищет на диске какие-нибудь данные последовательным перебором всех файлов во всех каталогах. В каталог Extendонапопастьнесможет,онскрытизащищёнотдоступа.Соответсвенно,несможетпопастьивкаталогExtend она попасть не сможет, он скрыт и защищён от доступа. Соответсвенно, не сможет попасть и в каталог Extendонапопастьнесможет,онскрытизащищёнотдоступа.Соответсвенно,несможетпопастьивкаталогRmMetadata и не обнаружит файл Repair.КромеобнаруженияфайлавданномслучаепрограммадляпоискадолжнаещёуметьполучатьсписокпотоковNTFSианализироватьихсодержимое.ПрактическилюбаяпрограммадляпоискаданныхнесможетдобратьсядопотоковфайлаRepair. Кроме обнаружения файла в данном случае программа для поиска должна ещё уметь получать список потоков NTFS и анализировать их содержимое. Практически любая программа для поиска данных не сможет добраться до потоков файла Repair.КромеобнаруженияфайлавданномслучаепрограммадляпоискадолжнаещёуметьполучатьсписокпотоковNTFSианализироватьихсодержимое.ПрактическилюбаяпрограммадляпоискаданныхнесможетдобратьсядопотоковфайлаRepair при обычном сценарии работы, будучи запущенной из-под Windows, так как доступ ограничивается на уровне драйвера. Это распространяется и на запуск, произведённый с Live CD на основе Windows (так как там будет точно такой же драйвер NTFS с такими же точно ограничениями). Однако, спрятанные данные могут быть обнаружены при использовании Live CD с Linux, так как линуксовый драйвер NTFS вполне способен отображать и читать системные файлы.

Программы для поиска и вывода списка потоков NTFS могут не справиться с перечислением потоков у файла $Repair. Например, программа streams.exe Марка Руссиновича не отображает их:

D:\TMP>streams.exe D:$Extend$RmMetadata$Repair

Streams v1.56 - Enumerate alternate NTFS data streams Copyright (C) 1999-2007 Mark Russinovich Sysinternals - www.sysinternals.com

No files with streams found.

Из этого следует, что довольно трудно узнать, есть ли там прикреплённые потоки там или нет. Тут поможет разве что детектор руткитов, или поиск потоков из Linux-системы.

По теме файловых потоков также есть следующее:

Автор: амдф
Дата: 03.05.2011

При копировании материалов хорошим тоном будет указание авторства и ссылка на сайт. По поводу рекламы обращайтесь на почту [email protected]