Конфиденциальное «облако». Ищем альтернативу открытым решениям

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

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

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

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

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

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

Выбираем варианты

Я отобрал три решения (чем больше вариантов выбора, тем больше сомнений):

  • Open Source — проект Syncthing.net , поддерживаемый энтузиастом-разработчиком Джейкобом Боргом.
  • Resilio.com, курируемое американской Resilio Inc. (ранее этот сервис назывался BitTorrent Sync).
  • Проект Pvtbox Электронный сейф от pvtbox.net приложения для синхронизации. Кипрская регистрация.

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

Итоги анализа

Syncthing

Плюсы:

  • Open source;
  • Активность главного разработчика;
  • Проект существует очень давно;
  • Бесплатный.

Минусы:

  • Нет клиента для оболочки iOS;
  • Медленные Turn сервера, (они бесплатные, поэтому тормозят). Для тех кто
    не в курсе, Turn используется при невозможности подключиться напрямую;
  • Сложная настройка интерфейса (нужен многолетний опыт в программировании);
  • Отсутствие быстрой коммерческой поддержки.

Resilio

Плюсы: поддержка всех устройств и шустрые Turn сервера.

Минусы: Один и очень существенный – полное игнорирование службой поддержки любых обращений. Ноль реакции, даже если писать с разных адресов.

Pvtbox

Плюсы:

  • Поддержка всех устройств;
  • Быстрые Turn сервера;
  • Возможность скачать файл без установки приложения;
  • Адекватная служба поддержки, в т.ч. по телефону.

Минусы:

  • Молодой проект (мало отзывов и хороших обзоров);
  • Очень «технарский» не всегда понятный интерфейс сайта;
  • Нет досконально подробной документации, по многим вопросам приходится дергать поддержку.

Что выбрал заказчик

Его первый вопрос: в чем смысл разрабатывать что-то бесплатно? От Syncthing отказались сразу. Аргументы не работали.

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

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

Процесс аудита

Сделали анализ соединений при старте программы, в процессе работы и в спокойном состоянии. Трафик по современному стандарту изначально ходит зашифрованный. Попробуем провести атаку MITM и подменить сертификат «на лету» с помощью Linux (Xubuntu Linux 18.04), Wireshark, Mitmproxy. Для этого внедрим посредника между приложением Pvtbox и сервером pvtbox.net (есть обмен данными с сервером pvtbox.net по https соединению).

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

Выключаем приложение и подменяем адрес хоста pvtbox.net в файле /etc/hosts с привилегиями суперпользователя. Адрес подменяем на адрес нашего прокси-сервера.
Конфиденциальное «облако». Ищем альтернативу открытым решениям

Теперь подготовим наш прокси-сервер для MITM атаки на компьютере с адресом 192.168.1.64 в нашей локальной сети. Для этого установим пакет mitmproxy версии 4.0.4.

Запускаем прокси-сервер на порту 443:
$ sudo mitmproxy -p 443

Запускаем на первом компьютере программу Pvtbox, смотрим на вывод mitmproxy и логи приложения.
Конфиденциальное «облако». Ищем альтернативу открытым решениям

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

Устанавливаем сертификат прокси-сервера mitmproxy на компьютер с приложением Pvtbox, чтобы сделать сертификат «доверенным». На компьютере установим пакет ca-certificates. Затем скопируем сертификат mitmproxy-ca-cert.pem из каталога .mitmproxy прокси-сервера на компьютер с приложением Pvtbox в каталог /usr/local/share/ca-certificates.

Выполняем команды:
$ sudo openssl x509 -in mitmproxy-ca-cert.pem -inform PEM -out mitmproxy-ca-cert.crt
$ sudo update-ca-certificates
Конфиденциальное «облако». Ищем альтернативу открытым решениям

Запускаем приложение Pvtbox. Сертификат снова не прошел проверку, программа отказывается работать. Вероятно, приложение использует защитный механизм Certificate pinning.

Аналогичная атака была проведена на хост signalserver.pvtbox.net, а также на само peer-2-peer соединение между нодами. Разработчик указывает, что приложение для установки peer-2-peer соединений использует открытый протокол webrtc в котором используется end-to-end шифрование по протоколу DTLSv1.2.

Ключи генерируются на каждую установку соединений и передаются по зашифрованному каналу через signalserver.pvtbox.net.

Теоретически можно было бы перехватить offer и answer сообщения webrtc, подменить там ключи шифрования и иметь возможность расшифровать все поступающие по webrtc сообщения. Но провести mitm атаку на signalserver.pvtbox.net не удалось, поэтому и возможности перехватить и подменить сообщения отправляемые через signalserver.pvtbox.net нет.

Соответственно на peer-2-peer соединения данную атаку провести не представляется возможным.

Также был обнаружен файл с сертификатами, поставляемый с программой. Файл расположен по пути /opt/pvtbox/certifi/cacert.pem. Этот файл был заменен файлом, который содержит доверенный сертификат от нашего прокси-сервера mitmproxy. Результат не изменился — программа отказывалась подключаться к системе, в логе наблюдалась та же ошибка,
что сертификат не проходит проверку.

Итоги аудита

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

В результате компанией были куплены два выделенных сервера (физически в разных местах) для перманентного доступа к информации. Первый сервер используется для приёма, обработки и хранения информации, второй – для резервного копирования.

К полученному индивидуальному облаку подключили рабочий терминал директора и мобильный телефон на iOS. Других сотрудников подключали штатный сисадмин и техподдержка Pvtbox.

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

Источник: habr.com