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


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

    Как известно, в любом смартфоне установлено множество датчиков — 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), в открытом доступе.
    Поддержать автора
    Поделиться публикацией

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

      +5
      Хм, Firefox-то даже заряд батарейки перестал отдавать JS скриптам, чтобы не помогать в деанонимизации, а тут полный фарш датчиков, причём даже неактивной вкладке, ужас какой. Разработчиками мобильных браузеров есть повод задуматься, зачем всё это отдавать сайтам (сам не видел сайтов, которые действительно требуют эту информацию для нормальной работы).
        0
        Простые сайты, вероятно никогда и не потребуют. А вот для некоторых веб-приложений эти датчики могут быть полезны.
          +3
          Нужно запрос выдавать на использование таких данных. На компьютерах это вроде бы реализовано, не понятно, зачем на мобильных устройствах действовать по-другому.
            +1
            Тут полностью согласен.
            0

            Да есть такие сайты, у Йоты, например, наверняка сталкивались: просит повернуть вертикально, иначе не работает.
            Эх, и вовремя у меня в смарте соответствующий датчик сдох. В пятницу внезапно сдох, а сегодня — эта новость.

              0
              Оно может по соотношению сторон определять. Я видел такой сайт, пришлось окно хрома делать непривычной формы
                0
                Это сейчас тренд — щас «накоучерят» оставшихся ПМов и будет вообще везде
          +6
          В некоторых банках уже давно при вводе каждой цифры пин-кода цифры на экранной клавиатуре рандомно меняются местами. Немного неудобно, зато все эти «интеллектуальные» скрипты идут лесом.
            +7
            Совершенно логичное продолжение «html applications». Если мы можем сделать что-то напоминающее десктопное приложение с помощью html + js, то мы можем сделать что-то напоминающее десктопный кейлоггер с помощью html + js.

            Я немного скучаю по временам, когда веб был ламповый, 1.0, а худшее, что можно было потерять, отключив JS в браузере, это снежинки, летающие за курсором.
              0
              хоть какая то польза от трясущихся рук
                0
                Простите за возможно глупый вопрос, но я не могу придумать ни одного сценария, при котором этой уязвимостью имело бы смысл пользоваться. Почему бы зловредному скрипту просто не взять введенные данные из поля?
                  0
                  пин разблокировки телефона, пароль на адрессную книгу
                    0

                    пин к мобильному банку

                      0
                      пин разблокировки телефона

                      Как вы получите в свои руки заблокированный телефон? Как вы узнаете что данный пин именно от него?

                      пин к мобильному банку

                      Это тот который каждый раз разный?)
                        0
                        пин к мобильному банку

                        Это тот который каждый раз разный?



                        Я знаю не один банк в котором он одинаковый для мобильного приложения, оно просто не запускается без его ввода.

                          0
                          Я не пользуюсь мобильными банками, так как пользуюсь звонилками. Но разве чтобы зайти в приложение банка с другого телефона, достаточно пин кода?
                          Этот пинкод не на транзакцию, а на запуск приложения как я понял, которое обычно привязано к учетной записи. Каким образом этот пинкод чем то поможет злоумышленнику, не имея разблокированного телефона с банк клиентом на руках?
                          Я вот честно, не могу понять чем это поможет? По сути даже зная номер карты, и ее пинкод (что видят камеры наблюдения в любом гипермаркете сотнями в день) не получится провести транзакцию не имея мобильного телефона владельца.
                          Указанный вами пин код защищает скорее всего при потере телефона, чтобы включив его, не смогли запустить банк клиент и провести платеж.
                          0
                          Таргетированная атака проводится в разы, если не на порядок, проще и быстрее.

                          Как вы получите в свои руки заблокированный телефон?
                          Как вы узнаете что данный пин именно от него?
                          Вариантов много, начиная от «владелец отошел на пару минут и забыл телефон», заканчивая кражей, либо заливкой владельца ликеро-водочным.

                          Как вариант, создаем точку доступа без пароля, многие смартфоны любят такую халяву и с радостью соединяются. Так же на точке настроен либо снифер трафика, либо какой-либо другой вариант заставить перейти на подконтрольный веб-сервер, смотрим логи веб-сервера и выдаем (на другом устройтве) заранее собранную информацию на этот смартфон по цифровому отпечатку.
                      0
                      Из будущих рекомендаций производителей:… прижали смартфон жёстко к горизонтальной поверхности и мягкими нажатиями подушечками пальцев, аккуратненько вводим пин код, не допуская сотрясений и резких движений.
                        +1
                        «Ни в коем случае не доверяйте сенсорному вводу пин-кода, только усилием мысли!» из рекламного буклета 2025 г.
                          0

                          "Ни в коем случае не вводите правильный ПИН-код с первого раза. Используйте бекспейс"

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое