چرا نباید سر HDD خود فریاد بزنید؟

چرا نباید سر HDD خود فریاد بزنید؟

در کنفرانس امنیت کامپیوتر Ekoparty 2017 در بوئنوس آیرس، هکر آرژانتینی آلفردو اورتگا پیشرفت بسیار جالبی را نشان داد - سیستمی برای استراق سمع مخفی از اماکن بدون استفاده از میکروفون. صدا به طور مستقیم روی هارد دیسک ضبط می شود!

هارد دیسک عمدتا صداهای با فرکانس پایین با شدت بالا، ردپاها و سایر ارتعاشات را دریافت می کند. گفتار انسان هنوز قابل تشخیص نیست، اگرچه دانشمندان در حال انجام تحقیقات در این راستا هستند (تشخیص گفتار با ارتعاشات فرکانس پایین، که مثلاً از ژیروسکوپ یا HDD ضبط می شود).

صدا ارتعاش هوا یا رسانه دیگری است. فرد آنها را از طریق پرده گوش درک می کند که ارتعاشات را به گوش داخلی منتقل می کند. میکروفون تقریباً شبیه یک گوش طراحی شده است - در اینجا نیز ارتعاشات توسط یک غشای نازک ثبت می شود که یک ضربه الکتریکی را تحریک می کند. هارد دیسک البته به دلیل نوسانات هوای اطراف در معرض ارتعاشات میکروسکوپی نیز قرار دارد. این حتی از مشخصات فنی هارد دیسک ها نیز مشخص است: تولید کنندگان معمولاً حداکثر سطح ارتعاش مجاز را نشان می دهند و خود هارد دیسک اغلب سعی می کند آن را در یک ظرف ضد لرزش ساخته شده از لاستیک یا سایر مواد عایق قرار دهد. از این به راحتی می توان نتیجه گرفت که صداها را می توان با استفاده از HDD ضبط کرد. تنها چیزی که باقی می ماند این است که بفهمیم چگونه.

آلفردو اورتگا یک نسخه منحصر به فرد از یک حمله کانال جانبی، یعنی حمله زمانی را پیشنهاد کرد. این حمله بر این فرض استوار است که بسته به داده های ورودی داده شده، عملیات های مختلفی در زمان های مختلف بر روی دستگاه انجام می شود. در این مورد، "داده های ورودی" ارتعاشات سر خواندن و صفحه HDD است که با ارتعاشات محیط، یعنی با صدا ارتباط دارد. بنابراین، با اندازه‌گیری زمان محاسبات و انجام تجزیه و تحلیل آماری داده‌ها، ارتعاشات هد/صفحه و در نتیجه ارتعاشات محیط قابل اندازه‌گیری است. هر چه تاخیر در خواندن اطلاعات بیشتر باشد، لرزش هارد دیسک قوی تر و در نتیجه صدا بلندتر می شود.

چگونه لرزش هارد دیسک را اندازه گیری کنیم؟ بسیار ساده: فقط تماس سیستم را اجرا کنید read () - و زمان لازم برای تکمیل را ثبت کنید. سیستم عامل های مدرن به شما این امکان را می دهند که زمان تماس های سیستمی را با دقت نانوثانیه بخوانید.

سرعت خواندن اطلاعات از یک بخش به موقعیت هد و پلاتر بستگی دارد که با ارتعاشات کیس HDD مرتبط است. همین.

تجزیه و تحلیل آماری با استفاده از ابزار ساده Kscope انجام می شود. همانطور که می گویند، همه چیز مبتکرانه ساده است.

چرا نباید سر HDD خود فریاد بزنید؟
ابزار Kscope (stat()syscall)

Kscope یک ابزار کوچک برای تجسم تفاوت های کوچک در زمان اجرای تماس سیستم است. منبعمنتشر شده در GitHub.

در یک مخزن جداگانه زمان HDD نسخه ای از ابزار برای حمله زمانی به هارد دیسک پیکربندی شده است، یعنی برای تجزیه و تحلیل تماس سیستم پیکربندی شده است. read ().

نمایش ضبط صدا با استفاده از HDD، عملکرد ابزار Kscope


البته نمی توان گفتار را به این شکل درک کرد، اما HDD به عنوان یک سنسور لرزش کاملا مناسب است. به عنوان مثال، اگر فردی که کفش های سخت یا پابرهنه پوشیده است با رایانه وارد اتاقی شد، می توانید ثبت نام کنید (احتمالاً اگر مهاجم کفش های کتانی نرم پوشیده باشد یا فرش ضخیم روی زمین باشد، HDD قادر به ثبت ارتعاشات نخواهد بود - این ارزش بررسی را دارد). کامپیوتر قادر است شیشه شکسته یا حوادث دیگر را با شدت صدای قوی ثبت کند. یعنی هارد دیسک می تواند به عنوان نوعی سیستم تشخیص نفوذ غیرمجاز عمل کند.

کشنده HDD

به هر حال، از یک تکنیک مشابه می توان برای غیرفعال کردن هارد دیسک ها استفاده کرد. فقط در اینجا ما نوسانات را از HDD حذف نمی کنیم، بلکه برعکس، نوساناتی را ایجاد می کنیم که به HDD تغذیه می شود. اگر صدا را از بلندگو با فرکانسی پخش کنید که با فرکانس HDD طنین انداز می شود، سیستم به زودی دستگاه را با خطای ورودی/خروجی خاموش می کند (هسته لینوکس پس از 120 ثانیه هارد دیسک را به طور کامل خاموش می کند). ممکن است خود هارد دیسک آسیب جبران ناپذیری ببیند.

چرا نباید سر HDD خود فریاد بزنید؟
هسته لینوکس پس از 120 ثانیه از ارائه صدا با فرکانس تشدید از طریق بلندگوی بلندگوی USB Edifier r19u، هارد دیسک را خاموش کرد. اسپیکر با حدود یک چهارم توان (کمتر از 100 مگاوات) روشن می شود و در فاصله 20 سانتی متری هارد دیسک قرار دارد و برای تقویت ارتعاش به سمت میز قرار گرفته است. قاب از ویدئو با نمایشی از قاتل HDD

عجیب است که چنین "حمله هایی" به هارد دیسک ها گاهی اوقات کاملاً تصادفی در زندگی روزمره اتفاق می افتد. به عنوان مثال، در سپتامبر 2016، مرکز داده بانک ING پس از یک مانور آتش نشانی مجبور شد عملیات خود را به مدت 10 ساعت متوقف کند. ده ها هارد دیسک از کار افتاده است به دلیل صدای بلند گاز بی اثر که تحت فشار زیاد از سیلندرها خارج می شود. صدا بسیار بلند بود (بیش از 130 دسی بل)، اما شما حتی نمی توانید روی هارد دیسک فریاد بزنید - این تاخیر در دسترسی به هارد دیسک را افزایش می دهد.

نمایش فریاد انسان روی هارد دیسک در مرکز داده. اندازه گیری تاخیر


برای تولید صدای طنین انداز، آلفردو اورتگا یک اسکریپت پایتون به نام نوشت hdd-قاتل (نمایش ویدیویی).

اسکریپت کشنده HDD بسیار کوچک است، بنابراین می توانید آن را به طور کامل در اینجا منتشر کنید.

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

منبع: www.habr.com

اضافه کردن نظر