Конфиденциальное «облако». Ищем альтернативу открытым решениям
Я инженер по образованию, но общаюсь больше с предпринимателями и директорами производств. Некоторое время назад за советом обратился владелец промышленной компании. Несмотря на то, что предприятие крупное, и создано в 90-х, управление и бухгалтерия работают по старинке в локальной сети.
Это следствие опасений за свой бизнес и усиления контроля со стороны государства. Законы и нормативы могут трактоваться проверяющими органами очень широко. В пример можно привести поправки в НК, ликвидирующие срок давности по налоговым нарушениям, фактическое разрушение банковской и аудиторской тайны.
В результате владелец предприятия стал искать решения для надежного хранения информации и безопасной передачи документов. Виртуальный «сейф».
Задачу проработали с штатным системным администратором: нужен глубокий анализ существующих платформ.
сервис должен быть не облачный, в классическом понимании этого слова, т.е. без сохранения на мощностях сторонней организации. Только свой сервер;
требуется устойчивое шифрование передаваемых и сохраняемых данных;
обязательна возможность экстренного удаления контента с любого устройства по нажатию одной кнопки;
решение разработано за рубежом.
Четвертый пункт я предложил убрать, т.к. российские приложения имеют официальные сертификаты. Директор прямо сказал, что следует делать с такими сертификатами.
Выбираем варианты
Я отобрал три решения (чем больше вариантов выбора, тем больше сомнений):
Open Source — проект Syncthing.net , поддерживаемый энтузиастом-разработчиком Джейкобом Боргом.
Resilio.com, курируемое американской Resilio Inc. (ранее этот сервис назывался BitTorrent Sync).
Владелец компании слабо разбирается в технических тонкостях, поэтому я оформил отчет в виде списков плюсов и минусов каждого варианта.
Итоги анализа
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.
Запускаем приложение 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.
За прошедшее время претензий от знакомого не было. Надеюсь, мой обзор поможет читателям Хабра в подобной ситуации.