Меню
Бесплатно
Главная  /  Проблемы  /  Перемещение файла с альтернативным потоком. Альтернативные потоки данных в NTFS

Перемещение файла с альтернативным потоком. Альтернативные потоки данных в NTFS

Операционные системы Windows наделены двумя малоизвестными функциями сокрытия данных: потоки данных NTFS (известные также как альтернативные потоки данных) и доступ к списку ресурсов на базе разрешений Access-based Enumeration (ABE). Альтернативные потоки данных дают возможность добавлять к файлу скрытую информацию, такую как сведения о файле. Скорее всего, вам не придется задействовать скрытые потоки данных, однако злоумышленники могут использовать эту технологию против вас, так что следует иметь представление о ней и о том, как она может работать.

Что же касается метода ABE, он может пополнить ваш арсенал. Этот метод позволяет делать невидимыми папки и файлы совместно используемых ресурсов для тех пользователей, которые не имеют разрешения на доступ к ним.

Вот что необходимо знать об этих средствах.

Реки, питающие море данных

Альтернативные потоки данных - это функция файловой системы NTFS. Некогда ими была наделена система Windows NT 3.1 с тем, чтобы дать возможность пользователям NT и Macintosh обмениваться файлами.

Файл NTFS состоит из потоков данных. Это стандартный поток данных $DATA, и, возможно, один или несколько альтернативных потоков данных. Всякий пользователь, обладающий необходимыми разрешениями на работу с файлом, видит существующий поток данных $DATA, может открыть его, а также считывать и записывать данные в этот поток.

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

Существует множество способов использования альтернативных потоков данных. В системе Windows эти потоки применяются для хранения сводных данных документов, созданных приложениями, которые не входят в комплект Microsoft Office, таких как простые текстовые файлы (.txt). Сводные данные, например заголовок, тема и данные об авторе, можно ввести на вкладке Summary диалогового окна Properties соответствующего файла. Эти сводные данные хранятся в альтернативном потоке данных SummaryInformation.

Приложения Windows, такие как Encrypting File System (EFS) и Windows Explorer, используют альтернативные потоки данных для присоединения касающихся тех или иных файлов данных к файлам, которые хранятся на накопителях, отформатированных под систему NTFS. Программа EFS с помощью альтернативных потоков данных присоединяет к зашифрованным файлам сведения о кодировании и декодировании, что обеспечивает возможность децентрализованного шифрования и дешифрации средствами этой программы.

Реализованное в пакете Windows XP Service Pack 2 (SP2) приложение Microsoft Internet Explorer (IE) использует альтернативный поток данных Security.Zone для обеспечения классификации по зонам безопасности файлов, записанных на томе NTFS. В результате IE имеет возможность блокировки предполагающих расширение объема прав пользователя атак, которые могут иметь место в ситуациях, когда пользователь загружает вредоносный код из ненадежной по критериям безопасности зоны Internet и сохраняет этот код на локальном жестком диске. IE относит локально сохраненный контент к зоне безопасности Local Machine, которая предусматривает предоставление большего объема прав, нежели зона безопасности Internet. Пакет XP SP2 всегда проверяет поток данных Security.Zone перед тем как разрешить загруженному коду предпринимать какие-либо действия на локальной системе.

Канал для внедрения вредоносного кода

Заслуживающими внимания и опасными альтернативные потоки данных становятся по той причине, что их имена и содержимое не отображаются в окне программы Windows Explorer. Поэтому организаторы разного рода атак считают такие потоки удобным средством сокрытия данных или злонамеренного кода, попавшего в систему. Примером использования этих потоков может служить червь VBS.Potok@mm. Хакеры использовали альтернативный поток данных для присоединения к существующему.ini-файлу ODBC нескольких сценариев на языке Visual Basic (VB).

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

Еще одна опасность кроется в том, что дисковое пространство, выделенное для альтернативных потоков данных, не отображается в данных о размерах (файлов) и о незанятом дисковом пространстве программы Windows Explorer. Хакер может использовать альтернативные потоки данных для заполнения дискового пространства файлового сервера, и администратору останется только ломать голову, пытаясь докопаться до причины проблемы. Кроме того, надо сказать, что утилита командной строки Dir не принимает во внимание альтернативные потоки данных при подсчете данных о размерах (файлов и папок). На сегодня существует лишь одно средство Microsoft, способное учитывать альтернативные потоки данных при подсчете размеров: это утилита Chkdsk.

