Как стать автором
Обновить

Злоумышленники могут получить полный удаленный доступ к Android-устройству через порт публичной USB-зарядки

Время на прочтение3 мин
Количество просмотров33K
Всего голосов 51: ↑51 и ↓0+51
Комментарии103

Комментарии 103

Для атаки должно выполняться одно условие кроме доступа к обмену данными с портом со стороны злоумышленника: выход экрана смартфона из поля зрения хозяина (чтобы он не заметил, что устройство стало «жить своей жизнью»).

Т.е. должно быть два условия?
1 — включенный доступ обмена данными
2 — выход экрана смартфона из поля зрения хозяина
Нет, все верно, немного некорректная формулировка. Под обменом данными подразумевается физическое подключение (которое так же дает возможность обмена техническими кодами, которыми и являются AT-команды). Достаточно подключения «на зарядку» чтобы злоумышленник снял блокировку экрана (в том числе и обошел цифровой или графический пароль). Передача данных по USB включается теми же AT-командами удаленно, но она и не особо нужна.

Посмотрите приложенное видео.
Что такое «технические коды»? А как выглядят нетехнические коды?
А как выглядят нетехнические коды?


Флажковая азбука. Или Криптос, но последний с натяжкой.
Взлом телефона флажковой азбукой? Хочу такое видеть.
А как выглядят нетехнические коды?


А где тут про взлом телефона?
Мне кажется, что это дело только времени, когда научатся максимально незаметно подключаться к телефону и творить с ним что угодно через такие АТ-команды. :) Так что телефон будет спокойно лежать на зарядке и тихо передавать данные, подписываться на платные сервисы и т.д. :)
Лучшая защита от венерических заболеваний подобных атак — это воздержание заряжаться дома от розетки :)
А вы уверены, что в вашем домашнем зарядном устройстве не скрыт сюрприз? ;)
Its_a_Trap.png

Не доверять своим розеткам — так до паранойи, санитаров и казенного дома недалеко. Я вот доверяю (пока).
Розетки это одно, а вот китайское зарядное устройство…
После того леденящего душу трындеца, который я видел в китайских смартфонах (зашифрованная нагрузка (реклама+доступ к отправке SMS) в системных библиотеках, которую расшифровывает код из SystemUI), уже не удивлюсь, если в новеньком модном зарядном устройстве обнаружится «подарок».

Со смартфонами-то хоть Google хоть как-то следит (в прошлом году он выписал последнее китайское предупреждение полуподвальной конторе Doogee, которая мигом выкатила обновлённые прошивки, вычистив самые вопиющие косяки).
уже не удивлюсь, если в новеньком модном зарядном устройстве обнаружится «подарок»
В новеньком модном — легко, а вот в типичной «китайской зарядке» — вряд ли. Они там на резисторах и конденсаторах экономят, не все припаивают, а вы про AT-команды!
2018 год на дворе, уже хочется таки зарядку с QC 3.0 и прочими плюшками. «Типичная китайская» же зачастую не выдаст и заявленные 2A, куда уж там быстрая зарядка…
Прецеденты с установкой в доме скрытой камеры в России без решения суда уже были, так что пора начинать недоверять.
t.me/zalayk/77
Эмм… Ну, можно заряжать сначала powerbank, а потом от него телефон.
Если скатываться в паранойю — где гарантии отсутствия аналогичных закладок в твоём китайском, купленном по скидке на алиэкспрессе, повербанке?
Powerbank может насобирать информации, но как он выйдет в интернет.
А зачем ему выходить в интернет? Он откамандует телефону самому насобирать о себе информацию, а потом её отправить используя вайфай/мобильный интернет. Или откомандует скачать и установить апкашку, а дальше она сама пусть делает своё черное дело.
Может дождаться, пока не увидит открытый файфай вокруг себя. Всё уже было с какими-то китайски то ли утюгами, то ли чайниками, очень весёлая история, обсуждалась несколько лет назад
[paranoia level=«100500»]
Гарантия в том, что его я сам разработал и спаял.
[/paranoia]
Настоящий параноик бы опечатал корпус и хранил его в сейфе, а то ведь могут подменить/разместить внутри закладку, пока вас дома нет.
«Я всегда с собой беру видеока повербанк»

В продолжение темы паранойи. Даже если и берете всегда ПБ с собой, где гарантия, что его не вытащат из сумки, к примеру? В таком случае нужно всегда его в поле зрения держать. :)

А повербанк будет сам от себя заряжаться или от телефона?)) Вирусы есть для всех usb устройств
Не для всех, а только для незалоченных от перепрошивки. И не вирусы, а PoC (Proof of Concept).
Окей, жду PoC вируса для повербанка, в котором d+/d- линии вообще никуда не подключены =) Парочку destructive я сам приведу, остальные за вами:
1) Реинкарнация Ethernet Killer в формате USB
2) Гусеницы танка/хорошая кувалда.
Так без D+/D- же не будет квикчаржей и тому подобного, не?
А шо, повербанки уже начала и в это играть? Мои тупо и спокойно жрут 0.5-2.5А, пока напряжение в норме.
Это на вход, если порт даст. На выход — телефоны дофига умные пошли, без разрешения больше полуампера не возьмут.
А QuickCharge (tm) — это от 9 до 20 вольт, тут без обмена данными никак.
У меня тут китаец на медиатеке, который в chargepump умеет (родная зарядка до 12 вольт плюётся). Так вот, сей лопатофон прекрасно жрет 1 ампер от лабораторника, если ему d+ с d- коротнуть. Меня другое интересовало, реально сейчас всякие новые хипстерские модненькие повербанки научились QC/CP для зарядки себя самих использовать?
Вы невнимательно читали статью. Мало подключения, нужно ещё и чтобы телефон в это время не был у владельца на глазах, иначе не получится незаметно. Публичная зарядка под эти критерии подходит, ибо там телефон в шкафчик запирается. А вот павербанк — нет, потому что не знаю кто как, а я подключив павербанк не перестаю пользоваться телефоном, и сразу замечу, если после подключения телефон начнёт жить своей жизнью. Так что да, заряжать в публичных местах павербанк а потом от него телефон — достаточно, чтобы защититься от этой атаки.
Ну положим старт атаки может быть не мгновенным (мы ведь параноим по полной?), после подключения телефона к повербанку, тем более я встречал случаи когда телефон вешали на повербанк и откладывали в сторону. Далее нам ведь не обязательно делать всю эту дичь на глазах, включить отладку по usb и заслать скрипт через adb (соответственно с правами которые даст ему adb) который исполнит основное своё содержимое с некоторой задержкой, скажем в 04:27 по времени на устройстве. А вот заметит ли пользователь промелькнувший на долю секунды экран с подтверждением отладки — зависит как от внимательности пользователя, так и от производителя устройства. Не стоит исключать ещё и категорию граждан, которые увидев что телефон зажил своей жизнью — просто не поймут что происходит, а следовательно максимум удивятся или в качестве шутки будут в итоге рассказывать об этом событии по вечерам своим друзьям.
Второе решение проблемы в зарядке внешнего аккумулятора вместо телефона, если особых кабелей или адаптеров нету.
а кто мешает заряжатся от БП ПК — там выводов то только на питание «розетка USB для смартфонов»
Так это, вроде же, вариация на тему зарядного кабеля, без сигнальных контактов. Только от них не все девайсы заряжаются, почему-то. Предположу, что и этот «презерватив» в ряде случаев сведёт «ощущения» до нуля.
Т.е. хотите зарядиться без проблем — надевайте адаптер дополнительный проходной на порт зарядки с изолированными контактами с физической блокировкой дата контактов.
Всякого рода быстрая зарядка работать не сможет. Ей нужны пины данных для управления напряжением.
Коротим в «мобильном презервативе» d+ на d-, получаем DCP из стандарта USB, который 0.9А обязан выдать. Но всякие chargepump/quickcharge обламываются, это да. Хотя по показометру mediatek-и это DCP вполне себе распознают и жрут около 0.9 ампер.
900mА@5V это ужас по сравнению с нормальными 1,8A@12V, которые выдаёт QC
боюсь представить, сколько 20Ач батарейка будет заряжаться
Ээээ, а у какого телефона вы такой аккумулятор нашли, может там просто ёмкость в кЕтайских а/ч?
Плюс ко всему, заряжая батарею малым током мы экономим её ресурс. Лично я не фанат «раз в год замени телефон/найди аккум/вскрой эту лажу чтобы его заменить».
почему телефон-то, батарейка же, powerbank
заряжая батарею малым током, мы теряем время
В таком случае (зарядник всёравно специфический получается) проще изначально без всяких QC дать ему 12 вольт от собственного зарядника и не добавлять свистелки и перделки везде, где только получается.
чего специфического-то? два контроллера общаются между собой по паре проводов
Странно обсуждать устройства с быстрыми зарядками и вообще с usb, полагая, что могут по этому usb утащить данные. Да для таких устройств есть кроме этого тысяча способов хакнуть их. Надо Nokia 3310 носить, нет usb — нет учечки. И заряжается нормально без всяких d+/d-.
Собственно, по этой причине в ОС Android с самых ранних версий (с 2.0 так точно) существует опция ручного включения порта устройства в режим передачи информации с объектом подключения, т.е. с портом USB. Без активации этой функции устройство лишь заряжается от USB, игнорируя всякие (очевидные) запросы на обмен информацией от второй стороны.
А можно про это поподробнее? Был 2.какой-то андроид, сейчас 4.какой-то. Всегда считал, что изучил все настройки, но про такое никогда не слышал. На циане тоже ничего похожего не видел. Где такое можно найти?
Речь идет об этой вполне стандартной функции:

image

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

В некоторых прошивках (OmniROM) там же есть опция «включать MTP по умолчанию, но только, если телефон разблокирован».

Можно вообще отключить передачу данных через build.prop.

Но всё это не поможет защититься от описанной в топике атаки, которая, как я понимаю, может быть произведена даже в режиме «только зарядка», если сам кабель поддерживает передачу данных.
Да понятно, что не поможет. Но всё равно интересно.
У меня по МТП без разблокировки не работает, но никаких настроек этого нет. В инстр. разработчика только «защита usb накопителя», но, как я понял, это защита либо внутр накопителя, либо внешнего (непонятно) от самих внутр. программ. Больше ничего нет.

Про build.prop можно чуть подробнее? Хотя совсем отключать не хотелось бы. Оно периодически нужно.
persist.sys.usb.config=none
sys.usb.config=none
sys.usb.configfs=1


А файлы мне всё равно проще через облако перекидывать.

У вас, вероятно Android, 4, я уже и не помню, что там есть в инструментах разработчика.
4.1, да.
Благодарю, поиграюсь.
Речь идет об этом стандартном режиме при выборе подключения к ПК:
Заголовок спойлера
image
Блин, на 4.1 такого нет :(
Спросил у соседа — на 5 или 6 тоже нет такого. Судя по вирт сидюку — это какая-то не совсем стандартная прошивка (у меня на 4 тоже режима накопителя быть уже не должно, но он есть)
Ох уж эта вендорская кастомизация… :(
На 5-9 это в шторке, где уведомления.
Да и на 2.3 было там же.
У меня на «голом» Android 4.4 было точно такое меню как на приведенном мной скриншоте
НЛО прилетело и опубликовало эту надпись здесь
Там видно, что они подключаются к виртуальному последовательному порту и выполняют
AT%USB=adb

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

Интересно — все смартфоны этому подвержены, или кто-то таки думает о безопасности всегда, а не тогда, когда это на deadline не влияет?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Как я понял если экран блокируется по паролю или отпечатку пальца, то ничего не выйдет.
Способы обхода экранов блокировки регулярно появляются — то через переполнение поля ввода, то через включение ADB из калькулятора, доступного при активированной FRP-блокировке, то еще как-нибудь. Если устройство давно не не патчилось, то найти и заскриптовать рабочий будет несложно.
На 0:54 видна включенная опция «debug mode when USB is connected». Скажите мне, что это не то, что я думаю.
а, не, выключена
НЛО прилетело и опубликовало эту надпись здесь
А ведь из это можно обратить и на пользу. Например, возможность слить контакты с телефона с разбитым экраном была бы очень кстати.
НЛО прилетело и опубликовало эту надпись здесь

Можно через adb снимать скриншоты, вычислять координаты, и программно тапать. Я так делал для управления "стационарным" Андроид-терминалом, который из офиса домой не возьмёшь так просто, а тестировать надо было :)) я написал скрипт, который на скриншот накладывал координатную сетку, чтобы удобнее было вычислять координаты для нажатий

Через adb понятно что можно, но для этого же нужно чтобы отладка по USB была включена, разве нет? А тут я так понимаю они как раз это ограничение и обходят.
а, ну, это да ) невнимательно прочёл коммент ))
Почему вообще есть эти «недокументированные команды»…
НЛО прилетело и опубликовало эту надпись здесь
In order to find AT commands present in firmware images, we look in every file for any string containing the regular expression AT[+*!@#$%^&].
«Почему вообще есть эти «недокументированные команды»…» преемственность кода — чувак пришел по контракту, работающий код не перелопачивал, так велосипеды на костылях и переехали, или — инженер отвечавший за разработку вышел на пенсию, салфетки с алгоритмами в его любимом кафе выкинули… ну или теория заговора
брутфорсили — например гуглевская «команда зеро» а давайте всякую чушь на проц отправим, посмотрим, что получится — в каких то вариантах получали чудеса из кирпичей.
Думаю ~половина тех. команд идет со стадии производства/отбраковки — а померим щупом контактную площадку 1321 — там должно быть +V питалова, а что на площадке 4487 — ок, около 0, кристал можно паковать — теперь поджарим старичка- в партии все холодные, а этот потеет — ок, партия 3 категории, что с холодными? часть греется — в обрезки, холодные поштучно в верхний сегмент. если чо отключим кэш
например гуглевская «команда зеро» а давайте всякую чушь на проц отправим, посмотрим, что получится — в каких то вариантах получали чудеса из кирпичей.


Очень интересно, а где бы про это почитать?
Для отладки. Как известно на старых телефонах serial console была на 3.5mm разьёме.

Потом разьём убрали, а serial port хотелось сохранить. Его перенесли в USB-C разьём, благо контактов там хватает.

А вот зачем Samsung и LG оставили в релизной прошивке возможность через эту консоль включить разработчика — одному богу ведомо. Скорее всего для ремонтников…

P.S. То есть нельзя сказать, что тут обнаружили «уязвимость». Скорее «тайный ход, который лиса оставила себе, являясь архитектором курятника»…
Т.е. не «технические коды», а банальное «оставили последовательный порт»?
Скорее всего, хотя пока информации достоверной немного…
Если так, то это просто феерическое раздолбайство в том смысле, что отладка и всякое DRMо вещи несовместимые.

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

НЛО прилетело и опубликовало эту надпись здесь

Тогда да, чуть посложнее, для теста потребуется программный usb сниффер.

Бог с ним, с удалённым управлением экрана… но то что какой-то «специальной командой» можно обойти пасс-код это страшновато. Но об этом говорят как-то вскользь и без подробностей. Что за команда, никто не в курсе?

Если я правильно помню, в моем нексусе перед началом отладки с нового компа надо было нажать на телефоне «да, я доверяю», естественно, при разблокированном экране
Или тут это тоже обходится?

Обходится, см.видео.

Не знаю как насчет злоумышленников, но когда работал в банке, то у всех на рабочих местах стояло ПО от российской фирмы — не помню название, которое контролировало в том числе и то что втыкается в USB. После того как воткнул туда свой еще старенький смартфон (не андроид), часть ПО которое запрещено в банке(аська итп) просто исчезли. Зарекся с теъ времен чтото подключать к УСБ когда в организации есть СБ.

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

Дык, старый закон:

если хакер имеет физический доступ к вашему устройству, то это (с большим процентом успеха) будет уже не совсем ваше устройтсво.

Так что бросать ноуты, смартфоны и планшеты где попало уже совсем нельзя. Можно вспоминать про принцип Керкгоффса — "«Враг знает систему»", но это применимо в основном для (около)военных тем, для простой мобилки никто так не заморочится
Какраз для простой мобилки принцип «Врагу известна система» гораздо более реален — вон в соседнем ларьке эта модель продается, купи и изучай, это вам не танк, который ещё надо постараться найти и втихаря купить.
Сомнительно, что в современных смартах будет USB-конфигурация с CDC-модемом. Года 4 назад раздача интернета в USB на андроидах сделана через RNDIS.
Так что атака рабочая, но для очень старых устройств, да и о данной атаке было известно и раньше.
Проверил у себя: Xiaomi Mi6, у USB только одна рабочая конфигурация, естественно без CDC-модема.
Если вышеупомянутое в комментах верно, то получается, что на свободные пины USB-C выведена не CDC конфигурация, а отладочный UART, что ещё круче.
Тяжело привыкнуть что телефон на Андроиде — троянский конь, проникший во все сферы моей жизни. А как хорошо всё начиналось!
Для зарядки есть прикольные магнитные переходники — они автоматически решают описанную проблему (т.к. там данные физически не могут передаваться), при этом они очень эргономичны. Ссылку прикладывать не буду, что бы не сочли за рекламу, на Али* легко ищется.
Эти «прикольные переходники» приводят к проблеме зарядки устройства т.к. сходит с ума родной контролер у батареи.
В некоторых случаях перестает работать USB-хост т.е. заражаться хоть как-то будет, а подключатся к компу для передачи данных нет.
Если мы про магнитный зарядник с двумя контактами — то там вообще ничего кроме зарядки работать не будет.
Как такой переходник может сводить с ума контроллер в батарее — я вообще себе не представляю, это за грань физики выходит. Максимум, что от такого будет (если переходник не разваливается на части) — это потуги зарядки током в 100мА, да и то, наверняка будет 500мА
Судя по комментариям атаке подвержены некоторые устройства, имеющие usb-c с разведенным на него сом/uart. В статье указаны старые устройства, упоминается даже андр2.0 (зачем?)
Смешались в кучу два разных экспроита. И может и больше. Внешне они похожи.
Интересно, а уже пробовали комбинировать ультразвук и AT-команды?..
Зарегистрируйтесь на Хабре, чтобы оставить комментарий