Skip to content

aIR-Jumper

Ağ gözetim kameralarının kızılötesi LED'lerini, air-gapped network'lerden veri exfiltrate etmek ve içlerine komut infiltrate etmek için çift yönlü, insana görünmez bir gizli optik kanal olarak kullan.

Mechanism

Note

Modern güvenlik kameralarında gece görüşü için IR LED'ler bulunur ve image sensor'ları near-IR'a optik olarak duyarlıdır. Kritik olarak, IR ışığı insanlara görünmez ama kamera sensor'larına görünürdür, dolayısıyla IR dizisini yakıp söndürmek apaçık ortada saklanan gizli bir optik kanaldır. Exfiltration için değişmez nokta: ağa bağlı bir kamerayı kontrol eden bir host üzerindeki malware o kameranın IR LED'lerini (açık/kapalı, OOK) değiştirebilir ve IR yeteneğine sahip herhangi bir kameraya sahip dışarıdaki bir gözlemci yanıp sönmeleri kaydedip decode eder. Infiltration için değişmez nokta: dışarıdaki bir saldırgan gözetim kamerasına modüle edilmiş bir IR kaynağı (örneğin IR yayan bir lamba ya da başka bir kameranın LED'leri) tutar; içerideki malware o ışık kaynağının frame başına parlaklığını video stream'inden okur ve gelen komutları decode eder. Gözetim kameraları sıklıkla hem iç hem dış mekâna bakacak şekilde monte edildiği ve kamera network'ünde air gap'in karşısından erişilebilir olduğu için, hazır bir optik köprü oluştururlar.

Walkthrough

Exfiltration (data out)

# Pseudocode: malware drives the camera's IR LED via its control API.
# OOK: LED ON = 1, OFF = 0, held for one symbol period.
def exfiltrate(data_bits, symbol_ms):
    send_preamble()
    for bit in data_bits:
        camera.set_ir_led(bit)        # vendor API / ONVIF / firmware hook
        sleep_ms(symbol_ms)
    camera.set_ir_led(0)
Dışarıdaki bir saldırgan kamerayı bir kamera/telefonla kaydeder ve frame başına IR parlaklığını bit'lere geri demodüle eder.

Infiltration (commands in)

# Malware samples the average brightness of the camera's video frames.
def infiltrate(symbol_ms):
    bits = []
    for _ in range(N):
        frame = camera.capture()
        bits.append(1 if frame.mean_brightness() > THRESHOLD else 0)
        sleep_ms(symbol_ms)
    return decode(bits)   # external attacker flashed a modulated IR lamp
Beklenen sonuçlar (makaleden)
Exfiltration: ~20 bit/s per camera, range tens of meters
Infiltration: >100 bit/s per camera, range hundreds of meters to km
Channel:      near-IR, invisible to humans, recovered from video frames

Detection

Kameraları ortam ışığına bağlı olmayan anormal IR-LED değişimleri için izle; periyodik IR titremesi için video analytics; kamera software'inde firmware integrity kontrolleri; kamera IR kontrollerine erişen beklenmedik process'leri gözle.

Mitigation

Gece görüşünün gereksiz olduğu yerlerde IR LED'leri devre dışı bırak ya da fiziksel olarak kapat; kamera kontrol API'lerini kısıtla ve authenticate et; IR filtreleri yerleştir; kamera network'lerini segment'le; dışarıdan IR line-of-sight'ı engellemek için pencere filmleri ve panjurlar.

References