Добавление нового потока

Любой человек, обладающий правом записи в файл NTFS, может воспользоваться обычными командами операционной системы для присоединения к файлу альтернативного потока данных. К примеру, следующая команда создает альтернативный поток данных mystream, присоединяет mystream к файлу с именем file.txt и сохраняет в потоке mystream фразу "top secret".

echo top secret > file.txt: mystream

Просмотреть содержимое потока mystream можно с помощью команды

Как уже отмечалось выше, к альтернативным потокам данных можно добавлять исполняемые файлы. Так, существует возможность добавить скрытую копию калькулятора Windows (calc.exe) к файлу file.txt. Для этого нужно просто ввести команду

type calc.exe > file.txt: calc.exe

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

start .file.txt: calc.exe

Вы сами можете убедиться, что альтернативные потоки данных и их содержимое не отображаются в инструментальных средствах Microsoft. Откройте программу Windows Explorer и просмотрите в ней свойства файла file.txt. Фактически размер файла составляет 112 Кбайт (столько места занимает встроенный файл calc.exe) - но программа покажет размер файла равным 0 Кбайт: в потоке данных $DATA нет сведений о встроенном файле, а приложение Windows Explorer не имеет возможности считывать информацию из альтернативного потока данных.

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

Выявление изменений

Если у вас возникает ощущение, что хакерам удалось обойти заслон установленных разрешений, воспользуйтесь одним из разработанных к настоящему времени инструментальных средств обнаружения содержимого альтернативных потоков данных. Программы для проверки целостности системы, такие, как Tripwire Enterprise и Tripwire for Servers, позволяют выявлять все изменения в файловой системе NTFS, имевшие место в системе Windows, включая добавление или изменение содержимого потока данных.

Предлагаемая Sysinternal программа Streams - это бесплатно распространяемая утилита командной строки, определяющая имена присоединенных к файлам альтернативных потоков данных. На экране 1 показано, как использовать утилиту Streams для просмотра имени потока данных calc.exe, который мы ранее добавили к файлу file.txt. Эту утилиту можно загрузить по адресу http://www.sysinternals.com/utilities/streams.html .

Еще один простой способ обнаружения альтернативного потока данных - с помощью Windows Explorer скопировать подозрительный файл на накопитель с файловой системой, отличной от NTFS (скажем, на накопитель FAT). Другие файловые системы не оснащены средствами для работы с альтернативными потоками данных. Поэтому если вы попытаетесь скопировать файл NTFS с присоединенными альтернативными потоками данных для размещения его в другой файловой системе, NTFS выдаст предупреждение, аналогичное показанному на экране 2. Но имейте в виду, что если вы будете копировать этот файл в окне командной строки с помощью команды Copy, Windows скопирует его в отличную от NTFS файловую систему и без предупреждения удалит поток данных.

Сокрытие совместно используемых ресурсов с помощью ABE

ABE - это дополнительная функция уровня совместного использования файлов, которую Microsoft впервые реализовала в пакете Windows Server 2003 SP1. Ее можно использовать в любом общем каталоге Windows вне зависимости от того, в какой файловой системе хранятся совместно используемые данные. ABE позволяет администраторам скрывать хранящиеся на общедоступных ресурсах папки и файлы от тех пользователей, которые не имеют соответствующих разрешений на доступ к ним на уровне NTFS. Иными словами, речь идет об обеспечении безопасности на уровне папок.

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

Впрочем, использование ABE имеет и свои минусы. Перед тем как возвратить подключившемуся к общему ресурсу клиенту список содержащихся в папке объектов, сервер должен проверить все списки управления доступом к этим объектам: только после этого он может определить, какие данные следует возвращать. В результате может отмечаться существенное снижение производительности системы, особенно при обращении к общим ресурсам, содержащим множество объектов.

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

Активизация функции ABE

В этой функции применяется новый флаг уровня общедоступного ресурса SHI1005_FLAGS_ENFORCE_NAMESPACE_ ACCESS; на момент, когда пишутся эти строки, он реализован лишь в пакетах Windows 2003 SP1 и Release 2 (R2). Данный флаг означает, что вы применяете функцию ABE к одной из папок.

