МАКСИМ КОСТЫШИН
Использование альтернативных потоков данных
Когда армия сталкивается с оврагами и ущельями, заболоченной местностью с тростником
и высокой травой, горными лесами или густым и спутанным кустарником, необходимо тщательно прочесать их
ибо там могут быть спрятаны засады и шпионы… Стратегия ведения войны такова: не полагайся на то,
что враг не придет, полагайся на средства, которыми располагаешь, чтобы принять его. Не полагайся на то,
что враг не нападет; полагайся на то, чтобы наши позиции были неуязвимы для нападения… Поэтому сказано,
что тот кто знает врага и знает себя, не окажется в опасности и в ста сражениях. Тот, кто не знает врага,
но знает себя, будет то побеждать, то проигрывать. Тот, кто не знает ни врага, ни себя, неизбежно будет разбит
в каждом сражении…
«Искусство войны»
Сунь-Цзы
Возможность использования альтернативных потоков данных (Alternate Data Streams – ADS) заложена в файловой системе NTFS и поддерживается операционными системами Microsoft Windows 2000 и выше. Специфика ADS заключается в том, что c файлами и каталогами могут ассоциироваться дополнительные наборы данных, информация о которых и само содержимое, вообще говоря, недоступны с помощью стандартных утилит и встроенных команд операционной системы Microsoft Windows.
Изложение основных подходов работы с альтернативными потоками построено на конкретных примерах. Также в статье приводится сравнительный обзор специализированных утилит, позволяющих производить поиск файлов, содержащих ADS, а также выполнять операции с информацией, хранимой в потоках.
Примеры работы с альтернативными потоками данных
Создание ADS и работа с использованием редактора NotePad
Создадим на диске C: пустой файл test.txt, после чего выполним команду:
NotePad C: est.txt:example.txt
На предложение создать новый файл, ответим положительно (в записи test.txt:example.txt подразумевается, что example.txt – это имя потока для файла test.txt). Затем наберем произвольный текст и завершим работу с программой, сохранив изменения. При исследовании параметров файла C: est.txt можно заметить, что размер файла test.txt по-прежнему равен нулю (из видимых обычными средствами параметров были модифицированы лишь даты последнего доступа и изменений).
Выполнив команду:
NotePad C: est.txt:example.txt
мы обнаружим в редакторе текст, который мы только что набирали и сохранили в ADS.
Подтвердить наличие альтернативного потока можно также, если в «Проводнике» попытаться скопировать файл test.txt на носитель с файловой системой, отличной от NTFS (например, на дискету). При этом на экран будет выдано предупреждение о том, что копия файла на дискете не будет содержать данных ADS.
Использование стандартных команд операционной системы Windows
при работе с альтернативными потоками данных
Для создания потока может быть применена стандартная операция перенаправления потока вывода. Например, выполнив команду:
type C:oot.ini > C: est.txt:boot.ini
мы поместим в альтернативный поток содержимое файла, определяющего вариант загрузки операционной системы компьютера. Просмотреть данные, сохраненные в потоке, можно при помощи все того же редактора NotePad.
Следует обратить внимание на то, что стандартные команды copy, type, del и прочие, предназначенные для выполнения операций с файлами, не позволяют использовать в именах файлов-параметров конструкции, характерные для определения имени альтернативного потока. В этой связи выполнение файловых операций для ADS стандартными командами операционной системы затруднительно. Вместе с тем вывод на экран содержимого test.txt:boot.ini можно выполнить при помощи следующей команды:
type C:oot.ini > C: est.txt:boot.ini
Для удаления всех имеющихся для файла альтернативных потоков можно воспользоваться следующим набором операций:
ren temp.txt test.txt
type temp.txt > test.txt
del temp.txt
Использование стандартной команды copy для temp.txt в файловой системе NTFS позволяет создать точную копию файла, которая будет содержать поток исходного файла.
Особо следует обратить внимание на то, что в файловой системе NTFS возможности создания ADS применимы как к файлам, так и к любым каталогам:
md C:example
type C:example.txt > c:example:example.txt
или просто:
type C:example.txt > c::example.txt
Обработка документов Microsoft и OfficeWordPad,
размещенных в альтернативных потоках данных
Поместим в ADS документ Microsoft Word (при подготовке статьи автор использовал Microsoft Word 2002 SP-2 из состава Microsoft Office XP). Для этого создадим документ Word, сохраним его сначала в файл C:example.doc, а затем с использованием операции перенаправления потока вывода в поток:
type C:example.doc > C: est.txt:example.doc
Отметим, что в случае отсутствия файла C: est.txt применение указанной команды создаст файл test.txt нулевого размера.
Откроем содержимое файла в стандартном редакторе WordPad, выполнив следующую команду:
«C:Program FilesWindows NTAccessoriesWordPad.exe» C: est.txt:example.doc
Редактор WordPad вполне сгодится для просмотра документов Microsoft Word, сохраненных в ADS. Следует отметить, что у пользователей могут возникнуть проблемы, связанные с тем, что WordPad обеспечивает сохранение информации только в формате Word для Windows 6.0 и файла RTF. При этом WordPad версии 5.0 (Windows 2000 Professional) не позволяет выполнить преобразование и сохранение документа, помещенного в альтернативный поток данных, в поддерживаемом формате. Для WordPad версии 5.1 (Windows XP) такие проблемы отсутствуют.
Просмотреть данные ADS в Microsoft Word нам удалось лишь в режиме «только чтение», закрыв все приложения указанного редактора, переименовав файл test.txt в test (исключив из имени файла расширение), выполнив следующую команду:
"C:Program FilesMicrosoft OfficeOffice10WinWord.exe" C: est:example.doc
Сохранить изменения при работе WinWord с данными потока невозможно в связи с тем, что в программе реализован жесткий контроль имен файлов для сохранения информации.
Что касается возможностей других распространенных составляющих Microsoft Office, то проверка показала полнофункциональные возможности обработки базы данных, сохраненной в потоке, для Access.
Особенности для операций открытия и сохранения изменений электронной таблицы, содержащейся в ADS, с помощью Microsoft Excel аналогичны тем, что были указаны выше для Microsoft Word.
Запуск программ, сохраненных в альтернативном потоке данных
Запустить обычным способом программы, сохраненные в ADS, не удастся. Однако как вариант можно применить команду start.
Поместим программу WordPad.exe в альтернативный поток файла example.txt с одноименным названием:
type WordPad.exe > C:example.txt:WordPad.exe
Выполним команду:
start C:example.txt:WordPad.exe
и убедимся в том, что программа запущена.
Обратим внимание на то, что в диспетчере задач Windows имя образа запущенного процесса будет указано не WordPad.exe, а example.txt.
Специальные средства для поиска и работы с альтернативными потоками данных
Если в первой части статьи для ADS были рассмотрены варианты работы с использованием стандартных возможностей, предоставляемых пользователям операционной системы, то ниже приведен обзор утилит, специально предназначенных для поиска потоков и выполнения с ними ряда операций, разработанных сторонними производителями.
Создадим тестовый файл C:exampleexample.txt и заполним все значения стандартных свойств для него, которые помещаются операционной системой в альтернативные потоки.
Используем файл для наблюдения за результатами работы специальных утилит.
LNS (http://ntsecurity.nu/toolbox/lns) – небольшая (менее 35 Кб) бесплатная консольная утилита, предназначенная для поиска файлов с ADS и информации об имеющихся альтернативных потоках. Программа не производит поиск ADS для каталогов.
LADS (http://www.heysoft.de) – свободно распространяемая консольная утилита поиска файлов, содержащих ADS.
Программа обладает возможностью пропускать при поиске альтернативные потоки, которые имеют заданные в качестве параметров предопределенные имена, и предоставляет информацию о размере данных, содержащихся в ADS.
Stream (www.sysinternals.com) – программа, автором которой является известный среди программистов разработчик прикладных утилит Марк Русинович, доступна с исходными текстами. Параметры работы утилиты позволяют производить поиск файлов с ADS по подкаталогам, а также удалять найденные альтернативные потоки.
К недостаткам следует отнести некорректное отображение русских символов в названиях файлов и каталогов, а также то, что программа не проверяет наличие ADS для корневого каталога.
CrucialADS (http://crucialsecurity.com) – свободно распространяемая утилита, обладающая графическим интерфейсом. Реализует поиск на выбранных пользователем дисках файлов, содержащих ADS.
К недостаткам следует отнести отсутствие следующих возможностей:
- сохранения информации, содержащейся в альтернативных потоках;
- определения размера данных для найденных потоков;
- поиска файлов с ADS на съемных носителях, отформатированных под NTFS.
Замечание: кроме того, также как lads, программа не проверяет наличие специфических данных для корневого каталога.
NTFS Streams Info (http://www.isgeo.kiev.ua/shareware/index.html) – программа, рекомендуемая автором статьи, предусматривает всю необходимую функциональность для поиска и исследования альтернативных потоков данных. Лицензия программы определена как условно бесплатная и предоставляет возможность демонстрационного использования в течение 30 дней, помещая в раздел реестра, описывающего настройки программного обеспечения, параметр со значением даты начала использования программы.
Программа позволяет искать файлы, содержащие ADS, выполнять над альтернативными потоками различные операции (удалять и создавать новые, помещать в ADS данные из заданного файла, извлекать данные потоков в файл).
Ниже приводится предопределенный и накапливаемый в утилите список названий потоков.
Вместо эпилога
Подведем некоторые итоги по материалу, изложенному выше. Альтернативные потоки данных предоставляют широкие возможности как в плане организации секретного хранения на жестком диске конфиденциальных данных владельца компьютера, так и сохранения информации, не санкционированного хозяином.
В потоках могут содержаться текстовые документы, таблицы Excel и другие типы информации, которые можно обрабатывать как обычные файлы, без предварительного извлечения.
В ADS могут храниться и запускаться на выполнение исполняемые модули. При этом информация в отношении имени запущенного модуля, отображаемого стандартными средствами операционной системы, может вводить в заблуждение относительно выполняемой процессором программы.
При копировании файлов и каталогов, содержащих потоки, на стандартные съемные носители, которые обычно имеют файловую систему, отличную от NTFS, данные потоков не будут продублированы.
Известны факты использования возможностей ADS как разработчиками вирусов и троянских утилит (в качестве примера можно указать Trojan.Comxt.B), так и авторами известных антивирусных программ.
При использовании специальных программных средств для организации защиты компьютеров необходимо учитывать то обстоятельство, что разработчиками программ могли либо вообще не учитываться возможности поддержки ADS в файловой системе NTFS, либо быть допущены ошибки.
Например, для ряда перечисленных выше специализированных утилит работы с альтернативными потоками данных не проверялось наличие ADS для каталогов и, в частности, для корневого каталога.
Кроме того, при тестировании некоторых программ для гарантированной очистки было обнаружено, что при выполнении операции удаления файла, содержащего альтернативные потоки, не затирается информация, содержащаяся в ADS. Вместе с тем, особых проблем в этом нет, так как пользователи, применяющие средства гарантированного удаления, как правило, используют возможности очистки не занятого файлами и каталогами пространства диска, которые уничтожают оставшиеся следы ADS не до конца удаленных специфических файлов и каталогов.
Материалы:
- «Альтернативные потоки данных NTFS», Дон Паркер, перевод Владимир Куксенок, http://www.securitylab.ru/53136.html.
- «Прикладная информационная безопасность шаг за шагом», Сергей Гринкевич, http://www.securitylab.ru/52764.html.
- «Подготовка и использование аварийного набора», Матт Леско, Журнал «Windows IT Pro», #08, 2004 год // Издательство «Открытые системы», http://www.osp.ru/win2000/2004/08/042.htm.
- «Hidden Threat: Alternate Data Streams», Ray Zadjmool, http://lib.training.ru/Lib/ArticleDetail.aspx?ar=5312&l=n&mi=1326&mic=1337.
- «FAQ: Alternate Data Streams in NTFS», http://www.heysoft.de/Frames/f_faq_ads_en.htm.
- «How To Use NTFS Alternate Data Streams», http://support.microsoft.com/default.aspx?scid=kb;en-us;Q105763&sd=tech.