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

Файловые потоки ntfs. Альтернативные потоки данных в NTFS

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

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

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

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

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

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

Способ заключается в том, чтобы сохранять данные не в файл, как обычно, а в файловый поток 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 — не делает различий между обращениями к файлам или потокам. Соответственно, внимательное изучение лога обращений к диску подозрительной программы (твоего кейлоггера) выдаст и название потока, куда пишется лог, и имя файла, к которому он прикреплен.

Читать еще:  Что значит 3000 мач. Смартфон с мощным аккумулятором

Вирусы

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

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

Кроме 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 или создание секретных файлов

Приветствую Вас, уважаемые читатели блога 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

Цель этой статьи – описание альтернативных потоков данных в 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 и Twitter, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

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