Для установки флага можно использовать расширения свойств папки Windows Explorer или средство командной строки abecmd.exe. Microsoft распространяет расширение ABE Explorer и abecmd.exe в установочном пакете ABE, который является дополнительным модулем для платформы Windows Server 2003 SP1. Установочный пакет можно загрузить с узла Microsoft по адресу http://www.microsoft.com/downloads/details.aspx?FamilyId=04A563D 9-78D9-4342-A485-B030AC442084 . Поскольку ABE - это серверное расширение, его можно использовать вне зависимости от того, какая версия Windows установлена на клиенте.

После установки средств ABE на сервере можно установить этот флаг для той или иной папки. Щелкните на папке правой клавишей мыши, выберите пункт Properties, перейдите на вкладку Access-based Enumeration и установите флаг Enable access-based enumeration on this shared folder, как показано на экране 3. Чтобы применить функцию ABE ко всем общедоступным ресурсам системы, установите флаг Apply this folder"s setting to all existing shared folders on this computer.

Второй способ - использовать средство командной строки abecmd.exe. Чтобы применить функцию ABE к общедоступному ресурсу shareddocs, введите следующую команду:

abecmd /enable shareddocs

Для активизации функции ABE на всех доступных ресурсах можно использовать параметр /all, а для отключения ABE - параметр /disable.

Управление доступом

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

Чтобы защититься от хакеров, применяющих альтернативные потоки данных, администраторы должны следить за настройками управления доступом к общедоступным ресурсам и использовать одну из описанных мною утилит для выявления скрытых альтернативных потоков данных, а также изменений в системе NTFS.

Жан Де Клерк (declercq @hp .com ) - сотрудник Security Office компании Hewlett -Packard . Занимается управлением идентификацией и средствами безопасности продуктов Microsoft. Автор книги Windows Server 2003 Security Infrastructures (издательство Digital Press). Поддержка альтернативных потоков данных (AltDS) была добавлена в NTFS для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Использование AltDS скрыто от пользователя и не доступно обычными средствами. Проводник и другие приложения работают со стандартным потоком и не могут читать данные из альтернативных. С помощью AltDS можно легко скрывать данные, которые не могут быть обнаружены стандартными проверками системы. Эта статья даст основную информацию о работе и определении AltDS.

Создание AltDS

Создать AltDS очень легко. Для этого воспользуемся командной строкой. Для начала создадим базовый файл, к которому будем прикреплять наши потоки.
C:\>echo Just a plan text file>sample.txt

C:\>type sample.txt
Just a plan text file


Далее мы воспользуемся двоеточием в качестве оператора, чтоб указать на то что будем использовать AltDS:
C:\\>echo You can"t see me>sample.txt:secret.txt

Для просмотра содержимого можно использовать следующие команды:
C:\ more < sample.txt:secret.txt

или
C:\ notepad sample.txt:secret.txt

Если все работает хорошо то увидите текст: You can"t see me, а при открытии из проводника данный текст виден не будет.Также AltDS можно прикрепить не только к файлу, но и к папке. Для этого создадим папку и прицепим к ней какой-нибудь текст:
C:\>md stuff
C:\>cd stuff
C:\stuff>echo Hide stuff in stuff>:hide.txt
C:\stuff>dir
Volume in drive C has no label.
Volume Serial Number is 40CC-B506Directory of C:\stuff
09/28/2004 10:19 AM .
09/28/2004 10:19 AM

0 File(s) 0 bytes2 Dir(s) 12,253,208,576 bytes free
C:\stuff>notepad:hide.txt

Теперь вы знаете, как блокнотом просмотреть и отредактировать прикрепленный AltDS, а так же как прикреплять его к файлам и папкам.

Сокрытие и запуск приложений

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

Далее поместим наше приложение в поток, для примера я использовал notepad.exe:
C:\WINDOWS>type notepad.exe>test.txt:note.exe

Теперь убедимся что в нашем файле все также текст:
C:\WINDOWS>type test.txt
Test

А теперь самое интересное, запустим наше спрятанное приложение:
C:\WINDOWS>start .\test.txt:note.exe
C:\WINDOWS>

