Альтернативные потоки ntfs. Альтернативные потоки данных NTFS, или почему не запустился скрипт PowerShell
Альтернативные потоки данных NTFS
Цель этой статьи – описание альтернативных потоков данных в Microsoft Windows, демонстрация того, как их можно создать, скомпрометировав машину, используя Metasploit Framework и как можно обнаружить с помощью свободно распространяемых утилит.
1. Введение
Для начала мы определимся в том, что из себя представляют альтернативные потоки данных и какую угрозу они могут представлять для вашей организации. Затем мы рассмотрим пример компрометации удаленной машины с помощью эксплойта, предоставляющего доступ к командному интерпретатору и позволяющего скрывать файлы на компьютере жертвы. После этого, мы рассмотрим некоторые свободно распространяемые утилиты, которые могут быть использованы для определения и предотвращения такой активности. Начнем.
2. Что такое альтернативные потоки данных
На сегодняшний день не всем известно о существовании альтернативных потоков данных. Однако какое-то время они использовались некоторыми не лучшими представителями сообщества специалистов безопасности. Было отмечено увеличение использования этих потоков злонамеренными хакерами, желающими спрятать свои файлы сразу после компрометации компьютера. Кроме этого, было замечено, что некоторые вирусы и другие типы злонамеренного ПО также используют альтернативные потоки данных. Проблема в том, что эти потоки нельзя просмотреть, используя стандартные методы, через командную строку или с помощью Windows Explorer.
Как же обнаружить злонамеренное использование альтернативных потоков данных? Необходимо следить за повышением использования таких потоков. Даже если учесть, что корпоративный объект хорошо защищен, нужно иметь в виду, что не все антивирусные средства в конфигурации по умолчанию проверяют альтернативные потоки данных. В настоящее время большая часть антивирусных продуктов находит эти потоки, но только после дополнительной настройки.
3. Пример использования альтернативных потоков данных
Однако использование специального тестового компьютера никак не повлияет на результат. Чтобы доказать возможность атаки, не нужно атаковать реальный компьютер через Интернет.
В данном примере мы проникнем в компьютер, используя Metasploit Framework. Эксплойт, который я буду использовать основан на уязвимости MS04-011, также известной в Metasploit как “lsass overflow”. Для загрузки набора файлов, который мы хотим спрятать, будем использовать протокол TFTP. Затем эти файлы будут помещены в альтернативные потоки данных существующих файлов, найденных на уязвимом компьютере, что ясно продемонстрирует возможность их злонамеренного использования.
Как только эти действия будут завершены, сканер, загруженный на компьютер, будет удаленно запущен и начнется поиск других уязвимых машин во внутренней сети. H. D. Moore, один из соавторов Metasploit Framework, внедрил в эксплойт ASCII строку “METASPLOIT”. Можно предположить, что это было сделано для того, чтобы производители IDS смогли создать сигнатуру для его утилиты. Взгляните на пакет, отправленный с атакующего компьютера, показанный ниже, в котором можно заметить эту строку.
Обратите внимание, 192.168.1.102 – атакующий компьютер, использующий Metasploit Framework, а 192.168.1.101 – компьютер жертвы, на котором установлена ОС Windows 2000 Professional. Инсталляция W2K свежая, без каких-либо исправлений или пакетов обновлений, используется только для демонстрационных целей. Имейте в виду, что для злонамеренного использования альтернативных потоков данных, в первую очередь нужно найти машину с уязвимостью, годной к использованию. Не обновленная Windows 2000 в данном случае используется только для демонстрации, в реальной жизни для реализации атаки на обновленную систему потребовался бы другой эксплойт.
Ниже мы можем увидеть, что атака прошла успешно. Наша атакующая машина получила доступ к командной строке на компьютере жертвы. Порт 4321 – порт, используемый по умолчанию для lsass эксплойта в Metasploit. При желании он может быть изменен.
Теперь по протоколу TFTP начинается передача файлов от атакующего на скомпрометированный компьютер. Обратите внимание на команду, которая была передана командному интерпретатору, приказывающую жертве загрузить файл ipeye.exe. Загрузка файлов будет продолжаться до тех пор, пока мы не получим 4 файла: ipeye.exe, psexec.exe, pslist.exe, и klogger.exe. Для краткости я не стал приводить последовательную передачу пакетов. Ниже показано содержимое директории, содержащей загруженные файлы, на компьютере жертвы после завершения передачи. Имя этой директории – c:compaq. Ниже мы видим, как атакующий удаляет файл “tftp780” из этой директории. Это доказывает возможность удаления файлов. Теперь атакующий помещает исполняемый файл ipeye.exe в альтернативный поток данных, ассоциированный с существующим файлом test_file. Команда, осуществляющая эти действия, имеет следующий синтаксис: Процесс скрытия оставшихся трех файлов, загруженных на скомпрометированный хост, закончен. Они скопированы в альтернативные потоки данных существующего файла на компьютере жертвы. Точно также вы можете скопировать файл в поток каталога, например C:.
Затем мы запустим psexec.exe на компьютере жертвы, который в свою очередь запустит сканер ipeye.exe, находящийся в альтернативном потоке данных c:Compaqtest_file:ipeye.exe. Заметьте, я использую копию psexec.exe, находящуюся не в потоке, а в самой директории.
Существует много способов запуска программы на Win32 компьютере. Один из вариантов создания процесса – использование команды “start”, что является простым решением, не оставляющим следов на машине жертвы. Некоторые хакеры вместо этого для запуска программы могут использовать bat-файл или другие средства. Фактически алгоритм работы хакеры не всегда может быть известен, и мы должны помнить – не все хакеры одинаковы. Подозрительные действия многих хакеров можно изучить, используя honeynet. Причина, по которой psexec.exe был выбран для этой статьи, очень проста – набор свободно распространяемых утилит, предоставляемых Sysinternals, часто используется хакерами. Поэтому для придания реализма статье я решил использовать именно их. Итак, продвинемся дальше и рассмотрим нижеприведенный пакет. Этот пакет является результатом исполнения следующей команды: Утилита для сканирования, ipeye.exe, часто используется хакерами для дальнейшего проникновения в сеть. Обратите внимание, для тестирования я использовал еще один компьютер, имеющий IP адрес 192.168.1.100 и слушающий 139 порт. Однако, как хакер, пришедший из внешней сети, для того чтобы найти это компьютер, я должен был бы произвести сканирование внутренней сети, используя один из зарезервированных диапазонов IP адресов. Анализируя приведенные пакеты, мы можем сделать вывод, что сканер портов отработал успешно. Мы получили информацию, что порт 139 на сканируемой машине действительно открыт. Так как этот компьютер находится в моей лаборатории, у меня есть возможности проверить и подтвердить результаты. Этот пример демонстрирует возможность злонамеренного использования потоков хакерами. Но нужно иметь в виду, что служащие компании потенциально могли скрыть такой нежелательный контент как порнография, юридически законный или незаконный в зависимости от конкретного места.
4. Решение проблемы
Что делать с проблемой злонамеренного использования альтернативных потоков данных. Есть несколько неплохих утилит, написанных талантливыми разработчиками Frank Heyne и Arne Vidstrom, которые позволяют обнаруживать альтернативные потоки данных.
Чтобы показать, что из себя представляют эти потоки и как их можно обнаружить будет показан снимок системы до компрометации и после. Для обнаружения альтернативных потоков данных в Windows 2000 мы воспользуемся утилитами lads и lns. Ниже показан вывод каждой из этих утилит, запущенных на недавно установленной W2K. Как и ожидалось, ничего не найдено. Теперь посмотрите на вывод этих утилит, полученный после компрометации компьютера жертвы. Как мы видим, вышеупомянутые утилиты успешно обнаружили созданные нами альтернативные потоки данных. Таким образом, используя свободно распространяемые утилиты, вы можете легко найти альтернативные потоки данных на вашем компьютере. Настоятельно рекомендуется производить такой поиск регулярно. В то время как некоторые производители антивирусов только начинают обращать внимание на альтернативные потоки данных, вы можете свободно использовать утилиту, созданную специально для обнаружения этих потоков.
5. Заключение
Подписывайтесь на каналы “SecurityLab” в Telegram и
Яндекс.Дзен, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.
Статья Альтернативные потоки данных NTFS и их применение в pentest.
z3r0c10wn
Добрый день, коллеги.
Данную статью, я по прежнему хотел бы (как и предыдущую) озаглавить фразой – Всё новое – это хорошо забытое старое. Причина в том, что многие не придают значения старым техникам(умышленно полагая что они не работают или не нужны), но именно старые техники могут быть модифицированы и улучшены, в результате помогая добиться отличных результатов.
Для понимания статьи, нам необходимо будет описать не много теории.
1. Введение
Цель этой статьи – описание альтернативных потоков данных в Microsoft Windows, демонстрация того, как их можно создать, скомпрометировав машину и благодаря этому обойти некоторые политики безопасности системы, так же в дальнейшем мы рассмотрим методы детектирования ADS и защиты для Blue Team.
(Не факт что все будет описано в этой статье, но будет цикл минимум из 3 статей)
2. Что такое альтернативные потоки данных (ADS – я буду использовать это обозначение в статье)
Альтернативные потоки данных появились в ОС Windows NT с введением файловой системы NTFS.
Что же такое альтернативные потоки данных?
Альтернативные потоки данных ( Alternate Data Streams, ADS) — метаданные, связанные с объектом файловой системы NTFS.
В файловой системе NTFS файл, кроме основных данных, может также быть связан с одним или несколькими дополнительными потоками данных. При этом дополнительный поток может быть произвольного размера, в том числе может превышать размер основного файла.
В сущности, они были созданы для обеспечения совместимости в HFS (устаревшей файловой системой Macintosh). Суть организации HFS состоит в раздвоение файла на файл данных и файл ресурсов. В файле данных находится содержимое документа, а в файле ресурсов – идентификатор типа файла и другие свойства.
На сегодняшний день не всем известно о существовании альтернативных потоков данных. Однако какое-то время они использовались некоторыми не лучшими представителями сообщества специалистов безопасности. Было отмечено увеличение использования этих потоков злонамеренными хакерами, желающими спрятать свои файлы сразу после компрометации компьютера. Кроме этого, было замечено, что некоторые вирусы и другие типы злонамеренного ПО также используют альтернативные потоки данных, до сих пор можно очень часто встречать использование ADS в различных нашумевших атаках. Проблема в том, что эти потоки нельзя просмотреть, используя стандартные методы, через командную строку (речь идет о простом листинге dir) или с помощью Windows Explorer.
Как же обнаружить злонамеренное использование альтернативных потоков данных? Необходимо следить за повышением использования таких потоков. Даже если учесть, что корпоративный объект хорошо защищен, нужно иметь в виду, что не все антивирусные средства в конфигурации по умолчанию проверяют альтернативные потоки данных. В настоящее время часть антивирусных продуктов находит эти потоки, но только после дополнительной настройки, которая сильно повышает нагрузку на дисковую подсистему (на файловых серверах при копировании может быть Швах) и в результате чаще всего эти настройки выключены администраторами.
Конкретные методики обнаружения альтернативных потоков данных я рассмотрю в отдельной статье
Альтернативные потоки NTFS, или как Widows определяет, что файл был загружен из Интернет.
    Большинство пользователей современных операционных систем семейства 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%DownloadsChromeSetup.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
Здравствуйте, уважаемые компьютерщики и специалисты в области ИБ. Сегодня я расскажу об одной незамысловатой особенности файловой системы NTFS, которая может быть полезна вам, дабы раскрыть коварный план злоумышленника, намеревающегося сокрыть важную информацию.
Думаю, что никто не станет спорить с тем, что файловая система NTFS сейчас прочно заняла первое место среди пользователей операционных систем семейства Windows, вытеснив такие файловые системы как FAT16 и FAT32 (которые в общем-то схожи), а файловая система exFAT, несмотря на значительно более проработанную концепцию, всё ещё не дотягивает по популярности до NTFS.
Откуда пошли альтернативные потоки данных?
Ключевым термином NTFS является MFT – Master File Table. Каждая запись MFT описывает конкретный файл и состоит из набора фиксированных атрибутов. Каждый атрибут содержит список полей, содержащих определённые значения.
Атрибуты бывают такими:
- $10 – $STANDART_INFORMATION
- $30 – $FILE_NAME
- $80 – $DATA
- …
Вообще их довольно таки много, но важно понимать, что каждая запись MFT представляет собой набор этих атрибутов.
Вот скриншот из программы DiskExplorer от Runtime’s (создатели GetDataBack). Я открыл произвольный файл (LOG.old) и слева отобразился перечень атрибутов. Здесь есть $10 – $STANDART_INFORMATION – стандартная информация. В этом атрибуте указываются временные метки файла и атрибуты DOS.
Атрибут $30 – $FILE_NAME – содержит имя файла. Если длина имени больше 8 символов (стандарт 8.3), то создаётся дополнительный атрибут $30 как для длинного имени, так и для короткого. Всё просто.
А вот другой скрин, на котором я отобразил атрибут $80 – $DATA, то есть содержимое файла:
Помните, я сказал, что если имя длинное, то у файла два атрибута $30, для каждого из имён? Это ключевой момент. Мы почти подошли к сути вопроса. Вообще у файла может быть несколько однотипных атрибутов, никто не запрещает. Так вот, а что будет, если у файла будет несколько атрибутов $DATA? То есть непосредственно содержимого. Да, такая ситуация возможна!…
Это и называется альтернативным потоком данных. Единственная особенность – должен быть атрибут $DATA по умолчанию (он задаётся без имени), остальные атрибуты $DATA должны быть поименованы, чтобы к ним можно было обратиться.
Как создать альтернативный поток данных?
Из доступных способов – командная строка. Для обращения к дополнительным атрибутам $DATA используется суффикс : . Например, если мы хотим поместить в текстовый файлик 1.txt содержимое файла sekret.rar в альтернативный поток, то должны выполнить команду:
type sekret.rar > 1.txt:litl-admin.ru
Данная команда создаст новый атрибут $DATA с именем litl-admin.ru (как мило) и перенаправит в него содержимое архива sekret.rar. Проверим?
С виду размер файла 1.txt не изменился. Я написал туда произвольный фрагмент данных. Посмотрим его содержимое блокнотом:
Ничего необычного не видно. А теперь найдём-ка его MFT-запись.
Видите второй атрибут $80 с именем litl-admin.ru? Это и есть наш “скрытый” альтернативный поток данных. На самом деле таких потоков у файла может быть огромное количество. Но не нужно думать, что эти возможности используются исключительно злоумышленниками в корыстных интересах.
Для чего можно использовать скрытые потоки?
По секрету скажу, что в вашей системе скорее всего используется огромное количество файлов со скрытыми потоками. Наиболее популярные варианты использования – это пометки файлов, скачанных с недоверенных источников, пометки файлов, проверенных антивирусами, иные метки, позволяющие каким-то способом “подписать” файл. Замечали, что иногда, при открытии файла, скачанного с Интернета, появляется окно с предупреждением, что файл получен из Интернета и относиться к нему нужно осторожно? Как думаете, каким способом помечен файл?
Как идентифицировать скрытые потоки?
Вместе с тем, существует способ массово просканировать каталог и вывести все альтернативные потоки данных в имеющихся файлах. Для этого существует бесплатная программка AlternativeStreamView от Nirsoft.
Работа с ней очень проста. Запускаете, выбираете каталог для сканирования и получаете результаты:
При помощи неё же можно извлечь поток в отдельный файл:
Расширение файла при этом, правда, будет утрачено, зато можно определить тип по содержимому:
Обратите внимание на то, что размер файлов совпадает – это и есть содержимое потока:
Что я имел ввиду, когда говорил о том, чтобы определить тип файла по содержимому? А вот что:
У многих файлов есть конкретная сигнатура. Для архивов WinRAR это “Rar!” Встретили – меняем расширение на “.rar” и получаем рабочий архив.
Друзья! Вступайте в нашу группу Вконтакте, чтобы не пропустить новые статьи! Хотите сказать спасибо? Ставьте Like, делайте репост! Это лучшая награда для меня от вас! Так я узнаю о том, что статьи подобного рода вам интересны и пишу чаще и с большим энтузиазмом!
Также, подписывайтесь на наш канал в YouTube! Видео выкладываются весьма регулярно и будет здорово увидеть что-то одним из первых!
Альтернативные потоки данных в NTFS или создание секретных файлов
Приветствую Вас, уважаемые читатели блога webcodius.ru. Файловая система NTFS обладает интересной возможностью поддержки альтернативных потоков данных (Alternate Data Stream, ADS). Технология подразумевает под собой, то, что каждый файл в файловой системе NTFS может иметь несколько потоков, в которых могут храниться данные. Проводник и большинство других приложений работают только со стандартным потоком и не могут получить данные их альтернативных. Таким образом с помощью технологии ADS можно скрывать данные, которые не удастся обнаружить стандартными способами.
Поддержка альтернативных потоков данных была добавлена в NTFS для совместимости с файловой системой HFS, использующейся на MacOS.
Немного теории
В файловой системе NTFS файлы имеют атрибуты. Один из атрибутов $DATA является атрибутом данных. В свою очередь атрибут $DATA может иметь несколько потоков. По умолчанию существует один основной поток $DATA:”” , который называют неименованным. С этим потоком как раз и работает проводник windows. При желании к файлу можно добавить несколько именованных потоков (например $DATA:”potok1″ ), которые будут содержать различные не связанные между собой данные.
По умолчанию все данные, записываемые в файл, попадают в основной неименованный поток данных. И при открытии файла мы видим только основной поток. Альтернативные потоки NTFS, которые есть у файла, скрыты от пользователя и штатными средствами их не увидеть. Поэтому удалив файл с потоками, содержащими объемные данные, можно заметить, что места на устройстве хранения данных освободилось значительно больше, чем занимал файл по мнению того же Проводника. Альтернативными потоками часто пользуются вирусы, которые могут прописать себя в именованый поток какого-нибудь безобидного файла.
Для работы с альтернативными потоками можно использовать специальные программы, либо командную строку.
Как создать альтернативный поток NTFS
Создать альтернативный поток можно с помощью консольной команды echo .
Для начала откроем командную строку cmd.exe и с помощью команды echo создадим текстовый файл example.txt и запишем в него текст:
echo Главный поток>example.txt
Следующей командой запишем данные в альтернативный поток. Для этого после названия файла ставите двоеточие (:) и даете название потоку:
echo Альтернативный поток>example.txt:test
Теперь если открыть файл example.txt в любом тестовом редакторе, то будет виден только первый текст «Главный поток»:
Получить информацию содержащуюся в потоке можно с помощью команды more :
И откроем его в блокноте:
В альтернативные потоки, можно помещать не только текстовые данные, а абсолютно любые типы данных. Кроме того к любым типам файлов можно добавлять любые данные — к текстовым файлам добавлять видео, а к изображениям текстовую информацию.
Для примера добавим к нашему файлу поток с изображением img.jpg. Для этого воспользуемся командой type :
В результате мы получили обычный текстовый файл. Если открыть его обычным способом: двойным щелчком через проводник, то откроется текстовый редактор с содержимым главного потока:
Чтобы открыть содержащееся в альтернативном потоке изображение, например в Paint-е, достаточно воспользоваться командой:
Что самое интересное альтернативные потоки не увеличивают видимый объем файла. Так если к текстовому файлу размером 1 Кб добавить видео размером 30 Гб, то проводник все равно покажет размер файла 1 Кб.
Также потоки можно добавлять для папок и даже для разделов жесткого диска. Делается все также как и для файлов:
echo Текст в папке>c:test:hide.txt
И открываем в блокноте:
Так как наличие альтернативных потоков никак не отображается в проводнике и других файловых менеджерах, самый простой способ их обнаружить это воспользоваться командой dir /R :
Скрытие приложений в альтернативных потоках и их запуск
Поместить исполняемые файлы в альтернативные потоки также легко как и обычные файлы. Для примера возьмем наш файл example.txt и поместим приложение Блокнот (notepead.exe) в поток hideapp.exe:
Чтобы запустить скрытый Блокнот используется следующая команда:
С помощью описанных приемов можно легко спрятать информацию от неподготовленных пользователей. Вообще применение альтернативных потоков данных ADS ограничено только вашей фантазией.
Альтернативные потоки данных NTFS
сегодня я видел эту странную магическую поддержку системы NTFS: каждый файл может иметь несколько потоков данных. В основном можно иметь файл a.txt размера 0b, но может быть любое количество байтов, скрытых в отдельном потоке данных для этого файла. Это строго связанная с NTFS магия, и я не вижу никакой благородной причины для наличия этих потоков. Вы можете искать потоки NTFS с помощью streams утилиты от Sysinternals. Это покажет вам, что в основном каждый из этих неприятных thumbs.db файлы поставляется с дополнительным потоком данных.
хорошо, теперь я видел эту магическую работу в системе Windows NT4, потоки, добавленные в файлы, скопированные, удаленные (с помощью вышеупомянутой утилиты), но теперь я пытаюсь это дома в моей системе Win XP, Но, хотя я могу обнаружить существующие потоки, я не могу отображать их содержимое, не могу создавать новые, или очень многое, когда я использую filename:streamname синтаксис.
я получаю эту ошибку:
в имя файла, имя каталога или синтаксис метки тома неверно.
пример: Вывод из утилиты streams:
почему я не могу отобразить содержимое альтернативного потока данных?
просмотр документации Microsoft на “как использовать NTFS альтернативные потоки данных” я вижу, что это относится к моей операционной системы, хотя они упоминают, что эти потоки не будут поддерживаться в будущем. Кто-нибудь может пролить свет на это?
6 ответов
С макушки моей головы:NTFS потоки данных были введены в Windows NT 4.0 и были вокруг всех потомков (за исключением потомков win-95: 98, Me). В XP, Vista и Win 7 они все еще вокруг. Пока версии Windows поддерживают NTFS, они будут поддерживать потоки файлов. Они будут поддерживать NTFS в течение длительного времени.
ошибка, которую вы имеете, описана на странице, которую вы показываете в своем вопросе. The type команда не понимает потоки. Использовать:
работа с потоками
Microsoft имеет только несколько команд, которые работают с потоками, на самом деле, только , > работа с потоками, и поэтому могут использоваться только команды, которые могут работать с этими операторами перенаправления. Я написал пара сообщений в блоге на альтернативных потоках данных о том, как вы все еще можете управлять потоками только с помощью этих команд.
Streams будет работать только с программами, которые предназначены для работы с ними просто потому, что их нужно лечить специально (сравните точки соединения, также особенность NTFS, но драйвер скрывает детали, и программам не нужно делать ничего особенного: они просто считают точку соединения реальным файлом).
при попытке открыть поток файлов с помощью start filename:streamname и программа говорит что-то вроде “незаконное имя файла” или “файл не найден”, и вы уверены, что имя потока правильное, то, скорее всего, программа не поддерживает потоки. Я заметил, что Блокнот, Wordpad и Word/Excel правильно работают с потоками, хотя Word и Excel считают файлы опасными. Вот эксперименты вы можете попробовать.
Примечание: Вы, кажется, считаете альтернативные потоки данных нечетными. Они странные, потому что они настолько скрыты, но многие основные файловые системы (HFS, NSS) имеют его, и концепция восходит к началу 80-х. Фактически, первоначально потоки были добавлены в NTFS для взаимодействия с другими файловая система.