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

 

Warning!

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.

 

Швейцарский нож

Современный смартфон напичкан всевозможными датчиками и контроллерами. Все ради одной цели — стать более универсальным устройством и заменить собой как можно больше других девайсов. Зачем аудиоплеер, когда он есть в мобильном? Камера? Навигатор? Забудь: теперь все в одной коробке. И качество каждой функции в таком комбайне растет с каждым днем. Логично, что с повышением универсальности растет и количество разнообразных неочевидных применений смартфонов. Сейчас, например, уже никого не удивишь Droid Sheep, который делает ARP spoofing для Wi-Fi-сетей. Не надо больших антенн — надо просто подойти максимально близко, и сделать это с телефоном в кармане проще простого. До неприличия просто!

В этой статье мы поговорим об еще одном неочевидном применении современных мобильных — подслушивании вибраций.

 

Идея

Эта идея пришла после участия в PlaidCTF. Там было задание на распознавание кнопок клавиатуры по большому аудиофайлу, в котором были записаны звуки нажатий на разные клавиши. Идея такая: звук нажатия определяет кнопку, разве не логично? Вполне! Это задание никто толком не сделал, но отважные ребята из int3pids после конкурса выпустили прекрасный разбор этой задачки (bit.ly/YGG2dU). Результаты ошеломляют: даже большие куски текста можно распознать по обычному частотнику. Причем без какого-либо обучения под конкретную клавиатуру.

Вторым источником вдохновения стал proof-of-concept «Клавиатура из бумаги для iPhone 5» (www.youtube.com/watch?v=5ztDJbT0uHE). На основе показаний акселерометра и гироскопа Флориан Краутли (Florian Krautli) из Лондонского университета смог использовать обычный стол как клавиатуру для своего iГаджета. Правда, для этого пришлось прибегнуть к машинному обучению, но результата этот факт не умаляет.

Соединяем А с Б и получаем, что можно пытаться отсниффать, какие именно кнопки нажал человек на ноутбуке или клавиатуре, когда рядом с ними находился твой телефон. Микрофон, гироскоп и акселерометр вместе будут независимыми источниками данных и уточнят показания друг друга.

 

Меряем

Недолго думая, мы собрали простой демонстрационный стенд из iPhone 4S, MacBook Air и обычного деревянного стола родом из СССР (с полировкой, кстати).

В качестве программы для сбора показаний датчиков использовался SensorLog — бесплатная программа в App Store, которая собирает показания практически всех устройств, встроенных в iPhone, и записывает результаты в CSV-файл. Затем лог можно отправить по электронной почте. Идеальная программа для наших целей, и главное — совершенно бесплатная. Аналогичные тулзы есть и для Android, на случай, если ты захочешь измерить чувствительность девайсов под управлением этой ОС.

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

Затем телефон постепенно отодвигали от ноутбука и измерения повторяли на каждые 5 см. Быстро выяснилось, что дальше 10 см уже ничего от датчиков не разобрать. Не такой уж хороший результат, но и не такой плохой. Учитывая, что у нас все равно остается микрофон.

Пораскинув мозгами, мы поставили телефон на торец и повторили эксперимент. Как и ожидалось, чувствительность выросла. Теперь мы могли разрешать кнопки по датчикам уже с расстояния 15 и даже 20 см! Дело в том, что нижняя поверхность iPhone 4S и пятого поколения сделаны из стекла. Стекло — материал аморфный и, следовательно, гасит вибрации. Боковины же, напротив, металлические, а металл, как известно, хорошо передает вибрации.

Пример логирования данных
Пример логирования данных
 

Сценарии без обучения

Как бы мы хорошо ни считывали вибрации, нужно еще сопоставить им определенные клавиши — буквы и другие символы. Сделать это по частотному анализу можно, но ошибки очень велики, к тому же требуется большой объем текста. Если мы говорим про ноутбук, то набор текста будет актуален только для текущего его расположения: перемена места или поверхности смажут все данные. Также надо знать язык ввода — короче говоря, проблем много.

