Измеряем ток потребления с помощью Raspberry Pi Pico и ACS712

Raspberry Pi Logo

Я тут выяснил, что датчик Холла ACS712 прекрасно работает с напряжением питания 3,3 В, хотя в документации указано, что он предназначен для работы с напряжением питания в 5 В. Но, видимо, придется перекалибровать.

Raspberry Pi Pico + ACS712

Raspberry Pi Pico (RP2040) отличается от обычной Raspberry Pi наличием встроенных АЦП, пусть и всего лишь 12-разрядных: ADC0, ADC1 и ADC2. Они доступны на выводах 31, 32 и 34, соответственно, инициализируются как GP26, 27 и 28. В примере ниже используется ADC2, который инициализируется командой machine.ADC(28) — как GP28. Код — под катом.

Читать далее «Измеряем ток потребления с помощью Raspberry Pi Pico и ACS712»

Эксперимент: насколько легко следить за человеком при помощи умных часов?

Smart watch app sending accelerometer and gyroscope signals

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

Перепечатка оригинальной публикации в блоге Лаборатории Касперского от 30 мая 2018.

То есть понять, что он делал: ходил, сидел, набирал текст на клавиатуре и так далее. Мы решили проверить, насколько страшна эта угроза на практике, и узнать, какие данные реально можно собрать.

Smart watch can be spying on you

Эксперимент: можно ли узнать пароль от компьютера по движению умных часов

Все подробности вы можете прочитать в нашем исследовании, здесь же мы дадим краткую выжимку. Итак, мы взяли часы на Android, написали простенькое приложение, обрабатывающее и пересылающее данные с акселерометра, и проанализировали их.

Действительно, по этим данным очень легко понять, когда человек идет, а когда — сидит. Более того, если начать разбираться и сравнивать, то можно понять, что вот в этот момент времени человек просто шел, а вот в этот — переходил с одной станции метро на другую: паттерны, полученные с датчика ускорения, немного различаются. Собственно, именно благодаря этому фитнес-трекеры умеют отличать ходьбу от езды на велосипеде, например.

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

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

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

И в этом для потенциального шпиона есть проблема: постоянная передача показаний акселерометра, во-первых, потребляет немало интернет-трафика, а во-вторых, сажает батарею носимого гаджета за считаные часы (за шесть, если быть точным). И то и другое легко заметить, то есть пользователь вполне может заподозрить, что с часами что-то не так.

Эту проблему можно решить, если не пересылать все данные постоянно, а искать некие ключевые моменты, когда и начинается самое интересное. Например, приложение на умных часах в состоянии распознать тот момент, когда человек пришел на рабочее место и сел за компьютер. За этим с высокой вероятностью последует ввод пароля от этого компьютера — и вот эти данные и надо отправить «в центр» для распознавания нейросетью.

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

Итак, «заразив» ваши умные часы, можно распознать, что вы печатаете. Но сложно. Более того, с хорошей точностью распознать получится не все, а лишь некоторые фрагменты текста, которые вы за время слежки успеет ввести несколько раз — пароль для разблокировки компьютера, например. В рамках нашего эксперимента мы с точностью 96% смогли восстановить пароль от компьютера и с точностью до 87% — PIN-код от кредитки, когда человек вводит его в банкомате.

Smart watch app sending accelerometer and gyroscope signals

Не все так страшно

Впрочем, для злоумышленников такие данные будут не очень полезны — чтобы ими воспользоваться, нужно сначала завладеть вашим компьютером или кредиткой. А вот определить, скажем, номер карты и CVC-код так просто не получится.

Разница вот в чем: человек вводит пароль для разблокировки тогда, когда он только что вернулся к рабочему месту. То есть на графике с акселерометра сначала видна ходьба, а потом — набор на клавиатуре. И, передав данные лишь за небольшой период времени, вполне можно восстановить пароль.

А вот номер кредитки для покупки чего-то в Интернете человек вводит не сразу после того, как сел за стол, — этому, скорее всего, предшествует какое-то количество времени за компьютером, да и после ввода человек вряд ли сразу же уйдет. То есть определить точный момент ввода номера кредитки невозможно — и потому очень сложно его восстановить.

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

Кому стоит беспокоиться из-за умных часов

Итак, в рамках нашего исследования мы показали, что при помощи данных, полученных с датчика ускорения умных часов, можно восстановить какую-то информацию о человеке: его перемещения и привычки, какую-то часть вводимой им с клавиатуры информации — например, пароль от ноутбука. «Заразить» умные часы зловредом, который мог бы передавать злоумышленникам нужную для восстановления этих сведений информацию, довольно просто. Достаточно сделать приложение — скажем, модный циферблат или, например, фитнес-трекер, добавить в него функцию считывания данных с акселерометра и загрузить в Google Play. В теории такое приложение даже зловредным не будет считаться, поскольку ничего откровенно вредоносного оно вроде бы не делает.

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

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

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

Experiment: How easy is it to spy on a smartwatch wearer?

Smart watch can be spying on you

Can a smartwatch be used to spy on its owner? Sure, and we already know lots of ways. But here’s another: A spying app installed on a smartphone can send data from the built-in motion sensors (namely, accelerometer and gyroscope) to a remote server, and that data can be used to piece together the wearer’s actions — walking, sitting, typing, and so on.

A reprint from the original publication on Kaspersky Daily blog from May 30, 2018.

How extensive is the threat in practice, and what data can really be siphoned off? We decided to investigate.

Smart watch can be spying on you

Experiment: Can smartwatch movements reveal a password?

We started with an Android-based smartwatch, wrote a no-frills app to process and transmit accelerometer data, and analyzed what we could get from this data. For more details, see our full report.

The data can indeed be used to work out if the wearer is walking or sitting. Moreover, it’s possible to dig deeper and figure out if the person is out for a stroll or changing subway trains — the accelerometer patterns differ slightly; that’s also how fitness trackers differentiate between, say, walking and cycling.

It’s also easy to see when a person is typing on a computer. But working out what they are typing is way more complex. Everyone has a specific way of typing: the ten-finger method, the one- or two-digit keyboard stab, or something in-between. Basically, different people typing the same phrase can produce very different accelerometer signals — although one person entering a password several times in a row will produce pretty similar graphs.

So, a neural network trained to recognize how a particular individual enters text could make out what that person types. And if this neural network happens to be schooled in your particular way of typing, the accelerometer data from the smartwatch on your wrist could be used to recognize a password based on your hand movements.

However, the training process would require the neural network to track you for quite a long time. The processors in modern portable gadgets are not powerful enough to run a neural network directly, so the data has to be sent to a server.

And therein lies trouble for a would-be spy: The constant upload of accelerometer readings consumes a fair bit of Internet traffic and zaps the smartwatch battery in a matter of hours (six, to be precise, in our case). Both of those telltale signs are easy to spot, alerting the wearer that something is wrong. Both, however, are easily minimized by scooping up data selectively, for example when the target arrives at work, a likely time for password entry.

In short, your smartwatch can be used to identify what you’re typing. But it’s hard, and accurate recovery relies on repeat text entry. In our experiment, we were able to recover a computer password with 96% accuracy and a PIN code entered at an ATM with 87% accuracy.

Smart watch app sending accelerometer and gyroscope signals

It could be worse

For cybercriminals, however, such data is not all that useful. To use it, they’d still need access to your computer or credit card. The task of determining a card number or CVC code is way trickier.

Here’s why. On returning to the workplace, first thing the smartwatch owner types is almost certainly a password to unlock their computer. That is, the accelerometer graph indicates first walking, then typing. Based on data obtained just for this brief period, it’s possible to recover the password.

But the person won’t enter a credit card number as soon as they sit down — or get up and walk away immediately after entering that data. What’s more, no one will ever enter this information several times in short succession.

To steal data-entry information from a smartwatch, attackers need predictable activity followed by data entered several times. The latter part, incidentally, is yet another reason not to use the same password for different services.

Who should worry about smartwatches?

Our research has shown that data obtained from a smartwatch acceleration sensor can be used to recover information about the wearer: movements, habits, some typed information (for example, a laptop password).

Infecting a smartwatch with data-siphoning malware that lets cybercriminals recover this information is quite straightforward. They just need to create an app (say, a trendy clockface or fitness tracker), add a function to read accelerometer data, and upload it to Google Play. In theory, such an app will pass the malware screening, since there is nothing outwardly malicious in what it does.

Should you worry about being spied on by someone using this technique? Only if that someone has a strong motivation to spy on you, specifically. The average cybercrook is after easy pickings and won’t have much to gain.

But if your computer password or route to the office is of value to someone, a smartwatch is a viable tracking tool. In this case, our advice is:

  • Take note if your smartwatch is overly traffic-hungry or the battery drains quickly.
  • Don’t give apps too many permissions. In particular, watch out for apps that want to retrieve account info and geographical coordinates. Without this data, intruders will struggle to ascertain that it’s your smartwatch they’ve infected.
  • Install a security solution on your smartphone that can help detect spyware before it starts spying.

