hex.pp.ua

Каталог $RmMetadata

Скрытое хранение данных в потоках файла $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 в системном каталоге $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 у файла $BadClus, поток $SDS у файла $Secure, два потока у журнала $UsnJrnl — $J и $Max. Кроме того, в каталоге $RmMetadata, который находится внутри скрытого каталога $Extend находится файл $Repair с альтернативным потоком, и в папке $TxfLog находится файл $Tops с потоком $T.

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

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

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

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

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

Внутри потока $Config находится последовательность байт 01 00 00 00 01 00 00 00. Можно записать вместо неё какие-нибудь свои данные, но кто знает, как это скажется на правильности работы 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 она попасть не сможет, он скрыт и защищён от доступа. Соответсвенно, не сможет попасть и в каталог $RmMetadata и не обнаружит файл $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]