31 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ntfs работа с дополнительными потоками. Альтернативные потоки данных NTFS

Альтернативные потоки NTFS, или как Widows определяет, что файл был загружен из Интернет.

&nbsp &nbsp Большинство пользователей современных операционных систем семейства Windows сталкивались с ситуацией, когда файл справки в формате CHM (Compiled Help Module) открывается лишь частично – можно просматривать только оглавление без содержимого его пунктов:

При выборе ссылки не открывается соответствующий раздел в правой части окна. Обычно, это происходит с файлами, которые были загружены из Интернет (не в составе архива, например).

Кроме этого, при попытке открыть файл CHM, содержащийся в общей сетевой папке, используя путь в формате UNC (Universal Naming Convention), например \serverhhelp.chm его разделы не отображаются. Другими словами, нормально просматривать файлы .chm можно только в тех случаях, если они не были получены по сети.

Схожая картина наблюдается, когда вы пытаетесь открыть исполняемый файл, который был загружен из сети. Вы увидите предупреждение системы безопасности:

Причем, этот же файл, извлеченный из архива который также был загружен из сети Internet, на данном компьютере может открываться без каких-либо проблем. Фактически, вся разница состоит лишь в том, что открываемый файл был создан локально, в процессе разархивирования, а не загружен по сети. Другими словами, Windows имеет возможность определить сетевое происхождение файла, и отреагировать на него с использованием определенных настроек системы безопасности.

Механизм определения сетевого происхождения файлов.

В файловой системе NTFS каждый файл (или каталог) представлен как набор отдельных элементов, называемых атрибутами. Такие элементы, как имя файла, параметры безопасности и даже данные – все это атрибуты файла. Каждый атрибут идентифицирован кодом типа атрибута и, необязательно, именем атрибута. Так, например, имя файла содержится в атрибуте Filename, содержимое – в атрибуте DATA, сведения о владельце и правах доступа – в атрибуте Security Descriptor и т.д. Содержимое каждого файла (атрибут $DATA) представляет собой набор потоков, в которых хранятся данные. Для каждого файла или каталога в NTFS существует, как минимум один, основной поток, в котором, собственно и хранятся данные. Однако, кроме основного потока, с файлом или каталогом могут быть связаны и альтернативные (Alternate Data Stream – ADS), которые также могут содержать некоторые данные, никак не связанные с данными основного потока. Основной поток файла не имеет имени и обозначается как $DATA:””. Альтернативные же потоки обязательно имеют имя, например – $DATA:”StreamData” – альтернативный поток с именем StreamData

При выполнении функций записи данных в файл, они помещаются в основной поток данных. Когда мы открываем, например, блокнотом текстовый файл, то получаем доступ именно к данным основного потока. Данные же альтернативных потоков, при использовании стандартного доступа, не отображаются, как впрочем, нет даже никаких признаков их наличия. Тем не менее, данные альтернативных потоков, связанные с конкретным файлом или каталогом, могут быть доступны с помощью специальных программ или при использовании особого синтаксиса в командной строке Windows.

Например, запись в файл test.txt текста командой echo:

echo Main stream Data > test.txt – записать текст ” Main stream Data” в файл test.txt,что означает запись в основной неименованный поток.

Но можно изменить команду:

echo Alternate stream Data > test.txt:stream1 – записать текст ” Alternate stream Data” в альтернативный поток с именем stream1 файла test.txt

Теперь можно открыть, например, блокнотом каждый из потоков:

notepad test.txt – откроется содержимое основного потока с текстом ” Main stream Data”

notepad test.txt:stream1 – откроется содержимое альтернативного потока с текстом ”Alternate stream Data”

Альтернативные потоки, будучи невидимыми для стандартных средств работы с объектами файловой системы, тем не менее, очень часто используются для хранения дополнительных сведений о файлах и другой служебной информации. Так, например, при скачивании файлов из Интернет, браузеры добавляют к ним альтернативный поток с именем Zone.Identifier, который можно открыть блокнотом, как и в примере выше

