
בכנס אבטחת המחשבים של Ekoparty 2017 בבואנוס איירס, הראה ההאקר הארגנטינאי אלפרדו אורטגה התפתחות מעניינת מאוד - מערכת להאזנת סתר לחצרים ללא שימוש במיקרופון. נשמע !
הדיסק הקשיח קולט בעיקר צלילים בתדר נמוך בעוצמה גבוהה, צעדים ורעידות אחרות. דיבור אנושי עדיין לא ניתן לזהות, אם כי מדענים (זיהוי דיבור על ידי רעידות בתדר נמוך, המוקלטות, למשל, מגירוסקופ או HDD).
צליל הוא רטט של אוויר או מדיום אחר. אדם קולט אותם דרך עור התוף, אשר מעביר רעידות לאוזן הפנימית. המיקרופון מעוצב בערך כמו אוזן - גם כאן תנודות מוקלטות על ידי קרום דק, שמעורר דחף חשמלי. הכונן הקשיח, כמובן, נתון גם לרעידות מיקרוסקופיות עקב תנודות באוויר שמסביב. זה ידוע אפילו מהמאפיינים הטכניים של דיסקים קשיחים: יצרנים מציינים בדרך כלל את רמת הרטט המרבית המותרת, והכונן הקשיח עצמו מנסה לעתים קרובות להניח אותו במיכל חסין רעידות עשוי גומי או חומר מבודד אחר. מכאן קל להסיק שניתן להקליט צלילים באמצעות HDD. כל מה שנותר הוא להבין איך.
אלפרדו אורטגה הציע גרסה ייחודית של התקפת ערוץ צדדי, כלומר התקפת זמן. התקפה זו מבוססת על ההנחה שפעולות שונות מבוצעות במכשיר בזמנים שונים, בהתאם לנתוני הקלט שניתנו. במקרה זה, "נתוני הקלט" הם הרעידות של ראש הקריאה ושל פלטת HDD, המתואמים עם תנודות הסביבה, כלומר עם הקול. כך, על ידי מדידת זמן החישוב וביצוע ניתוח סטטיסטי של הנתונים, ניתן למדוד את תנודות הראש/מגש ומכאן את תנודות המדיום. ככל שהעיכוב בקריאת נתונים ארוך יותר, כך תנודות HDD חזקות יותר, ולכן, הצליל חזק יותר.
כיצד למדוד רטט בכונן הקשיח? פשוט מאוד: פשוט הפעל את קריאת המערכת read () - ותעד את הזמן שלוקח להשלים. מערכות הפעלה מודרניות מאפשרות לך לקרוא את התזמון של שיחות המערכת בדיוק של ננו-שניות.
מהירות קריאת המידע ממגזר תלויה במיקום הראש והמגש, המתאם עם הרעידות של מארז HDD. זה הכל.
ניתוח סטטיסטי מתבצע באמצעות כלי עזר פשוט של Kscope. כמו שאומרים, הכל גאוני פשוט.

כלי השירות Kscope (stat() syscall)
Kscope הוא כלי עזר קטן להמחשת הבדלים זעירים בזמני ביצוע שיחות מערכת. מָקוֹר.
במאגר נפרד יש גרסה של כלי השירות שהוגדרה להתקפת זמן על הכונן הקשיח, כלומר מוגדרת לנתח את קריאת המערכת read ().
הדגמה של הקלטת קול באמצעות HDD, תפעול כלי השירות Kscope

כמובן שאי אפשר להבין את הדיבור בצורה זו, אבל ה- HDD מתאים למדי כחיישן רטט. לדוגמה, ניתן לרשום אם אדם נועל נעליים קשות או יחף נכנס לחדר עם מחשב (כנראה, אם התוקף נועל נעלי ספורט רכות או שיש שטיח עבה על הרצפה, הדיסק הקשיח לא יוכל לרשום רעידות - זה שווה בדיקה). המחשב מסוגל לרשום שבירות זכוכית או תקריות אחרות בעוצמת קול חזקה. כלומר, הכונן הקשיח יכול לשמש מעין מערכת זיהוי חדירה בלתי מורשית.
רוצח HDD
Кстати, схожую технику можно использовать для выведения из строя жёстких дисков. Только здесь мы не снимаем колебания с HDD, а наоборот — генерируем колебания, которые подаются на HDD. Если воспроизводить с колонки звук на частоте, которая резонирует с частотой HDD, то система вскоре отключает устройство с ошибкой ввода-вывода (ядро Linux полностью отключает HDD через 120 секунд). Сам жёсткий диск может получить необратимые повреждения.

הגרעין Linux отключило жёсткий диск после 120 секунд подачи звука на резонирующей частоте через динамик USB-колонки Edifier r19u. Динамик включен примерно на четверть мощности (менее 100 мВт) и располагается в 20 см от HDD, направлен на стол для усиления вибраций. Кадр из עם הדגמה של רוצח HDD
זה מוזר ש"התקפות" כאלה על דיסקים קשיחים מתרחשות לפעמים לגמרי בטעות בחיי היומיום. לדוגמה, בספטמבר 2016, מרכז הנתונים של בנק ING נאלץ להשעות את הפעילות למשך 10 שעות לאחר תרגיל כיבוי אש. עקב צליל חזק של גז אינרטי המשתחרר מהגלילים בלחץ גבוה. הצליל היה חזק מאוד (יותר מ-130 dB), אבל אתה אפילו לא יכול לצעוק על הכוננים הקשיחים - זה מגביר את העיכוב בגישה ל- HDD.
הדגמה של צרחות אנושיות על כוננים קשיחים במרכז נתונים. מדידת חביון

כדי ליצור את הצליל המהדהד, אלפרדו אורטגה כתב תסריט של Python בשם ().
הוא די קטן, אז אתה יכול לפרסם אותו במלואו כאן.
"""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
