Картинки по запросу nas hack

Как взломать NAS

Защита данных, приватность и соответствие нормам безопасного хранения информации — то, над чем работают практически все производители средств хранения информации. И если в корпоративном сегменте все более-менее хорошо, то рекламным лозунгам «безопасное шифрование AES-256» в накопителях, нацеленных на домашний сегмент, безусловно верить не стоит.

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

Картинки по запросу nas hack

 

Шифрование в сетевых накопителях (NAS)

Конкуренция среди производителей сетевых хранилищ для домашних пользователей и офисов огромна. Здесь и модели Western Digital, привлекающие нулевой или отрицательной ценой (NAS со встроенным диском стоит дешевле такого же диска отдельно), и признанные гранды QNAP и Synology, которые берут мощной программной частью и длительной поддержкой, и выступающие с переменным успехом Asustor и Drobo, и даже экзотические для нас Terra Master и Thecus. В большинстве моделей этих производителей предусмотрено шифрование, позволяющее защитить пользовательские данные.

 
 

Шифрование в Synology

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

Практически во всех NAS, в которых вообще есть возможность зашифровать данные, используется либо защита всего накопителя целиком (аппаратное шифрование SED — Self-Encrypting Disk — на уровне контроллера SATA), либо шифрование тома, расположенного как на одном диске, так и на массиве RAID. В части моделей (например, QNAP) можно активировать оба способа — и это позволяет избежать некоторых очевидных атак.

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

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

В достоинства мы запишем следующее:

  1. Поскольку шифруются отдельные сетевые папки, не имеет абсолютно никакого значения, на каком из внутренних физических или логических накопителей они расположены.
  2. Каждый пользователь может зашифровать свою папку своим собственным паролем. Таким образом обеспечивается защита между отдельными пользователями.
  3. Стандартная реализация шифрования позволяет просто скопировать зашифрованную папку, к примеру на другой накопитель, — и данные останутся надежно зашифрованными. При этом смонтировать и расшифровать такую папку легко получится стандартными же средствами на любом компьютере с Linux.
  4. Шифруются как сами данные, так и имена папок и файлов.

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

Основное и самое неприятное ограничение eCryptFS — на длину имен файлов. В имени файла в зашифрованной папке не может быть больше 143 символов ANSI или 47 символов иероглифической записи.

Следующее ограничение напрямую касается безопасности зашифрованных данных, и оно более чем серьезно. В рамках реализации eCryptFS разработчики Synology не предусмотрели такой простой вещи, как разделение ключей шифрования данных MEK (Media Encryption Key) и ключей шифрования ключа KEK (Key Encryption Key). В результате тот пароль, который пользователь задает при создании зашифрованной папки, и служит тем самым ключом шифрования данных — MEK. Не говоря даже о том, что энтропия заданного домашним пользователем или офисным работником пароля, как правило, существенно меньше 256 бит, что позволяет создать очень быструю и эффективную атаку.

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

Хорошо, об ограничениях поговорили. А что насчет уязвимостей? Они есть, и их больше одной. Но прежде чем говорить об уязвимостях, рассмотрим механизм управления ключами, реализованный в Synology.

 

Управление ключами шифрования в Synology DSM

Все сетевые хранилища Synology работают под управлением операционной системы Disk Station Manager (DSM), практически все модели компании (по крайней мере, те из них, которые были выпущены в последние пять-шесть лет) — под управлением унифицированной сборки. Обновления выходят практически одновременно для всех моделей. На сегодня актуальны сборки DSM 6.2.

Для управления ключами в DSM 6.2 используется утилита Key Manager, основная задача которой — сохранить ключи и обеспечить возможность автоматического монтирования зашифрованных томов после загрузки устройства.

После создания зашифрованной сетевой папки ключ (файл с расширением .key, представляющий собой пароль в «обертке», — практически обфускация) автоматически сохраняется на компьютер пользователя. Этот ключ можно сохранить (например, в зашифрованном архиве), а можно удалить — если пользователь уверен, что никогда не забудет пароль шифрования.

А вот дальше есть варианты. Пользователь может выбрать один из трех способов управления ключами.

  1. Полностью ручное управление. На устройстве Synology пароль не сохраняется (помним при этом, что файл с ключом был автоматически сохранен на компьютер пользователя). При включении NAS или перезагрузке DSM зашифрованные тома автоматически размонтируются. Для их монтирования нужно зайти в администраторский веб-интерфейс, открыть раздел сетевых папок и вручную смонтировать все нужные зашифрованные папки. Для продвинутых пользователей существует неофициальный и недокументированный вариант с удаленным монтированием через SSH, но, полагаю, большинству домашних и офисных пользователей об этом неизвестно.
  2. Двоичный ключ шифрования (machine key в терминах DSM) сохраняется на устройстве Synology. Зачем это может понадобиться пользователю? Да просто чтобы избежать описанных в первом пункте шагов для монтирования зашифрованного тома! Достаточно поставить галочку в пункте mount on boot, и DSM автоматически подмонтирует зашифрованную папку при загрузке. Профит! О безопасности, правда, можно забыть: если и ключ шифрования, и сами данные хранятся на одном и том же устройстве, то расшифровка тривиальна.

  3. Наконец, реверанс в сторону безопасности: ключ шифрования сохраняется не на самом устройстве, а на внешнем USB-накопителе. Более того, ключ шифрования MEK, сохраненный на внешнем USB-накопителе, можно зашифровать своим собственным паролем (KEK) — и это важный момент. Тем не менее и для ключей шифрования, сохраненных на USB-накопителе, опция mount on boot по-прежнему доступна. Значит, при ее активации пароль шифрования ключа (KEK), введенный пользователем, сохраняется на устройстве Synology. Отметим и этот момент.

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

Как DSM получает двоичный ключ шифрования для алгоритма AES из пароля пользователя? Можно было бы ожидать, что пароль шифрования, указанный пользователем, «заворачивается» очередным ключом wrapping key, а он играет роль ключа KEK, который должен защитить ключ шифрования данных MEK.

На самом же деле в DSM (уточню: в тех версиях DSM, которые работают на потребительских моделях Synology, предназначенных для дома и офиса) не используется ничего подобного. Данные шифруются паролем, который устанавливает пользователь. А вот сам пароль шифруется одной-единственной фразой — аналогом печально известного default_password, использующегося при шифровании по методу FDE в Android.

Что это нам дает? Во-первых, если пароль шифрования сетевой папки нам известен, расшифровать ее содержимое мы можем на абсолютно любом компьютере с Linux, просто вытащив диск из сетевого накопителя. Сложности, связанные с монтированием RAID-массива, мы оставим в стороне — в конце концов, такие программы существуют даже для Windows.

Во-вторых, если пользователь сохранил ключ во встроенной утилите Key Manager (а это делают гораздо чаще, чем ты думаешь, ведь монтирование зашифрованных папок в DSM — занятие небыстрое и не самое удобное), то такой сохраненный ключ тоже шифруется все тем же wrapping key — теперь мы можем не только расшифровать данные, но и увидеть сам пароль, который вводил пользователь!

Если ключ шифрования сохраняется на встроенном накопителе, пароль wrapping passphrase сменить нельзя. Этот пароль один и тот же на всех накопителях Synology.

Что получается в результате? При использовании встроенной в DSM утилиты Key Manager уровень защиты данных строго равен нулю: и сами данные, и ключ шифрования MEK хранятся на жестком диске, а ключ KEK фиксированный и нам известен. Извлекаем диск, читаем или расшифровываем данные, заодно узнаем оригинальный пароль, который ввел пользователь.

 

Как делать правильно

Для лучшего понимания всей глубины проблемы сравним механизм шифрования DSM с тем, что используют компьютеры с Windows. Для защиты данных в Windows используется широко известный и подробно документированный механизм BitLocker, которым можно зашифровать системный раздел. Ключ шифрования данных MEK сохраняется в составе контейнера; при этом ключ MEK будет зашифрован ключом KEK, который генерирует защищенный модуль TPM2.0. Извлечь оттуда этот ключ практически невозможно, проще устроить лобовую атаку пароля учетной записи Windows.

Таким образом, если мы вытащим из компьютера зашифрованный BitLocker диск, то расшифровать его не удастся даже в том случае, когда используется защита самого начального уровня — BitLocker Device Protection. Для расшифровки потребуется, чтобы диск был установлен в тот самый компьютер с тем самым аппаратным модулем TPM2.0, и понадобится пароль от учетной записи пользователя. Просто TPM2.0 или просто пароля от учетной записи для расшифровки раздела недостаточно.

Если все так плохо, то в чем вообще смысл включать шифрование и использовать встроенный Key Manager? Причин несколько.

  1. Peace of mind. Чувство защищенности и спокойный сон очень важны для здоровья. О том, что чувство безопасности ложное, можно никогда и не узнать. Примерно этой же цели (и с тем же результатом) служат театры безопасности, устроенные в некоторых странах органами охраны правопорядка на входе в аэропорт или на железнодорожный вокзал.
  2. Безопасная продажа или утилизация работоспособного накопителя. Допустим, в далеком 2014 году ты приобрел NAS с двумя гигантскими дисками аж по 3 Тбайт каждый. В 2019 году этот объем уже не впечатляет, и ты решил заменить их на два диска по 8 Тбайт. Что делать со старыми дисками? В первую очередь — уничтожить данные. Это можно сделать, полностью переписав содержимое накопителя — займет несколько часов. Но той же цели можно добиться проще и быстрее, просто удалив ключи шифрования из Key Manager. Теперь зашифрованные данные просто цифровой шум, а диск достаточно заново инициализировать.
  3. Наконец, ты можешь сохранить ключ не на встроенный, а на внешний USB-накопитель — и вот тогда Key Manager предложит тебе ввести свой собственный пароль для защиты ключа. Теперь для расшифровки дисков потребуется USB-накопитель с ключом шифрования, а твой пароль, которым защищен ключ шифрования, будет сохранен на внутреннем накопителе в Synology.

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

  1. Пользователь добавляет ключ в Key Manager, сохраняя его на встроенном накопителе. Положение переключателя mount on boot в данном случае значения не имеет.

  2. Пользователь сохраняет ключ на внешнем USB-накопителе, и у тебя есть доступ к этому накопителю.

  3. Ключ шифрования автоматически сохраняется на компьютер пользователя при создании зашифрованной сетевой папки. Если тебе доступен этот ключ, проблемы с расшифровкой данных не будет. Имя файла по умолчанию — .key.

  4. Наконец, если тебе удалось узнать пароль шифрования, то расшифровка данных тривиальна.

 

Эксплуатация уязвимостей

Итак, подытожим описанное выше. В Synology DSM используется стандартная криптографическая файловая система eCryptFS, при этом шифрование SED на уровне SATA домашними и офисными устройствами не используется. Ключи шифрования могут сохраняться на встроенный или внешний накопитель. В первом случае ключ шифрования защищается фиксированным паролем; во втором пароль задает пользователь, но этот пароль сохраняется на встроенном накопителе (по крайней мере, если включена опция mount on boot).

Уязвимость 1: отсутствие шифрования SED, а также шифрования на уровне тома позволяет извлечь диск и изменить пароль от административной учетной записи владельца устройства, просто отредактировав файл /etc/passwd.

Уязвимость 2: если пользователь сохранил ключ шифрования в DSM Key Manager, его можно извлечь и использовать для расшифровки зашифрованных данных. Кроме того, из сохраненного ключа шифрования легко разворачивается и оригинальный пароль, который вводил пользователь при создании зашифрованной сетевой папки.

Уязвимость 3: все устройства Synology используют фиксированный пароль для шифрования ключа шифрования.

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

printf "%s" "\$1\$5YN01o9y" | ecryptfs-unwrap-passphrase keyfile.key -

Здесь $1$5YN01o9y — тот самый фиксированный ключ wrapping passphrase, а keyfile.key — зашифрованный ключ шифрования данных MEK.

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

mount -t ecryptfs -o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes,passwd=$(printf "%s" "\$1\$5YN01o9y" | ecryptfs-unwrap-passphrase /path/to/keyfile.key -) /path/to/encrypted/folder /path/to/mountpoint

Пути /path/to/keyfile.key, /path/to/encrypted/folder и /path/to/mountpoint нужно заменить на фактически используемые. Физически зашифрованное содержимое сетевых папок DSM сохраняет в следующей коннотации:

/Volume<N>/@<name_of_encrypted_share@

В примере выше путь будет таким:

/Volume1/@Encrypted_Share@

Если пользователь сохранил ключ на внешнем USB-накопителе, DSM запросит пароль для шифрования этого ключа.

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

Наконец, если пользователь вообще не сохранил ключ шифрования в Key Manager, то данные в относительной безопасности. «Относительной» потому, что средняя энтропия пользовательских паролей значительно ниже энтропии 256-битного ключа шифрования AES. Атаки на пароли именно этого типа существуют давно, отлично оптимизированы и работают чрезвычайно быстро (в отличие, например, от атак на ключи BitLocker или документы, созданные в Microsoft Office 2016, — при прочих равных такие атаки работают значительно медленнее). Никто не отменял и человеческий фактор, который также может использоваться для взлома таких паролей.

 

Заключение

Данные расшифрованы, все пропало? Реальная безопасность «непробиваемого» шифрования в Synology оказалась ниже ожидаемой из-за того, что аппаратных механизмов обеспечения безопасности нет. Для обеспечения безопасности ключей шифрования в iOS используется Secure Enclave, в Windows — TPM2.0, в устройствах с Android — TrustZone. В домашних и офисных моделях Synology не используется ничего из вышеперечисленного, хотя даже в SoC Realtek RTD1296, на которой основаны младшие модели Synology DS118, DS218Play и DS218, поддержка ARM TrustZone есть. Роль аппаратного модуля безопасности выполняет фиксированная фраза $1$5YN01o9y — аналог default_password в старых версиях Android.

Выбор средств защиты данных всегда компромисс между удобством и безопасностью. И если в Windows, Android и iOS мы получаем стойкую защиту зашифрованных файлов, которую не удалось пробить даже эксплуатации уязвимости на уровне загрузчика, то у пользователей Synology выбор простой: или относительно безопасно, но неудобно (сетевые папки монтировать каждый раз вручную, через веб-интерфейс, вводя каждый раз более или менее стойкий пароль шифрования), или удобно, но с нулевым уровнем безопасности. Компромиссным решением будет хранение ключа шифрования на подключаемой к устройству флешке, которую можно вставлять во время загрузки и извлекать из накопителя после ее завершения.

Click to rate this post!
[Total: 1 Average: 5]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

Leave a reply:

Your email address will not be published.