notepad %USERPROFILE% Downloads ChromeSetup.exe:Zone.Identifier – открыть в блокноте альтернативный поток с именем Zone.Identifier для инсталляционного файла браузера Google Chrome с именем ChromeSetup.exe Путь к файлу можно не задавать, предварительно выполнив команду перехода в каталог загружаемых файлов текущего пользователя ( при стандартном расположении служебных пользовательских папок):

cd %USERPROFILE%Downloads – перейти в каталог загружаемых файлов.

notepad ChromeSetup.exe:Zone.Identifier – открыть альтернативный поток с именем Zone.Identifier для инсталляционного файла браузера Google Chrome с именем ChromeSetup.exe в текущем каталоге.

Как видим, содержимое альтернативного потока содержит строки:

[ZoneTransfer] – признак секции с описанием зоны передачи данных
ZoneId=3 – идентификатор зоны.

Эта информация дает возможность определить происхождение файла по номеру идентификатора ZoneId:

– локальный компьютер (Local).
1 – местная локальная сеть (Intranet)
2 – надежные сайты Интернет (Trusted Sites)
3 – Интернет (Internet)
4 – опасные сайты (Restricted Sites)

Читать еще:  Мтс приведи друга смарт для своих. Тариф МТС «Смарт для своих

Такое определение зон, например, соответствует настройкам безопасности обозревателя Internet Explorer:

В данном случае, можно определить, что файл ChromeSetup.exe был получен из Интернет (идентификатор зоны = 3). При запуске такого файла, будет выдано предупреждение системы безопасности о ненадежном источнике. Аналогичным образом работают средства безопасности приложений Microsoft Office, когда предупреждают об опасности открытия файлов, которые были загружены из Интернет. По этой же причине не открывается содержимое файлов справок в формате CHM – содержимое альтернативного потока позволяет классифицировать их как опасные, независимо от реально существующей или несуществующей опасности.

Попробуйте изменить тем же блокнотом, значение ZoneId на , что будет соответствовать локальному происхождению файла, и предупреждение системы безопасности исчезнет, как и проблемы с открытием офисных документов или разделов справок в .chm-файлах.

Аналогичное поведение систем безопасности будет и в тех случаях, если удалить содержимое альтернативного потока (сделать его пустым), или вообще удалить сам альтернативный поток.

Начиная с Windows 7 для получения перечня альтернативных потоков файлов можно использовать команду DIR с параметром /R:

dir /r %UserpRofile%Downloads – отобразить список файлов и альтернативных потоков в каталоге Downloads текущего пользователя.

Для работы с альтернативными потоками в любой версии ОС Windows можно использовать утилиту streams.exe из состава программного пакета Microsoft Sysinternals Suite. Пакет содержит множество небольших программ для диагностики, оптимизации и администрирования, в том числе, и утилиту, позволяющую восполнить недостатки в работе с альтернативными потоками.

Формат командной строки:

streams.exe [-s] [-d]file or directory

Параметры командной строки:

-s – обрабатывать подкаталоги.
-d – удалять альтернативные потоки.
-nobanner – не отображать стартовый баннер и сведения об авторских правах.

streams.exe /? – отобразить справку по использованию программы.

streams myfile.txt – отобразить сведения о потоках файла myfile.txt

streams –d myfile.txt – удалить альтернативные потоки файла myfile.txt

streams -d -s D:Downloads*.* – удалить альтернативные потоки всех файлов и подкаталогов в каталоге D:Downloads

В операционных системах Windows 8 и более поздних, командная оболочка PowerShell также позволяет работать с альтернативными потоками:

Get-Item -Path -Path C:FirefoxSetup.exe -Stream * – отобразить сведения о потоках файла C:FirefoxSetup.exe.

Get-Content -Path C:FirefoxSetup.exe -Stream Zone.Identifier – отобразить содержимое альтернативного потока Zone.Identifier файла C:FirefoxSetup.exe

Remove-Item -Path C:FirefoxSetup.exe -Stream * – удалить все альтернативные потоки, связанные с файлом C:FirefoxSetup.exe

Remove-Item -Path C:FirefoxSetup.exe -Stream Zone.Identifier – удалить альтернативный поток Stream Zone.Identifier, связанный с файлом C:FirefoxSetup.exe.