Троянские часы: киберфизические риски носимых гаджетов

Accelerometer and gyroscope signals while entering keyphrase, different persons

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

Репринт оригинальной публикации Securelist от 29 мая 2018.

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

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

Итак, обо всем по порядку.

Поведенческое профилирование пользователей

Когда мы читаем описание носимых устройств, то прежде всего видим, что это “миниатюрные цифровые гаджеты”. Однако важно понимать, что большинство умных часов является киберфизическими системами, поскольку оснащены датчиками ускорения (акселерометрами) и вращения (гироскопами). Нередко в них встроены еще и датчики магнитного поля (магнитометры). Что можно узнать о пользователе, если непрерывно записывать сигналы с этих сенсоров? Больше, чем хотелось бы владельцу гаджета.

Для нашего исследования мы написали довольно простое приложение на основе референсного кода Google и провели несколько занятных экспериментов cо смарт-часами Huawei Watch (первое поколение), Kingwear KW88 и PYiALCYX200, работающими на базе операционных систем Android Wear 2.5 и Android 5.1 for Smartwatch. Выбор был продиктован доступностью устройств и, конечно, простотой написания приложений для них (полагаем, что алгоритмы работы со встроенными гироскопом и акселерометром в iOS могут быть аналогичны тому, что мы опишем ниже).

Smart watch spying experiment

Запись сигналов с умных часов в эксперименте по вводу пароля

Чтобы определить оптимальную частоту опроса сенсоров, мы провели серию испытаний с разными устройствами, начав с таких маломощных (с процессорной точки зрения) образцов, как Arduino 101 и Xiaomi Mi Band 2. Однако скорость опроса датчиков и отправки данных оказалась неудовлетворительной — для получения более-менее внятных значений взаимной корреляции нужно было обеспечить частоту опроса сенсоров не менее 50 Гц. От скорости опроса более 100 Гц мы тоже отказались: 8 Кбайт данных в секунду может быть не так и много, но не для многочасовых “логов”. В итоге наше приложение опрашивало встроенные датчики с частотой 100 Гц и записывало данные о мгновенных значениях показаний акселерометра и гироскопа по трем осям (x, y, z) в память телефона.

Сразу скажем, что получить “цифровой слепок” за весь день на практике не так-то просто, поскольку заряда аккумулятора устройства Huawei хватает не более чем на шесть часов автономной работы в таком режиме.

Но давайте посмотрим на показания акселерометра в течение этого времени. По вертикали приведены величины ускорения в м/с2, по горизонтали — номера отсчетов (в среднем каждый соответствует 10 миллисекундам). Для полноты картины ниже представлены графики показаний акселерометра и гироскопа.

Accelerometer signal patterns

Цифровой профиль пользователя, записанный в течение часа. Сверху — сигналы акселерометра, снизу — сигналы гироскопа

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

Самый очевидный паттерн движения — это ходьба. С него мы и начнем.

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

Взглянем подробнее на области, где наблюдаются наибольшие колебания за короткие промежутки времени (это фиолетовые зоны Pattern 1, Pattern 3, Pattern 5).

Accelerometer and gyroscope signal pattern while walking

Показания акселерометра и гироскопа при ходьбе

В нашем случае отрезок времени, в течение которого наблюдались периодические колебания руки, составил 12 минут (Pattern 1, рисунок выше). Не запрашивая геоинформацию, трудно сказать, куда точно шел пользователь, хотя если дважды численно проинтегрировать данные ускорения, видно, что с точностью до констант интегрирования, каковыми являются начальная скорость и координаты, человек явно куда-то перемещался, причем в разных характерных направлениях и с разной характерной скоростью.

 Numerical integration of accelerometer signals for axes X and Y

Результат численного интегрирования данных акселерометра, дающий оценку перемещения пользователя по осям x и y в течение часа (перемещение по оси z равно нулю, поэтому на графике не показано)

Примечательно, что если отложить перемещение по оси Y в зависимости от перемещения по оси X, получается примерный путь человека. Скорее всего, дистанции тут определены неточно, но порядок верный — тысячи метров, и это на самом деле впечатляет, поскольку способ очень примитивный. Для уточнения пройденной дистанции можно воспользоваться антропометрическими данными и примерно оценить длину каждого шага (что, в общем-то, и делают фитнес-трекеры), но мы оставим это за пределами нашего исследования.

Visualization of user's path as derived from numerical integration of accelerometer signals

Приблизительный путь человека, определенный как результат численного интегрирования данных акселерометра по осям X и Y

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

Ниже показан еще один отрезок длительностью 22 минуты. Это явно не ходьба — периодичных колебаний сигнала не наблюдается. Однако мы видим периодическое изменение огибающей сигнала ускорения по одной оси. Это может быть общественный транспорт, который движется прямолинейно, но с остановками. Что же это? Маршрутное такси?

Accelerometer data during public transportation

Данные акселерометра во время поездки в транспорте

А вот еще один отрезок.

An unusual pattern of accelerometer data

Pattern 3, данные акселерометра

Предположительно это смесь коротких участков ходьбы (по несколько секунд), пауз, резких взмахов рукой. Можно предположить, что человек находится в закрытом помещении.

Ниже мы расшифровали все области на графике.

Accelerometer data, interpreted

Показания акселерометра и гироскопа, с расшифровкой областей

Это три промежутка ходьбы по 12, 3 и 5 минут, между которыми испытуемый ехал на метро (20 и 24 минуты). Короткий пеший отрезок имеет определенные особенности, поскольку это была пересадка с одной станции метро на другую. Они хорошо видны, но нас интересовал вопрос определения их с помощью алгоритмов, доступных для исполнения на самих носимых устройствах. Поэтому вместо нейронных сетей, которые, как мы уже знаем, очень неплохо справляются с такого рода задачами, мы использовали простейший подсчет взаимной корреляции.

Взяв два паттерна ходьбы (обозначим их как Walking 1 и Walking 2), мы рассчитали их взаимную корреляцию и взаимную корреляцию с шумовыми данными, использовав массивы сигнальных данных длительностью по 10 секунд.

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
Walking 1 and Walking 2 0,73 0,70 0,64 0,62 0,41 0,83
Walking 1 and Noise 0,33 0,30 0,32 0,30 0,33 0,33

Максимумы функций взаимной корреляции паттернов ходьбы друг с другом и ходьбы с произвольным шумовым паттерном

Из таблицы видно, что даже такой элементарный подход, как подсчет функции взаимной корреляции, позволяет идентифицировать паттерны движения пользователя в его “цифровом слепке” с точностью (если очень грубо интерпретировать корреляцию) до 83%. Этот показатель может выглядеть не таким уж высоким, но подчеркнем — мы не оптимизировали размер выборки и не использовали сложные алгоритмы, например метод главных компонент.

Что это дает потенциальному злоумышленнику? Идентифицировав моменты перемещения в метро и зная характерные направления, можно определить, по какой ветке пользователь ездит. Конечно, с данными об ориентации осей X и Y в пространстве, информация о которых получается с помощью магнитометра, было бы намного проще. Но, к сожалению, сильные электромагнитные наводки от электродвигателей, невысокая точность определения направления на север и сравнительно низкая распространенность магнитометров в умных часах заставили нас отказаться от этой идеи.

Без данных об ориентации осей X и Y в пространстве (скорее всего, разных на отдельных отрезках) вопрос расшифровки траектории движения усложняется, сводясь к геометрической задаче наложения отрезков известной длины на карту местности. Опять же, если попробовать поставить себя на место злоумышленника, можно предположить, что всплески магнитного поля будут “выдавать” моменты разгона и торможения электропоезда (а также трамвая и троллейбуса), что даст дополнительную информацию, позволяющую уточнить количество промежуточных точек на интересующих его отрезках. Но это мы тоже пока оставим за рамками нашего исследования.

Киберфизический перехват критически важных данных

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

ПИН-код банковской карты

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

Сигналы акселерометра при вводе ПИН-кода на клавиатуре банкомата

Забегая немного вперед, скажем: элементарными методами из показаний датчиков получить ПИН-код банковской карты в открытом виде не так-то просто. Однако этот кусок “акселерометрического лога” демонстрирует определенные особенности — так, в первой половине графика видно горизонтальное положение руки, а во второй половине заметны колебания значений при нажатии на клавиши банкомата. Особенности сигналов по трем осям акселерометра и гироскопа с применением нейронных сетей, если верить коллегам из “Стивенсовского технологического института“, позволяют расшифровать ПИН-код произвольного человека с точностью не менее 80%. Слабым местом такой атаки является то, что нейронную сеть пока что затруднительно реализовать на вычислительных мощностях умных часов, однако выявить данный паттерн с помощью простейшего подсчета взаимной корреляции, чтобы впоследствии “слить” его для расшифровки на более мощной ЭВМ, — вполне реально. Что мы, собственно, и сделали.

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
One person and different tries 0,79 0,87 0,73 0,82 0,51 0,81

Максимумы функций взаимной корреляции данных ввода ПИН-кода на банкомате

Опять же, если достаточно грубо интерпретировать полученные результаты, можно утверждать, что точность идентификации паттерна ввода ПИН-кода в общем потоке сигнальной информации составляет порядка 87%. Не так уж и мало.

Парольная фраза от компьютера и код разблокировки телефона

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

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

Мы попросили четырех человек ввести в компьютер одну и ту же фразу из 13 символов 20 раз. Двое из них также четырежды (каждый) разблокировали смартфон LG Nexus 5X, используя 4-значный ключ. Дополнительно мы записали движения каждого из участников, когда они эмулировали “обычное” поведение — в частности, общаясь в чате. По окончании эксперимента мы синхронизировали время показаний, отрезав лишние сигналы.

Всего было получено 480 дискретных функций для всех осей сенсора. Каждая из них содержит 250-350 отсчетов, точное количество зависит от времени набора парольной фразы или произвольных данных (порядка трех секунд).

Accelerometer and gyroscope signals while entering keyphrase

Сигнал по осям акселерометра и гироскопа для четырех попыток ввода одного пароля одним и тем же человеком на настольном компьютере

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

Accelerometer and gyroscope signals while entering keyphrase, different persons

Сигнал по осям акселерометра и гироскопа для попыток ввода одного и того же пароля разными людьми на настольном компьютере

При наложении сигналов, полученных от разных людей, видно, что хотя вводят они одну и ту же фразу, делают это по-разному, и даже визуально экстремумы не совпадают!

 Accelerometer and gyroscope data while unblocking the smartphones

Попытки ввода кода разблокировки смартфона двумя разными людьми

С мобильным телефоном ситуация похожая. Кроме того, акселерометр фиксирует моменты нажатия на экран большим пальцем, по которым легко определить длину ключа.

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

В таблице указаны максимумы функций взаимной корреляции данных соответствующих осей акселерометра и гироскопа.

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
One person 0,92 0,63 0,71 0,55 0,76 0,96
Different persons 0,65 0,35 0,31 0,23 0,37 0,76

Максимумы функций взаимной корреляции данных ввода пароля разными людьми для настольного компьютера

Отсюда видно, что даже такой простой и прямолинейный подход, как подсчет корреляций, может обеспечить, грубо говоря, точность идентификации человека до 96%! Если же сравнить максимумы функции взаимной корреляции для сигналов разных людей в режиме ввода произвольного текста, то максимум корреляции не превышает 44%.

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
One person and different activity 0,32 0,27 0,39 0,26 0,30 0,44

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

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
Oneperson 0,64 0,47 0,56 0,41 0,30 0,58
Different persons 0,33 0,40 0,40 0,32 0,38 0,34

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

Обратите внимание, что самые маленькие значения функции взаимной корреляции мы получили для ввода кода разблокировки смартфона (до 64%), а самые большие (до 96%) — при вводе пароля от компьютера. Это вполне объяснимо, ведь перемещение руки и соответствующие ускорения — линейные и угловые — в момент разблокировки минимальны.

Однако еще раз отметим, что для подсчета функции корреляции вполне достаточно даже тех вычислительных мощностей, что есть в распоряжении смарт-часов, а значит, эту задачу “умный” носимый гаджет может решать самостоятельно!

Выводы

Выражаясь языком информационной безопасности, носимые киберфизические системы однозначно расширяют поверхность атаки для потенциальных злоумышленников. Причем основная опасность лежит не в области прямого перехвата вводимых данных — это достаточно сложно (наиболее успешные результаты достигаются с применением нейронных сетей), и точность пока оставляет желать лучшего. Опасность скрывается в возможностях профилирования физического поведения пользователей по сигналам встроенных датчиков. Будучи “умными”, устройства способны начинать и останавливать запись информации с датчиков не только по командам извне, но и по наступлению определенных событий или выполнению определенных условий.

Записанный сигнал может быть передан телефоном на сервер злоумышленника, как только появится доступ к Интернету. Так ничем не примечательное фитнес-приложение или новый циферблат часов из магазина Google Play вполне может использоваться против вас, причем уже сейчас. Усугубляется ситуация тем, что достаточно один раз отослать вашу геометку и запросить разрешение на получение адреса электронной почты, на которую зарегистрирован аккаунт Google Play, и по вашим движениям можно будет узнать, кто вы, куда ходили, как часто пользовались смартфоном и когда вводили ПИН-код в банкомат.

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

Мы установили, что применение доступных даже для вычислительных мощностей самого носимого устройства методов анализа сигналов с таких встроенных датчиков, как акселерометры и гироскопы, , позволяет установить моменты ввода одного и того же текста (например, данных аутентификации) с точностью до 96% в случае с настольными компьютерами и с точностью до 64% — с мобильными гаджетами. Для последних этот показатель можно было бы повысить путем написания более сложных алгоритмов обработки полученных сигналов, но мы умышленно стремились использовать самый простой математический аппарат. Учитывая, что мы смотрели на данный эксперимент через призму его опасности для корпоративных пользователей, результат, полученный нами для настольного компьютера, вызывает серьезную тревогу.

Вероятный сценарий применения носимых устройств злоумышленниками связан с загрузкой на смарт-часы легитимного приложения — например, фитнес-трекера, который периодически будет отправлять на сервер пакеты данных размером в несколько десятков килобайт (в частности, для 13-символьной парольной фразы размер несжатой “сигнальной сигнатуры” составил порядка 48 килобайт).

Поскольку сами по себе программы не являются вредоносными, мы предполагаем, что, помимо экспериментально проверенных нами устройств на Android Wear/Android for Smartwatch, такой сценарий может быть применим и для смарт-часов продукции Apple.

Рекомендации

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

  1. Так, если приложение отправляет запрос на получение данных об аккаунте пользователя (разрешение GET_ACCOUNTS в Android), это повод для беспокойства — ведь злоумышленникам надо сопоставить “цифровой отпечаток” с его владельцем. Впрочем, в программе также может быть предусмотрена регистрация с вводом адреса электронной почты — но в этом случае вы хотя бы вольны ввести адрес, отличный от адреса учетной записи Google Play, к которому привязана банковская карта.
  2. Если же приложение дополнительно запрашивает разрешение на отправку геолокационных данных, то ваше беспокойство должно возрасти еще больше. Очевидная рекомендация в этой ситуации: не стоит выдавать фитнес-трекерам, которые вы загружаете на свои умные часы, лишних разрешений и указывать при регистрации корпоративные электронные адреса.
  3. Быстрый расход заряда батареи устройства также может быть серьезным поводом для беспокойства. Если ваш гаджет держит заряд вместо суток всего несколько часов, не исключено, что это сигнал о том, что за вами установлена слежка. Теоретически часы могут хранить до 57 часов записей вашей активности и сливать эти данные в сеть.

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

Trojan watch: the cyberphysical risks of wearable gadgets

Smart watch spying experiment

We continue to research how proliferation of IoT devices affects the daily lives of users and their information security. In our previous study, we touched upon ways of intercepting authentication data using single-board microcomputers. This time, we turned out attention to wearable devices: smartwatches and fitness trackers. Or more precisely, the accelerometers and gyroscopes inside them.

A reprint from the original publication on Securelist from May 29, 2018.

From the hoo-ha surrounding Strava, we already know that even impersonal data on user physical activity can make public what should be non-public information. But at the individual level, the risks are far worse: these smart devices are able to track the moments you’re entering a PIN code in an ATM, signing into a service, or unlocking a smartphone.

In our study, we examined how analyzing signals within wearable devices creates opportunities for potential intruders. The findings were less than encouraging: although looking at the signals from embedded sensors we investigated cannot (yet) emulate “traditional” keyloggers, this can be used to build a behavioral profile of users and detect the entry of critical data. Such profiling can happen discreetly using legitimate apps that run directly on the device itself. This broadens the capacity for cybercriminals to penetrate victims’ privacy and facilitates access to the corporate network of the company where they work.

So, first things first.

Behavioral profiling of users

When people hear the phrase ‘smart wearables’, they most probably think of miniature digital gadgets. However, it is important to understand that most smartwatches are cyberphysical systems, since they are equipped with sensors to measure acceleration (accelerometers) and rotation (gyroscopes). These are inexpensive miniature microcircuits that frequently contain magnetic field sensors (magnetometers) as well. What can be discovered about the user if the signals from these sensors are continuously logged? More than the owner of the gadget would like.

For the purpose of our study, we wrote a fairly simple app based on Google’s reference code and carried out some neat experiments with the Huawei Watch (first generation), Kingwear KW88, and PYiALCY X200 smartwatches based on the Android Wear 2.5 and Android 5.1 for Smartwatch operating systems. These watches were chosen for their availability and the simplicity of writing apps for them (we assume that exploiting the embedded gyroscope and accelerometer in iOS would follow a similar path).

Smart watch spying experiment

Logging smartwatch signals during password entry

To determine the optimal sampling frequency of the sensors, we conducted a series of tests with different devices, starting with low-power models (in terms of processor) such as the Arduino 101 and Xiaomi Mi Band 2. However, the sensor sampling and data transfer rates were unsatisfactory — to obtain cross-correlation values that were more or less satisfactory required a sampling frequency of at least 50 Hz. We also rejected sampling rates greater than 100 Hz: 8 Kbytes of data per second might not be that much, but not for hours-long logs. As a result, our app sampled the embedded sensors with a frequency of 100 Hz and logged the instantaneous values of the accelerometer and gyroscope readings along three axes (x, y, z) in the phone’s memory.

Admittedly, getting a “digital snapshot” of a whole day isn’t that easy, because the Huawei watch’s battery life in this mode is no more than six hours.

But let’s take a look at the accelerometer readings for this period. The vertical axis shows the acceleration in m/s2, and the horizontal the number of samples (each corresponds to 10 milliseconds on average). For a complete picture, the accelerometer and gyroscope readings are presented in the graphs below.

Accelerometer signal patterns

Digital profile of a user recorded in one hour. Top — accelerometer signals, bottom — gyroscope signals

The graphs contains five areas in which different patterns are clearly visible. For those versed in kinematics, this graph tells a lot about the user.

The most obvious motion pattern is walking. We’ll start with that.

When the user is walking, the hand wearing the smartwatch oscillates like a pendulum. Pendulum swings are a periodic process. Therefore, if there are areas on the graph where the acceleration or orientation readings from the motion sensor vary according to the law of periodicity, it can be assumed that the user was walking at that moment. When analyzing the data, it is worth considering the accelerometer and gyroscope readings as a whole.

Let’s take a closer look at the areas with the greatest oscillations over short time intervals (the purple areas Pattern1, Pattern3, and Pattern5).

Accelerometer and gyroscope signal pattern while walking

Accelerometer and gyroscope readings during walking

In our case, periodic oscillations of the hand were observed for a duration of 12 minutes (Pattern1, figure above). Without requesting geoinformation, it’s difficult to say exactly where the user was going, although a double numerical integration of the acceleration data shows with an accuracy up to the integration constants (initial velocity and coordinates) that the person was walking somewhere, and with varying characteristic velocity.

 Numerical integration of accelerometer signals for axes X and Y

Result of the numerical integration of the accelerometer data, which gives an estimate of the user’s movement along the x and y axes in the space of one hour (z-axis displacement is zero, so the graph does not show it)

Note that plotting the Y-axis displacement relative to the X-axis displacement gives the person’s approximate path. The distances here are not overly precise, but they are in the order of thousands of meters, which is actually quite impressive, because the method is very primitive. To refine the distance traveled, anthropometric data can be used to estimate the length of each step (which is basically what fitness trackers do), but we shall not include this in our study.

Visualization of user's path as derived from numerical integration of accelerometer signals

Approximate path of the person under observation, determined on the basis of numerically integrating the accelerometer data along the X and Y axes

It is more difficult to analyze the less active areas. Clearly, the person was at rest during these periods. The orientation of the watch does not change, and there is acceleration, which suggests that the person is moving by car (or elevator).

Another 22-minute segment is shown below. This is clearly not walking — there are no observable periodic oscillations of the signal. However, we see a periodic change in the acceleration signal envelope along one axis. It might be a means of public transport that moves in a straight line, but with stops. What is it? Some sort of public transportation?

Accelerometer data during public transportation

Accelerometer data when traveling on public transport

Here’s another time slice.

An unusual pattern of accelerometer data

Pattern 3, accelerometer data

This seems to be a mixture of short periods of walking (for a few seconds), pauses, and abrupt hand movements. The person is presumably indoors.

Below we interpret all the areas on the graph.

Accelerometer data, interpreted

Accelerometer and gyroscope readings with decoding of areas

These are three periods of walking (12, 3, and 5 minutes) interspersed with subway journeys (20 and 24 minutes). The short walking interval has some particular characteristics, since it involved changing from one subway line to another. These features are clearly visible, but our interest was in determining them using algorithms that can be executed on the wearable devices themselves. Therefore, instead of neural networks (which we know to be great at this kind of task), we used a simple cross-correlation calculation.

Taking two walking patterns (Walking1 and Walking2), we calculated their cross-correlation with each other and the cross-correlation with noise data using 10-second signal data arrays.

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
Walking1 and Walking2 0.73 0.70 0.64 0.62 0.41 0.83
Walking1 and Noise 0.33 0.30 0.32 0.30 0.33 0.33

Maxima of the functions for cross-correlation of walking patterns with each other and with an arbitrary noise pattern

It can be seen from the table that even this elementary approach for calculating cross-correlation functions allows us to identify the user’s movement patterns within his/her “digital snapshot” with an accuracy of up to 83% (given a very rough interpretation of the correlation). This indicator may not seem that high, but it should be stressed that we did not optimize the sample size and did not use more complex algorithms, for example, principle component analysis, which is assumed to work quite well in determining the characteristic parts of the signal log.

What does this provide to the potential attackers? Having identified the user’s movements in the subway, and knowing the characteristic directions of such movement, we can determine which subway line the user is traveling on. Sure, it would be much easier having data about the orientation of the X and Y axes in space, which could be obtained using a magnetometer. Unfortunately, however, the strong electromagnetic pickup from the electric motors, the low accuracy of determining a northerly direction, and the relatively few magnetometers in smartwatches forced us to abandon this idea.

Without data on the orientation of the X and Y axes in space (most likely, different for individual periods), the problem of decoding the motion trajectory becomes a geometric task of overlaying time slices of known length onto the terrain map. Again, placing ourselves in the attacker’s shoes, we would look for the magnetic field bursts indicate the acceleration/deceleration of an electric train (or tram or trolleybus), which can provide additional information allowing us to work out the number of interim points in the time slices of interest to us. But this too is outside the scope of our study.

Cyberphysical interception of critical data

But what does this all reveal about the user’s behavior? More than a bit, it turns out. It is possible to determine when the user arrives at work, signs into a company computer, unlocks his or her phone, etc. Comparing data on the subject’s movement with the coordinates, we can pinpoint the moments when they visited a bank and entered a PIN code at an ATM.

PIN codes

How easy is it to capture a PIN code from accelerometer and gyroscope signals from a smartwatch worn on the wrist? We asked four volunteers to enter personal PINs at a real ATM.

Accelerometer signals while entering ATM PIN

Accelerometer signals when entering a PIN code on an ATM keypad

Jumping slightly ahead, it’s not so simple to intercept an unencrypted PIN code from sensor readings by elementary means. However, this section of the “accelerometer log” gives away certain information — for example, the first half of the graph shows that the hand is in a horizontal position, while the oscillating values in the second half indicate keys being pressed on the ATM keypad. With neural networks, signals from the three axes of the accelerometer and gyroscope can be used to decipher the PIN code of a random person with a minimum accuracy of 80% (according to colleagues from Stevens Institute of Technology). The disadvantage of such an attack is that the computing power of smartwatches is not yet sufficient to implement a neural network; however, it is quite feasible to identify this pattern using a simple cross-correlation calculation and then transfer the data to a more powerful machine for decoding. Which is what we did, in fact.

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
One person and different tries 0.79 0.87 0.73 0.82 0.51 0.81

Maxima of the functions for cross-correlation of PIN entry data at an ATM

Roughly interpreting these results, it is possible to claim 87% accuracy in recovering the PIN entry pattern from the general flow of signal traffic. Not bad.

Passwords and unlock codes

Besides trips to the ATM, we were interested in two more scenarios in which a smartwatch can undermine user security: entering computer passwords and unlocking smartphones. We already knew the answer (for computers and phones) using a neural network, of course, but we still wanted to explore first-hand, so to speak, the risks of wearing a smartwatch.

Sure, capturing a password entered manually on a computer requires the person to wear a smartwatch on both wrists, which is an unlikely scenario. And although, theoretically, dictionaries could be used to recover semantically meaningful text from one-handed signals, it won’t help if the password is sufficiently strong. But, again, the main danger here is less about the actual recovery of the password from sensor signals than the ease of detecting when it is being entered. Let’s consider these scenarios in detail.

We asked four people to enter the same 13-character password on a computer 20 times. Similarly, we conducted an experiment in which two participants unlocked an LG Nexus 5X smartphone four times each with a 4-digit key. We also logged the movements of each participant when emulating “normal” behavior, especially in chat rooms. At the end of the experiment, we synchronized the time of the readings, cutting out superfluous signals.

In total, 480 discrete functions were obtained for all sensor axes. Each of them contains 250-350 readings, depending on the time taken to enter the password or arbitrary data (approximately three seconds).