Так как данная статья является не полным переводом статьи взятой , то оформлено как простой топик. Дополнительные приемы можно найти по указанной ссылке.

UPD:

Утилиты по работе с AltDS (список взят из статьи по ссылке выше):

LADS - List Alternate Data Streams by Frank Heyne
www.heysoft.de/Frames/f_sw_la_en.htm

Streams.exe from SysInternals.

Статья написана для журнала "Хакер" в 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 < testfile:stream». Как видишь, имя потока указывается после имени файла, отделенное от него знаком двоеточия. Самое трудное при работе с потоками – это получить их список для конкретного файла. Стандартной функции нет, и поэтому придется писать ее самому. Напишем небольшую консольную программу, которая бы возвращала список потоков по имени файла. Такая прога есть у ребят из Sysinternals, с открытым кодом, и она работает, но мне не понравился их способ. Они используют вызовы Native API, и поэтому их код большой и трудный для понимания. Мы же напишем свою прогу, которая будет работать из командной строки, с алгоритмом попроще и со стандартными API функциями.

Получаем список потоков

Алгоритм основан на применении функции BackupRead. Она предназначена для резервного копирования файлов. Когда делаешь резервную копию файла, важно сохранить как можно больше данных, включая и файловые потоки. Информация берется из структуры WIN32_STREAM_ID. Оттуда можно достать имя потока, его тип и размер. Нам понадобятся только потоки типа BACKUP_ALTERNATE_DATA. Все функции и структуры описаны в заголовочном файле winnt.h. Для начала надо открыть файл для чтения с помощью CreateFile. В параметре dwFlagsAndAttributes надо указать флаг FILE_FLAG_BACKUP_SEMANTICS, что позволит открывать не только файлы, но и каталоги. Затем запускаем цикл while, который считывает информацию о файле в структуру sid, из которой мы будем доставать информацию о каждом потоке. Перед следующим проходом цикла очищаем структуру и сдвигаем указатель файла к следующему потоку с помощью функции BackupSeek. После того как все потоки найдены, очищаем lpContext, содержащий служебную информацию, и закрываем файл. Исходный код программы приведен в листинге 2. Уже скомпилированную прогу ты можешь взять с нашего диска. Для работы с потоками необязательно писать специальные программы. Можно кое-что сделать прямо из командной строки. Несколько примеров приведено на врезке.

Обнаружение

Прикрепив поток с информацией к чему-нибудь, до его содержимого трудно добраться, не зная его имени. Если поток прикрепить к логическому тому, то в Windows вообще нет стандартных средств, чтобы его обнаружить. Так как в имени потока могут содержаться символы, недопустимые в именах обычных файлов, это создает дополнительные трудности при попытке узнать содержимое потока, пользуясь командной строкой. Содержимое сводки документа обычно хранится в потоке с названием, которое содержит символ с кодом 0x05. Этот символ можно набрать в консоли (Ctrl+E), но если бы это был символ 0x10 или 0x13 (возврат каретки и перевод строки), то набрать их было бы невозможно. Теоретически ты можешь узнать о прикрепленных потоках случайно, используя некоторый софт, который с большой вероятностью есть на твоем компьютере. В WinRAR есть опция, и если она включена, то ты можешь заметить, что размер небольшого файла, помещенного в архив, не только не уменьшается, а даже увеличивается (за счет того, что данные в потоках тоже помещаются в архив). Это может вызвать подозрения. Программа для отслеживания обращений к файловой системе - FileMonitor от тех же Sysinternals - не делает различий между обращениями к файлам или потокам. Соответственно, внимательное изучение лога обращений к диску подозрительной программы (твоего кейлоггера) выдаст и название потока, куда пишется лог, и имя файла, к которому он прикреплен.

Вирусы

В сентябре 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:Stream

Копирование содержимого существующего файла в поток:
type file1.txt >> somefile.txt:Stream

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

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

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

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

#include int main() { DWORD dwRet; HANDLE hStream = CreateFile("testfile:stream", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, NULL, NULL); WriteFile(hFile, "This is a stream", 17, &dwRet, NULL); CloseHandle(hStream); return 0; }

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

