Skip to content

AiR-ViBeR

Aynı yüzeyde duran bir smartphone'un accelerometer'ı tarafından algılanan, fan kaynaklı yüzey titreşimlerini kontrol ederek air-gapped bir bilgisayardan veri exfiltrate et.

Mechanism

Note

Bir bilgisayarın soğutma fanları kontrol edilebilir bir RPM'de döner ve ortaya çıkan mekanik dengesizlik titreşimi chassis'e ve üzerinde durduğu yüzeye (masa/tezgâh) bağlar. Değişmez nokta: fan RPM'i bir low-frequency titreşim tonu belirler ve software (embedded controller / thermal interface'ler üzerinden) fan hızını değiştirebilir, dolayısıyla software titreşimi kontrol eder. Aynı yüzeyde duran bir smartphone'da bu titreşimlere duyarlı bir MEMS accelerometer vardır. Kritik olarak, Android/iOS'ta accelerometer "zero-permission" bir sensor olarak ele alınır — herhangi bir uygulama onu kullanıcı onayı olmadan örnekleyebilir — bu da alıcıyı gizli kılar. Bir low-frequency titreşim carrier'ı üzerinden bit'leri encode etmek (örneğin 0/1'i iki fan-hızı setpoint'ine eşlemek) malware'in iletmesini sağlar; telefon uygulaması tonu kurtarıp demodüle etmek için accelerometer stream'ine FFT uygular.

Walkthrough

Verici: air-gapped host üzerinde fan hızını modüle eden malware. Alıcı: aynı masada accelerometer'ı okuyan kötü niyetli bir telefon uygulaması.

// Transmitter: B-FSK over fan RPM. Two setpoints -> two vibration tones.
void send_bit(int bit) {
    int rpm = bit ? RPM_HIGH : RPM_LOW;     // e.g. write to PWM / hwmon
    set_fan_speed(rpm);                     // platform fan-control interface
    msleep(SYMBOL_MS);                      // hold for one symbol
}
# Receiver (Android app): sample accelerometer, FFT, threshold the carrier bin.
def recv():
    samples = read_accelerometer(rate_hz=SR, n=SYMBOL_SAMPLES)
    spectrum = np.fft.rfft(samples - np.mean(samples))
    p_high = abs(spectrum[bin_for(F_HIGH)])
    p_low  = abs(spectrum[bin_for(F_LOW)])
    return 1 if p_high > p_low else 0
Beklenen sonuçlar (makaleden)
Carrier:    low-frequency surface vibration (fan-induced)
Modulation: fan-speed (RPM) keying
Receiver:   smartphone MEMS accelerometer (no permission required)
Bit rate:   ~0.5 bit/s
Constraint: phone must share the surface with the host

Detection

Thermal load'la korelasyonsuz, software güdümlü fan-hızı modülasyonunu gözle; fan-control interface'lerine erişimi kısıtla; sürekli periyodik RPM desenlerini izle.

Mitigation

Fan-control (embedded controller / hwmon) erişimini kilitle; chassis-yüzey couplingini mekanik olarak izole et ya da sönümle; güvenli makinelerle aynı yüzeyde telefonları yasakla; motion sensor'lar için OS düzeyinde rate limiting / permission-gating.

References