BRIGHTNESS¶
Air-gapped bir workstation'dan, LCD ekran parlaklığında insan gözünün fark edemeyeceği kadar küçük değişiklikler yaparak veri exfiltrate et; bunları bir kamera kaydedip decode edebilir.
Mechanism¶
Note
Bir LCD'nin algılanan parlaklığı sürekli ve software ile kontrol edilebilen
bir değerdir (backlight seviyesi / per-pixel luminance). İnsanın görsel
sistemi küçük, kademeli parlaklık değişimlerine duyarsızdır, ama bir
kameranın image sensor'ı luminance'ı hassas biçimde integrate eder ve
algı-altı (sub-perceptual) delta'ları frame frame çözebilir. Değişmez nokta
şu: malware, görüntülenen image'ın ortalama luminance'ını birkaç yüzde
oranında — insanın just-noticeable-difference eşiğinin altında — modüle
edebilirken, bir kamera (yerel CCTV, webcam ya da ekrana doğrultulmuş bir
smartphone) ekranı kaydedip parlaklık time-series'ini geri kazanır. 1'i
biraz daha parlak bir frame'e, 0'ı biraz daha sönük bir frame'e map'lemek,
monitörü odadaki bir kişiye tamamen sabit görünen covert bir optik
transmitter'a dönüştürür.
Walkthrough¶
Transmitter: ekran luminance'ını ayarlayan malware. Receiver: ekranı gözleyen bir kamera; offline işleme her frame için ortalama parlaklığı çıkarır.
// Transmitter: OOK by nudging overall luminance by a sub-perceptual delta.
// Apply a faint full-screen overlay or scale the gamma/backlight.
void send_bit(int bit) {
float lum = bit ? (BASE + DELTA) : (BASE - DELTA); // DELTA a few %
set_screen_luminance(lum); // e.g. xrandr --brightness, or overlay alpha
sleep_ms(SYMBOL_MS); // hold one symbol period
}
# Receiver: decode the recorded video into bits via mean-frame brightness.
import cv2, numpy as np
def decode(video):
cap = cv2.VideoCapture(video); series = []
while True:
ok, frame = cap.read()
if not ok: break
series.append(frame.mean()) # average luminance per frame
series = np.array(series)
sync(series) # align to preamble
return [1 if s > threshold else 0 for s in sampled_symbols(series)]
Expected results (from the paper)
Detection¶
Periyodik düşük genlikli parlaklık flicker'ı için kamera tarafında analiz; gamma/backlight/overlay ayarlayan beklenmedik process'lerin host tarafında izlenmesi; hassas monitörlere line-of-sight'ı olan kameralar için policy yasakları.
Mitigation¶
Güvenli display'lere bakan kameraları kaldır ya da perdele; privacy filter'ları / polarizer'lar; sertleştirilmiş endpoint'lerde programatik parlaklık/overlay değişikliklerine izin verme; gizli bir carrier'ı maskelemek için randomize brightness dithering uygula.