
Na počítačové bezpečnostní konferenci Ekoparty 2017 v Buenos Aires ukázal argentinský hacker Alfredo Ortega velmi zajímavý vývoj - systém pro skryté odposlechy prostor bez použití mikrofonu. Zvuk !
HDD snímá především nízkofrekvenční zvuky vysoké intenzity, kroky a další vibrace. Lidskou řeč zatím nelze rozpoznat, i když vědci (rozpoznávání řeči nízkofrekvenčními vibracemi, které jsou zaznamenány např. z gyroskopu nebo HDD).
Zvuk je vibrace vzduchu nebo jiného média. Člověk je vnímá přes bubínek, který přenáší vibrace do vnitřního ucha. Mikrofon je konstruován zhruba jako ucho – i zde jsou vibrace snímány tenkou membránou, která vybudí elektrický impuls. Pevný disk samozřejmě také podléhá mikroskopickým vibracím v důsledku kolísání okolního vzduchu. Je to znát i z technických charakteristik pevných disků: výrobci obvykle uvádějí maximální přípustnou úroveň vibrací a samotný pevný disk se jej často snaží umístit do obalu odolného proti vibracím z pryže nebo jiného izolačního materiálu. Z toho lze snadno usoudit, že zvuky lze nahrávat pomocí HDD. Zbývá jen vymyslet jak.
Alfredo Ortega navrhl unikátní verzi útoku postranním kanálem, jmenovitě časový útok. Tento útok je založen na předpokladu, že se na zařízení v různých časech provádějí různé operace v závislosti na zadaných vstupních datech. V tomto případě jsou „vstupními daty“ vibrace čtecí hlavy a plotny HDD, které korelují s vibracemi prostředí, tedy se zvukem. Měřením doby výpočtu a prováděním statistické analýzy dat lze tedy měřit vibrace hlavy/plotny a tím i vibrace média. Čím delší je zpoždění při čtení dat, tím silnější jsou vibrace HDD, a tedy hlasitější zvuk.
Jak měřit vibrace pevného disku? Velmi jednoduché: stačí spustit systémové volání read () — a zaznamenejte čas potřebný k dokončení. Moderní operační systémy umožňují číst časování systémových volání s přesností na nanosekundy.
Rychlost čtení informací ze sektoru závisí na poloze hlavy a plotny, která koreluje s vibracemi skříně HDD. To je vše.
Statistická analýza se provádí pomocí jednoduchého nástroje Kscope. Jak se říká, všechno důmyslné je jednoduché.

Nástroj Kscope (stat() syscall)
Kscope je malý nástroj pro vizualizaci drobných rozdílů v době provádění systémových volání. Zdroj.
V samostatném úložišti existuje verze nástroje nakonfigurovaná pro časový útok na pevný disk, to znamená, že je nakonfigurována pro analýzu systémového volání read ().
Ukázka záznamu zvuku pomocí HDD, obsluha utility Kscope

Řeči se takto samozřejmě rozumět nedá, ale jako snímač vibrací se HDD docela hodí. Můžete například zaregistrovat, pokud osoba v tvrdých botách nebo bosá vstoupila do místnosti s počítačem (pravděpodobně, pokud má útočník na nohou měkké tenisky nebo je na podlaze tlustý koberec, HDD nebude schopen zaregistrovat vibrace - to stojí za kontrolu). Počítač je schopen zaregistrovat rozbité sklo nebo jiné incidenty se silnou intenzitou zvuku. To znamená, že pevný disk může sloužit jako druh systému detekce neoprávněného narušení.
Zabiják HDD
Кстати, схожую технику можно использовать для выведения из строя жёстких дисков. Только здесь мы не снимаем колебания с HDD, а наоборот — генерируем колебания, которые подаются на HDD. Если воспроизводить с колонки звук на частоте, которая резонирует с частотой HDD, то система вскоре отключает устройство с ошибкой ввода-вывода (ядро Linux полностью отключает HDD через 120 секунд). Сам жёсткий диск может получить необратимые повреждения.

Core Linux отключило жёсткий диск после 120 секунд подачи звука на резонирующей частоте через динамик USB-колонки Edifier r19u. Динамик включен примерно на четверть мощности (менее 100 мВт) и располагается в 20 см от HDD, направлен на стол для усиления вибраций. Кадр из s ukázkou vraha HDD
Je zvláštní, že k takovým „útokům“ na HDD někdy dochází zcela náhodou v každodenním životě. Například v září 2016 bylo datové centrum ING Bank nuceno přerušit provoz na 10 hodin po požárním cvičení. kvůli hlasitému zvuku inertního plynu uvolňovaného z lahví pod vysokým tlakem. Zvuk byl velmi hlasitý (více než 130 dB), ale na pevné disky nemůžete ani křičet - to zvyšuje zpoždění v přístupu k HDD.
Ukázka lidského ječení na pevné disky v datovém centru. Měření latence

Aby vytvořil rezonující zvuk, Alfredo Ortega napsal skript Python nazvaný ().
Je poměrně malý, takže ho můžete celý zveřejnit zde.
"""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.nn" +
"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()Zdroj: www.habr.com