Информация о зонах безопасности широко используется в групповых политиках, и в частности, Диспетчером вложений Windows, выполняющим функции защиты от вредоносного ПО, которое может содержаться в почтовых вложениях или файлах, загруженных из Интернет. На сайте Microsoft размещена подробная статья о способах настройки диспетчера вложений и решения проблем, связанных с ним:
Описание работы диспетчера вложений, который входит в систему Microsoft Windows.

В заключение добавлю, что альтернативные потоки – это свойство файловой системы NTFS, и, например, в FAT32 не поддерживаются. Соответственно, при копировании файлов из NTFS в любую другую файловую систему, альтернативные потоки отбрасываются.

Альтернативные файловые потоки NTFS

Статья написана для журнала “Хакер” в 2004 году. Она вышла в номере 09/04 (69) под названием “Деструктивные потоки”.

Захватывая очередную NT-систему и устанавливая в нее свой самодельный шпионский софт, необходимо решать проблему хранения собираемой информации на компьютере жертвы. Обычно лог пишется в простой файл в каталоге с большим количеством файлов, например, в system32.

Возможности NTFS

Это распространенный, но далеко не лучший способ спрятать информацию на локальном компьютере. Есть шанс, что пользователь заметит лишний, постоянно обновляющийся файл, который вдруг неожиданно появился у него в системном каталоге. Дописывать лог к уже существующему файлу? Для начала надо найти такой файл, добавление к которому информации не испортит его содержимого. А как насчет того, чтобы сохранять инфу в такое место, которое не будет видно ни из проводника, ни из командной строки, ни из любого файлового менеджера? Такую возможность нам предоставляет файловая система NTFS. На обычной домашней персоналке ее редко встретишь, так как большинство пользователей по-прежнему предпочитают FAT32, даже те, кто сидит под XP. Но зато в локальной сети какой-либо фирмы, работающей под Win2k/XP, почти наверняка используется NTFS, потому что эта файловая система предоставляет такие возможности, как назначение прав доступа пользователям, шифрование и компрессию файлов. Кроме того, NTFS гораздо более надежна, чем FAT32. Так что метод сокрытия данных, который я опишу, идеально подходит для промышленного шпионажа. С появлением Longhorn, NTFS имеет шанс обосноваться и на дисках домашних компов, так как грядущая файловая система WinFS, основанная на NTFS, обещает дополнительные возможности по упорядочиванию и поиску информации, которые должны привлечь обычных пользователей.

Читать еще:  У будущего свой провайдер! Рекомендованные роутеры Skynet тип соединения настройка роутера.

Прикрепи к файлу любые данные

Способ заключается в том, чтобы сохранять данные не в файл, как обычно, а в файловый поток NTFS. Поток можно прикрепить к другому файлу (при этом его размер не меняется, и данные остаются нетронутыми, а значит, утилиты, проверяющие чексуммы файлов, не заметят изменений), к каталогу или к диску. Альтернативные файловые потоки NTFS – это одна из возможностей NTFS, присутствующая в ней еще с самых ранних версий Windows NT. Она заключается в том, что у одного файла может быть несколько потоков, содержащих данные, причем пользователю доступен лишь главный поток, в котором хранится содержимое файла. Нечто похожее есть в файловой системе HFS на Макинтошах. Там потоки (streams) называются разветвлениями (forks). До недавнего времени они использовались как хранилище ресурсов файла или содержали информацию о типе файла. С появлением MacOS X, Apple рекомендовала помещать ресурсы в отдельные файлы, а типы файлов определять по расширениям. Но поддержка разветвлений все равно остается. В Windows потоки обычно используются для хранения какой-либо дополнительной информации о файле. Например, в потоке может содержаться сводка документа. Если система стоит на диске с NTFS, то файл explorer.exe наверняка содержит сводку. В зависимости от содержимого сводки, к файлу могут прикрепляться потоки с именами SummaryInformation, DocumentSummaryInformation и некоторые другие. У себя на компьютере я обнаружил поток с именем $MountMgrRemoteDatabase, прикрепленный к диску C.

