С приходом в нашу жизнь USB-устройств и USB-портов одним из главных требований к безопасности стало внимательное отношение к точкам подключения, которые способны проводить передачу данных между девайсами. Собственно, по этой причине в ОС Android с самых ранних версий (с 2.0 так точно) существует опция ручного включения порта устройства в режим передачи информации с объектом подключения, т.е. с портом USB. Без активации этой функции устройство лишь заряжается от USB, игнорируя всякие (очевидные) запросы на обмен информацией от второй стороны.
Но Кевин Батлер и его исследовательская группа в области информационной безопасности Университета Флориды недавно обнаружили крайне элегантный и при этом довольно опасный способ атаки на пользовательские устройства через USB-порт. При этом сам порт выступает для наблюдателя лишь как источник питания и может размещаться в любом публичном или не очень месте, например, на зараженном ПК, в кафе или точке зарядки USB-устройств в аэропорте. Для атаки должно выполняться одно условие кроме доступа к обмену данными с портом зарядки со стороны злоумышленника: выход экрана смартфона из поля зрения хозяина (чтобы он не заметил, что устройство стало «жить своей жизнью»).
При этом пароль блокировки экрана обходится одной короткой командой, что дает атакующему доступ к главному экрану смартфона.
Согласно отчету Батлера и его команды, в атаке на смартфоны можно оригинально использовать недокументированные AT-команды для удаленного управления экраном смартфона, что технически исключает различные защитные функции ОС от стороннего вмешательства. Фактически, батлер и его команда нашли способ создать «Ghost User'a», полностью обманывая существующие функции защиты Android и полностью имитируя прикосновения к экрану при помощи низкоуровневых AT-команд. Атаке подвержены устройства Samsung и LG — именно на устройствах этих производителей проводились лабораторные опыты.
Подобный вектор атаки уже давным-давно известен специалистам по информационной безопасности. Первые репорты о том, что подключенное через USB устройство может стать целью атаки злоумышленников датируются 2011-2013 годом. Например, тогда специалисты «Лаборатории Касперского» предупреждали пользователей, что подключение любого USB-устройства подразумевает обмен идентификационными кодами между девайсом пользователя и периферией. Об использовании этого вектора атаки мы также рассказывали в нашей статье об обмане и взломе устройств Apple и их новой функции USB Restructed.
Но если с очевидными атаками на саму ОС бороться привыкли, то использование низкоуровневых AT-команд пока широко не применялось. Батлер и его команда записали целое видео, в котором проводят демонстрацию по удаленному управлению пользовательским смартфоном под видом взаимодействия с экраном. Проста эта атака тем, что как раз первичный обмен идентификационными данными позволяет определить тип устройства, модель и установленную ОС. А далее уже дело за предварительной подготовкой по «слепому» ориентированию. Вот как это выглядит в консоли со стороны атакующего и как ведет себя атакованное таким способом устройство:
Чем грозит эта атака пользователям?
Фактически, возможность использования AT-команд для получения доступа к экрану под видом живого человека дает злоумышленникам полный контроль над устройством. Это значит, что через безобидную с виду USB-зарядку с вашего смартфона могут разослать сообщения, совершить звонок, подписать вас на услуги, переслать всю вашу почту, войти в ваш интернет-банк и украсть коды 3d-Secure, включить камеру и сделать фото, воспользоваться вообще любым приложением на смартфоне, включить developer-mode и даже сбросить устройство «на завод». Проще говоря, все зависит лишь от фантазии атакующего.
Батлер и команда предварительно зарепортили о своей находке и компания LG выпустила еще в июле соответствующие патчи, закрывающие уязвимость. Однако на руках у пользователей остаются миллионы устройств, которые никогда не обновляются. Прямо сейчас команда исследователей проверяет на уязвимость смартфоны других популярных производителей, в первую очередь — продукцию Apple, но сам факт того, что AT-команды можно использовать в подобном ключе уже наводит на мысли, что «дыры» в информационной безопасности современных устройств носят фундаментальный характер. Невольно просится аналогия со Spectre и Meltdown, возможность существования которых, как и в случае с AT-командами (стандарт был разработан еще в 70-х), возникла из-за проблем с архитектурой и выбранным когда-то путем развития технологии.
С документацией исследования можно ознакомиться тут. Также исходники недокументированных команд выложены в репозиторий на GitHub.
Вы опытный девелопер, архитектор или руководитель в IT-компании и думаете сменить место работы? Ознакомьтесь с нашими вакансиями SA, CA, SEM и позициями на Моем Круге.
Возможно, они вас заинтересуют.
Комментарии (90)
dartraiden
26.08.2018 14:48+2Проблема решается USB-презервативом, в котором изолированы контакты, отвечающие за передачу данных.
Crossover Автор
26.08.2018 15:03+1Лучшая защита от
венерических заболеванийподобных атак — этовоздержаниезаряжаться дома от розетки :)dartraiden
26.08.2018 15:07+3А вы уверены, что в вашем домашнем зарядном устройстве не скрыт сюрприз? ;)
ragequit
26.08.2018 15:14+1Its_a_Trap.png
Не доверять своим розеткам — так до паранойи, санитаров и казенного дома недалеко. Я вот доверяю (пока).dartraiden
26.08.2018 15:47+2Розетки это одно, а вот китайское зарядное устройство…
После того леденящего душу трындеца, который я видел в китайских смартфонах (зашифрованная нагрузка (реклама+доступ к отправке SMS) в системных библиотеках, которую расшифровывает код из SystemUI), уже не удивлюсь, если в новеньком модном зарядном устройстве обнаружится «подарок».
Со смартфонами-то хоть Google хоть как-то следит (в прошлом году он выписал последнее китайское предупреждение полуподвальной конторе Doogee, которая мигом выкатила обновлённые прошивки, вычистив самые вопиющие косяки).khim
27.08.2018 01:17-1уже не удивлюсь, если в новеньком модном зарядном устройстве обнаружится «подарок»
В новеньком модном — легко, а вот в типичной «китайской зарядке» — вряд ли. Они там на резисторах и конденсаторах экономят, не все припаивают, а вы про AT-команды!dartraiden
27.08.2018 01:352018 год на дворе, уже хочется таки зарядку с QC 3.0 и прочими плюшками. «Типичная китайская» же зачастую не выдаст и заявленные 2A, куда уж там быстрая зарядка…
dzhidzhoev
26.08.2018 17:49Прецеденты с установкой в доме скрытой камеры в России без решения суда уже были, так что пора начинать недоверять.
t.me/zalayk/77
Evgenym
26.08.2018 18:48Эмм… Ну, можно заряжать сначала powerbank, а потом от него телефон.
Aelliari
26.08.2018 20:23+3Если скатываться в паранойю — где гарантии отсутствия аналогичных закладок в твоём китайском, купленном по скидке на алиэкспрессе, повербанке?
vics001
26.08.2018 20:53Powerbank может насобирать информации, но как он выйдет в интернет.
Aelliari
26.08.2018 20:57+1А зачем ему выходить в интернет? Он откамандует телефону самому насобирать о себе информацию, а потом её отправить используя вайфай/мобильный интернет. Или откомандует скачать и установить апкашку, а дальше она сама пусть делает своё черное дело.
appletesta
27.08.2018 20:08Может дождаться, пока не увидит открытый файфай вокруг себя. Всё уже было с какими-то китайски то ли утюгами, то ли чайниками, очень весёлая история, обсуждалась несколько лет назад
JerleShannara
26.08.2018 23:14+2[paranoia level=«100500»]
Гарантия в том, что его я сам разработал и спаял.
[/paranoia]oteuqpegop
26.08.2018 23:42Настоящий параноик бы опечатал корпус и хранил его в сейфе, а то ведь могут подменить/разместить внутри закладку, пока вас дома нет.
JerleShannara
27.08.2018 00:36«Я всегда с собой беру
видеокаповербанк»perlestius
27.08.2018 07:17В продолжение темы паранойи. Даже если и берете всегда ПБ с собой, где гарантия, что его не вытащат из сумки, к примеру? В таком случае нужно всегда его в поле зрения держать. :)
HappyUser
27.08.2018 13:55А повербанк будет сам от себя заряжаться или от телефона?)) Вирусы есть для всех usb устройств
mayorovp
27.08.2018 16:19Не для всех, а только для незалоченных от перепрошивки. И не вирусы, а PoC (Proof of Concept).
JerleShannara
27.08.2018 21:21+1Окей, жду PoC вируса для повербанка, в котором d+/d- линии вообще никуда не подключены =) Парочку destructive я сам приведу, остальные за вами:
1) Реинкарнация Ethernet Killer в формате USB
2) Гусеницы танка/хорошая кувалда.Fedorchik
28.08.2018 12:08Так без D+/D- же не будет квикчаржей и тому подобного, не?
JerleShannara
28.08.2018 15:24А шо, повербанки уже начала и в это играть? Мои тупо и спокойно жрут 0.5-2.5А, пока напряжение в норме.
Jogger
27.08.2018 10:46Вы невнимательно читали статью. Мало подключения, нужно ещё и чтобы телефон в это время не был у владельца на глазах, иначе не получится незаметно. Публичная зарядка под эти критерии подходит, ибо там телефон в шкафчик запирается. А вот павербанк — нет, потому что не знаю кто как, а я подключив павербанк не перестаю пользоваться телефоном, и сразу замечу, если после подключения телефон начнёт жить своей жизнью. Так что да, заряжать в публичных местах павербанк а потом от него телефон — достаточно, чтобы защититься от этой атаки.
Aelliari
27.08.2018 14:56Ну положим старт атаки может быть не мгновенным (мы ведь параноим по полной?), после подключения телефона к повербанку, тем более я встречал случаи когда телефон вешали на повербанк и откладывали в сторону. Далее нам ведь не обязательно делать всю эту дичь на глазах, включить отладку по usb и заслать скрипт через adb (соответственно с правами которые даст ему adb) который исполнит основное своё содержимое с некоторой задержкой, скажем в 04:27 по времени на устройстве. А вот заметит ли пользователь промелькнувший на долю секунды экран с подтверждением отладки — зависит как от внимательности пользователя, так и от производителя устройства. Не стоит исключать ещё и категорию граждан, которые увидев что телефон зажил своей жизнью — просто не поймут что происходит, а следовательно максимум удивятся или в качестве шутки будут в итоге рассказывать об этом событии по вечерам своим друзьям.
KaneUA
26.08.2018 15:06Второе решение проблемы в зарядке внешнего аккумулятора вместо телефона, если особых кабелей или адаптеров нету.
dimitry78
26.08.2018 21:40а кто мешает заряжатся от БП ПК — там выводов то только на питание «розетка USB для смартфонов»
Iceg
27.08.2018 09:49Так это, вроде же, вариация на тему зарядного кабеля, без сигнальных контактов. Только от них не все девайсы заряжаются, почему-то. Предположу, что и этот «презерватив» в ряде случаев сведёт «ощущения» до нуля.
denis-19
26.08.2018 16:22Т.е. хотите зарядиться без проблем — надевайте адаптер дополнительный проходной на порт зарядки с изолированными контактами с физической блокировкой дата контактов.
zerg59
26.08.2018 18:13+3Всякого рода быстрая зарядка работать не сможет. Ей нужны пины данных для управления напряжением.
JerleShannara
26.08.2018 23:16+1Коротим в «мобильном презервативе» d+ на d-, получаем DCP из стандарта USB, который 0.9А обязан выдать. Но всякие chargepump/quickcharge обламываются, это да. Хотя по показометру mediatek-и это DCP вполне себе распознают и жрут около 0.9 ампер.
sirocco
27.08.2018 17:55Странно обсуждать устройства с быстрыми зарядками и вообще с usb, полагая, что могут по этому usb утащить данные. Да для таких устройств есть кроме этого тысяча способов хакнуть их. Надо Nokia 3310 носить, нет usb — нет учечки. И заряжается нормально без всяких d+/d-.
DrZlodberg
26.08.2018 16:33Собственно, по этой причине в ОС Android с самых ранних версий (с 2.0 так точно) существует опция ручного включения порта устройства в режим передачи информации с объектом подключения, т.е. с портом USB. Без активации этой функции устройство лишь заряжается от USB, игнорируя всякие (очевидные) запросы на обмен информацией от второй стороны.
А можно про это поподробнее? Был 2.какой-то андроид, сейчас 4.какой-то. Всегда считал, что изучил все настройки, но про такое никогда не слышал. На циане тоже ничего похожего не видел. Где такое можно найти?ragequit
26.08.2018 16:37Речь идет об этой вполне стандартной функции:
DrZlodberg
26.08.2018 16:48Не, это стандартное предупреждение при работе в режиме флешки. Типа надо размонтировать внутренние фс, чтобы дать возможность работы с ними внешнему девайсу. В режиме МТП этой проблемы уже нет и сообщение не показывается. Собственно у меня тел умеет работать в обоих. Но полностью отключить передачу данных нельзя. Только ограничить доступ конкретно к накопителю.
dartraiden
26.08.2018 17:03В инструментах разработчика можно выбрать, какой режим по умолчанию активируется при подключении к другой стороне. Чаще всего по умолчанию стоит «только зарядка», пользователь должен вручную из шторки уведомлений включать каждый раз MTP.
В некоторых прошивках (OmniROM) там же есть опция «включать MTP по умолчанию, но только, если телефон разблокирован».
Можно вообще отключить передачу данных через build.prop.
Но всё это не поможет защититься от описанной в топике атаки, которая, как я понимаю, может быть произведена даже в режиме «только зарядка», если сам кабель поддерживает передачу данных.DrZlodberg
26.08.2018 17:23Да понятно, что не поможет. Но всё равно интересно.
У меня по МТП без разблокировки не работает, но никаких настроек этого нет. В инстр. разработчика только «защита usb накопителя», но, как я понял, это защита либо внутр накопителя, либо внешнего (непонятно) от самих внутр. программ. Больше ничего нет.
Про build.prop можно чуть подробнее? Хотя совсем отключать не хотелось бы. Оно периодически нужно.dartraiden
26.08.2018 17:30persist.sys.usb.config=none
sys.usb.config=none
sys.usb.configfs=1
А файлы мне всё равно проще через облако перекидывать.
У вас, вероятно Android, 4, я уже и не помню, что там есть в инструментах разработчика.
CactusKnight
26.08.2018 17:09Речь идет об этом стандартном режиме при выборе подключения к ПК:
Заголовок спойлераDrZlodberg
26.08.2018 17:19Блин, на 4.1 такого нет :(
Спросил у соседа — на 5 или 6 тоже нет такого. Судя по вирт сидюку — это какая-то не совсем стандартная прошивка (у меня на 4 тоже режима накопителя быть уже не должно, но он есть)dartraiden
26.08.2018 17:31На 5-9 это в шторке, где уведомления.
Сидюк это 4 андроид, там это точно было.
CactusKnight
27.08.2018 00:12У меня на «голом» Android 4.4 было точно такое меню как на приведенном мной скриншоте
nafgne
26.08.2018 18:06+2Это же ложь. По видео совершенно очевидно, что используется штатный функционал ADB. Это никакие не АТ команды и уж тем более не недокументированная фича. К тому же, без включения отладки по USB и подтверждения доступа для конкретного хоста андроид вообще откажется что-либо выполнять.
Kolonist
26.08.2018 19:48Там видно, что они подключаются к виртуальному последовательному порту и выполняют
AT%USB=adb
После этого они запускают свое пайтон-приложение, которое, судя по всему, обходит авторизацию, представляется мышкой и клацает по экрану, уже используя возможности adb.khim
27.08.2018 01:26Короче Samsung и LG в своём репертуаре. Начали они с драйвера, который уничтожает всю защиту нафиг, потом заменили его на прямой доступ к памяти, теперь вот включение adb через AT команды…
Интересно — все смартфоны этому подвержены, или кто-то таки думает о безопасности всегда, а не тогда, когда это на deadline не влияет?vsb
27.08.2018 14:07Хотел бы сказать, что Apple, но учитывая недавнюю шумиху с устройством, которое как-то подбирает пин-коды через USB-вход, ещё и обходя число попыток, уже не уверен. Хотя как работает то устройство, кажется, так и не обнародовали.
TigerClaw
26.08.2018 18:54Как я понял если экран блокируется по паролю или отпечатку пальца, то ничего не выйдет.
oteuqpegop
26.08.2018 19:40Способы обхода экранов блокировки регулярно появляются — то через переполнение поля ввода, то через включение ADB из калькулятора, доступного при активированной FRP-блокировке, то еще как-нибудь. Если устройство давно не не патчилось, то найти и заскриптовать рабочий будет несложно.
Lirein
26.08.2018 20:14+1Проверил вектор атаки на BB Priv, не переключается — дырка закрыта:
sudo ./usbswitcher -b usbswitcher - Info: switching BB phones vendor/product id mismatch vendor/product id mismatch vendor/product id mismatch vendor/product id mismatch hello, device found with vendor id [*] Device found, 1 configuration(s) usbswitcher: usbswitch.c:134: main: Assertion `dev->descriptor.bNumConfigurations == 2' failed. Аварийный останов
Только одна конфигурация устройства.
Jogger
26.08.2018 20:54+5А ведь из это можно обратить и на пользу. Например, возможность слить контакты с телефона с разбитым экраном была бы очень кстати.
Lirein
27.08.2018 04:19Я этим пользовался, и в линухе для этого софт был, во всяком случае со старого самсунга на андроид я так контакты вытягивал.
ashumkin
27.08.2018 09:05Можно через adb снимать скриншоты, вычислять координаты, и программно тапать. Я так делал для управления "стационарным" Андроид-терминалом, который из офиса домой не возьмёшь так просто, а тестировать надо было :)) я написал скрипт, который на скриншот накладывал координатную сетку, чтобы удобнее было вычислять координаты для нажатий
Vindicar
26.08.2018 21:14+2Почему вообще есть эти «недокументированные команды»…
ptica_filin
27.08.2018 00:58И если они недокументированные, то как эти ребята о них узнали?
oteuqpegop
27.08.2018 02:14+1In order to find AT commands present in firmware images, we look in every file for any string containing the regular expression AT[+*!@#$%^&].
khim
27.08.2018 01:36+1Для отладки. Как известно на старых телефонах serial console была на 3.5mm разьёме.
Потом разьём убрали, а serial port хотелось сохранить. Его перенесли в USB-C разьём, благо контактов там хватает.
А вот зачем Samsung и LG оставили в релизной прошивке возможность через эту консоль включить разработчика — одному богу ведомо. Скорее всего для ремонтников…
P.S. То есть нельзя сказать, что тут обнаружили «уязвимость». Скорее «тайный ход, который лиса оставила себе, являясь архитектором курятника»…amarao
27.08.2018 01:45+1Т.е. не «технические коды», а банальное «оставили последовательный порт»?
JerleShannara
27.08.2018 04:02Если так, то это просто феерическое раздолбайство в том смысле, что отладка и всякое DRMо вещи несовместимые.
me21
26.08.2018 21:46+1Что-то они не договаривают. По идее, если подключать телефон к компьютеру в режиме "только зарядка", на компьютере вообще никаких usb-устройств создаваться не должно и взаимодействовать с ним должно быть невозможно. Это легко проверить для каждого конкретного телефона, и если это не так — то это явный косяк в прошивке.
Lirein
27.08.2018 04:24Не совсем так, USB контроллер должен отдать какую то конфигурацию. В данном случае он отдает Наименование фирмы изготовителя, модели и ее серийный номер, и сообщает что устройство поддерживает только режим тыквы с параметрами зарядки! Без этого ОС не снимет ограничения по току (и напряжению для Type C) USB. А вот то что устройство при отправке ему запроса на список поддерживаемых режимов работы — говорит что у него есть ещё и ProductID для последовательного порта и позволяет сменить конфигурацию — уже дыра.
Token2
27.08.2018 00:12+1Бог с ним, с удалённым управлением экрана… но то что какой-то «специальной командой» можно обойти пасс-код это страшновато. Но об этом говорят как-то вскользь и без подробностей. Что за команда, никто не в курсе?
LODIII
27.08.2018 09:26Не знаю как насчет злоумышленников, но когда работал в банке, то у всех на рабочих местах стояло ПО от российской фирмы — не помню название, которое контролировало в том числе и то что втыкается в USB. После того как воткнул туда свой еще старенький смартфон (не андроид), часть ПО которое запрещено в банке(аська итп) просто исчезли. Зарекся с теъ времен чтото подключать к УСБ когда в организации есть СБ.
M_AJ
27.08.2018 11:16Обход блокировки экрана это что-то. Выходит нельзя оставлять телефон без присмотра даже на несколько минут, а уж если потерял то держись. Страшно даже представить, чем это может закончится: угон всех аккаунт в популярных сервисах, выпрашивание денег от твоего имени, шантаж выдачей компрометирующей информации, похищение средства из платёжных систем, аренда на твое имя хостингов под интернет-казино, фишинг, пиратские сервисы и прочие подобные вещи, за которые ты реально можешь оказаться в тюрьме.
appletesta
27.08.2018 20:18Дык, старый закон:
если хакер имеет физический доступ к вашему устройству, то это (с большим процентом успеха) будет уже не совсем ваше устройтсво.
Так что бросать ноуты, смартфоны и планшеты где попало уже совсем нельзя. Можно вспоминать про принцип Керкгоффса — "«Враг знает систему»", но это применимо в основном для (около)военных тем, для простой мобилки никто так не заморочитсяJerleShannara
27.08.2018 21:24Какраз для простой мобилки принцип «Врагу известна система» гораздо более реален — вон в соседнем ларьке эта модель продается, купи и изучай, это вам не танк, который ещё надо постараться найти и втихаря купить.
Gordon01
27.08.2018 12:53Сомнительно, что в современных смартах будет USB-конфигурация с CDC-модемом. Года 4 назад раздача интернета в USB на андроидах сделана через RNDIS.
Так что атака рабочая, но для очень старых устройств, да и о данной атаке было известно и раньше.
Проверил у себя: Xiaomi Mi6, у USB только одна рабочая конфигурация, естественно без CDC-модема.JerleShannara
27.08.2018 21:25Если вышеупомянутое в комментах верно, то получается, что на свободные пины USB-C выведена не CDC конфигурация, а отладочный UART, что ещё круче.
sena
27.08.2018 12:58Тяжело привыкнуть что телефон на Андроиде — троянский конь, проникший во все сферы моей жизни. А как хорошо всё начиналось!
artalar
27.08.2018 13:56Для зарядки есть прикольные магнитные переходники — они автоматически решают описанную проблему (т.к. там данные физически не могут передаваться), при этом они очень эргономичны. Ссылку прикладывать не буду, что бы не сочли за рекламу, на Али* легко ищется.
Graf54r
Т.е. должно быть два условия?
1 — включенный доступ обмена данными
2 — выход экрана смартфона из поля зрения хозяина
Crossover Автор
Нет, все верно, немного некорректная формулировка. Под обменом данными подразумевается физическое подключение (которое так же дает возможность обмена техническими кодами, которыми и являются AT-команды). Достаточно подключения «на зарядку» чтобы злоумышленник снял блокировку экрана (в том числе и обошел цифровой или графический пароль). Передача данных по USB включается теми же AT-командами удаленно, но она и не особо нужна.
Посмотрите приложенное видео.
amarao
Что такое «технические коды»? А как выглядят нетехнические коды?
JC_IIB
Флажковая азбука. Или Криптос, но последний с натяжкой.
amarao
Взлом телефона флажковой азбукой? Хочу такое видеть.
JC_IIB
А где тут про взлом телефона?
g0rd1as
Мне кажется, что это дело только времени, когда научатся максимально незаметно подключаться к телефону и творить с ним что угодно через такие АТ-команды. :) Так что телефон будет спокойно лежать на зарядке и тихо передавать данные, подписываться на платные сервисы и т.д. :)