Waarom je niet tegen je harde schijf moet schreeuwen

Waarom je niet tegen je harde schijf moet schreeuwen

Op de computerbeveiligingsconferentie Ekoparty 2017 in Buenos Aires liet de Argentijnse hacker Alfredo Ortega een zeer interessante ontwikkeling zien: een systeem voor het heimelijk afluisteren van gebouwen zonder gebruik van een microfoon. Geluid rechtstreeks op de harde schijf opgenomen!

De HDD vangt voornamelijk laagfrequente geluiden, voetstappen en andere trillingen met een hoge intensiteit op. Menselijke spraak kan nog niet worden herkend, hoewel wetenschappers dat wel doen doen onderzoek in deze richting (spraakherkenning door laagfrequente trillingen, die bijvoorbeeld worden opgenomen vanaf een gyroscoop of HDD).

Geluid is de trilling van lucht of een ander medium. Een persoon neemt ze waar via het trommelvlies, dat trillingen naar het binnenoor overbrengt. De microfoon is grofweg als een oor ontworpen - ook hier worden trillingen geregistreerd door een dun membraan, dat een elektrische impuls opwekt. De harde schijf is uiteraard ook onderhevig aan microscopische trillingen als gevolg van schommelingen in de omgevingslucht. Dit is zelfs bekend uit de technische kenmerken van HDD's: fabrikanten geven meestal het maximaal toegestane trillingsniveau aan, en de harde schijf zelf probeert deze vaak in een trillingsbestendige container van rubber of ander isolatiemateriaal te plaatsen. Hieruit kan gemakkelijk worden geconcludeerd dat geluiden kunnen worden opgenomen met behulp van de HDD. Het enige dat overblijft is uitzoeken hoe.

Alfredo Ortega stelde een unieke versie van een zijkanaalaanval voor, namelijk een tijdaanval. Deze aanval is gebaseerd op de veronderstelling dat er op verschillende tijdstippen verschillende bewerkingen op het apparaat worden uitgevoerd, afhankelijk van de gegeven invoergegevens. In dit geval zijn de “invoergegevens” de trillingen van de leeskop en de HDD-schijf, die correleren met de trillingen van de omgeving, dat wil zeggen met geluid. Door de rekentijd te meten en een statistische analyse van de gegevens uit te voeren, kunnen dus de trillingen van de kop/schotel en daarmee de trillingen van het medium worden gemeten. Hoe langer de vertraging bij het lezen van gegevens, hoe sterker de HDD-trillingen en dus hoe luider het geluid.

Hoe trillingen van harde schijven meten? Heel eenvoudig: voer gewoon de systeemoproep uit read () - en registreer de tijd die nodig is om te voltooien. Met moderne besturingssystemen kunt u de timing van systeemoproepen met een nauwkeurigheid van nanoseconden aflezen.

De snelheid waarmee informatie uit een sector wordt gelezen, hangt af van de positie van de kop en de schotel, wat correleert met trillingen van de HDD-behuizing. Dat is alles.

Statistische analyse wordt uitgevoerd met behulp van een eenvoudig Kscope-hulpprogramma. Zoals ze zeggen, alles wat ingenieus is, is eenvoudig.

Waarom je niet tegen je harde schijf moet schreeuwen
Kscope-hulpprogramma (stat() syscall)

Kscope is een klein hulpprogramma voor het visualiseren van kleine verschillen in de uitvoeringstijden van systeemaanroepen. Brongepubliceerd op GitHub.

In een aparte opslagplaats HDD-tijd er is een versie van het hulpprogramma geconfigureerd voor een tijdaanval op de harde schijf, dat wil zeggen geconfigureerd om de systeemoproep te analyseren read ().

Demonstratie van geluidsopname met behulp van HDD, bediening van het Kscope-hulpprogramma


Op deze manier kan spraak natuurlijk niet worden begrepen, maar de HDD is prima geschikt als trillingssensor. U kunt bijvoorbeeld registreren of een persoon die harde schoenen draagt ​​of op blote voeten een kamer binnenkomt met een computer (als de aanvaller zachte sportschoenen draagt ​​of er een dik tapijt op de vloer ligt, kan de HDD waarschijnlijk geen trillingen registreren - dit is de moeite waard om te controleren). De computer is in staat gebroken glas of andere incidenten met een sterke geluidsintensiteit te registreren. Dat wil zeggen dat de harde schijf kan dienen als een soort detectiesysteem voor ongeoorloofde inbraak.

HDD-moordenaar

Overigens kan een soortgelijke techniek worden gebruikt om harde schijven uit te schakelen. Alleen verwijderen we hier geen oscillaties van de HDD, maar genereren we integendeel oscillaties die naar de HDD worden gevoerd. Als je geluid uit een luidspreker afspeelt op een frequentie die resoneert met de HDD-frequentie, schakelt het systeem het apparaat snel uit met een I/O-fout (de Linux-kernel schakelt de HDD na 120 seconden volledig uit). De harde schijf zelf kan onherstelbare schade oplopen.

Waarom je niet tegen je harde schijf moet schreeuwen
De Linux-kernel schakelde de harde schijf uit na 120 seconden geluid op een resonante frequentie via de luidspreker van de Edifier r19u USB-luidspreker te hebben geleverd. De speaker gaat aan op ongeveer een kwart van het vermogen (minder dan 100 mW) en bevindt zich op 20 cm van de HDD, gericht op de tafel om trillingen te versterken. Kader van Film met een demonstratie van de HDD-killer

Het is merkwaardig dat dergelijke ‘aanvallen’ op harde schijven in het dagelijks leven soms volledig per ongeluk plaatsvinden. In september 2016 werd het datacentrum van ING Bank bijvoorbeeld gedwongen de activiteiten tien uur lang op te schorten na een brandoefening. Tientallen harde schijven zijn defect door het luide geluid van inert gas dat onder hoge druk uit cilinders vrijkomt. Het geluid was erg luid (meer dan 130 dB), maar je kunt niet eens tegen de harde schijven schreeuwen - dit vergroot de vertraging bij de toegang tot de harde schijf.

Demonstratie van menselijk geschreeuw tegen harde schijven in een datacenter. Latentiemeting


Om het resonerende geluid te genereren, schreef Alfredo Ortega een Python-script genaamd hdd-killer (videodemonstratie).

HDD killer-script Het is vrij klein, dus je kunt het hier in zijn geheel publiceren.

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

Bron: www.habr.com

Voeg een reactie