Skip to content

Fansmitter

Hoparlörsüz, air-gapped bir bilgisayardan CPU/GPU/chassis fan hızını modüle ederek akustik olarak veri sızdır; fan'ın blade-pass tonu yakındaki bir mikrofon tarafından yakalanır.

Mechanism

Neden çalışır

Güvenli ("audio-gapped") makinelerde, akustik exfiltration'ı bloklamak için çoğu zaman hoparlör yoktur. Ama hâlâ fan'ları (CPU, GPU, chassis) vardır ve software fan RPM'ini regüle edebilir. Dönen bir fan, blade pass frequency (BPF)'sinde — kabaca RPM/60 × number_of_blades — bir ton yayar ve RPM değiştiğinde bu ton kayar.

Bu akustik covert channel'ın leak/transmit/decode invariant'ı:

  • Leak/encode: malware, secret bit'leri iki (veya daha fazla) fan hızına map'ler. Fan'ı diyelim ki düşük bir RPM ile yüksek bir RPM arasında değiştirmek, iki ayrı BPF tonu üretir — akustik taşıyıcının bir frequency-shift / on-off keying'i.
  • Transmit: fan'ın mekanik gürültüsü, air gap boyunca ses olarak yayılır.
  • Decode: yakındaki bir mikrofon (örn. bir akıllı telefon) sesi kaydeder, bir FFT yapar, BPF tonunu takip eder ve frekansları bit'lere geri demap'ler.

Throughput çok düşüktür (ayarlara/mesafeye göre dakikada birkaç bit ile saniyede birkaç bit arasında), ama audio-gap varsayımını yener.

Walkthrough

Transmitter, bit'leri encode etmek için fan RPM'ini sürer (kavramsal; gerçek kontrol PWM/hwmon interface'i veya vendor firmware üzerinden olur):

# Conceptual: B-FSK by switching fan PWM between two duty cycles.
# Linux example via lm-sensors / hwmon pwm (paths are hardware-specific):
PWM=/sys/class/hwmon/hwmon2/pwm1     # 0-255 fan duty
enable_manual() { echo 1 > ${PWM}_enable; }
send_bit() { [ "$1" = "1" ] && echo 200 > $PWM || echo 90 > $PWM; sleep 2; }
enable_manual
for b in $BITSTREAM; do send_bit "$b"; done   # '1'=high RPM tone, '0'=low

Receiver, sesi kaydeder ve baskın düşük-frekans tonunu takip eder:

# Conceptual receiver: detect BPF tone, threshold to bits.
import numpy as np
spec = np.abs(np.fft.rfft(window))          # FFT of an audio window
tone = freqs[np.argmax(spec[bpf_band])]     # dominant blade-pass tone
bit  = 1 if tone > tone_threshold else 0
Beklenen demodülasyon (kavramsal)
audio window -> FFT -> BPF tone:
  ~1000 Hz band == '0' (low RPM),  ~1600 Hz band == '1' (high RPM)
a few bits/s over short distances

Detection

  • Anormal, pattern'lı fan-speed modülasyonu için akustik monitoring; fan RPM değişikliklerini thermal load ile ilişkilendirmek (açıklanamayan RPM dalgalanmaları şüphelidir).

Mitigation

  • Güvenli ekipmanın yakınında mikrofon/telefon yasaklamak; fansız tasarımlar veya sabit hızlı fan'lar kullanmak; programatik fan kontrolünü yasaklayan software politikaları; odada akustik jamming/white noise.

References