Различные способы ввода влияют на углы наклона, но нейросеть распознаёт ПИН-код в любом случае после сбора данных скриптом
Как известно, в любом смартфоне установлено множество датчиков — 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), в открытом доступе.
Комментарии (19)
konchok
11.04.2017 20:47+6В некоторых банках уже давно при вводе каждой цифры пин-кода цифры на экранной клавиатуре рандомно меняются местами. Немного неудобно, зато все эти «интеллектуальные» скрипты идут лесом.
amarao
11.04.2017 21:26+7Совершенно логичное продолжение «html applications». Если мы можем сделать что-то напоминающее десктопное приложение с помощью html + js, то мы можем сделать что-то напоминающее десктопный кейлоггер с помощью html + js.
Я немного скучаю по временам, когда веб был ламповый, 1.0, а худшее, что можно было потерять, отключив JS в браузере, это снежинки, летающие за курсором.
AlexGechis
12.04.2017 15:17Простите за возможно глупый вопрос, но я не могу придумать ни одного сценария, при котором этой уязвимостью имело бы смысл пользоваться. Почему бы зловредному скрипту просто не взять введенные данные из поля?
nikolayv81
13.04.2017 09:17пин к мобильному банку
AbstractGaze
13.04.2017 10:03пин разблокировки телефона
Как вы получите в свои руки заблокированный телефон? Как вы узнаете что данный пин именно от него?
пин к мобильному банку
Это тот который каждый раз разный?)nikolayv81
13.04.2017 22:08пин к мобильному банку
Это тот который каждый раз разный?
Я знаю не один банк в котором он одинаковый для мобильного приложения, оно просто не запускается без его ввода.
AbstractGaze
13.04.2017 22:45Я не пользуюсь мобильными банками, так как пользуюсь звонилками. Но разве чтобы зайти в приложение банка с другого телефона, достаточно пин кода?
Этот пинкод не на транзакцию, а на запуск приложения как я понял, которое обычно привязано к учетной записи. Каким образом этот пинкод чем то поможет злоумышленнику, не имея разблокированного телефона с банк клиентом на руках?
Я вот честно, не могу понять чем это поможет? По сути даже зная номер карты, и ее пинкод (что видят камеры наблюдения в любом гипермаркете сотнями в день) не получится провести транзакцию не имея мобильного телефона владельца.
Указанный вами пин код защищает скорее всего при потере телефона, чтобы включив его, не смогли запустить банк клиент и провести платеж.
VJean
14.04.2017 06:28Таргетированная атака проводится в разы, если не на порядок, проще и быстрее.
Как вы получите в свои руки заблокированный телефон?
Вариантов много, начиная от «владелец отошел на пару минут и забыл телефон», заканчивая кражей, либо заливкой владельца ликеро-водочным.
Как вы узнаете что данный пин именно от него?
Как вариант, создаем точку доступа без пароля, многие смартфоны любят такую халяву и с радостью соединяются. Так же на точке настроен либо снифер трафика, либо какой-либо другой вариант заставить перейти на подконтрольный веб-сервер, смотрим логи веб-сервера и выдаем (на другом устройтве) заранее собранную информацию на этот смартфон по цифровому отпечатку.
Contriver
12.04.2017 22:49Из будущих рекомендаций производителей:… прижали смартфон жёстко к горизонтальной поверхности и мягкими нажатиями подушечками пальцев, аккуратненько вводим пин код, не допуская сотрясений и резких движений.
Am0ralist
12.04.2017 23:59+1«Ни в коем случае не доверяйте сенсорному вводу пин-кода, только усилием мысли!» из рекламного буклета 2025 г.
tmin10
Хм, Firefox-то даже заряд батарейки перестал отдавать JS скриптам, чтобы не помогать в деанонимизации, а тут полный фарш датчиков, причём даже неактивной вкладке, ужас какой. Разработчиками мобильных браузеров есть повод задуматься, зачем всё это отдавать сайтам (сам не видел сайтов, которые действительно требуют эту информацию для нормальной работы).
Tenebrius
Простые сайты, вероятно никогда и не потребуют. А вот для некоторых веб-приложений эти датчики могут быть полезны.
tmin10
Нужно запрос выдавать на использование таких данных. На компьютерах это вроде бы реализовано, не понятно, зачем на мобильных устройствах действовать по-другому.
Tenebrius
Тут полностью согласен.
tormozedison
Да есть такие сайты, у Йоты, например, наверняка сталкивались: просит повернуть вертикально, иначе не работает.
Эх, и вовремя у меня в смарте соответствующий датчик сдох. В пятницу внезапно сдох, а сегодня — эта новость.
dcoder_mm
Оно может по соотношению сторон определять. Я видел такой сайт, пришлось окно хрома делать непривычной формы
Merkat0r
Это сейчас тренд — щас «накоучерят» оставшихся ПМов и будет вообще везде