Без обучения легко распознать и когда именно при вводе пароля зажимался шифт (два коротких нажатия и два отщелкивая клавиш, с учетом, что шифт — большая кнопка и нажимается, соответственно, с характерной звуковой и вибрационной сигнатурой). Это сокращает время, необходимое для полного перебора пароля (в идеале, когда мы знаем, на каких местах расположены символы какого регистра) по сравнению с обычным перебором при известной длине пароля. Можно также комбинировать классический беспроводной сниффер с «нановибрационным», сопоставляя временные штампы начала, скажем, SSL-сессии по HTTPS и вводов двух последовательных слов (логин/пароль).

Все это хорошо, но не дает достаточной точности. В идеале ведь хочется получить полноценный кейлоггер с точностью хотя бы 85–90% (губа не дура, ага). Очевидно, что для этого нужно обучение.

 

Сценарий с обучением

Один из возможных сценариев атаки был придуман и оказался незатейлив и очень эффективен. Испытуемому (жертвой называть язык не поворачивается — мы ведь просто развлекались) на стол кладется телефон. Затем включается сниффер (это можно выполнить удаленно, например через SSH-клиент). Весельчак (атакующий, ага) отправляет испытуемому в любом мессенджере сообщение с каким-нибудь вопросом. Естественно, предполагается, что контакты у них между собой установлены, — иначе откуда доступ к рабочему столу. Так вот, в качестве обучающего множества используется ответ испытуемого, полученный весельчаком на его вопрос через службу мгновенных сообщений (другими словами, принятые с сенсоров данные сопоставляются с текстом ответа). Диалог продолжает до тех пор, пока сниффер не получит в свое распоряжение сигнатуры всех кнопок с ноутбука испытуемого. Весело? По нашему мнению, очень!

Второй сценарий с обучением основывается на параллельном перехвате нешифрованного беспроводного трафика, как классический Wi-Fi-сниффер. Сопоставляя временные штампы пакетов с отсчетами вибрационного логгера, можно обучаться, скажем, путем поиска в трафике полей textarea, заполненных пользователем. Разумеется, нешифрованных, без SSL. Зато, натренировавшись таким образом на контактиках/одноклассниках, вибросниффер будет вполне пригоден уже для перехвата настоящих логинов/паролей, недоступных для классического Wi-Fi-сниффера ввиду SSL.

Распределение белого шума и полезных данных в потоке
Распределение белого шума и полезных данных в потоке
 

Возможные применения

Этот полушуточный концепт был изложен в докладе Universal Mobile Sniffer на очередном слете Defcon Russia 27 марта в Петербурге. Ознакомиться с презентацией. Идея вызвала много интересных дискуссий, в ходе одной из которых новое применение предложил Алексей Тюрин из ERPScan. Такой девайс удобно использовать для считывания пин-кода на банкоматах: никакой лже-клавиатуры, камеры или как там оно еще делается. Обучение быстро и по месту, практически исключает ложные данные. Банкомат железный и отлично передает вибрации. Надеемся, что такой вариант мошенники никогда использовать не станут, так как воровать деньги — большое преступление!

 

Заключение, или «Алло, мы ищем таланты»

Все это, конечно, хорошо, но далеко от самого главного — от программного решения. Мы программировать под мобильные платформы не умеем совсем. Посему бросаем клич: программисты под андроид и яблоко, отзовитесь! Давайте вместе сделаем приложение, научим его распознавать нажатия кнопок, обучаться и много чему еще. Постановка задачи есть — требуются руки. Неужели не хочется сделать что-то по-настоящему хакерское ради развлечения? Ждем отзывов в формате «умею программировать под такую-то платформу, готов помочь», по адресу lab@onsec.ru. Не ленитесь сделать что-то для Open Source, сообщество будет вам всегда благодарно.

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии