Главная » Песочница » Как перехватить управление дроном

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

перехват дрона

Одновременно с развитием интернета вещей эволюционируют и методы взлома умных девайсов. Уже сейчас существует целый зоопарк троянов для IoT, но одними только роутерами, телеприставками и IP-видеокамерами ассортимент интеллектуальных устройств отнюдь не исчерпывается. Особый интерес с точки зрения информационной безопасности представляют дроны — научиться управлять чужим летательным аппаратом мечтают многие. Имеются ли способы перехвата управлением коптеров? Сейчас разберемся!

Еще по теме: Глушилка WiFi сигнала на ESP8266

К истории вопроса

На борьбу c беспилотниками, а также на меры, регулирующие их использование населением, государства ежегодно тратят миллионы долларов, правда без особого успеха. На слуху недавний случай, когда работа британского аэропорта Гатвик была на несколько дней парализована невесть откуда взявшимися коптерами, для уничтожения которых правительство даже вынуждено было привлекать снайперов. Что уж говорить о чиновниках, которым не дают покоя снующие над их поместьями дроны с видеокамерами, так и норовящие сунуть свой назойливый объектив в чужую частную жизнь. Эх, если бы существовал надежный способ перехвата управления беспилотниками, заветная мечта многих государственных деятелей стала бы реальностью. Или такой способ все же существует?

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

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

Для начала предлагаю отделить двукрылых насекомых от мясных блюд из жареного фарша. Когда речь идет о копеечных игрушках с «АлиЭкспресса», в пультах которых не применяется авторизация при соединении с приемником, «перехват» не представляет особой технической сложности. Если сразу после включения питания коптера или присоединения к нему аккумулятора, в момент, когда на беспилотнике быстро мигает светодиодный индикатор и устройство находится в режиме поиска передатчика, первым включить поблизости аналогичный трансмиттер (при использовании «универсальных» пультов еще придется нажать на кнопку Bind), то дрон с высокой долей вероятности «подцепится» именно к нему и «потеряет» оригинальный. А вот если мы говорим о более-менее серьезной технике, то тут дело обстоит намного сложнее.

Под капотом

Многие летательные аппараты с дистанционным управлением (равно как и радиоуправляемые игрушки) используют для обмена данными протокол DSM2/DSMX, при этом в качестве распространенной альтернативы можно назвать технологию SLT. DSM применяется в широкополосных передатчиках с частотой 2,4 ГГц и считается хорошо защищенным от случайных помех в радиоканале. Этот протокол позволяет сохранять данные полета в файл журнала, при этом DSM2 поддерживает функцию обнаружения отключения сигнала (например, при сбое питания), а DSMX — нет, но оба этих стандарта совместимы. Протокол SLT работает на той же частоте и совместим с трансмиттерами различных производителей, но «родное» для него железо — устройства производства компаний Tactic и Hitec.

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

Ряд коптеров, которыми можно управлять с любого современного смартфона, использует в качестве среды передачи данных беспроводную сеть 802.11 с WEP-шифрованием. О безопасности Wi-Fi писалось уже много и весьма подробно, так что нет смысла повторяться. Взлом такой сети можно назвать рутинной процедурой, арсенал имеющихся для этого технических средств весьма обширен.

А теперь от общего перейдем к частному.

Угнать за шестьдесят секунд

В первую очередь поговорим о дронах, работающих по беспроводной сети. Почему создатели коптеров решили использовать в качестве алгоритма шифрования неустойчивый к взлому WEP вместо более распространенного WPA/WPA2 — тайна, покрытая мраком, но, вероятнее всего, это как-то связано со скоростью передачи и обработки данных оборудованием летательного аппарата. Одно дело, если вдруг начнет лагать локальная сеть, и совсем другое — если сбойнет канал связи с дроном, летящим на высоте десяти метров над чужим огородом. Последствия будут совершенно разными.

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

Как и любое другое подобное устройство, коптер с Wi-Fi на борту оборудован сетевым адаптером, имеющим MAC-адрес, по которому его можно идентифицировать. Так работают, например, летательные аппараты Parrot. Смартфон с установленным приложением служит в этом случае аналогом пульта управления, с которого дрон и получает команды.

Для идентификации управляющего устройства используется ID Key — уникальная метка, «привязанная» к установленному на смартфоне приложению (Flight control software) и текущей сессии. Принцип взлома прост: атакующий подключается к сети дрона, определяет уникальную метку, после чего отправляет коптеру команду, которая заставит его отключиться от текущего управляющего устройства и начать прием команд со смартфона злоумышленника, имеющих «скопированную» метку оригинального устройства.

На практике для взлома сети беспилотников использовалось приложение Aircrack-ng. Программа умеет мониторить эфир в поисках защищенных сетей Wi-Fi, перехватывать пакеты и экспортировать из них данные для последующего анализа, а также применять различные алгоритмы сетевых атак. Подробнее ее функции описаны на сайте производителя.

Однако просто взломать сеть недостаточно, нужно еще перехватить передаваемые между дроном и оператором данные. Пример реализации такого перехвата продемонстрировал парень по имени Сэми Камкар (Samy Kamkar), собрав для этих целей специальный девайс на основе одноплатного компьютера Raspberry Pi и записав свои эксперименты на видео. Суть его метода вкратце такова.

Чувак использовал Raspberry Pi с воткнутым в его USB-порт Wi-Fi-донглом и внешний адаптер Alfa AWUS036H, с помощью которого он, собственно, и взламывал сеть. Одноплатник был запитан от батареи через Micro USB и использовался в качестве сканера, прощупывающего эфир и определяющего MAC-адреса подключенных к беспроводным сетям устройств. Фишка заключается в том, что все коптеры производства компании Parrot используют схожие MAC-адреса из одного блока, сведения о котором можно найти в публичных источниках. Проверив адрес на соответствие этому диапазону, можно безошибочно определить, что перед нами именно беспилотник Parrot, а не какая-нибудь умная хлеборезка или скороварка с сетевым интерфейсом.

В упомянутом видео использовался клиент node-ar-drone, написанный на Node.js и предназначенный для работы с коптерами Parrot AR Drone 2.0. Исходники этой библиотеки можно найти на GitHub. Node-ar-drone позволяет взаимодействовать с дронами Parrot при помощи команд JavaScript: менять направление и высоту полета, получать видеопоток или снимки с камеры коптера, а также делать с ним другие забавные вещи.

Сэми Камкар присобачил Raspberry Pi на собственный квадрокоптер и запустил его в поисках других дронов Parrot. Обнаружив сеть такого беспилотника, наш исследователь взламывал ее с использованием Aircrack-ng, устанавливал соединение с «вражеским» дроном, а затем при помощи node-ar-drone перехватывал поступающий с коптера видеопоток. Таким образом он мог видеть все, что попадало в поле зрения камеры «взломанного» беспилотника, но управление полетом дрона в этом эксперименте реализовано не было.

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

Перехват управления квадрокоптером Syma примерно схожим образом реализовали ребята из Positive Technologies, о чем был снят познавательный видеосюжет. Базовая идея тут была заложена та же самая: Raspberry Pi в качестве сканера каналов, позволяющего отследить работающие поблизости трансмиттеры и перехватить уникальный идентификатор пульта беспилотника. Именно на проверке этого идентификатора и строится вся система безопасности протокола управления, используемого коптерами Syma. Если этот идентификатор вбить в программу, эмулирующую работу пульта, ты получишь возможность управлять беспилотником.

