Эта статья открывает новую большую тему: шифрование данных на внешних дисках и сетевых хранилищах. Откровенно наплевательские реализации защиты, дырявые схемы хранения ключей, генераторы случайных чисел, выдающие один из 255 прошитых в систему вариантов, — это самое малое из того, с чем нам довелось столкнуться во время исследования. Начнем с самой, пожалуй, популярной марки сетевых хранилищ — моделей компании Synology.
Конкуренция среди производителей сетевых хранилищ для домашних пользователей и офисов огромна. Здесь и модели Western Digital, привлекающие нулевой или отрицательной ценой (NAS со встроенным диском стоит дешевле такого же диска отдельно), и признанные гранды QNAP и Synology, которые берут мощной программной частью и длительной поддержкой, и выступающие с переменным успехом Asustor и Drobo, и даже экзотические для нас Terra Master и Thecus. В большинстве моделей этих производителей предусмотрено шифрование, позволяющее защитить пользовательские данные.
Все без исключения сетевые накопители Synology используют один и тот же алгоритм шифрования AES с длиной ключа 256 бит. Выбор этого алгоритма шифрования вполне логичен: большинство современных наборов микросхем поддерживает аппаратное ускорение AES или хотя бы набор инструкций, использующихся именно в этом алгоритме. Тем не менее реальная безопасность зашифрованных таким образом данных разительно отличается в зависимости от реализации.
Практически во всех NAS, в которых вообще есть возможность зашифровать данные, используется либо защита всего накопителя целиком (аппаратное шифрование SED — Self-Encrypting Disk — на уровне контроллера SATA), либо шифрование тома, расположенного как на одном диске, так и на массиве RAID. В части моделей (например, QNAP) можно активировать оба способа — и это позволяет избежать некоторых очевидных атак.
В моделях Synology, предназначенных для серверных стоек, также можно активировать аппаратное шифрование SED. Однако большинство домашних и офисных моделей такой возможности лишены. Вместо этого Synology предлагает использовать шифрование файлов на уровне отдельных сетевых папок.
Шифрование реализовано средствами стандартной для Linux файловой системы eCryptFS, о которой можно почитать, например, здесь или здесь. В сравнении с методами шифрования, основанными на защите целых томов, у такого пофайлового шифрования есть и достоинства, и недостатки.
В достоинства мы запишем следующее:
Если у пофайлового шифрования столько достоинств, почему все остальные производители предпочитают шифровать целые тома? К сожалению, недостатки eCryptFS способны серьезно ограничить шифрование или даже сделать его невозможным.
Основное и самое неприятное ограничение eCryptFS — на длину имен файлов. В имени файла в зашифрованной папке не может быть больше 143 символов ANSI или 47 символов иероглифической записи.
Следующее ограничение напрямую касается безопасности зашифрованных данных, и оно более чем серьезно. В рамках реализации eCryptFS разработчики Synology не предусмотрели такой простой вещи, как разделение ключей шифрования данных MEK (Media Encryption Key) и ключей шифрования ключа KEK (Key Encryption Key). В результате тот пароль, который пользователь задает при создании зашифрованной папки, и служит тем самым ключом шифрования данных — MEK. Не говоря даже о том, что энтропия заданного домашним пользователем или офисным работником пароля, как правило, существенно меньше 256 бит, что позволяет создать очень быструю и эффективную атаку.
Кроме того, в этой реализации пользователь не может сменить ключ шифрования без полной перешифровки сессионных ключей всех до единого файлов. Перешифровка же типичной сетевой папки с несколькими десятками тысяч файлов может занять несколько часов (в зависимости от модели устройства и скорости диска), так что, можно сказать, изменение ключа шифрования нерационально.
Хорошо, об ограничениях поговорили. А что насчет уязвимостей? Они есть, и их больше одной. Но прежде чем говорить об уязвимостях, рассмотрим механизм управления ключами, реализованный в Synology.
Все сетевые хранилища Synology работают под управлением операционной системы Disk Station Manager (DSM), практически все модели компании (по крайней мере, те из них, которые были выпущены в последние пять-шесть лет) — под управлением унифицированной сборки. Обновления выходят практически одновременно для всех моделей. На сегодня актуальны сборки DSM 6.2.
Для управления ключами в DSM 6.2 используется утилита Key Manager, основная задача которой — сохранить ключи и обеспечить возможность автоматического монтирования зашифрованных томов после загрузки устройства.
После создания зашифрованной сетевой папки ключ (файл с расширением .key, представляющий собой пароль в «обертке», — практически обфускация) автоматически сохраняется на компьютер пользователя. Этот ключ можно сохранить (например, в зашифрованном архиве), а можно удалить — если пользователь уверен, что никогда не забудет пароль шифрования.
А вот дальше есть варианты. Пользователь может выбрать один из трех способов управления ключами.
Двоичный ключ шифрования (machine key в терминах DSM) сохраняется на устройстве Synology. Зачем это может понадобиться пользователю? Да просто чтобы избежать описанных в первом пункте шагов для монтирования зашифрованного тома! Достаточно поставить галочку в пункте mount on boot, и DSM автоматически подмонтирует зашифрованную папку при загрузке. Профит! О безопасности, правда, можно забыть: если и ключ шифрования, и сами данные хранятся на одном и том же устройстве, то расшифровка тривиальна.
Наконец, реверанс в сторону безопасности: ключ шифрования сохраняется не на самом устройстве, а на внешнем 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? Причин несколько.
Итак, выполнение любого из перечисленных ниже условий делает зашифрованные данные уязвимыми.
Пользователь добавляет ключ в Key Manager, сохраняя его на встроенном накопителе. Положение переключателя mount on boot в данном случае значения не имеет.
Пользователь сохраняет ключ на внешнем USB-накопителе, и у тебя есть доступ к этому накопителю.
Ключ шифрования автоматически сохраняется на компьютер пользователя при создании зашифрованной сетевой папки. Если тебе доступен этот ключ, проблемы с расшифровкой данных не будет. Имя файла по умолчанию — .key.
Наконец, если тебе удалось узнать пароль шифрования, то расшифровка данных тривиальна.
Итак, подытожим описанное выше. В 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 выбор простой: или относительно безопасно, но неудобно (сетевые папки монтировать каждый раз вручную, через веб-интерфейс, вводя каждый раз более или менее стойкий пароль шифрования), или удобно, но с нулевым уровнем безопасности. Компромиссным решением будет хранение ключа шифрования на подключаемой к устройству флешке, которую можно вставлять во время загрузки и извлекать из накопителя после ее завершения.
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…
View Comments
Уважаемый Денис,
у меня было физически украдено хранилище WD My Cloud 2 года назад.Уведомления от WD через мой зарегистрированный там эмайл о доступе с другого/чужого устройства мне не поступало.
Сам прибор был отключён от сети на протяжении долгого времени.
На днях создалось впечатление,что некоторые данные из моего хранилища стали известны. Я очень обеспокоена этим. Не являясь IT-специалистом,я пыталась найти информацию о подобном в открытом доступе. Но ясности не получила.
У компании WD был большой сбой в апреле этого года и она дала инструкции пользователям о непосредственном подключении хранилища к компьютеру с помощью запрашиваемого и предоставляемого через зарегистрированный эмайл владельца двойного кода авторизации.На мой зарегистрированный эмайл подобные сообщения не поступали( gmail.com).
Ответьте пожалуйста на следующий вопрос: возможно ли извлечь жесткие диски из прибора и их прочесть?
Заранее благодарю за ответ.
С уважением
София.
Добрый день София.
К сожалению, если у кого либо есть физический доступ к жесткому диску, то получение данных с него это просто вопрос времени. Конечно все меняет если данные были зашифрованы надежным алгоритмом или сложным паролем.
Для шифрования критической информации на внешних дисках, я советую использовать программу https://www.veracrypt.fr/code/VeraCrypt/ и устанавливать сложный пароль.