Accelerometer and gyroscope signals while entering keyphrase

Signal along the accelerometer and gyroscope axes for four attempts by one person to enter one password on a desktop computer

To the naked eye, the resulting graphs are almost identical; the extremes coincide, partly because the password and mode of entry were identical in all attempts. This means that the digital fingerprints produced by one and the same person are very similar to each other.

 Accelerometer and gyroscope signals while entering keyphrase, different persons

Signals along the accelerometer and gyroscope axes for attempts to enter the same password by different people on a desktop computer

When overlaying the signals received from different people, it can be seen that, although the passphrase is the same, it is entered differently, and even visually the extremes do not coincide!

Accelerometer and gyroscope data while unblocking the smartphones

Attempts to enter a smartphone unlock code by two different people

It is a similar story with mobile phones. Moreover, the accelerometer captures the moments when the screen is tapped with the thumb, from which the key length can be readily determined.

But the eye can be deceived. Statistics, on the other hand, are harder to hoodwink. We started with the simplest and most obvious method of calculating the cross-correlation functions for the password entry attempts by one person and for those by different people.

The table shows the maxima of the functions for cross-correlation of data for the corresponding axes of the accelerometer and gyroscope.

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
One person 0.92 0.63 0.71 0.55 0.76 0.96
Different persons 0.65 0.35 0.31 0.23 0.37 0.76

Maxima of the functions for cross-correlation of password input data entered by different people on a desktop computer

Broadly speaking, it follows that even a very simple cross-correlation calculation can identify a person with up to 96% accuracy! If we compare the maxima of the cross-correlation function for signals from different people in arbitrary text input mode, the correlation maximum does not exceed 44%.

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
One person and different activity 0.32 0.27 0.39 0.26 0.30 0.44

Maxima of the functions for cross-correlation of data for different activities (password entry vs. usual surfing)

         Function
Experiment
max (cor) Ax max (cor) Ay max (cor) Az max (cor) Wx max (cor) Wy max (cor) Wz
One person 0.64 0.47 0.56 0.41 0.30 0.58
Different persons 0.33 0.40 0.40 0.32 0.38 0.34

Maxima of the functions for cross-correlation of data for an unlock code entered by one person and by different people

Note that the smallest cross-correlation function values were obtained for entering the smartphone unlock code (up to 64%), and the largest (up to 96%) for entering the computer password. This is to be expected, since the hand movements and corresponding acceleration (linear and angular) are minimal in the case of unlocking.

However, we note once more that the computing power available to a smartwatch is sufficient to calculate the correlation function, which means that a smart wearable gadget can perform this task by itself!

Conclusions

Speaking from the information security point of view, we can conclude that, without a doubt, portable cyberphysical systems expand the attack surface for potential intruders. That said, the main danger lies not in the direct interception of input data — that is quite difficult (the most successful results are achieved using neural networks) and thus far the accuracy leaves much to be desired. It lies instead in the profiling of users’ physical behavior based on signals from embedded sensors. Being “smart,” such devices are able to start and stop logging information from sensors not only through external commands, but on the occurrence of certain events or the fulfillment of certain conditions.

The recorded signals can be transmitted by the phone to the attacker’s server whenever the latter has access to the Internet. So an unassuming fitness app or a new watch face from the Google Play store can be used against you, right now in fact. The situation is compounded by the fact that, in addition to this app, simply sending your geotag once and requesting the email address linked to your Google Play account is enough to determine, based on your movements, who you are, where you’ve been, your smartphone usage, and when you entered a PIN at an ATM.

We found that extracting data from traffic likely to correspond to a password or other sensitive information (name, surname, email address) is a fairly straightforward task. Applying the full power of available recognition algorithms to these data on a PC or in cloud services, attackers, as shown earlier, can subsequently recover this sensitive information from accelerometer and gyroscope signal logs. Moreover, the accumulation of these signals over an extended period facilitates the tracking of user movements — and that’s without geoinformation services (such as GPS/GLONASS, or base station signals).

We established that the use of simple methods of analyzing signals from embedded sensors such as accelerometers and gyroscopes makes it possible (even with the computing power of a wearable device) to determine the moments when one and the same text is entered (for example, authentication data) to an accuracy of up to 96% for desktop computers and up to 64% for mobile devices. The latter accuracy could be improved by writing more complex algorithms for processing the signals received, but we intentionally applied the most basic mathematical toolbox. Considering that we viewed this experiment through the prism of the threat to corporate users, the results obtained for the desktop computer are a major cause for concern.

A probable scenario involving the use of wearable devices relates to downloading a legitimate app to a smartwatch — for example, a fitness tracker that periodically sends data packets of several dozen kilobytes in size to a server (for example, the uncompressed “signal signature” for the 13-character password was about 48 kilobytes).

Since the apps themselves are legitimate, we assume that, alongside our Android Wear/Android for Smartwatch test case, this scenario can be applied to Apple smartwatches, too.

Recommendations

There are several indications that an app downloaded onto a smartwatch might not be safe.

  1. If, for instance, the app sends a request for data about the user’s account (the GET_ACCOUNTS permission in Android), this is cause for concern, since cybercriminals need to match the “digital fingerprint” with its owner. However, the app can also allow the user to register by providing an email address — but in this case you are at least free to enter an address different to that of the Google Play account to which your bank card is linked.
  2. If the app additionally requests permission to send geolocation data, your suspicions should be aroused even further. The obvious advice in this situation is not to give additional permissions to fitness trackers that you download onto your smartwatch, and to specify a company email address at the time of registration.
  3. A short battery life can also be a serious cause for concern. If your gadget discharges in just a few hours, this is a sign that you may be under observation. Theoretically, a smartwatch can store logs of your activity with length up to dozens of hours and upload this data later.

In general, we recommend keeping a close eye on smartwatches sported by employees at your office, and perhaps regulating their use in the company’s security policies. We plan to continue our research into cyberphysical systems such as wearable smart gadgets, and the additional risks of using them.

50 хэшей в час

Инсайдер не обязательно должен обладать высокой квалификацией

Как внешне безобидный инсайдер с Raspberry Pi способен взломать вашу корпоративную сеть

Часто ли вы выключаете свой компьютер, уходя домой с работы? Скорее всего вы его оставляете включенным, чтобы не ждать, пока он загрузится утром. Возможно, что коллеги приучили вас блокировать систему всякий раз, когда вы отлучаетесь от рабочего места, однако даже заблокированный компьютер — не препятствие для атак нового типа, описание которых набирает популярность на специализированных форумах, посвященным микрокомпьютерам Raspberry Pi.

Ранее мы выясняли, безопасно ли заряжать смартфон по USB. Сейчас речь пойдет о подключении к USB-порту микрокомпьютеров, с помощью которых осуществляется перехват аутентификационных данных. Как нам удалось установить в ходе исследования, эта атака успешна и против заблокированных систем и может быть использована для похищения реквизитов доступа пользователей с административными правами. Опасность утечки прав администратора хорошо иллюстрирует пример Carbanak — злоумышленникам, чьи действия были раскрыты в 2015 году, удалось похитить, по разным оценкам, до миллиарда долларов. Важной частью «успеха» Carbanak было выявление и перехват реквизитов системных администраторов, для чего была выстроена и реализована сложная целевая атака.

В нашем исследовании мы покажем, что для похищения администраторских реквизитов достаточно краткосрочного подключения по USB к произвольному компьютеру внутри корпоративной сети. Стоимость необходимого «железа» при этом составляет порядка $20, а саму атаку может реализовать человек любой квалификации, имеющий доступ в помещение. Например, уборщица, которую можно попросить «воткнуть эту коробочку в любой включенный компьютер» на время уборки.

Инсайдер не обязательно должен обладать высокой квалификацией

Для наших экспериментов мы выбрали самый обычный Raspberry Pi Zero, который был сконфигурирован таким образом, чтобы «представиться» подключаемой системе как USB-Ethernet-адаптер. Наш выбор был не случаен — Raspberry Pi Zero является лидером по числу упоминаний на форумах, где обсуждается возможность взлома машин с помощью одноплатных компьютеров. Скорее всего, такая популярность связана с габаритами устройства и его вычислительной мощностью при очень демократичной цене. Разработчики смогли уместить все элементы питания, чип и интерфейсы в корпусе размером чуть больше привычной «флэшки».

Raspberry Pi Zero

Сама идея использовать микрокомпьютеры для перехвата и анализа сетевых пакетов или в качестве универсальной платформы для взлома далеко не нова. Большинство миниатюрных вычислительных устройств построено на микропроцессорах архитектуры ARM, и для них есть специальный дистрибутив операционной системы Kali Linux, предназначенной для тестирования информационной безопасности ИТ-систем.