О прикрепленных к файлу потоках юзер может узнать лишь в некоторых случаях, например, при копировании файла с прикрепленным потоком на диск с FAT/FAT32. Эти файловые системы их не поддерживают, поэтому система выдаст запрос на подтверждение потери информации в потоках, указав их названия. Разумеется, такая ситуация никогда не возникнет, если поток прикреплен к диску или к системной папке. Необязательно использовать потоки в шпионских целях. Если ты разработчик shareware программ, то ты вполне можешь использовать потоки для хранения информации о регистрации, количестве дней до истечения срока использования, словом, все то, что должно быть скрыто от пользователя твоей проги.

Работа с потоками

В работе с файлами и потоками есть и сходства, и различия. Похожего не так уж много. И файлы, и их потоки создаются и удаляются одними и теми же WinAPI функциями CreateFile и DeleteFile. Чтение и запись реализуются, соответственно, функциями ReadFile и WriteFile. На этом сходства кончаются, дальше идут одни различия. В именах потоков могут содержаться спецсимволы, которые не могут быть частью имени нормального файла: такие как “*”, “?”, “ ” ,“|” и символ кавычки. Вообще, любое имя потока сохраняется в формате Unicode. Еще могут использоваться служебные символы из диапазона 0x01 – 0x20. Нет стандартной функции копирования и переноса потока: MoveFile и CopyFile с потоками не работают. Но никто не мешает написать свои функции. У потоков отсутствуют собственные атрибуты, даты создания и доступа. Они наследуются от файла, к которому прикреплены. Если в самом файле есть какие-либо данные, то их тоже можно представить в виде потока. Имена потоков отображаются как «имя_файла:имя_потока:атрибут». Стандартный атрибут потока, в котором находятся данные, называется $Data. Есть много других атрибутов, имена которых также начинаются со знака “$”. Содержимое файла находится в безымянном потоке (имя_файла::$DATA). С этим свойством файловой системы представлять содержимое файла в виде потока был связан баг в старых версиях Microsoft IIS, когда хакер, который хотел узнать текст какого либо скрипта на уязвимом сервере, просто добавлял к его имени “::$DATA”, и сервер, вместо того чтобы выполнить скрипт, выдавал его исходный код. Работа с потоками похожа на работу с файлами. Взгляни на листинг 1. Это простой пример программы, создающей файл с потоком и записывающей в него информацию. После запуска программы в ее каталоге появится пустой файл «testfile». Увидеть содержимое прикрепленного потока можно, набрав в командной строке «more , и если она включена, то ты можешь заметить, что размер небольшого файла, помещенного в архив, не только не уменьшается, а даже увеличивается (за счет того, что данные в потоках тоже помещаются в архив). Это может вызвать подозрения. Программа для отслеживания обращений к файловой системе – FileMonitor от тех же Sysinternals – не делает различий между обращениями к файлам или потокам. Соответственно, внимательное изучение лога обращений к диску подозрительной программы (твоего кейлоггера) выдаст и название потока, куда пишется лог, и имя файла, к которому он прикреплен.

Вирусы

В сентябре 2000 года появился первый вирус, использующий для своего распространения альтернативные файловые потоки. W2k.Stream был первым представителем нового типа вирусов – stream companion. Он ищет в своем каталоге файлы .exe, и если находит, то начинает процесс заражения. К файлу прикрепляется дополнительный поток, в который вирус переносит содержимое оригинального файла, а потом копируется тело вируса в основной поток файла. После запуска зараженного файла вирус снова пытается заразить файлы в своем каталоге, а затем запускает программу из дополнительного потока. Действительно, с помощью функции CreateProcess можно запускать процесс из потока. Причем файл с потоком можно спокойно удалить, а процесс останется. Просто сказка для троянов! Несмотря на то, что с момента появления W2K.Stream прошло уже почти четыре года, еще не все антивирусы способны обнаруживать вредоносный код в файловых потоках. Поэтому появление новых червей и вирусов, использующих их, может представлять серьезную опасность.

Читать еще:  Не обновляется защитник windows 7. Защитник Windows: включить и отключить, функции, обновление

Другие вирусы, использующие потоки

Кроме W2K.Stream, потоки нашли применение и в других вирусах и червях. Первым червем, использовавшим файловые потоки, являлся I-Worm.Potok. Эта зверушка прикрепляет несколько потоков к файлу odbc.ini в каталоге Windows и хранит там скрипты для рассылки себя по почте. Еще одним вирусом является W2k.Team. Описание этих и других подобных вирусов ты можешь найти на сайте http://www.viruslist.com/

Работа с потоками из консоли

Создание файла с потоком:
type nul > somefile.txt:Stream

Запись в поток:
echo “Something” >> somefile.txt:Stream

Чтение из потока:
more > somefile.txt:Stream

Копирование содержимого потока в файл:
more > file2.txt

Удаление потоков

Существует мнение о том, что поток можно удалить только вместе с файлом, к которому он прикреплен. Это не так. Если ты знаешь название потока, то ты всегда сможешь удалить его стандартной функцией DeleteFile.

Листинг 1. Пример создания потока.

Листинг 2. X-Stream: Программа, показывающая список потоков

Дополнительные потоки данных в NTFS №1

Цель этой статьи объяснить смысл
дополнительных потоков данных (alternate data streams)
в операционных системах Windows,
продемонстрировать как создать их и
скомпрометировать машину, как найти
скрытые файлы используя общедоступные
утилиты. Первым шагом нужно будет осознать
смысл ADS и то, какую угрозу они несут, затем
посмотрим как они используются для взлома
ну и наконец затем рассмотрим инструменты
для обнаружения активности и то, как
остановить дальнейшую незаконную работу с
ними.

Дополнительные потоки данных появились в
Windows вместе с NTFS. На самом деле, насколько я
понимаю, особого смысла в них не было – они
были сделаны для совместимости с HFS, старой
файловой системой Macintosh – Hierarchical File System. Дело
в том, что эта файловая система использует
как ветвь данных, так и ветвь ресурсов для
хранения контента. Ветвь данных,
соответственно, ответственна за содержание
документа, а ветвь ресурсов за
идентификацию файла – его типа и прочих
данных. К нынешнему времени о существовании
дополнительных потоков из обычных юзеров
мало кто знает. Однако, в мире компьютерной
безопасности они получили определенное
распространение. Например злобные хакеры
используют ADS для хранения файлов на
взломанных компьютерах, так же они иногда
применяются вирусами и другим malware. Дело
ведь все в том, что эти потоки не
просматриваются обычными методами, тем же
Проводником или через командную строку. Чем
интересны эти потоки? А тем, что в случае
расследования взлома не всегда обращают
внимание на них, к тому же не все антивирусы
по умолчанию просматривают потоки в
поисках вредоносного софта.

Для того, что бы понять реальную опасность
ADS лучше продемонстрируем работу с ними.
В примере мы с помощью Metasploit Framework проникнем
на машину. Для этого используем уязвимость
MS04-011 (lsass). Затем при помощи TFTP зальем файлы,
которые и поместим в дополнительные потоки
данных. Как только это будет закончено на
удаленной машине запусти из командной
строки сканер, который просканирует сеть на
наличие других машин. Обратите внимание,
что авторы Metasploit Framework снабдили свое
творение сигнатурой METASPLOIT, дабы создатели
защитных программ могли определять пакет,
исходящий от MF. Обратите внимание на пакет,
исходящий от атакующего:

Тут 192.168.1.102 компьютер атакующего на
котором стоит Metasploit Framework, а 192.168.1.101 –
уязвимый комп с Win2K Prof. В данном случае Ось
поставлена без патчей и сервиспаков,
исключительно для демонстрационных целей
:). Обратите внимание, что сами по себе ADS не
слишком полезны, они, естественно, радуют
нападающего только в том случае, если есть
доступ к машине, системная уязвимость в
операционной системе. В настоящей сети вы
вряд ли найдете непропатченную W2K, так что
придется искать другие принципы
проникновения.

Ниже мы видим, что атака была успешной и на
атакующей машине открыт реверсивный шелл,
отданный жертвой. По умолчанию для этой
уязвимости в Metasploit используется порт 4321,
однако его можно изменить:

голоса
Рейтинг статьи
Ссылка на основную публикацию
Статьи c упоминанием слов: