لماذا لا يمكنك الصراخ على قرصك الصلب

لماذا لا يمكنك الصراخ على قرصك الصلب

في مؤتمر أمن الكمبيوتر Ekoparty 2017 في بوينس آيرس، أظهر المتسلل الأرجنتيني ألفريدو أورتيجا تطورًا مثيرًا للاهتمام للغاية - نظام للتنصت السري على المباني دون استخدام الميكروفون. صوت سجلت مباشرة على القرص الصلب!

يلتقط محرك الأقراص الثابتة بشكل أساسي الأصوات ذات التردد المنخفض عالية الكثافة وخطوات الأقدام والاهتزازات الأخرى. لا يمكن حتى الآن التعرف على الكلام البشري، على الرغم من العلماء وتجري أبحاثًا في هذا الاتجاه (التعرف على الكلام عن طريق الاهتزازات منخفضة التردد، والتي يتم تسجيلها، على سبيل المثال، من الجيروسكوب أو الأقراص الصلبة).

الصوت هو اهتزاز الهواء أو وسط آخر. ويدركها الإنسان من خلال طبلة الأذن التي تنقل الاهتزازات إلى الأذن الداخلية. تم تصميم الميكروفون تقريبًا مثل الأذن - وهنا أيضًا يتم تسجيل الاهتزازات بواسطة غشاء رقيق يثير نبضًا كهربائيًا. وبطبيعة الحال، يتعرض القرص الصلب أيضًا للاهتزازات المجهرية بسبب تقلبات الهواء المحيط به. وهذا معروف حتى من خلال الخصائص التقنية لمحركات الأقراص الصلبة: تشير الشركات المصنعة عادةً إلى الحد الأقصى لمستوى الاهتزاز المسموح به، وغالبًا ما يحاول القرص الصلب نفسه وضعه في حاوية مقاومة للاهتزاز مصنوعة من المطاط أو أي مادة عازلة أخرى. من هذا فمن السهل أن نستنتج أنه يمكن تسجيل الأصوات باستخدام الأقراص الصلبة. كل ما تبقى هو معرفة كيف.

اقترح ألفريدو أورتيجا نسخة فريدة من هجوم القناة الجانبية، أي الهجوم الزمني. يعتمد هذا الهجوم على افتراض أنه يتم تنفيذ عمليات مختلفة على الجهاز في أوقات مختلفة، اعتمادًا على البيانات المدخلة المقدمة. في هذه الحالة، "بيانات الإدخال" هي اهتزازات رأس القراءة وطبق القرص الصلب، والتي ترتبط باهتزازات البيئة، أي مع الصوت. وبالتالي، من خلال قياس وقت الحساب وإجراء تحليل إحصائي للبيانات، يمكن قياس اهتزازات الرأس/الطبق وبالتالي اهتزازات الوسط. كلما زاد التأخير في قراءة البيانات، زادت قوة اهتزازات محرك الأقراص الثابتة، وبالتالي ارتفع الصوت.

كيفية قياس اهتزاز القرص الصلب؟ بسيط جدًا: فقط قم بإجراء مكالمة النظام read () - وتسجيل الوقت المستغرق لإكماله. تسمح لك أنظمة التشغيل الحديثة بقراءة توقيت مكالمات النظام بدقة نانو ثانية.

تعتمد سرعة قراءة المعلومات من القطاع على موضع الرأس والطبق، والذي يرتبط باهتزازات علبة محرك الأقراص الثابتة. هذا كل شئ.

يتم إجراء التحليل الإحصائي باستخدام أداة Kscope البسيطة. كما يقولون، كل شيء عبقري بسيط.

لماذا لا يمكنك الصراخ على قرصك الصلب
الأداة المساعدة Kscope (stat() syscall)

Kscope عبارة عن أداة مساعدة صغيرة لتصور الاختلافات الصغيرة في أوقات تنفيذ استدعاءات النظام. مصدرتم النشر على جيثب.

في مستودع منفصل وقت الأقراص الصلبة يوجد إصدار من الأداة المساعدة تم تكوينه للهجوم الزمني على القرص الصلب، أي أنه تم تكوينه لتحليل استدعاء النظام read ().

عرض تسجيل الصوت باستخدام HDD، تشغيل الأداة المساعدة Kscope

لعب الفيديو

بالطبع، لا يمكن فهم الكلام بهذه الطريقة، لكن محرك الأقراص الصلبة مناسب تمامًا كمستشعر للاهتزاز. على سبيل المثال، يمكنك التسجيل إذا دخل شخص يرتدي أحذية صلبة أو حافي القدمين إلى غرفة بها جهاز كمبيوتر (ربما، إذا كان المهاجم يرتدي أحذية رياضية ناعمة أو كانت هناك سجادة سميكة على الأرض، فلن يتمكن محرك الأقراص الصلبة من تسجيل الاهتزازات - وهذا يستحق التدقيق). يستطيع الكمبيوتر تسجيل الزجاج المكسور أو الحوادث الأخرى بكثافة صوت قوية. وهذا يعني أن القرص الصلب يمكن أن يكون بمثابة نوع من نظام كشف التسلل غير المصرح به.

قاتل الأقراص الصلبة

بالمناسبة، يمكن استخدام تقنية مشابهة لتعطيل محركات الأقراص الصلبة. ولكن هنا، لا نلتقط الاهتزازات الصادرة من القرص الصلب، بل نولد اهتزازات تُرسل إليه. إذا شغّلتَ صوتًا من مكبر صوت بتردد يتردد مع تردد القرص الصلب، فسيقوم النظام بإيقاف تشغيل الجهاز فورًا بسبب خطأ في الإدخال/الإخراج (في نواة النظام). Linux (هذا يؤدي إلى إيقاف تشغيل القرص الصلب تمامًا بعد 120 ثانية.) قد يتعرض القرص الصلب نفسه لتلف لا يمكن إصلاحه.

لماذا لا يمكنك الصراخ على قرصك الصلب
جوهر Linux أُغلق القرص الصلب بعد 120 ثانية من تشغيل الصوت بتردد رنيني عبر مكبر الصوت Edifier r19u USB. كان مكبر الصوت يعمل بربع طاقته تقريبًا (أقل من 100 ميلي واط) وموضوعًا على بُعد 20 سم من القرص الصلب، وموجهًا نحو الطاولة لتضخيم الاهتزازات. فيديو مع مظاهرة للقاتل HDD

من الغريب أن مثل هذه "الهجمات" على محركات الأقراص الثابتة تحدث أحيانًا عن طريق الصدفة في الحياة اليومية. على سبيل المثال، في سبتمبر 2016، اضطر مركز بيانات بنك ING إلى تعليق العمليات لمدة 10 ساعات بعد تدريب على الحريق. لقد فشلت العشرات من محركات الأقراص الصلبة بسبب الصوت العالي للغاز الخامل المنبعث من الأسطوانات تحت ضغط مرتفع. كان الصوت مرتفعًا جدًا (أكثر من 130 ديسيبل)، لكن لا يمكنك حتى الصراخ على محركات الأقراص الثابتة - فهذا يزيد من التأخير في الوصول إلى محرك الأقراص الثابتة.

مظاهرة لصراخ الإنسان على محركات الأقراص الثابتة في مركز البيانات. قياس الكمون

لعب الفيديو

لتوليد الصوت الرنان، كتب ألفريدو أورتيجا نصًا بلغة بايثون يسمى الأقراص الصلبة القاتل (مظاهرة الفيديو).

البرنامج النصي القاتل 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

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster