Разработан скрипт для кражи ПИН-кода через браузер смартфона
Различные способы ввода влияют на углы наклона, но нейросеть распознаёт ПИН-код в любом случае после сбора данных скриптом
Как известно, в любом смартфоне установлено множество датчиков — GPS, свет, датчики ориентации, движения и ещё около 20 сенсоров — все они непрерывно выдают данные, чтобы смартфон мог взаимодействовать с окружающим физическим миром. У разработчиков есть несколько способов доступа к информации с этих сенсоров, в том числе через мобильный браузер, согласно официальным Javascript API.
Именно этот способ открывает широкое поле возможностей для удалённого взлома. Например, специалисты из Школы информатики при Университете Ньюкасла разработали скрипт PINlogger.js, с помощью которого через браузер можно определять, какие кнопки нажимает пользователь на экранной клавиатуре. Скрипт считывает информацию с сенсоров наклона мобильного устройства при каждом нажатии. Удивительно, но в некоторых браузерах (Safari) запущенный в браузере скрипт продолжает собирать данные даже с залоченного экрана. Аналогично он работает, если на соседней вкладке вы набираете пароль в онлайн-банкинге, не закрыв предыдущую вкладку.
Этот способ подходит для кражи ПИН-кода как через вредоносный сайт со скриптом, так и из любого мобильного приложения, которое имеет доступ к информации с сенсоров. Точность распознавания цифр ПИН-кода довольно высока. Четырёхзначный ПИН-код распознаётся с первой попытки с вероятностью 70%, со второй — 86%, с третьей — 94%, а с пятой попытки — с вероятностью 98% для разных пользователей или 99% для одного пользователя.
Векторы атаки с соседних вкладок (b) работают только в Chrome и Dolphin под iOS, а атака из фрейма (a) — во всех популярных браузерах, в том числе Safari, Chrome, Firefox, Opera и Dolphin
Для практической демонстрации атаки был разработан специальный интерфейс для ввода четырёхзначных ПИН-кодов. Клиентская часть отправляла на сервер показания сенсоров ориентации и движения. Серверную часть реализовали на Node.js, а показания сенсоров сохраняли в базе данных MobgoLab.
В данной демонстрации исследователям было легко определять события нажатий по клавиатуре с помощью события onkeydown. Авторы научной работы обращают внимание, что аналогичный подход используется в других программах для сборка ПИН-кодов по информации с сенсоров, таких как TouchLogger и TapLogger. Если нужно обнаружить нажатия на залоченном экране, то может понадобиться более сложный сценарий сегментации данных сенсора, чтобы вычленить нужные фрагменты данных. Например, это можно сделать по измерению пиковых амплитуд сигнала и с использованием дополнительных сенсоров, как показано в предыдущих научных работах. Код для ввода данных опубликован на GitHub.
В базе данных накапливается информация о нажатиях и показаниях сенсоров в момент нажатия. Каждый из 10 добровольцев по пять раз вводил 50 четырёхзначных ПИН-кодов (всего 2488 правильно введённых ПИН-кода). Этот набор данных затем использовался для извлечения признаков и последующего обучения нейросети (70% данных использовались для обучения, 15% для проверки и 15% для тестирования).
Судя по результатам сравнительных тестов, PINlogger.js гораздо лучше распознаёт ПИН-коды по информации с сенсоров движения, чем предыдущие аналогичные разработки. К тому же это первая система для кражи ПИН-кодов через браузер, а не через приложение, установленное в смартфоне.
Исследователи обращают внимание, что большинство пользователей не осознают опасность утечки персональных данных путём съёма данных с сенсоров. Опрос пользователей показал, что большинство из них видят угрозу в GPS или в камере, а не в том, что представляет более реальную угрозу — во внутренних датчиках движения, наклона и других. Цифра 25 приведена не случайно: именно столько датчиков насчитали исследователи в стандартном смартфоне. На диаграмме внизу показаны результаты опроса — в каких из 25 сенсоров пользователи видят наибольшую угрозу.
Пользователи не только не осознают угрозу. Многие даже не понимают, какую именно информацию собирает большая часть из 25 сенсоров. О некоторых сенсорах люди даже не слышали.
Проблема в том, что эта информация не защищается на уровне операционной системы. Она легко доступна и для приложений, и для любых сайтов через браузеров — без разрешения. Только несколько сенсоров требуют явного разрешения на предоставление информации, в том числе камера и GPS. Остальные предоставляют информацию совершенно открыто.
С помощью этих открытых данных можно не только собирать ПИН-коды и пароли, но и следить за пользователем. Любой сайт может определить, когда человек принимает звонок и кладёт трубку,
… когда человек сидит, идёт или бежит.
Повторим, вся эта информация доступна любому сайту и любому приложению без какого-либо разрешения. Сайты получают её стандартными средствами JavaScript.
Специалистам по безопасности и крупнейшим игрокам мобильной индустрии эта проблема безопасности хорошо известна, но пока они не пришли к единому мнению, как её решить.
Научная работа опубликована 7 апреля 2017 года в журнале International Journal of Information Security (doi:10.1007/s10207–017–0369-x), в открытом доступе.