После запуска эмулятора, присоединенного к ВЧ-передатчику сигнала, дрон оказывается подключен одновременно к двум пультам управления: настоящему, который находится в руках у RC-пилота, и поддельному, при этом аппарат откликается на команды с обоих пультов. Суть хака заключается в том, что работающая на пульте злоумышленника программа может отсылать дрону управляющие команды вдвое чаще оригинального пульта. Если оператор, например, отдаст коптеру команду снижаться, то от злоумышленника в ту же дискретную единицу времени может поступить две команды увеличить обороты. Беспилотник послушно обработает их все, но результирующим действием будет набор высоты, поскольку таких директив поступило больше. Используя эту нехитрую особенность выполнения команд по очереди, похититель может увести дрон за пределы зоны действия оригинального пульта управления и благополучно посадить его в соседнем лесочке.

Большие игрушки

В предыдущем разделе речь шла о недорогих и довольно простых по конструкции летательных аппаратах. А как насчет «серьезной» техники, использующей шифрование, или беспилотников, которые передают данные по протоколам DSM2/DSMX или SLT без всяких смартфонов? Можно ли перехватить управление, скажем, продукцией DJI?

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

То есть в теории это, конечно, возможно: нужно сдампить прошивку дрона, дизассемблировать ее, выяснить алгоритм, по которому происходит смена частот и генерация цифрового «шума», после чего написать эмулятор… Можно еще использовать уязвимости в протоколах, если таковые удастся обнаружить. Наиболее перспективен с этой точки зрения протокол MAVlink, поскольку для него доступны исходники (за исключением проприетарных компонентов) и целый ворох документации. Только вот затраты сил и нервов в этом случае могут быть несоизмеримы с полученным результатом.

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

Если основная задача — не украсть коптер, а просто предотвратить его полет над определенной географической точкой, спецслужбы уже давно используют более простые методы ее решения вроде GPS-спуфинга. Применением именно этой технологии объясняется феномен перенаправления пользователей GPS-навигаторов в аэропорт Шереметьево, когда те оказываются вблизи Кремля. Используемые для GPS-спуфинга устройства глушат сигнал навигационных спутников и передают в эфир собственный сигнал, транслирующий на принимающее устройство ложные координаты. Из-за этого устройство считает, будто оно находится в районе ближайшего аэропорта. Расчет делается на то, что в прошивку большинства дронов заложен запрет на полеты над гражданскими воздушными гаванями — при приближении к аэропорту дрон автоматически приземляется или стремится облететь его.

По замыслу спецслужб эта мера должна надежно защитить особо важных персон от неожиданной атаки с воздуха. И подобные опасения, следует отметить, не лишены оснований: например, в прошлом году для покушения (неудавшегося) на президента Венесуэлы Николаса Мадуро злоумышленники начинили взрывчаткой беспилотник. А в Сирии боевики уже давно используют дешевые дроны для атак на объекты военной инфраструктуры. С другой стороны, в том же Гатвике коптеры злоумышленников часами летали над взлетно-посадочными полосами и рулежными дорожками и при этом прекрасно себя чувствовали…

Примечательно, что стоимость программируемых радиопередатчиков, с помощью которых можно заглушить или подделать GPS-сигнал, сегодня относительно невелика и составляет всего лишь несколько сотен долларов, а купить все необходимое можно в интернете. Тем более даже для «профессиональных» коптеров чрезмерно мощные глушилки совершенно излишни: известны случаи, когда большие дроны вроде Phantom «терялись» вблизи антенн базовых станций мобильных операторов или высоковольтных линий ЛЭП. Если коптер попадет в зону действия подобной глушилки, он с большой долей вероятности начнет дрейфовать по ветру, а из-за отсутствия сигнала с навигационных спутников не сможет правильно определить свое текущее местоположение, чтобы вернуться в точку вылета. Дальше, как говорится, возможны варианты.

Выводы

Так можно ли все-таки угнать дрон? Как видим, можно, технически для этого не существует непреодолимых преград. Однако все зависит, конечно, от самого устройства, от используемого им ПО и протоколов передачи данных. Как бы то ни было, среди всех высокотехнологичных ухищрений обычная рогатка зачастую оказывается намного более эффективной в борьбе с коптерами — нужно лишь подобрать правильный с аэродинамической точки зрения булыжник.

Еще по теме: Хакерская флешка своими руками

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *