[slovensky] [switch to English]
matej.sustr.sk / publikácie / články / cts dos mini-howto

CTS DoS Mini-HOWTO

Abstrakt: Výňatok z práce Analýza bezpečnosti štandardu IEEE 802.11. Popisuje princíp fungovania riadiacich rámcov RTS a CTS v sieti IEEE 802.11 a možnosť zneužitia rámcov CTS na útok za účelom zamietnutia služby. Navrhuje možnú obranu na úrovni firmware alebo ovládačov zariadení.

Nasledujúci text a obrázky sú z väčšej časti vyňaté z diplomovej práce Analýza bezpečnosti štandardu IEEE 802.11, kde je aj viac informácií k tejto téme.

Ako donútiť vašu bezdrôtovú kartu, aby vysielala v monitorovacom režime, by ste už mali vedieť. Ak nie, prečítajte si prosím moju prácu a/alebo ďalšiu literatúru.

Princíp RTS/CTS

znázornenie princípu RTS a CTS

Pre prítomnosť skrytých uzlov vo WLAN je v štandarde IEEE 802.11 na zamedzenie kolízii pri posielaní dlhších rámcov definovaná technika riadiacich rámcov Request To Send (RTS, požiadavka na vyslanie) a Clear To Send (CTS, dovolené vyslať).

Na obrázku je príklad použitia tejto techniky. STA1 a STA3 môžu byť navzájom mimo rádiového dosahu, teda STA1 nevie, či STA3 vysiela a naopak. Ak chce STA1 poslať dlhší rámec na AP a vyhnúť sa prípadnej kolízii, pošle najprv RTS s požiadavkou o "rezervovanie" kanála na istú dobu, danú poľom Duration v rámci (trvanie). AP následne odpovie rámcom CTS, ktorý vyhradí kanál na danú dobu (Duration) pre STA1. Tento rámec je poslaný všetkým staniciam, aby bolo zrejmé, že v danej dobe môže začať vysielať iba STA1 (identifikovaná pomocou MAC adresy v CTS rámci).

Flood CTS rámcov

CTS rámec je veľmi jednoduchý, určený na vyhradenie kanála na danú dobu. Posiela ho stanica alebo AP ako odpoveď na RTS rámec.

polia rámca CTS

Na obrázku je príklad CTS rámca - Frame Control: Type 1 (Control), Subtype 12 (Clear To Send), Flag bity nastavené na 0 (tu je možných viac prijateľných kombinácii). Pole Duration (trvanie) je udávané v mikrosekundách, platné hodnoty sú 0 až 32767, malý endián (menej signifikantný byte je prvý). V našom prípade ho nastavíme na veľkú hodnotu 32000, čo je v hexadecimálnom tvare 7D00.

Pre Receiver Address sú tiež možné alternatívy (existujúca adresa vrámci siete, neexistujúca adresa). Frame check sequence (FCS) je vypočítavaný obvykle až pri odosielaní (hardware-ovo), a preto nás nezaujíma.

Realizácia CTS útoku

Možné sú viaceré varianty útoku, s rôzne nastavenými flag bitmi v poli Frame Control, a s rôznymi MAC adresami. Na odosielanie rámca

C400007D010203040506

s falošnou MAC adresou použijeme utilitu framespam napríklad takto:

# echo -en "\0304\0\0\0175\01\02\03\04\05\06" \
  | ./framespam -i rausb0
  
Frame Spammer, version 0 -- send an IEEE802.11 raw frame multiple times
Copyright (c) 2007, Matej Sustr

Info:   Sending many frames (delay 10000 us)
......

Experimentálne výsledky

Pri pauze 10ms medzi jednotlivými CTS je už sieť úplne vyradená z prevádzky (zasiahnuté stanice/AP nemôžu vysielať), okrem prípadu keď je tento útočný CTS rámec stratený.

Detaily viď. diplomová práca, časť 6.3.3.

Obrana voči RTS/CTS útokom

Účinnou obranou voči RTS/CTS útokom môže byť:

  • nedodržanie štandardu a ignorovanie CTS rámcov a hodnoty Duration všeobecne - na úkor zvýšenia kolízii pri prítomnosti skrytých uzlov,
  • analýza rámcov a stanovenie, či je Duration rozumná hodnota (pre každý rámec, nielen CTS) - pre NAV používať iba rozumné hodnoty.

Uvedené spôsoby by musel implementovať výrobca zariadení (u niektorých možno postačí úprava ovládačov). IEEE by mohlo v budúcom 802.11w (alebo niektorom ďalšom) definovať nejaký spôsob ochrany voči týmto útokom. Šifrovanie, resp. podpisovanie riadiacich rámcov je však problematické, keďže v zdieľanom pásme by mali vedieť súčasne pracovať viaceré nezávislé siete.

Wireless IDS môže pomôcť útok odhaliť a upozorniť naň administrátora, ak zariadenie použité na odchyt rámcov vie posúvať vyšším vrstvám aj riadiace rámce (pre rt2500 viď. napr. driver/rt2500-allframes.patch v balíku diplomovej práce).