Kodėl neturėtumėte šaukti ant HDD

Kodėl neturėtumėte šaukti ant HDD

Buenos Airėse vykusioje kompiuterių saugumo konferencijoje „Ekoparty 2017“ Argentinos įsilaužėlis Alfredo Ortega pademonstravo labai įdomią plėtrą – slapto patalpų pasiklausymo nenaudojant mikrofono sistemą. Garsas įrašyti tiesiai į standųjį diską!

HDD daugiausia fiksuoja didelio intensyvumo žemo dažnio garsus, žingsnius ir kitas vibracijas. Žmogaus kalbos dar negalima atpažinti, nors mokslininkai atlieka tyrimus šia kryptimi (kalbos atpažinimas naudojant žemo dažnio virpesius, kurie įrašomi, pavyzdžiui, iš giroskopo ar HDD).

Garsas yra oro ar kitos terpės vibracija. Žmogus juos suvokia per ausies būgnelį, kuris perduoda vibracijas į vidinę ausį. Mikrofonas sukurtas maždaug kaip ausis – čia irgi vibracijas fiksuoja plona membrana, kuri sužadina elektrinį impulsą. Kietasis diskas, žinoma, taip pat yra veikiamas mikroskopinių vibracijų dėl aplinkos oro svyravimų. Tai žinoma net iš HDD techninių charakteristikų: gamintojai dažniausiai nurodo didžiausią leistiną vibracijos lygį, o pats kietasis diskas dažnai bando jį įdėti į vibracijai atsparų konteinerį iš gumos ar kitos izoliacinės medžiagos. Iš to nesunku daryti išvadą, kad garsus galima įrašyti naudojant HDD. Belieka tik išsiaiškinti, kaip.

Alfredo Ortega pasiūlė unikalią šoninio kanalo atakos versiją, būtent ataką laiku. Ši ataka pagrįsta prielaida, kad įrenginyje skirtingu laiku atliekamos skirtingos operacijos, priklausomai nuo pateiktų įvesties duomenų. Šiuo atveju „įvesties duomenys“ yra skaitymo galvutės ir HDD lėkštės virpesiai, kurie koreliuoja su aplinkos vibracijomis, tai yra su garsu. Taigi, išmatuojant skaičiavimo laiką ir atliekant statistinę duomenų analizę, galima išmatuoti galvos/lėkštės virpesius, taigi ir terpės vibracijas. Kuo ilgiau delsiama nuskaityti duomenis, tuo stipresnė HDD vibracija, taigi ir garsas.

Kaip išmatuoti kietojo disko vibraciją? Labai paprasta: tiesiog paleiskite sistemos skambutį read () — ir užrašykite laiką, kurio reikia atlikti. Šiuolaikinės operacinės sistemos leidžia nanosekundžių tikslumu nuskaityti sistemos skambučių laiką.

Informacijos nuskaitymo iš sektoriaus greitis priklauso nuo galvos ir lėkštės padėties, o tai koreliuoja su HDD korpuso vibracijomis. Tai viskas.

Statistinė analizė atliekama naudojant paprastą „Kscope“ įrankį. Kaip sakoma, viskas išradinga yra paprasta.

Kodėl neturėtumėte šaukti ant HDD
Kscope įrankis (stat() syscall)

„Kscope“ yra nedidelė priemonė, skirta vizualizuoti nedidelius sistemos skambučių vykdymo laiko skirtumus. Šaltinispaskelbta GitHub.

Atskiroje saugykloje HDD laikas yra programos versija, sukonfigūruota kietojo disko laiko atakai, tai yra, sukonfigūruota analizuoti sistemos skambutį read ().

Garso įrašymo naudojant HDD demonstravimas, Kscope programos veikimas

Atkurti vaizdo

Žinoma, kalbos taip suprasti nepavyks, tačiau HDD gana tinka kaip vibracijos jutiklis. Pavyzdžiui, galite užsiregistruoti, jei žmogus, avintis kietus batus ar basas, įėjo į kambarį su kompiuteriu (tikriausiai, jei užpuolikas avi minkštais sportbačiais arba ant grindų yra storas kilimas, HDD negalės registruoti vibracijų - tai verta patikrinti). Kompiuteris gali užregistruoti stiklo duženus ar kitus incidentus, kurių garsas yra stiprus. Tai reiškia, kad kietasis diskas gali būti tam tikra neteisėto įsibrovimo aptikimo sistema.

HDD žudikas

Beje, panaši technika gali būti naudojama ir standiesiems diskams išjungti. Tačiau čia mes nefiksuojame standžiojo disko vibracijų, o generuojame vibracijas, kurios perduodamos standžiajam diskui. Jei iš garsiakalbio grosite garsą dažniu, kuris rezonuoja su standžiojo disko dažniu, sistema netrukus išjungs įrenginį su įvesties/išvesties klaida (branduoliu). Linux (Tai visiškai išjungia standųjį diską po 120 sekundžių.) Pats standusis diskas gali būti negrįžtamai sugadintas.

Kodėl neturėtumėte šaukti ant HDD
Branduolys Linux Kietasis diskas išsijungė po 120 sekundžių rezonansinio garso atkūrimo per „Edifier r19u“ USB garsiakalbį. Garsiakalbis buvo įjungtas maždaug ketvirtadaliu savo galios (mažiau nei 100 mW) ir pastatytas 20 cm atstumu nuo kietojo disko, nukreiptas į stalą, kad sustiprintų vibracijas. Kadras iš... vaizdo įrašą su HDD žudiko demonstravimu

Įdomu, kad tokie „atakai“ prieš HDD kartais įvyksta visiškai atsitiktinai kasdieniame gyvenime. Pavyzdžiui, 2016 metų rugsėjį ING banko duomenų centras po gaisro pratybų buvo priverstas 10 valandų sustabdyti veiklą. Sugedo dešimtys standžiųjų diskų dėl didelio inertinių dujų, išsiskiriančių iš balionų esant aukštam slėgiui, garso. Garsas buvo labai stiprus (daugiau nei 130 dB), bet jūs net negalite šaukti ant standžiųjų diskų - tai padidina prieigos prie HDD delsą.

Žmonių rėkimo ant standžiųjų diskų duomenų centre demonstravimas. Latencijos matavimas

Atkurti vaizdo

Norėdami sukurti rezonansinį garsą, Alfredo Ortega parašė Python scenarijų, pavadintą HDD žudikas (vaizdo demonstravimas).

HDD žudiko scenarijus Jis yra gana mažas, todėl čia galite paskelbti visą jį.

"""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()

Šaltinis: www.habr.com

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster