Приложение для акустической кражи паролей смартфоном

Keyboard keysВ связи с вновь возникшим интересом ко всякого рода акустическим методам атак на системы информационной безопасности, должно бы появиться приложение для смартфона, позволяющее считывать вводимые на клавиатуре пароли. Клавиатура относится к компьютеру, расположенному неподалёку – смартфон как бы ненароком положили рядом. Сценариев подготовки такой атаки – уйма: во время встречи разместили смартфон на столе, “забыли” телефон в кабинете, и так далее.

Прослушать и “раскодировать” по звуку нажимаемые кнопки – возможно, это уже не раз демонстрировалось на практике. В случае с паролями есть дополнительные трудности. Дело в том, что для различения акустических сигнатур нажимаемых кнопок клавиатуры удобно использовать словарь, при этом атакуемый пользователь должен набирать текст на соответствующем, известном языке. Алгоритм довольно простой, он основан на различной частотности сочетаний символов и совпадает с криптоанализом наивных шифров замены; в случае с клавиатурой, символы из “секретного алфавита” замены – это уникальные сигнатуры кнопок. Но пароли – это не текст на естественном языке: в них больше энтропии, кроме того, они относительно короткие. Последний момент, кстати, заметно мешает проверке собранных сигнатур по словарю паролей.

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

Вообще говоря, упрощенная версия описанного выше технического инструментария представляет собой обычный цифровой диктофон. Даже смартфон не требуется: сперва записывается калибровочная серия, потом сеанс работы пользователя; обработка, вычисляющая пароль, может быть произведена позднее. Правда, у смартфона есть существенное преимущество: здесь возможен интерактивный режим, когда атакующий видит, получилось ли что-то записать, или нужно попробовать ещё раз.

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

()

Похожие записки:



Далее - мнения и дискуссии

(Сообщения ниже добавляются читателями сайта, через форму, расположенную в конце страницы.)

Комментарии читателей блога: 5

  • 1. 30th December 2013, 17:57 // Читатель jno написал:

    А на ля?
    Можно поюзать тело просто как мафон – для записи “стука”.
    Декодировать позже – на “большом” компутере.

  • 2. 30th December 2013, 22:54 // Читатель Vitalie написал:

    Есть важный момент. Форма клавиатуры и расположение кнопок – заранее известны. Все что остается – записать звуки нажатий клавиш. Если смартфон имеет стерео микрофон, то представляется достаточно легким делом узнать координаты кнопок по разнице дохождения звука. Потом этот “map” накладывается на форму клавы… и вуаля. :)

  • 3. 31st December 2013, 04:49 // Читатель Brakhma написал:

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

    Ещё сложный пароль может набираться посимвольно, указательным пальцем, например, тогда звук нажатия разных клавиш практически одинаков. Это я уж молчу о том, что пароль может копироваться, набираться на клавиатуре с мягкими клавишами, на сенсорной клавиатуре, на экранной…

    Однако если кто-то сможет разгадать вот это:
    https://dl.dropboxusercontent.com/u/52363392/keyprint.wav
    Сожру галстук в прямом эфире. ;)
    Здесь набрано: qwertyuiop[] asdfghjkl;’ zxcvbnm,./ далее нажат enter и введено некое слово. Микрофон расположен справа от клавиатуры.

    Vitalie: что касается измерения скорости прохождения звука стереомикрофоном, то получается, что при расстоянии между микрофонами в 10 см и расстоянием до ближайшей клавиши – 20 см нам надо измерять время с точностью до 20 микросекунд и знать положение телефона относительно клавиатуры с точностью до 5 мм. Или я что-то не так понимаю? Хотя если реально считать время получения сигнала на двух микрофонах с точностью до микросекунды то вычислить положение устройства можно путём нажатия нескольких калибровочных клавиш. Правда пользователь может переместить устройство, особенно если это “забытый” мобильник. Ну или клавиатуру.

  • 4. 3rd January 2014, 18:41 // Читатель Vitalie написал:

    Brakhma: мне кужется, что точность в 10 и даже в 5 микросекунд вполне реализуема в случае если нужно украсть важный пароль. Местоположение смартфона не играет роли именно потому, что мы знаем форму клавиатуры. Конечно, придется немного повозиться с “наложением” карты, но это не такая уж проблема. Когда у вас есть “слепок” звуков в стерео режиме – вы можете с высокой точностью воссоздать расстояния между самими клавишами и создать “маску”, которую потом и накладываете на клаву с несколькими вариантами наложения. Вариантов будет очень мало.

  • 5. 8th January 2014, 09:43 // Читатель Brakhma написал:

    Vitalie: Ну тогда выходит небольшой словарик для брутфорса, теоретически, получить вполне реально.

    Кстати в некоторых телефонах, как выясняется, есть второй микрофон, используемый системой активного шумоподавления, но получить исходный нефильтрованный сигнал с обоих микрофонов, как говорят, задача нетривиальная: http://stackoverflow.com/questions/14508776/how-can-i-access-second-microphone-signal-in-android-device