Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Эта статья — часть серии публикаций о практических приемах взлома и атак с использованием подручных устройств, которые можно собрать дома. В этих материалах мы раскрываем простые способы получения несанкционированного доступа к защищенной информации и показываем, как ее оградить от подобных атак. Предыдущая статья серии: «Грозный ананас. Собираем и применяем свой Wi-Fi Pineapple».
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Дроны стали незаменимы в самых разных областях, и сегодня они доступны практически каждому. Но что они могут дать хакеру?
Важная особенность дрона заключается в том, что к нему можно присоединить фактически что угодно. Таким образом дрон может значительно увеличить дистанцию применения атак, ведь он позволяет быстро получить физический доступ туда, куда нельзя добраться ногами. Дрон может преодолеть почти любое ограждение, подлететь к окнам высотного здания и, что немаловажно, сделать это достаточно быстро, а иногда и незаметно. Миниатюрные габариты позволяют ему пролететь даже в приоткрытое окно, проникнуть в помещение и молниеносно совершить компьютерные атаки. Одним словом, с таким средством доступной становится практически любая цель.
Это делает дрон крайне удобным для проведения быстрых атак, реализуемых через беспроводные технологии — то есть там, где требуется фиксированный и часто небольшой радиус действия. Так что атаки, показанные в некоторых компьютерных играх, вполне реальны.
Дроны в большинстве случаев управляются по радиоканалу. При этом частоты и протоколы для приема сигнала с пульта (RX), а также для передачи видео и телеметрии с дрона (TX) могут отличаться. В обобщенном виде это выглядит так:
Для атакующего дрон главным образом транспортное средство, поэтому он должен быть крепким и надежным. Поскольку почти все атаки так или иначе могут быть связаны с близким пролетом вблизи строений, а где‑то даже и внутри них, то куда важнее обеспечить максимальную защиту пропеллеров, нежели высокую скорость. Отличным выбором могут быть дроны с защитной рамой вокруг пропеллеров (Cinewhoop), как на следующем рисунке.
Такая конструкция не позволяет дрону разбиться в случае контакта со стеной или другими препятствиями. Дрон также должен иметь некоторый запас мощности, достаточный для подъема хакерских девайсов массой хотя бы с треть его веса.
Поскольку злоумышленник может атаковать отдаленные объекты, использовать для этого целесообразно дроны, управление которых завязано не на Wi-Fi. Ведь радиус Wi-Fi ограничен 50–100 м, и управляемость (отклик) ухудшается по мере отдаления дрона от пульта управления. Профессиональные дроны с выделенным радиоканалом управления (FRSKY, ELRS или TBS) подходят для подобных целей куда лучше. По прямой видимости дрон на таком управлении может улететь на несколько километров, и время отклика при этом держится на приемлемом уровне.
Раз летать злоумышленнику придется не в чистом поле, а вблизи зданий, где находятся объекты атак, то немаловажен и контроль над полетом. Дроны семейства FPV обеспечивают максимально возможное погружение и вид от первого лица.
Отличным выбором по гибкости, открытости компонентов и простоты станут популярные дроны с полетным контроллером системы Betaflight. Основные плюсы подобных открытых решений:
На самом деле не так важна модель дрона, куда важнее умение хорошо летать. Прежде чем переходить к атакам с дрона, стоит немного поговорить, как возможно улучшить управление дрона и защитить его.
Полеты среди зданий могут сильно уменьшить предельную дистанцию. Даже если у дрона супердальнобойная система связи, она не пробьет несколько бетонных стен, когда квадрокоптер залетит за здание.
Но что, если дрон будет управляться по мобильным сетям? В наше время хороший прием обеспечивается даже за пределами города, не говоря уже про здания. Сотовую связь можно использовать в качестве отличного канала для передачи данных. Тогда расстояние полета будет ограничено исключительно ресурсом аккумулятора.
Сегодня 4G-сети обладают достаточно высокой скоростью, но при их использовании отклик от пульта управления и картинка с камеры не передаются с той же скоростью, как на специально разработанных для этого радиопротоколах. Тем не менее полет вполне возможен. А с учетом скорости, с которой дроны способны лететь (200 км/ч), и запаса аккумулятора злоумышленник может атаковать цель на расстоянии более 20 км!
Итак, как перевести дрон на 4G-управление? Это должно быть не очень сложное решение, применимое к широкой линейке доступных моделей. Можно использовать, например, следующую схему.
Самые простые и дешевые дроны полностью управляются по Wi-Fi. Внутри дрона запущена точка доступа Wi-Fi, мобильный телефон подключается к ней и через приложение отправляет команды в обычный UDP-порт. Видео с дрона идет в обратном направлении на телефон простым RTSP-стримом. Получается, дрон — это обычное сетевое устройство. Следовательно, если к нему прикрепить мини‑компьютер с 4G-модемом, то через VPN можно проброситься прямо в дрон с любого расстояния. И далее останется лишь отправлять закодированные команды управления моторами.
Однако в этом способе есть пара минусов. Во‑первых, скорее всего, придется иметь дело с закрытым протоколом и реверсить его с успешностью 50/50 — повезет или нет. Возможно, попадется шифрование, а возможно — аутентификация с неизвестным принципом. Словом, взламывать собственный дрон, чтобы полетать, несколько странно. Во‑вторых, в такие протоколы закладывают достаточно частую отправку пакетов от пульта на дрон. Это сделано для лучшего отклика при управлении. Кроме того, так дрон оперативно понимает, если сигнал с пультом теряется. Тут абсолютно невыгодно отправлять по сети одни и те же пакеты на дрон, ведь так 4G-канал управления будет забит, а по нему должно передаваться еще и видео.
А что, если вместо сетевого шлюза для доступа к дрону воспользоваться видеошлюзом? То есть к квадрокоптеру прикрепить небольшой телефон, подключенный к нему по Wi-Fi, а к самому телефону подключиться с помощью средства удаленного управления? Ведь в любом случае видео с дрона нужно смотреть, только теперь это можно будет делать с экрана удаленного телефона.
Как ни странно, этот способ позволяет решить все проблемы. Телефон дает отвязку по трафику — все пакеты с требуемой скоростью он отправляет сам, пилот лишь через виртуальные стики на экране удаленного телефона управляет дроном. Также видеопоток с экрана телефона принимается уменьшенного качества, что еще немного увеличивает скорость передачи. Плюсом мобильное приложение берет на себя кодирование положений стиков пульта, так что ничего реверсить не требуется. Пример такой реализации приведен на следующем рисунке.
Простой до невозможности трюк, но на самом деле он позволит преодолеть любые расстояния и преграды. Мини‑телефон, прикрепленный к дрону, всегда будет обеспечивать ему приемлемый уровень сигнала Wi-Fi, который на таком расстоянии крайне сложно заглушить подавителем. Также он дает развязку по трафику — не нужно принимать высококачественный стрим с дрона, а вместо этого достаточно лишь получить картинку с экрана телефона в разрешении 320 × 240, передача которой более надежна при просадках скорости мобильного соединения. Еще такой подход обеспечивает развязку и по протоколу: больше не нужно вникать в подробности кодирования положений стиков троттлинга, крена, углов атаки и рысканья — мобильное приложение все сделает самостоятельно.
Подключиться к дрону по 4G можно с любого устройства — хоть с ноутбука, хоть с телефона. Для этого можно использовать любое программное решение для облачного удаленного управления, например кросс‑платформенный AnyDesk.
Далее, используя простые средства автоматизации GUI, можно назначить тем или иным нажатиям на клавиатуре определенные действия с виртуальным пультом на экране:
#!/bin/bashconsole=$(xdotool getactivewindow)control=$(xwininfo | grep id | grep 'xwininfo:' | awk '{print $4}')xdotool windowfocus $controlX=$(xwininfo -id $control | grep 'Absolute upper-left X:' | awk '{print $4}')Y=$(xwininfo -id $control | grep 'Absolute upper-left Y:' | awk '{print $4}')left_stick_x=$[$X+123]
left_stick_y=$[$Y+321]
right_stick_x=$[$X+456]
right_stick_y=$[$Y+321]
xdotool windowfocus $consolewhile read -rsn1 key
docase "$key" in
'A')echo 'throttle up'xdotool mousemove $left_stick_x $left_stick_yxdotool mousedown 1
xdotool mousemove_relative -- '0' '-50'xdotool mouseup 1
;;
'B')echo 'throttle down'xdotool mousemove $left_stick_x $left_stick_yxdotool mousedown 1
xdotool mousemove_relative -- '0' '50'xdotool mouseup 1
;;
'w')echo 'pitch forward'xdotool mousemove $right_stick_x $right_stick_yxdotool mousedown 1
xdotool mousemove_relative -- '0' '-50'xdotool mouseup 1
;;
's')echo 'pitch back'xdotool mousemove $right_stick_x $right_stick_yxdotool mousedown 1
xdotool mousemove_relative -- '0' '50'xdotool mouseup 1
;;
'a')echo 'roll left'xdotool mousemove $right_stick_x $right_stick_yxdotool mousedown 1
xdotool mousemove_relative -- '-50' '0'xdotool mouseup 1
;;
'd')echo 'roll right'xdotool mousemove $right_stick_x $right_stick_yxdotool mousedown 1
xdotool mousemove_relative -- '50' '0'xdotool mouseup 1
;;
'q')echo 'yaw left'xdotool mousemove $left_stick_x $left_stick_yxdotool mousedown 1
xdotool mousemove_relative -- '-50' '0'xdotool mouseup 1
;;
'e')echo 'yaw right'xdotool mousemove $left_stick_x $left_stick_yxdotool mousedown 1
xdotool mousemove_relative -- '50' '0'xdotool mouseup 1
;; esacxdotool windowfocus $consoledone
Тут в бесконечном цикле происходит ожидание нажатия тех или иных клавиш, после чего, в соответствии с нажатием, курсор мыши двигает виртуальный стик на экране удаленного телефона. Все максимально просто.
Данные о состоянии дрона (телеметрия) также в распоряжении оператора, пример представлен на следующем рисунке.
В зависимости от модели дрона и мобильного приложения картинка может отличаться. Используя те же самые средства автоматизации GUI, а также распознавание текста, можно реализовать произвольную обработку показаний телеметрии:
INTERVAL=1
control=$(xwininfo | grep id | grep 'xwininfo:' | awk '{print $4}')while sleep $INTERVALdogm import -window $control/tmp/drone_telemetry.png
gm convert /tmp/drone_telemetry.png -crop240x60+740+58 /tmp/drone_telemetry-bat.png
bat=$(tesseract /tmp/drone_telemetry-bat.png stdout -leng 2> /dev/null | grep '^[0-9]' | awk '{print $1}')gm convert /tmp/drone_telemetry.png -crop240x60+461+58 /tmp/drone_telemetry-alt.png
alt=$(tesseract /tmp/drone_telemetry-alt.png stdout -leng 2> /dev/null | grep '^[0-9]')
if [ "$bat" -lt 10 ]; thenecho 'low battery'| festival --tts --languageenglish
ficlear
echo "$bat$alt"done
Здесь выполняется цикличное распознавание текста различных областей экрана, на которых расположены те или иные показания. После их преобразования с изображения на экране в понятную компьютеру форму можно обрабатывать их дальше. В этом примере скрипт использует синтезатор речи для информирования о низком заряде аккумулятора.
С помощью этих примитивов управления и телеметрии можно полностью автоматизировать полет дрона.
Подобный подход чрезвычайно прост в исполнении и сразу открывает доступ и к управлению, и к телеметрии, но имеет лишнее звено — телефон с Wi-Fi. Сигнал от телефона может быть слишком сильный, что может негативно сказаться на управлении. Плюс ко всему дрон в этом случае вынужден поднимать достаточно большую лишнюю массу (около 50 г).
Но зачем удаленно подключаться к дрону через его явные интерфейсы управления (по Wi-Fi)? Почему бы злоумышленнику не подключиться напрямую к его полетному контроллеру? В случае с дронами по типу «готового решения» можно столкнуться, скорее всего, все с той же проблемой — закрытым протоколом и необходимостью его реверсить.
Однако есть множество открытых решений для управления дронами, например прошивки Betaflight, iNav или Ardupilot. Самое простое из них — Betaflight среди прочего поддерживает прямую отправку команд управления моторами в полетный контроллер через уже знакомый UART. Это значит, что управлять дроном можно почти с любого одноплатника. Стоит лишь подключить к нему 4G-модуль и настроить VPN. Все‑таки с открытыми решениями работать куда приятнее.
Итак, атакующему сначала необходим одноплатный компьютер минимального размера и массы, а также 4G-модем. Отличный вариант — NanoPi Neo Air и Sim7600G, оба устройства миниатюрны и практически идентичны по габаритам.
|
|