Мобильные приложения и угон автомобиля с доступом в интернет

  1. Приложение № 1
  2. Приложение № 2
  3. Приложение № 3
  4. Заявка № 4
  5. Приложение № 5
  6. Приложение № 6
  7. Приложение № 7

Популярность концепции подключенных автомобилей, то есть оснащенных доступом в Интернет, растет уже несколько лет. Речь идет не только о мультимедийных системах (музыка, карты или фильмы доступны в современных роскошных автомобилях), но и о системах автомобильных ключей, как в прямом, так и в переносном смысле. С нашими собственными мобильными приложениями в вашем распоряжении, вы можете получить GPS-координаты автомобиля, отслеживать его маршрут, открыть двери, запустить двигатель и активировать вспомогательные устройства в нем. С одной стороны, это очень удобные функции, которыми пользуются миллионы людей. Однако, с другой стороны, если вор получит доступ к мобильному устройству жертвы, на котором установлено такое приложение, не станет ли кража тривиальной?

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

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

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

Для каждого приложения мы проверяли:

  • наличие потенциально опасных функций, которые обычно позволяют вам угнать ваш автомобиль или захватить одну из его систем с помощью приложения;
  • Использовали ли разработчики приложения методы, усложняющие использование обратного инжиниринга приложения (обфускация или упаковка). Если нет, злодей может легко прочитать код приложения, найти в нем пробелы и использовать их, чтобы проникнуть в инфраструктуру автомобиля;
  • проверяет ли приложение права администратора на устройстве (включая последующие отмененные установки, когда эти разрешения были включены). Если вредоносная программа заражает рутированное устройство, она сможет делать с ним буквально все. В этом случае важно выяснить, включили ли разработчики возможность сохранения учетных данных пользователя на устройстве в виде текстового файла;
  • проверяется, относится ли интерфейс, видимый пользователю, к приложению (защита от перекрытия). Хотя Android позволяет отслеживать, какое приложение отображается пользователю, вредоносная программа может отображать свое фишинговое окно с тем же интерфейсом и красть, например, учетные данные;
  • доступность проверки целостности приложением, например, проверяет ли оно изменения в своем коде. Это включает, например, может ли кто-то внедрить свой код в приложение, а затем сделать его доступным в магазине с теми же функциями и функциями, что и в исходном приложении.

К сожалению, оказалось, что все приложения уязвимы для атак.

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

Кроме того, мы проверили функции безопасности каждого приложения

Приложение № 1

Весь процесс регистрации автомобиля сводится к введению логина и пароля пользователя, а также номера VIN в приложении. Затем приложение отображает PIN-код, который необходимо ввести обычными способами внутри автомобиля, чтобы завершить процедуру подключения смартфона к автомобилю. Таким образом, наличие номера VIN недостаточно, чтобы отпереть дверь автомобиля.

Приложение не проверяет, было ли устройство лишено защиты (root), и имя пользователя устройства вместе с номером VIN сохраняется в файле text.xml в текстовом виде. Если на подключенном смартфоне троянец получает доступ на уровне суперпользователя, кража данных не будет сложной задачей.

Приложение № 1 может быть легко декомпилировано, а его код может быть прочитан и проанализирован. Кроме того, он не предотвращает навязывание другого интерфейса самостоятельно, так что можно перехватить имя пользователя и пароль с помощью фишингового приложения, код которого может насчитывать только 50 строк. Все, что вам нужно сделать, это проверить, какое приложение запущено в данный момент, а затем запустить вредоносную активность с аналогичным графическим интерфейсом, если у приложения есть имя целевого пакета.

Чтобы проверить проверку целостности, мы изменили метод loginWithCredentials.
Чтобы проверить проверку целостности, мы изменили метод loginWithCredentials

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

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

Однако отрадно, что приложению требуются сертификаты SSL для установления соединения. Это решение предотвращает атаки «человек посередине».

Приложение № 2

Приложение предлагает сохранение учетных данных пользователя, но в то же время рекомендует шифровать все устройство как противоугонное устройство. Это хорошо, но мы не собираемся красть телефон - мы хотим заразить его. Существует похожая проблема, которую мы заметили в Приложении № 1: имя пользователя и пароль хранятся в текстовом виде в файле file. {??????????????. Xml (знаки вопроса заменяют случайные символы, сгенерированные приложением).
Приложение предлагает сохранение учетных данных пользователя, но в то же время рекомендует шифровать все устройство как противоугонное устройство

Номер VIN хранится в другом файле.
Номер VIN хранится в другом файле

Чем дальше мы идем, тем больше мы получаем. Разработчики не удосужились даже внедрить проверку целостности кода приложения и по какой-то причине забыли о отключении электроэнергии. Следовательно, у нас не было проблем с изменением кода LoginActivity.

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

Приложение № 3

Автомобили в паре с этим приложением опционально оснащены модулем управления, который может запустить двигатель и отпереть дверь. Каждый модуль, установленный дилером, имеет наклейку с кодом доступа, который выдается владельцу автомобиля. Таким образом, вы не будете связывать автомобиль с другими данными для входа, даже если вам известен номер VIN.

Однако в этом случае возможны другие векторы атаки. Во-первых, приложение очень маленькое: размер его APK составляет 180 килобайт. Во-вторых, приложение записывает свои данные отладки в файл, который сохраняется на SD-карте.

Во-вторых, приложение записывает свои данные отладки в файл, который сохраняется на SD-карте

Вход в систему при запуске LoginActivity

Вход в систему при запуске LoginActivity

Место хранения регистрационного файла

К сожалению, вход в систему возможен, только если в приложении установлен следующий флаг: android: debuggable = "true". Общедоступная версия приложения не имеет флага по очевидным причинам, но нет никаких препятствий для его добавления - например, инструмент Apktool. После запуска измененного приложения и попытки входа в систему SD-карта в устройстве создаст папку marcsApp с файлом TXT. В нашем случае имя пользователя и пароль для учетной записи были сохранены в файле.

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

Заявка № 4

Это приложение позволяет комбинировать существующий VIN-код с любыми данными для входа, но служба отправляет соответствующий запрос на ходовую часть автомобиля. Благодаря этому, если посторонний человек получит номер VIN, автомобиль не будет взломан.

Однако протестированное приложение не защищено от перекрытия окон. Если кто-то получит имя пользователя и пароль к системе, он сможет открыть дверь автомобиля.

Что еще хуже, приложение хранит имя пользователя системы и многие другие интересные данные, например, марку автомобиля, VIN-код, а также номера автомобилей, в текстовом файле MyCachingStrategy.xml.

Приложение № 5

Чтобы подключить автомобиль к смартфону, на котором установлено это приложение, необходимо иметь PIN-код, который будет отображаться на бортовом компьютере автомобиля. Это означает, что, как и в случае с предыдущей заявкой, знаний о номере VIN недостаточно - автомобиль должен быть доступен изнутри.

Приложение № 6

Это приложение было создано россиянами, и его концепция отличается от конкурентов тем, что для авторизации используется номер телефона владельца автомобиля. Такой подход представляет серьезную угрозу для любого владельца автомобиля: чтобы начать атаку, нужно выполнить только одну функцию Android API, и тогда будет известно имя пользователя системы.

Приложение № 7

В последнем приложении, которое мы проверили, следует упомянуть, что имя пользователя и пароль хранятся в текстовом файле credentials.xml.
В последнем приложении, которое мы проверили, следует упомянуть, что имя пользователя и пароль хранятся в текстовом файле credentials

Если ваш смартфон заражен трояном с привилегиями суперпользователя, кража файлов станет лишь формальностью.

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

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

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

Голосовое управление осуществляется с помощью т.н. DTMF команды. Владелец должен буквально вызвать автомобиль, и будильник ответит на входящий звонок приятным женским голосом, сообщив о состоянии автомобиля, после чего он перейдет в режим ожидания, ожидая команды следующего владельца. Затем просто выберите запрограммированные цифры на клавиатуре телефона, чтобы открыть дверь и запустить двигатель. Другими словами, система сигнализации распознает эти коды и выполняет соответствующие команды.

Создатели таких систем позаботились о безопасности, предоставив белый список телефонных номеров, которые могут контролировать автомобиль. Однако никто не предвидел ситуации, при которой телефон владельца будет взломан. Кто-то может заразить смартфон жертвы простым приложением, которое вызывает тревогу от имени жертвы. Если динамики и экран одновременно выключены, можно получить полный контроль над автомобилем без ведома жертвы.

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

Разработчики другого метода управления тревогой, конечно, не читали ни одной из наших статей о безопасности устройств Android. Это зависит от того, что машина управляется с помощью SMS-команд. А первыми и наиболее распространенными мобильными троянами, обнаруженными «Лабораторией Касперского», были SMS-трояны. Это были вредоносные программы, задача которых была скрытно отправлять текстовые сообщения, иногда удаленной командой, отправленной ворами. В результате дверь машины может быть открыта, если создатели вредоносной программы выполнили следующие три шага:

1) просматривая все смс-сообщения на смартфоне, чтобы найти команды, выданные автомобилю,

2) после нахождения нужных вам СМС, вам необходимо скопировать номер телефона и пароль для доступа,

3) отправив SMS-сообщение на номер, который откроет дверь автомобиля.

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

Автомобили не относятся к дешевым товарам, поэтому они требуют подхода к безопасности не менее скрупулезного, чем в случае банковского счета. Как вы знаете, производители автомобилей и разработчики приложений стремятся быстро заполнить рынок приложениями, которые имеют новые функции для удовлетворения потребностей владельцев автомобилей. Однако, когда мы думаем о безопасности автомобилей с доступом к Интернету, речь идет не только о безопасности их инфраструктуры (управляющих серверов), взаимодействия или каналов инфраструктуры. Также стоит обратить внимание на то, что на стороне клиента, особенно на приложениях, установленных на устройствах пользователей. Слишком легко отменить заявку против владельца автомобиля, и теперь сайт клиента наиболее уязвим для атак злодеев.

К этому моменту следует добавить, что до сих пор не было ни одной атаки на приложения, предназначенные для управления автомобилями, и ни одна из тысяч обнаруженных нами вредоносных программ не содержала кода, который предписывал бы загрузку файлов конфигурации для таких приложений. Однако современные трояны достаточно гибки: сегодня они могут отображать постоянные объявления (и пользователь не может их самостоятельно удалить), но завтра они могут отправить файл конфигурации из автомобильного приложения на сервер управления по запросу преступников. Трояны также могут удалить файл конфигурации и перезаписать его новым, измененным. Пока это кому-то выгодно, появятся новые возможности для мобильных троянов, даже для самых распространенных.

Однако, с другой стороны, если вор получит доступ к мобильному устройству жертвы, на котором установлено такое приложение, не станет ли кража тривиальной?