Skip to content

USBee

Değiştirilmemiş bir USB cihazını, data bus'ına özel hazırlanmış byte stream'leri yazarak kısa menzilli bir RF verici'ye dönüştür — donanım implant'ı olmadan air-gapped bir host'tan veri exfiltrate et.

Mechanism

Neden çalışır

Bir USB connector'ün data line'ları (D+/D-) yüksek hızlı differential signaling taşır. Switching yapan herhangi bir dijital bus elektromanyetik enerji yayar ve o radyasyonun spektral içeriği, sürülen bit pattern'e bağlıdır. USBee (Guri, Monitz, Elovici — PST 2016), software'in normal bir USB cihazı üzerinden hangi byte'ların transfer edileceğini seçebileceğini ve böylece cihazın firmware ya da hardware modifikasyonu olmadan yayılan spektrumu kasıtlı olarak şekillendirebileceğini gözler. Bus'ı kontrollü bir hızda süren sequence'ler göndererek software 240–480 MHz band'ında emisyon üretir ve bu tür iki pattern arasında geçiş yaparak binary frequency-shift keying (B-FSK) gerçekleştirir — bir byte pattern'i = "0", diğeri = "1".

Sömürülen invariant: bir USB cihazının data bus'ı, istemsiz ama kontrol edilebilir bir anten'dir; carrier ve modulation, sıradan unprivileged software'in yayabileceği byte stream'inin deterministik bir fonksiyonudur. Bu bir air gap'i — ağ yok, özel peripheral yok — yakındaki bir software-defined-radio alıcısına köprüler ve fiziksel izolasyonu bir confidentiality boundary olmaktan çıkarır.

Walkthrough

USBee, (zaten ele geçirilmiş) air-gapped host üzerinde software olarak çalışır ve yakında bir GNU Radio alıcısı bulunur.

  1. Modüle et. Bir bit göndermek için USB cihazına özel hazırlanmış bir byte sequence'i yaz ki data bus o sembol için carrier'ı yaysın (B-FSK: iki ayrı byte pattern'i, 240–480 MHz aralığındaki iki FSK ton'una map'lenir).
  2. Veriyi çerçevele. Secret'ı (key, password) bir bitstream'e serialize et ve channel hızında bit bit ilet.
  3. Al. Yakındaki bir SDR, 240–480 MHz emisyonunu yakalar; bir GNU Radio flow'u B-FSK'yı geri bit'lere demodüle eder.
# Conceptual transmit loop on the air-gapped host (no device modification)
for bit in serialize(secret):
    pattern = TONE_1 if bit else TONE_0      # two byte patterns => two FSK tones
    write_to_usb_bus(pattern)                # drives D+/D-, radiates 240-480 MHz

# Receiver side: GNU Radio
#   SDR source -> band-pass (240-480 MHz) -> FSK demod -> framer -> bytes
Raporlanan parametreler
Carrier band:     240-480 MHz (USB high-speed data-bus emission)
Modulation:       binary FSK (B-FSK)
Throughput:       ~20-80 bytes/sec  (enough for a 4096-bit key in seconds)
Range:            ~few meters; up to ~8 m when a short USB cable acts as antenna
Receiver:         software-defined radio + GNU Radio demodulator
Requirement:      any unmodified USB device; unprivileged software on host

Detection

  • Hassas ekipman yakınında anormal B-FSK-şekilli emisyonlar için 240–480 MHz band'ının RF monitoring'i.
  • Host tarafı: işlevsel amacı olmayan olağandışı, pattern'li USB bus aktivitesi; USB device whitelisting ve data-transfer policy uygulaması.

Mitigation

  • Air-gapped sistemlerin Faraday shielding / TEMPEST zoning'i ve zorunlu RF ayrım mesafeleri.
  • USB cihazlarını korumalı host'lardan yasakla ya da fiziksel olarak çıkar; korumalı alanda signal-jamming ya da spectrum monitoring.

References