На конференции по компьютерной безопасности Ekoparty 2017 в Буэнос-Айресе аргентинский хакер Альфредо Ортега (Alfredo Ortega) показал очень интересную разработку — систему скрытой прослушки помещений без использования микрофона. Звук записывается непосредственно жёстким диском!

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

Звук — это колебания воздуха или другой среды. Человек воспринимает их через барабанную перепонку, которая передаёт колебания во внутреннее ухо. Микрофон устроен примерно как ухо — здесь тоже колебания регистрируются тонкой мембраной, которая возбуждает электрический импульс. Жёсткий диск, разумеется, тоже подвержен микроскопическим вибрациям из-за колебаний окружающего воздуха. Это известно даже по техническим характеристикам HDD: производители обычно указывают максимально допустимый уровень вибраций, а сам жёсткий диск часто стараются поместить в защищённый от вибраций контейнер из резины или другого изоляционного материала. Из этого легко сделать вывод, что с помощью HDD можно регистрировать звуки. Осталось только придумать, как.

Альфредо Ортега предложил своеобразный вариант атаки по сторонним каналам (side-channel attack), а именно атаки по времени. Эта атака основана на предположении, что различные операции выполняются в устройстве за различное время, в зависимости от поданных входных данных. В данном случае «входными данными» являются колебания считывающей головки и пластины HDD, которые коррелируют с вибрациями среды, то есть со звуком. Таким образом, измеряя время вычислений и проводя статистический анализ данных, можно измерить колебания головки/пластины и, следовательно, вибрации среды. Чем больше задержка в считывании данных — тем сильнее колебания HDD и, значит, тем громче звук.

Как измерить колебания жёсткого диска? Очень просто: достаточно всего лишь запустить системный вызов read () — и зарегистрировать время, за которое он выполняется. Современные операционные системы позволяют считывать тайминг системных вызовов с точностью до наносекунды.

Скорость чтения информации с сектора зависит от положения головки и пластины, которое коррелирует с вибрациями корпуса HDD. Вот и всё.

Статистический анализ осуществляется с помощью простенькой утилиты Kscope. Как говорится, всё гениальное просто.


Утилита Kscope (stat () syscall)

Kscope — маленькая утилита для визуализации крохотный различий во времени выполнения системных вызовов. Исходный кодопубликован на GitHub.

В отдельном репозитории hdd-time лежит версия утилиты, настроенная на атаку по времени на жёсткий диск, то есть настроенная на анализ системного вызова read ().

Демонстрация звукозаписи с помощью HDD, работа утилиты Kscope


Конечно же, речь нельзя разобрать таким способом, но в качестве датчика вибраций HDD вполне сгодится. Например, вы можете регистрировать, если в помещение с компьютером зашёл человек в твёрдой обуви или босиком (вероятно, если злоумышленник обут в мягкие кроссовки или на полу постелен толстый ковёр, то HDD не сможет зарегистрировать вибрации — это стоит проверить). Компьютер способен зарегистрировать разбитое стекло или другое происшествие с сильной интенсивностью звука. То есть жёсткий диск может выполнять роль своеобразной системы обнаружения несанкционированных проникновений.

HDD-киллер


Кстати, схожую технику можно использовать для выведения из строя жёстких дисков. Только здесь мы не снимаем колебания с HDD, а наоборот — генерируем колебания, которые подаются на HDD. Если воспроизводить с колонки звук на частоте, которая резонирует с частотой HDD, то система вскоре отключает устройство с ошибкой ввода-вывода (ядро Linux полностью отключает HDD через 120 секунд). Сам жёсткий диск может получить необратимые повреждения.


Ядро Linux отключило жёсткий диск после 120 секунд подачи звука на резонирующей частоте через динамик USB-колонки Edifier r19u. Динамик включен примерно на четверть мощности (менее 100 мВт) и располагается в 20 см от HDD, направлен на стол для усиления вибраций. Кадр из видеоролика с демонстрацией работы HDD-киллера

Любопытно, что такие «атаки» на HDD иногда происходят совершенно случайно в обычной жизни. Например, в сентябре 2016 года дата-центр ING Bank был вынужден приостановить работу на 10 часов после пожарных учений. Десятки жёстких дисков вышли из строя из-за громкого звука инертного газа, выпускаемого из баллонов под большим давлением. Звук был очень громким (более 130 дБ), а ведь даже кричать на жёсткие диски нельзя — это увеличивает задержку доступа к HDD.

Демонстрация человеческого крика на жёсткие диски в дата-центре. Измерение задержки


Для генерации резонирующего звука Альфредо Ортега написал питоновский скрипт под названием hdd-killer (демонстрация на видео).

