Как «белые списки» помогают управлять дронами через сотовые сети, или: Почему Чебурнет не спасет от летящего смартфона.
За авторством нашего админа - физтехкота.
Под редакцией шерифа.
В последнее время мы столкнулись с таким чудом природы, как «белые списки». Мотивация простая – якобы, если мы блокируем на уровне провайдера (через ТСПУ/DPI) вообще всё, оставляя доступ только к избранным сайтам и сервисам, то уважаемые (и не очень) партнеры не справятся с задачей вбомбить очередной НПЗ или порт с помощью гражданских GSM-сетей.
Но, как всегда, есть один нюанс (или даже несколько).
Опишем основные идеи этих «нюансов» из публичного пространства исключительно в ознакомительных целях и с прицелом на факт, что против противника могут быть применены те же методы.
Так вот.
ВК и Яндекс для своих видеозвонков используют серверы ретрансляции (TURN-серверы). Энтузиасты с гитхаба https://github.com/cacggghp/vk-turn-proxy?ysclid=mn94x0eywo221011606, который генерирует ссылку на звонок в ВК/Телемосте, а далее (под эту сессию) скрипт заворачивает обычный VPN-трафик (WireGuard/VLESS) в протокол DTLS 1.2.
Для ТСПУ это абсолютно легальный трафик к доверенному IP, а сам TURN-сервер послушно и заботливо пересылает эти пакеты на зарубежный сервер оператора БПЛА.
Однако, эту уязвимость уже начали закручивать (авторы заявляют, что с Телемостом больше не работает). Но https://github.com/kulikov0/whitelist-bypass предложили более интересный подход — стеганография в видеопотоке. Трафик не просто маскируется под звонок, он буквально зашивается внутрь видеокадров (в оригинальной реализации используется Яндекс Телемост). Вместо браузера используется кастомная реализация WebRTC на Go: скрипт берет сетевой пакет, цепляет к нему спецмаркер и пакует прямо в кадр кодека VP8.
Дабы сервер не обрубил соединение по таймауту, генерируются фейковые кадры с частотой 25 FPS. Далее, пиксели собираются обратно в пакеты данных на стороне оператора.
В итоге, через формально абсолютно легальный видеозвонок льется нелегальный трафик на скоростях до мегабита, и вот с этим уже ничего не сделаешь.
Но ведь есть же еще многострадальная маха! Почему бы нам не сделать управление дроном через нее? А давайте, и тупость метода может сильно шокировать.
Итак, нам понадобится: сама маха и два любых дешевых китайфона. Далее, просто создаете двух ботов, которые будут общаться между собой прямо в чате. Текстом. ВСЁ! Ограничения API мессенджера на 30 запросов в секунду вполне хватит для сносного управления, 30 Гц — вполне нормальный тикрейт для самолёта (даже с джиттером, высоким пингом и нарушением порядка доставки пакетов), скрипту на борту достаточно просто читать чат и дергать полетник. А чтобы модераторы не видели в логах команды вроде THROTTLE 50 или PITCH 10 и не забанили аккаунт по ключевым словам, можно применять любой понравившийся метод шифрования/мимикрирования, например, одноразовый шифровальный блокнот — выполнить банальный XOR современное железо сможет моментально. Ну и да, а что ограничивает нас одной парой ботов? 😏
Естественно, видеопоток можно тоже отправлять, параллельно создав отдельный звонок в любом из упомянутых сервисов.
Вывод из всего этого довольно простой.
Концепция тотальных блокировок обречена, когда речь заходит о борьбе с БПЛА или нелегальной передаче данных. Если в белом списке остается хотя бы один сервис, способный пропускать потоковые данные в реальном времени, через него протащат что угодно.
И ведь ранее описаны далеко не все варианты, а так, экзотика, но вполне рабочая.
Например, мы паковали телеметрию в последнюю строчку аналогового видео дрона года два назад.
Но тут возникает логичный вопрос: для чего же нужны эти списки на самом деле? И не мутят ли темки под лозунгами о защите Родины, на самом деле, создавая огромную дыру в её безопасности?..
Впрочем, оставим эту задачу читателю в качестве упражнения.