Разработан скрипт для кражи ПИН-кода через браузер смартфона

1844b1c998644ec48190dd5c928d0433.jpg
Различные способы ввода влияют на углы наклона, но нейросеть распознаёт ПИН-код в любом случае после сбора данных скриптом

Как известно, в любом смартфоне установлено множество датчиков — GPS, свет, датчики ориентации, движения и ещё около 20 сенсоров — все они непрерывно выдают данные, чтобы смартфон мог взаимодействовать с окружающим физическим миром. У разработчиков есть несколько способов доступа к информации с этих сенсоров, в том числе через мобильный браузер, согласно официальным Javascript API.

Именно этот способ открывает широкое поле возможностей для удалённого взлома. Например, специалисты из Школы информатики при Университете Ньюкасла разработали скрипт PINlogger.js, с помощью которого через браузер можно определять, какие кнопки нажимает пользователь на экранной клавиатуре. Скрипт считывает информацию с сенсоров наклона мобильного устройства при каждом нажатии. Удивительно, но в некоторых браузерах (Safari) запущенный в браузере скрипт продолжает собирать данные даже с залоченного экрана. Аналогично он работает, если на соседней вкладке вы набираете пароль в онлайн-банкинге, не закрыв предыдущую вкладку.
Этот способ подходит для кражи ПИН-кода как через вредоносный сайт со скриптом, так и из любого мобильного приложения, которое имеет доступ к информации с сенсоров. Точность распознавания цифр ПИН-кода довольно высока. Четырёхзначный ПИН-код распознаётся с первой попытки с вероятностью 70%, со второй — 86%, с третьей — 94%, а с пятой попытки — с вероятностью 98% для разных пользователей или 99% для одного пользователя.

3efdfae074984c68b83fbcbc38a35f68.jpg
Векторы атаки с соседних вкладок (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 гораздо лучше распознаёт ПИН-коды по информации с сенсоров движения, чем предыдущие аналогичные разработки. К тому же это первая система для кражи ПИН-кодов через браузер, а не через приложение, установленное в смартфоне.

13fcadac450544ffa7bbbbc9a9a5aae3.png

Исследователи обращают внимание, что большинство пользователей не осознают опасность утечки персональных данных путём съёма данных с сенсоров. Опрос пользователей показал, что большинство из них видят угрозу в GPS или в камере, а не в том, что представляет более реальную угрозу — во внутренних датчиках движения, наклона и других. Цифра 25 приведена не случайно: именно столько датчиков насчитали исследователи в стандартном смартфоне. На диаграмме внизу показаны результаты опроса — в каких из 25 сенсоров пользователи видят наибольшую угрозу.

c9062afcb5ec44bf9cf7a835f6857ae2.png

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

f403fff00372409ab63f308e11ebc6f4.png

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

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

7fbb5132fc074ada9b7056b8468879b5.png

… когда человек сидит, идёт или бежит.

3c42f28b3ab24c50bcdafb4161b8f0aa.png

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

Специалистам по безопасности и крупнейшим игрокам мобильной индустрии эта проблема безопасности хорошо известна, но пока они не пришли к единому мнению, как её решить.

Научная работа опубликована 7 апреля 2017 года в журнале International Journal of Information Security (doi:10.1007/s10207–017–0369-x), в открытом доступе.

© Geektimes