#include #include #include #include int _tmain(int argc, _TCHAR *argv) { WIN32_STREAM_ID sid; ZeroMemory(&sid, sizeof(WIN32_STREAM_ID)); DWORD dw1,dw2,dwRead; INT numofstreams = 0; //Буфер для имени потока в формате Unicode WCHAR wszStreamName; LPVOID lpContext = NULL; /* * Открываем файл для чтения с параметром * FILE_FLAG_BACKUP_SEMANTICS, что позволяет нам * открывать не только файлы, но и каталоги с дисками. */ HANDLE hFile = CreateFile(argv,GENERIC_READ,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL); if (hFile == INVALID_HANDLE_VALUE) {printf("\nError: Could"t open file, directory or disk %s\n",argv); exit(0); } DWORD dwStreamHeaderSize = (LPBYTE)&sid.cStreamName - (LPBYTE)&sid + sid.dwStreamNameSize; printf("\nStreams information for %s:\n",argv); while (BackupRead(hFile, (LPBYTE) &sid, dwStreamHeaderSize, &dwRead, FALSE, TRUE, &lpContext)) { //Если тип потока неверный, значит прерываем цикл if (sid.dwStreamId == BACKUP_INVALID) break; ZeroMemory(&wszStreamName,sizeof(wszStreamName)); //Получаем имя потока if (!BackupRead(hFile, (LPBYTE) wszStreamName, sid.dwStreamNameSize, &dwRead, FALSE, TRUE, &lpContext)) break; if (sid.dwStreamId == BACKUP_DATA || sid.dwStreamId == BACKUP_ALTERNATE_DATA) { numofstreams++; printf("\n\nStream\t\t#%u",numofstreams); switch (sid.dwStreamId) { case BACKUP_DATA: printf("\nName:\t\t::$DATA"); break; case BACKUP_ALTERNATE_DATA: printf("\nName:\t\t%S",wszStreamName); break; } printf("\nSize:\t\t%u\n",sid.Size); } //Перемещаемся к следующему потоку BackupSeek(hFile, sid.Size.LowPart, sid.Size.HighPart, &dw1, &dw2, &lpContext); //Очищаем структуру перед следующим проходом цикла ZeroMemory(&sid,sizeof(sid)); } //Очищаем lpContext, содержащий служебную информацию //для работы функции BackupRead BackupRead(hFile, NULL, NULL, &dwRead, TRUE, FALSE, &lpContext); //Закрываем файл CloseHandle(hFile); return 0; }

По теме файловых потоков также есть следующее:

  • NTFS Stream Explorer 2.00 Программа для работы с потоками NTFS и

Цель этой статьи объяснить смысл
дополнительных потоков данных (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,
однако его можно изменить:

Проникнув на машину надо передать туда
файлы. Для этого используем TFTP, в данном
случае получаем ipeye.exe.

Таким же образом закачиваем psexec.exe, pslist.exe и
klogger.exe. Сделаем листинг директории C:\Compaq\,
куда все и поклалось:

Запихнем теперь ipeye.exe с поток,
ассоциированный с существующим файлом
test_file.

Затем то же самое можно проделать и стремя
другими необходимыми для работы файлами.
Обратите внимание, что альтернативный
поток можно организовать не только для
файлов, но и для каталогов, того же C:\ к
примеру. Запустим сканер, о котором мы
говорили в начале, ipeye.exe, на зараженном
компьютере:

c:\Compaq\test_file:ipeye.exe

(Продолжение следует)

Видимо-невидимо

Читатель блога Виктор не смог запустить скачанный из Интернета скрипт PowerShell. Внимательное чтение моих инструкций позволяло избежать проблемы, но корень ее был вовсе не в строгих политиках безопасности PowerShell.

Виктор скачал из галереи TechNet архив со скриптом PSWindowsUpdate.zip для управления Windows Update, о котором я рассказывал . Однако распакованный скрипт отказывался работать. Когда я подсказал читателю, что в первом пункте моих инструкций говорится о необходимости разблокировать архив, все пошло как по маслу.

Виктор попросил объяснить, почему система заблокировала скрипт, и откуда она знает, что архив был скачан с другого компьютера.

Честно говоря, сегодняшняя тема не нова, но я решил осветить ее в своем блоге по нескольким причинам:

  • Многие статьи написаны еще во времена Windows XP или Windows 7 и не учитывают встроенных возможностей более новых ОС Microsoft.
  • В одной из запланированных на ближайшее время статей эта тема затрагивается, и мне проще сослаться на материал, за актуальность и правильность которого отвечаю я сам.
  • У блога большая аудитория, и для многих читателей эта тема все равно окажется в новинку:)