Скрипт HDD-киллера совсем небольшой так что можно его целиком опубликовать здесь.

"""PyAudio hdd-killer: Generate sound and interfere with HDD """
"""Alfredo Ortega @ortegaalfredo"""
"""Usage: hdd-killer /dev/sdX"""
"""Where /dev/sdX is a spinning hard-disk drive"""
"""Turn the volume to the max for better results"""
"""Requires: pyaudio. Install with 'sudo pip install pyaudio' or 'sudo apt-get install python-pyaudio'"""

import pyaudio
import time
import sys
import math
import random

RATE=48000
FREQ=50

# validation. If a disk hasn't been specified, exit.
if len(sys.argv) < 2:
    print "hdd-killer: Attempt to interfere with a hard disk, using sound.\n\n" +	  "The disk will be opened as read-only.\n" +           "Warning: It might cause damage to HDD.\n" +          "Usage: %s /dev/sdX" % sys.argv[0]
    sys.exit(-1)

# instantiate PyAudio (1)
p = pyaudio.PyAudio()
x1=0
NEWFREQ=FREQ

# define audio synt callback (2)
def callback(in_data, frame_count, time_info, status):
    global x1,FREQ,NEWFREQ
    data=''
    sample=0
    for x in xrange(frame_count):
        oldsample=sample
        sample=chr(int(math.sin(x1*((2*math.pi)/(RATE/FREQ)))*127)+128)
        data = data+sample
        # continous frequency change
        if (NEWFREQ!=FREQ) and (sample==chr(128)) and (oldsample<sample) :
                FREQ=NEWFREQ
                x1=0
        x1+=1
    return (data, pyaudio.paContinue)

# open stream using callback (3)
stream = p.open(format=pyaudio.paUInt8,
                channels=1,
                rate=RATE,
                output=True,
                stream_callback=callback)

# start the stream (4)
stream.start_stream()

# wait for stream to finish (5)
while stream.is_active():
    timeprom=0
    c=file(sys.argv[1])
    for i in xrange(20):
        a=time.clock()
        c.seek(random.randint(0,1000000000),1) #attempt to bypass file buffer
        c.read(51200)
        b=time.clock()
        timeprom+=b-a
    c.close()
    timeprom/=20
    print("Frequency: %.2f Hz File Read prom: %f us" % (FREQ,timeprom*1000000))
    NEWFREQ+=0.5

# stop stream (6)
stream.stop_stream()
stream.close()

# close PyAudio (7)
p.terminate()