Также на рынке существуют специализированные предложения для выполнения тестов на проникновение, например, USB Armory. Однако при всех своих достоинствах, в числе которых привычный разъем USB Type A (для Raspberry Pi требуется переходник), USB Armory стоит существенно дороже (около $135) и не идет ни в какое сравнение по распространенности с Raspberry Pi. Первые заявления о возможности кражи хэшей «через USB» к компьютеру (под управлением как Windows, так и Mac OS) появились уже в 2016 году, а немного позже мы увидели на рынке специальные версии Raspberry Pi Zero, «заточенные» не только на перехват хэшей паролей, но и файлов cookie в браузере. Мы не будем останавливаться в этом блогпосте на том, что означает перехват хэша пароля и насколько сложно восстановить исходный пароль пользователя (что, вообще говоря, не всегда и необходимо).

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

Эксперимент 1: перехват реквизитов доступа в домен

Методология

Ключевой особенностью атаки является эмуляция устройством сетевого адаптера. Модуль для Raspbian OS, эмулирующий Ethernet-устройство, был найден без труда (на момент публикации данной статьи аналогичного модуля для Kali Linux мы обнаружить не смогли). Чтобы Raspberry Pi Zero распознавалась компьютером, необходимо внести небольшие изменения в конфигурационные файлы cmdline.txt и config.txt.

cmdline.txt

config.txt

Дополнительно устанавливаем интерпретатор python, библиотеки для управления БД sqlite3 и специальное приложение Responder, которое собственно и осуществляет перехват пакетов аутентификации:

apt-get install -y python git python-pip python-dev screen sqlite3
pip install pycrypto
git clone
https://github.com/spiderlabs/responder

Но это еще не все. Нам понадобится собственный DHCP-сервер isc-dhcp-server, в котором нужно настроить диапазонвыдачи IP-адресов и маску подсети, чтобы отделить «внутреннюю кухню» микрокомпьютера от подключаемой системы Windows или Mac, в которую мы хотим «влезть». Остались последние штрихи: настроить интерфейс usb0 и прописать автоматический запуск Responder и DHCP-сервера. После чего устройство готово к использованию.

Результаты

Мы начали проверять работу нашего «заряженного» микрокомпьютера на Windows 10 и сразу убедились, что подключенная Raspberry Pi Zero автоматически распознается как новое «проводное» LAN-соединение, причем более приоритетное, чем все остальные. В «Центре управления сетевыми подключениями» Windows эмулируемая сеть показывается как неопознанная сеть, в «Диспетчере устройств» эмулируемое устройство отображается как Remote NDIS based Internet sharing device:

Видите сетевой адаптер? А на самом деле его нет...

Далее Responder анализирует запросы, проходящие через эмулируемую сеть, и в нужный момент подставляет фейковый сервер HTTPS и HTTP- или NTLM‑аутентификации. Ключевая особенность программы заключается в том, что она поддерживает версии NTLMv1 и NTLMv2.

Атака сработает в случае, когда фоновые приложения сами отсылают аутентификационные данные или же при их вводе в стандартные окна запроса учетных данных браузера или «Проводника» при доступе к удаленной папке/принтеру.

Стандартное окно ввода данных

Автоматический перехват хэша без вмешательства извне (который также эффективен против заблокированных систем) работает только при наличии у компьютера другого подключения к сети Интернет.

Нас интересовало три сценария реализации атаки:

  1. на корпоративный компьютер в доменной сети;
  2. на корпоративный компьютер в общественной сети;
  3. на домашний компьютер.

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

Поэкспериментировав со временем работы нашей «машинки» в диапазоне от нескольких минут до получаса, мы увидели, что чем дольше устройство подключено к системе, тем больше хэшей удается перехватить. Экстраполируя наши приблизительные данные, мы пришли к выводу, что нам удастся перехватить около 50 хэшей в час. Скорее всего, этот показатель зависит от топологии корпоративной сети (в частности, от количества пользователей в одном сегменте) и их активности в данное время суток. Мы не рискнули долго использовать устройство, поскольку перехват пакетов имеет дополнительные побочные эффекты, о которым мы расскажем чуть ниже.

Вот как выглядит сам файл с перехваченными хэшами:

Hashes in the plaintext file

Во втором случае (корпоративный компьютер в общественной сети) удалось перехватить данные доменной учетной записи пользователя и данные его аккаунта в Windows. Возможно, «добыча» была бы крупнее, если бы в общественной сети были развернуты сетевые ресурсы, требующие аутентификации, но мы оставим это предположение за рамками настоящего исследования.

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

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

Certificate warning

Из интересных побочных эффектов стоит отметить, что когда устройство находится в работе — подключено к хосту, соединенному с корпоративной сетью, то оно напрочь блокирует все запросы печати и доступа к удаленным папкам (протокол SMB), — т.е., производит «мини-диверсию». Вот что мы увидели на другом (т.е. к которому не был подключен «заряженный» Raspberry Pi) компьютере под управлением Mac OS в этом же сегменте сети:

Network printing error

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

Bonus

Когда NTLM-системы Windows и Mac OS успешно пали перед натиском микрокомпьютера, у нас возник вопрос — а что насчет Linux? И тогда у нас возникла шальная мысль — а почему бы не попробовать атаковать… саму Raspberry Pi, ведь Raspbian OS построена на ядре Debian Weezy.

Мы воспроизвели эксперимент, выбрав в качестве цели для атаки Raspberry Pi 3, подключенный к корпоративной сети через интерфейс Ethernet. И вот тут нас ждал приятный сюрприз: Raspbian OS при выборе из двух сетей с разными интерфейсами всегда предпочитает Ethernet. По этой причине Responder на Raspberry Pi Zero был активен, но не регистрировал пакетов аутентификации, так как они через него не ретранслировались. Если отключить Ethernet и оставить атакуемой системе единственное сетевое подключение через USB, то Responder перехватывает хэши по схеме, полностью аналогичной вышеописанному сценарию с Windows.

Raspberry Pi Zero hacking into Raspberry Pi 3

Аналогичную картину мы наблюдали и на «десктопной» версии Debian (запущенной на Chromebook) — система не назначает автоматически USB-адаптер приоритетным сетевым интерфейсом. Таким образом, атака путем присоединения микрокомпьютера к системе, подключенной по Ethernet к корпоративной сети, будет неэффективна. Подключение типа Raspberry PI-in-the-middle не выглядит перспективным вариантом, поскольку сложнее реализуется и легче обнаруживается.

Методология

Услышав сообщение о возможности кражи cookie с помощью Raspberry Pi Zero, мы решили его проверить. Мы нашли приложение, называемое poisontap, которое впоследствии энтузиасты объединили с приложением Responder из первого эксперимента. Такая связка была названа HackPi.

Настройки микрокомпьютера в этом эксперименте аналогичны настройкам для предыдущего, однако в HackPi был усовершенствован механизм распознавания устройства десктопными ОС: оно автоматически устанавливает драйвер сетевого устройства на Windows 7/8/10, Mac OS, и Unix-системах.

Сразу после загрузки ОС запускается эмулятор сетевого устройства, появляется новое подключение локальной сети, которое должно быть определено системой как приоритетное — иначе пакеты не будут через него перенаправлены. Существенным отличием от предыдущего эксперимента является то, что вместо перехвата пакетов аутентификации приложением, выполняется XSS-атака и запускается вредоносный Java Script из подгружаемой веб-страницы. Дополнительно, веб-сервер poisontap сохраняет копию cookie с сайтов по заранее определенному списку.

Результаты

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

Poisontap stealing cookies

Если же никаких действий пользователем не производится, то Raspberry Pi Zero запускает браузер со страницей go.microsoft.com в адресной строке, на которой подгружается зараженная страница со встроенного веб-сервера и далее процесс, описанный выше, повторяется. Однако, радоваться злоумышленникам рано — если в браузере по умолчанию сохраненных cookies нет, то доступа к сайтам из «списка интересов» они не получат.

Среди сайтов, прописанных в скрипте: youtube.com, google.com, vk.com, facebook.com, twitter.com, yandex.ru, mail.ru и еще более 100 веб-адресов. Вот как выглядит лог с добытыми cookie:

Cookies

Мы проверили валидность полученных cookie на примере pikabu.ru, вставив данные в поля абсолютно чистого браузера другой машины и успешно получили доступ к аккаунту вместе с его статистикой активности на сайте.

Гораздо более серьезную опасность представляет потеря cookie на одном из российских сайтов, хранящем персональные данные своих клиентов в их личном профиле. Мы создали тестовый аккаунт и смогли заполучить пользовательский токен этого сайта. С его помощью мы получили возможность распоряжаться скомпрометированным аккаунтом на другом компьютере, поскольку для аутентификации передается единственный идентификатор сессии LtpaToken2:

Восстановленная по cookie сессия

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

Восстановленная по cookie сессия

Среди достоинств этого метода — возможность использования практически на всех операционных системах и платформах: Windows 7/8/10, Mac OS X. Однако, именно этот сценарий не работает на заблокированном компьютере – по крайней мере, пока. Хотя мы не рекомендуем расслабляться и предлагаем исходить из того, что обойти ограничения блокировки для такой атаки всего лишь вопрос времени и энтузиазма умельцев, число которых каждый день растет.

Но самое главное — зараженная страница блокируется всеми без исключения продуктами «Лаборатории Касперского», определяющих ее как зараженную Trojan.JS.Poisontap.a. Также, по нашим данным, эта страница будет заблокирована защитным ПО и других ведущих вендоров.

Выводы

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

На текущий же момент мы можем констатировать, что перехват хэша с помощью микрокомпьютеров наиболее «легко» происходит при их подключении к системам, работающим под управлением Windows. Причем наличие последней версии этой операционной системы с автоматической установкой драйверов — однозначный минус, поскольку позволяет реализовать первую часть атаки (перехват данных аутентификации в домене) даже на заблокированном компьютере. Наличие же прав локального администратора или их отсутствие никак не влияет на успешность атаки. Эта же атака при подключении к системам под управлением Mac OS работает лишь в том случае, если присоединяемому устройству удается обойти ограничения системы и подключиться в качестве сетевого адаптера с более высоким приоритетом.

MacOS is vulnerable, too

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

Рекомендации

Чтобы не стать мишенью для злоумышленников следует помнить о нескольких простых правилах.

Для пользователей

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

2. Вернувшись, стоит проверить — не появилось ли новых USB-устройств. Торчит какая-то флэшка? А это точно флэшка? Если вы ее не вставляли, ее нужно вытащить.

3. Если вас просят записать информацию на внешний накопитель, стоит убедиться, что это действительно накопитель. Лучше отправить данные по почте.

4. Возьмите в привычку нажимать кнопку «Выход» по завершении работы на сайтах, требующих аутентификации.

5. Не забывайте регулярно менять пароли (от учетной записи на ПК, и веб-ресурсов). Помните, что далеко не все сайты используют механизмы защиты от подстановки данных сессии из cookie. Чтобы упростить и облегчить себе жизнь, можете использовать специализированное ПО, например, Kaspersky Password Manager.

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

7. И, конечно, не стоит пренебрегать установкой и регулярным обновлением защитного решения.

Для администраторов

1. Если топология сети позволяет, используйте только протокол аутентификации Kerberos. Если есть необходимость поддержки legacy-систем LLNMR, NTLM, настоятельно рекомендуется разбивать доменную сеть на сегменты таким образом, чтобы исключить возможность «прослушки» всей сети целиком.

2. Запретите использование привилегированных доменных учетных записей (особенно доменных администраторов) для доступа в legacy-системы.

3. Доменные пароли пользователей должны регулярно меняться. Если по каким-то причинам в политике безопасности организации еще не прописана регулярная смена паролей пользователей, сделайте это сейчас же.

4. На все компьютеры внутри корпоративной сети должны быть установлены защитные решения и должна быть обеспечено их обновления регулярное обновление.

5. Для предотвращения подключения «несанкционированных» USB-устройств также полезно будет задействовать функцию Device Control, доступную в Kaspersky Endpoint Security for Business.

6. Если вы являетесь владельцем веб-ресурса, рекомендуем активировать режим HSTS (HTTP strict transport security), что позволит защитить пользователей от подмены используемого протокола с HTTPS на HTTP.

7. По возможности отключите режим прослушивания и активируйте настройку Client Isolation (AP Isolation) на Wi-Fi роутерах и коммутаторах, не позволяющие получить рабочей станции чужой трафик.

8. От атаки с подменой DHCP сервера можно защититься активацией настройки DHCP Snooping в вашем роутере/маршрутизаторе.

В заключение рекомендуем проверить ваши учетные данные на предмет утечки из веб-сайтов, где вы зарегистрированы, с помощью сервиса HaveIbeenPwned.

Перепечатка с Securelist.ru.

50 hashes per hour

Raspberry Pi Zero

How a harmless-looking insider can compromise your network

How often do you turn off your computer when you go home from work? We bet you leave it on so you don’t have to wait until it boots up in the morning. It’s possible that your IT staff have trained you to lock your system for security reasons whenever you leave your workplace. But locking your system won’t save your computer from a new type of attack that is steadily gaining popularity on Raspberry Pi enthusiast forums.

We previously investigated the security of charging a smartphone via a USB port connection. In this research we’ll be revisiting the USB port – this time in attempts to intercept user authentication data on the system that a microcomputer is connected to. As we discovered, this type of attack successfully allows an intruder to retrieve user authentication data – even when the targeted system is locked. It also makes it possible to get hold of administrator credentials. Remember Carbanak, the great bank robbery of 2015, when criminals were able to steal up to a billion dollars? Finding and retrieving the credentials of users with administrative privileges was an important part of that robbery scheme.

In our research we will show that stealing administrator credentials is possible by briefly connecting a microcomputer via USB to any computer within the corporate perimeter. By credentials in this blogpost we mean the user name and password hash and we won’t go into detail how to decipher the retrieved hash, or how to use it in the pass-the-has types of attacks. What we’re emphasizing is that the hardware cost of such an attack is no more than $20 and it can be carried out by a person without any specific skills or qualifications. All that’s needed is physical access to corporate computers. For example, it could be a cleaner who is asked to plug “this thing” into any computer that’s not turned off.

Insider doesn't have to be very qualified

We used a Raspberry Pi Zero in our experiments. It was configured to enumerate itself as an Ethernet adapter on the system it was being plugged into. This choice was dictated by the popularity of Raspberry Pi Zero mentions on forums where enthusiasts discuss the possibility of breaking into information systems with single-board computers. This popularity is understandable, given the device capabilities, size and price. Its developers were able to crank the chip and interfaces into a package that is slightly larger than an ordinary USB flash drive.

Raspberry Pi Zero

Yes, the idea of using microcomputers to intercept and analyze network packets or even as a universal penetration testing platform is nothing new. Most known miniature computing devices are built on ARM microprocessors, and there is a special build of Kali Linux that is specifically developed for pen testing purposes.

There are specialized computing sticks that are designed specifically for pen testing purposes, for example, USB Armory. However, with all its benefits, like integrated USB Type A connector (Raspberry Pi requires an adapter), USB Armory costs much more (around $135) and absolutely pales in comparison when you look at its availability vs. Raspberry Pi Zero. Claims that Raspberry Pi can be used to steal hashes when connected via USB to a PC or Mac surfaced back in 2016. Soon there were claims that Raspberry Pi Zero could also be used for stealing cookies fromh3 browsers – something we also decided to investigate.

So, armed with one of the most widespread and available microcomputers at the moment, we conducted two series of experiments. In the first, we attempted to intercept user credentials within the corporate network, trying to connect to laptop and desktop computers running different operating systems. In the second, we attempted to retrieve cookies in a bid to restore the user session on a popular website.

Experiment 1: stealing domain credentials

Methodology

The key principle behind this attack is emulation of the network adapter. We had absolutely no difficulties in finding the module emulating the Ethernet adapter under Raspbian OS (for reference, at the time of writing, we hadn’t found a similar module for Kali Linux). We made a few configuration changes in the cmdline.txt and config.txt files to load the module on boot.

cmdline.txt

config.txt

A few extra steps included installing the python interpreter, sqlite3 database library and a special app called Responder for packet sniffing:

apt-get install -y python git python-pip python-dev screen sqlite3
pip install pycrypto
git clone
https://github.com/spiderlabs/responder

And that wasn’t all – we set up our own DHCP server where we defined the range of IP addresses and a mask for a subnet to separate it from the network we’re going to peer into. The last steps included configuring the usb0 interface and automatic loading of Responder and DHCP server on boot. Now we were ready to rock.

Results

Just as soon as we connected our “charged” microcomputer to Windows 10, we saw that the connected Raspberry Pi was identified as a wired LAN connection. The Network Settings dialogue shows this adapter as Remote NDIS Internet sharing device. And it’s automatically assigned a higher priority than others.

A fake network adapter is displayed

Responder scans the packets that flow through the emulated network and, upon seeing the username/password hash pairs, directs them to a fake HTTP/HTTPS/NTLM (it supports v1 and v2) server. The attack is triggered every time applications, including those running in the background, send authentication data, or when a user enters them in the standard dialogue windows in the web browser – for example, when user attempts to connect to a shared folder or printer.

Standard authentication window

Intercepting the hash in automatic mode, which is effective even if the system is locked, only works if the computer has another active local network connection.

As stated above, we tried this proof of concept in three scenarios:

  1. Against a corporate computer logged into a domain
  2. Against a corporate computer on a public network
  3. Against a home computer

In the first scenario we found that the device managed to intercept not only the packets from the system it’s connected to via USB but also NTLM authentication requests from other corporate network users in the domain. We mapped the number of intercepted hashes against the time elapsed, which is shown in the graph below:

Playing around with our “blackbox” for a few minutes, we got proof that the longer the device is connected, the more user hashes it extracts from the network. Extrapolating the “experimental” data, we can conclude that the number of hashes it can extract in our setting is around 50 hashes per hour. Of course, the real numbers depend on the network topology, namely, the amount of users within one segment, and their activity. We didn’t risk running the experiment for longer than half an hour because we also stumbled on some peculiar side effects, which we will describe in a few moments.

The extracted hashes are stored in a plain-text file:

Hashes in the plaintext file

In the second scenario we were only able to extract the connected system’s user credentials: domain/Windows name and password hash. We might have gotten more if we had set up shared network resources which users could try to access, but we’re going to leave that outside the scope of this research.

In the third scenario, we could only get the credentials of the owner of the system, which wasn’t connect to a domain authentication service. Again, we assume that setting up shared network resources and allowing other users to connect to them could lead to results similar to those we observed in the corporate network.

The described method of intercepting the hashes worked on Mac OS, too. When we tried to reach an intranet site which requires entering a domain name, we saw this dialogue warning that the security certificate is invalid.

Certificate warning

Now, the interesting side effect we mentioned above was that when the device was connected to a[ny] system in the network, tasks sent out to the network printer from other machines in the same network were put on hold in the printer queue. When the user attempted to enter the credentials in the authentication dialogue window, the queue didn’t clear. That’s because these credentials didn’t reach the network printer, landing in the Raspberry Pi’s flash memory instead. Similar behavior was observed when trying to connect to remote folders via the SMB protocol from a Mac system.

Network printing error

Bonus: Raspberry Pi Zero vs. Raspberry Pi 3

Once we saw that the NTLM systems of both Windows and Mac had come under attack from the microcomputer, we decided to try it against Linux. Furthermore, we decided to attack the Raspberry Pi itself, since Raspbian OS is built on the Debian Weezy core.

We reproduced the experiment, this time targeting Raspberry Pi 3 (by the way, connecting it to the corporate network was a challenging task in itself, but doable, so we won’t focus on it here). And here we had a pleasant surprise – Raspbian OS resisted assigning the higher priority to a USB device network, always choosing the built-in Ethernet as default. In this case, the Responder app was active, but could do nothing because packets didn’t flow through the device. When we manually removed the built-in Ethernet connection, the picture was similar to that we had observed previously with Windows.

Raspberry Pi Zero hacking into Raspberry Pi 3

Similar behavior was observed on the desktop version of Debian running on Chromebook – the system doesn’t automatically set the USB Ethernet adapter as default. Therefore, if we connect Raspberry Pi Zero to a system running Debian, the attack will fail. And we don’t think that creating Raspberry Pi-in-the-middle attacks is likely to take off, because they are much harder to implement and much easier to detect.

Experiment 2: stealing cookies

Methodology

While working on the first experiment, we heard claims that it’s possible to steal cookies from a PC when a Raspberry Pi Zero is connected to it via USB. We found an app called HackPi, a variant of PoisonTap (an XSS JavaScript) with Responder, which we described above.

The microcomputer in this experiment was configured just like in the previous one. HackPi works even better at establishing itself as a network adapter because it has an enhanced mechanism of desktop OS discovery: it is able to automatically install the network device driver on Windows 7/8/10, Mac and –nix operating systems. While in the first series of experiments, an attack could fail on Windows 7, 8 or Vista if the Remote NDIS Internet sharing device didn’t install itself automatically (especially when the PC is locked). And, unlike in the previous series, HackPi never had trouble assigning itself the default network adapter priority under Mac OS either.

What differs from the first experiment is that the cookies are stolen using the malicious Java Script launched from the locally stored web page. If successful, PoisonTap’s script saves the cookies intercepted from sites, a list of which is also locally stored.

Results

If the computer is not locked and the user opens the browser, Java Script initiates the redirecting of web requests to a malicious local web page. Then the browser opens the websites from the previously defined list. It is indeed quite spectacular:

Poisontap stealing cookies

If the user does nothing, Raspberry Pi Zero launches the default browser with URL go.microsoft.com in the address line after a short timeout. Then the process goes ahead as described. However, if the default browser has no cookies in the browser history, the attackers gain nothing.

Among the sites we’ve seen in the list supplied with the script were youtube.com, google.com, vk.com, facebook.com, twitter.com, yandex.ru, mail.ru and over 100 other web addresses. This is what the log of stolen cookies looks like:

Cookies in the plaintext

We checked the validity of stolen cookies using the pikabu.ru website as an example by pasting the info into a clean browser field on other machines and were able to get hold of the user’s account along with all the statistics. On another website belonging to a railroad company vending service, we were able to retrieve the user’s token and take over the user’s account on another computer, because authentication protocol used only one LtpaToken2 for session identification.

Session restored using stolen cookies

Now this is more serious, because in this case the criminals can get information about previous orders made by the victim, part of their passport number, name, date of birth, email and phone number.

Session restored using stolen cookies

One of the strong points of this attack is that enthusiasts have learned how to automatically install the network device driver on all systems found in today’s corporate environments: Windows 7/8/10, Mac OS X. However, this scenario doesn’t work against a locked system – at least, for now. But we don’t think you should become too complacent; we assume it’s only a matter of time before the enthusiasts overcome this as well. Especially given that the number of these enthusiasts is growing every day.

Also, the malicious web page is blocked by all Kaspersky Lab products, which detect it as Trojan.JS.Poisontap.a. We also assume that this malicious web page will be blocked by the products of all other major anti-malware vendors.

Malicious code blocked by security solution

 

Conclusions

There is already a wide array of single-board microcomputers: from the cheap and universal Raspberry Pi Zero to computing sticks specifically tuned for penetration testing, which cannot be visually differentiated from USB flash drives. To answer the main question of just how serious this threat is, we can say that at the moment it is overrated. However, we don’t advise underestimating the capabilities of IoT enthusiasts and it’s better to assume that those obstacles which we discovered in our experiment, have already been overcome.

Right now we can say that Windows PCs are the systems most prone to attacks aimed at intercepting the authentication name and password with a USB-connected Raspberry Pi. The attack works even if the user doesn’t have local or system administrator privileges, and can retrieve the domain credentials of other users, including those with administrator privileges. And it works against Mac OS systems, too.

MacOS is vulnerable, too

The second type of attack that steals cookies only works (so far) when the system is unlocked, which reduces the chances of success. It also redirects traffic to a malicious page, which is easily blocked by a security solution. And, of course, stolen cookies are only useful on those websites that don’t employ a strict HTTP transport policy.

Recommendations

However, there are a number of recommendations we’d like to give you to avoid becoming easy prey for attackers.

Users

1. Never leave your system unlocked, especially when you need to leave your computer for a moment and you are in a public place.

2. On returning to your computer, check to see if there are any extra USB devices sticking out of your ports. See a flash drive, or something that looks like a flash drive? If you didn’t stick it in, we suggest you remove it immediately.

3. Are you being asked to share something via external flash drive? Again, it’s better to make sure that it’s actually a flash drive. Even better – send the file via cloud or email.

4. Make a habit of ending sessions on sites that require authentication. Usually, this means clicking on a “Log out” button.

5. Change passwords regularly – both on your PC and the websites you use frequently. Remember that not all of your favorite websites may use mechanisms to protect against cookie data substitution. You can use specialized password management software for easy management of strong and secure passwords, such as the free Kaspersky Password Manager.

6. Enable two-factor authentication, for example, by requesting login confirmation or with a hardware token.

7. Of course, it’s strongly recommended to install and regularly update a security solution from a proven and trusted vendor.

Administrators

1. If the network topology allows it, we suggest using solely Kerberos protocol for authenticating domain users. If, however, there is a demand for supporting legacy systems with LLNMR and NTLM authentication, we recommend breaking down the network into segments, so that even if one segment is compromised, attackers cannot access the whole network.

2. Restrict privileged domain users from logging in to the legacy systems, especially domain administrators.

3. Domain user passwords should be changed regularly. If, for whatever reason, the organization’s policy does not involve regular password changes, please change the policy. Like, yesterday.

4. All of the computers within a corporate network have to be protected with security solutions and regular updates should be ensured.

5. In order to prevent the connection of unauthorized USB devices, it can be useful to activate a Device Control feature, available in the Kaspersky Endpoint Security for Business suite.

6. If you own the web resource, we recommend activating the HSTS (HTTP strict transport security) which prevents switching from HTTPS to HTTP protocol and spoofing the credentials from a stolen cookie.

7. If possible, disable the listening mode and activate the Client (AP) isolation setting in Wi-Fi routers and switches, disabling them from listening to other workstations’ traffic.

8. Activate the DHCP Snooping setting to protect corporate network users from capturing their DHCP requests by fake DHCP servers.

Last, but not least, you never know if your credentials have been leaked from a site you’ve been to before – online or physical. Thus, we strongly recommend that you check your credentials on the HaveIbeenPwned website to be sure.

Reposted from Securelist.