Сегодня в программе

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

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

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

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

$DATA:""

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

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

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

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

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

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

Запись и просмотр ADS из CMD

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

Echo Hidden Text > C:\temp\test.txt:MyStream2 more < C:\temp\test.txt:MyStream2

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

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

"C:\Program Files (x86)\Notepad++\notepad++.exe" C:\temp\test.txt:MyStream1

Результат:

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

Echo Hidden Text > C:\temp\test.txt:MyStream3.txt notepad C:\temp\test.txt:MyStream3.txt

Результат:

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

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

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

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

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

Get-Item .\PSWindowsUpdate.zip -Stream * FileName: C:\Users\Vadim\Downloads\PSWindowsUpdate.zip Stream Length ------ ------ :$DATA 45730 Zone.Identifier 26

Как вы уже знаете, $Data – это содержимое файла, но в списке фигурирует еще и ADS Zone.Identifier . Это прозрачный намек на то, что файл получен из какой-то зоны. Знаете, откуда эта картинка?

Чтобы выяснить зону, надо прочесть содержимое ADS.

Get-Content .\PSWindowsUpdate.zip -Stream Zone.Identifier ZoneId=3

Очевидно, он нацелен на пакетную разблокировку (например, когда архив уже распакован). Команда ниже разблокирует в папке Downloads все файлы, содержащие в имени PS :

Dir C:\Downloads\*PS* | Unblock-File

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

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

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

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

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

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

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

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

Об авторе

Интересный материал, спасибо. Узнал что-то новое про PowerShell, который мне всё ещё мало знаком:)

Для общения с семьёй чаще использую WhatsApp — пока с этим сервисом было меньше всего проблем, даже родители там освоились. Контактик тоже в основном для семьи, хотя там обмен сообщений в основном вокруг публикуемых альбомов с фото и видео. Некоторые родственники хранят верность Viber — у меня с ним не сложилось как-то, держу просто для них, не оставляя попыток перетащить и их в WhatsApp.

Для работы в основном Slack, когда что-то срочное — WhatsApp, очень срочное — SMS. ВКонтакте для общения по работе с внешним миром.

Skype использую только для видеозвонков, в основном с семьей опять же. С удовольствием заменил бы его на WhatsApp, будь там видеозвонки.

urix

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

Андрей Кузнецов

Материал интересный, спасибо. Я знал про существование потоков, но не знал, что с ними так просто работать через PowerShell.
Что касается IM: К скайпу у меня есть нарекания только по времени запуска на Windows Phone. На ipad и Windows такой проблемы нет. Использую для голосовой связи, когда по каким-то причинам неудобно использовать GSM.
А переписка через Whatsapp. Наличие его только на телефоне скорее плюс, с точки зрения конфиденциальности.

  • Андрей Кузнецов : А переписка через Whatsapp. Наличие его только на телефоне скорее плюс, с точки зрения конфиденциальности.

    Андрей, поясните, в чем тут плюс

Павловский Роман

1. Пользуюсь чаще всего: Skype и Hangouts — по работе на ПК, по остальной переписке «ВКонтакте» с любого устройства, так как клиенты по работе обычно сидят на Скайпе, а друзья и знакомые в Соц.Сетях.

2. Хотел бы пользоваться в идеале: Jabber — для переписки и звонков с любых устройств. Как по мне, клиент можно установить на любое устройство и переписываться, где бы не находился пользователь, даже на слабом Интернет-соединении + к этому можно развернуть свой jabber-сервер и хранить всю переписку на сервере, чтобы потом можно было быстро найти нужную переписку, если клиент не умеет хранить историю, а плагины для звонков через jabber можно будет найти (например, через тот же SIP Asterisk 1.8+)

Андрей Баятаков