Комментарии (34)


  1. Flagman
    17.10.2017 12:22
    +12

    Жесткий диск, извини, был не прав и больше так не буду.


  1. yousoufian
    17.10.2017 12:32
    -4

    Жаль, что я HDD уже более года как не пользуюсь, было бы интересно попробовать…


    1. x67
      17.10.2017 16:09

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


      1. yousoufian
        18.10.2017 03:32

        Хм… на пьезоэффект, в указанных вами компонентах, мягко говоря не рассчитываю, надо бы для базы узнать на что влияет в полевике давление. В биполярном тр-ре «плывет» к. усиления по току, а вот насчет полевиков не интересовался…


  1. Wizard_of_light
    17.10.2017 12:32
    +2

    О как. Значит, хороший певец голосом не только бокал разбить может, но и жёсткий диск сломать.


    1. vadimzz
      18.10.2017 10:33
      +1

      Сломать может любой дурак. Хороший певец правильно отформатирует.


    1. Diordna
      18.10.2017 23:11

      Oтформатировать :)


  1. LiguidCool
    17.10.2017 12:50
    -2

    SSD жеж…


  1. V1tol
    17.10.2017 14:22
    +1

    Прочитал статью, вспомнил жизнь в общаге — музыка на S-90 и S-70 на полной мощности в комнате, площадью 15 квадратов — так удивляюсь, почему тогда у нас с пацанами жёсткие диски не посыпались.


    1. boblenin
      17.10.2017 18:37

      «they don't make them like that anymore» © (tm)


    1. UberSchlag
      17.10.2017 20:14

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


    1. Tachyon
      18.10.2017 06:19

      Посыпался слух, а это думаю значительней для вас.


    1. barbanel
      18.10.2017 13:44

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


  1. Sing
    17.10.2017 17:10

    138.1 УК РФ — в каждый дом!


    1. Replay_KoT9Pa
      18.10.2017 09:09

      Тут скорее не спецсредства, а не декларированные возможности)


  1. k0ldbl00d
    17.10.2017 19:48

    Частенько диагностирую разные жёсткие диски (связано с моим хобби). Когда прогонял тест чтения Victoria, заметил что достаточно лёгкого прикосновения к диску, чтобы подскочило время чтения блока, считываемого в этот момент. Особенно это актуально для 2.5" HDD, и для современных дисков большого объёма.


  1. zbestr
    17.10.2017 20:14

    Вот! Теперь на вопрос клиентов «Почему у меня сломался жесткий диск?» у меня появился ещё один ответ.


  1. Samoglas
    17.10.2017 21:16

    Увековечу круглое число. Ализар тут в некотором роде Бог (или наоборот) :)


  1. harbid
    18.10.2017 09:09

    — Не ори на меня, чёртов кусок биомассы!


  1. Max_JK
    18.10.2017 09:34
    +1

    Звуковая отвертка скоро станет реальностью


  1. c0ba
    18.10.2017 10:29

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


  1. Assargin
    18.10.2017 10:58

    Действительно, работает. Скомпилил, постучал пальцами по системнику — график чутко отзывался. Кричать не стал, а то ещё неправильно поймут вокруг.


  1. Grimally
    18.10.2017 11:16

    Очередной фактор риска в периметре безопасности


  1. Tertium
    18.10.2017 11:27
    +1

    При выборе компа менеджер теперь будет говорить: что, не хотите ssd ставить? Ну смотрите, это небезопасно.


  1. andrey_aksamentov
    18.10.2017 11:31

    Динамики ноутбука могут навредить его диску? Или давление звука недостаточно для этого?

    Вообще очевидно что любая вибрация вредит тонкому механизму


  1. jot
    18.10.2017 13:13

    Давно известная фишка. Микрофонный эффект еще в советских методичках по защите информации был.


  1. chektor
    18.10.2017 13:45

    Те, кто много ремонтировал аппаратуру, особенно импортную, немало натыкались на радиоэлементы, которые работали как микрофон — конденсаторы; транзисторы; ну и, само собой, магнитофонные головки. Даже резисторы встречал, которые оказывались чувствительны к вибрациям (постукивание по ним карандашом, к примеру). Но это касается высокочувствительной, малошумящей аппаратуры — предварительные усилители, детекторы и подобное. А жесткий диск как раз имеет такие узлы. А уж его головки, «летящие на поверхностью диска», вообще отличный механизм для улавливания посторонних колебаний — и не только механических вибраций, но и звука. Думаю, разработчики это понимают и предпринимают меры для уменьшения влияния на работу HDD как от внешних, так и внутренних источников помех (моторчик, подшипники, подвеска ...).
    В свое время, когда была такая возможность, сделал встраиваемую в компьютерный корпус «корзину» для 6 HDD из двух толстых алюминиевых пластин по бокам. Во первых, хороший теплоотвод, во вторых — демпфер вибраций от самих же дисков. Хотел сделать из меди, «но не повезло».
    Наверное, если постараться, можно использовать HDD для улавливания гравитационных волн, :) кто его знает…


  1. mike_y_k
    18.10.2017 15:06

    Собственно эффект давно известный.
    В свое время даже экспериментировали с сигналом с головок.
    Отлично записываются и воспроизводятся акустические колебания.
    Но вот в изделии это вытащить наружу никак не удасться.
    Если конечно кто-то не поработал над устройством...


    1. jot
      19.10.2017 19:06

      Может и удасться.

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


      1. mike_y_k
        20.10.2017 03:31

        Вы бы оценили уровни сигналов для начала…
        Ну а потом механику и схемотехнику самого подопытного.
        Если залезть в банку и получить сигнал от усилителя сигнала с GMR, то потенциальная возможность присутствует.
        Статистические методы анализа позволят судить максимум о весьма низкочастотных сигналах боьшой амплитуды.
        Например использовать распределённую сеть компьютеров для регистрации и анализа колебаний земной коры.
        Это очень будет похоже на попытку разобрать речь воспроизведенной сабвуфером записи при ограничении верхней частоты в районе 100-150Hz (для справки — минимальный диапазон для речевого канала 300…3000Hz).


  1. steamoor
    18.10.2017 16:32

    Блин, я же видел это видео много раз и очень давно и только понял что на нем Brendan Gregg (brendangregg.com/) и снимает Bryan Cantrill.
    Оба прекрасные презенторы и чрезвычайно умные люди :)


  1. sumanai
    18.10.2017 21:14

    Теперь понятно как настоящие сисадмины чинят технику без прикосновения к клавиатуре!


    1. mike_y_k
      20.10.2017 03:40

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


  1. Aspesk
    19.10.2017 22:35

    Все же не раскрыто влияет вибрация пола или звук