Чаще всего пользуюсь WhatsApp (в основном по работе), для звонков (аудио/видео/международные звонки) Skype. Хотя десктопный Skype ужасно бесит (у меня трансформер и дома я им пользуюсь в основном как планшетом)… Viber — не прижился. Чтобы звонить через WhatsApp нужно иметь просто железные нервы. Скажешь что-нибудь собеседнику и ждешь минуту-две когда он тебя услышит (подключение 50Mbit)…
Была бы возможность перешел бы совсем на Skype. На Windows 10 Mobile после недавнего обновления сообщения из Skype приходят прямо во встроенное приложение Сообщения (как СМС), что очень удобно.

Maxim

1. Скрепя сердце пользуюсь ICQ (для заказчиков-ретроградов) и Slack (для более современных).
2. Хотел бы пользоваться Jabber - по тем же причинам, что у Романа Павловского выше.

Владимир Кирюшин

Здравствуйте Вадим!
Прочитал перед этой статьёй вашу статью про то, как прочитать отчёт проверки всего системного диска командой chkdsk . Отличная статья! Благодаря ей сегодня после поверки командой chkdsk системного диска я получил текстовый файл отчёта. А эта статья тоже много чего проясняет в программе PowerShell. Кое-что мне пенсионеру бывает непонятно, но я стараюсь не паниковать и читаю усердно до конца. Спасибо вам за учёбу,которую вы с нами проводите! Всего Вам хорошего!

Lecron

Какие браузеры и программы-даунлоадеры создают этот поток?

Какие еще есть варианты использования потоков самим пользователем? И в частности, пользователем скриптописателем? Так как, хоть и знал про них давно, ни разу не использовал. При реальной работе с компом про них просто не вспоминаешь, и из-за этого, возможно городишь костыли, вместо удобного инструмента, а без этой работы, по памяти, ничего придумать не получается.
Сообразил только об одном варианте. Комментарий к файлу, если нет возможности или желания писать длинный текст в имя файла. Но для этого нужна поддержка со стороны файл менеджера, который раньше, да и сейчас, пишет их в descript.ion или files.bbs.

Speed Guru

Очередная мусорная технология наподобие USN журнала. Много ли вам будет пользы от ZoneIdentifier или от вируса, прикреплённого к фалу или папке? Конечно нет. Более того — это захламление системы лишними, ни коим образом не нужными нормальному пользователю «подфайлами». Каждое лишнее чтение в каталоге MFT и прочие операции, сопутствующие обслуживанию и содержанию альтернативных потоков, это лишние затраченные циклы процессора, оперативной памяти, а самое главное лишняя нагрузка на жёсткий диск.
Вы можете сказать мне что эта технология очень нужна системе. Но это чушь — система отлично работала бы и без потоков. Но пользователя никто не спрашивает — впарили (как USN журнал) и возможности полностью отключить ведение этих потоков не дали. А ведь мне как пользователи они вовсе не нужны, думаю как и вам…
Всё что мы можем сделать это «streams -s -d %systemdrive%». Но и это не даёт возможности удалить потоки на системном разделе.

Alexiz Kadev

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

Жаль в голосовалке нельзя было выделить несколько мессенджеров: я пользуюсь несколькими, поскольку некоторые мои контакты предпочитают какие-то определённые. Так, я использую WhatsUp, ICQ(правда, конечно, не родной клиент),Skype, SkypeforBusiness (тихий ужас, а не клиент, впрочем когда он назывался Lync был ещё хуже) и Viber (вот тут спама больше чем в других как минимум раз в 5).
А в идеале использовать какой-то один, типа Миранды с плагинами, поскольку найти в случае необходимости, кто где когда что-то говорил/писал во всей этой куче просто нереально. Но увы, ряд производителей закрывают свои протоколы и оберегают их как Кащей свою иголку.

  • VSh

    Vadim Sterkin : Роман, я не включил Jabber в опрос. Решил, что им мало кто пользуется и перспектив нет.

    Зря
    Я, например, использую OpenFire (freeware xmpp) как офисный коммуникатор на нескольких доменах.

    Поэтому у меня основной это XMPP (Pidgin.exe, Spark.exe), но 99.8% из этих сообщений — внутридоменные.
    Skype — для внешних IM
    WhatsApp и Viber — для «случайных связей», последние n месяцев только СПАМ, думаю — не удалить ли?

  • Артем

    У меня все почему-то в вайбере. И качество связи вполне устраивает. А так телеграмм бы. Да пусто там.

    hazet

    1. Skype (на ПК) и Viber (на Мобиле). Причины в основном как и у большинства — количество имеющихся контактов и естественно нежелание этих самых контактов, пересесть на другой мессенджер.
    2.uTox. Миниатюрный, ничего лишнего, клиент для Win, Linux, Mac и Android. Позиционируется как защищенный.
    P.S. ЩаЗ займусь перетягиванием своих контактов на него поплотней:-)

    Евгений Карелов

    Cпасибо Вам за Вашу работу!

    Касательно опроса, на ПК для переписки использую QIP 2012, к которому подключены контакты ICQ, ВКонтакте и другие. Лично мне удобно, использовать для общения по нескольким протоколам одну программу. Да и возможность просматривать ленты соцсетей из одного места очень радует. В идеале, не хватает только поддержки Skype, который я использую для голосовой связи, но она явно не появится.
    Хотя эта программа и выглядит «заброшенной», ибо обновлений уже давно не было, возложенные функции выполняет прекрасно.

    strafer

    Интересная мешанина из темы поста про потоки данных и опроса по IM.

    По опросу: Jabber/Jabber, который вы таки зря не включили в список, хотя там есть вотсап, основанный на XMPP, и даже идущая к успеху асечька.

    Jabber в общем-то решает все указанные проблемы ввиду открытости протокола, наличия клиентов под множество платформ и наличия серверов, которые можно поднимать самостоятельно. Но кактусы жевать традиционнее, да.

    • В списке клиенты, а не протоколы.
      ICQ… ну, я не стал там смайлики ставить, ибо должно быть и так понятно.
      Jabber точно не решает одну проблему — там никого нет.

      • strafer

        Vadim Sterkin : В списке клиенты, а не протоколы.

        Из-за того, что протокол и исходные коды официального клиента закрыты, устанавливается закономерная тождественность между единственным клиентом и протоколом.

        Vadim Sterkin : ICQ… ну, я не стал там смайлики ставить, ибо должно быть и так понятно.

        Гнилой мейлрушечке недостаточно того, что асечька умирает естественной смертью - они ещё и дополнительные усилия прилагают, чтобы она быстрее загнулась.

        Vadim Sterkin : Jabber точно не решает одну проблему - там никого нет.

        Тем не менее для Telegram вы же сами написали

        выглядит здорово, но там пусто (что поправимо)

        Jabber имел все шансы стать тем же, чем сегодня является экосистема e-mail (полная открытость протокола, возможность поднимать свои сервера кому угодно и обеспечивать взаимодействие между серверами и т.д.), но корпорациям это не нужно, что отлично видно на примере отхода от него гугла или проприентизирования вотсапа.

        • Для Telegram — поправимо, для Jabber — очень маловероятно. Поэтому первый есть в списке, а второго — нет.

          • strafer

            Конечно, Telegram - стильно, модно, молодёжно, а Jabber никто прикольный вроде Паши Дурова не двигает. Какие уж тут перспективы.

            Гм… да вылезите вы уже из своего танка теорий заговора «весь мир против свободного ПО». Все намного проще

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

            strafer

          • Немного не понял, где в моём комментарии про заговор.

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

            А что я должен увидеть на скриншоте?

            Предложение ввести номер телефона ~~~O~

          • strafer

            strafer : Вы пытаетесь списать неудачи jabber на немодность и немолодежность

            Ну так если оно так.

            strafer : в то время как его клиенты с первого экрана не приспособлены для современной реальности.

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

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

            Да, не понимаете, даже после объяснений с картинками… Это не мода, это единственный способ максимально упростить регистрацию с мобильных устройств, составляющих основу аудитории современных мессенджеров и единственный источник для ее роста.

            strafer

            На скриншоте запрос на имя, пароль и опциональный ник. Куда сильнее упрощать-то? Или кроме учащихся коррекционных школ уже не осталось больше резервов для роста аудитории, и надо чтоб была одна кнопка «сделать за*сь»?
            Зачем тут вообще номер телефона и что мессенджер должен с номером телефона делать?