NetMag
NetMag Daily


Anketa
Bazar
Consulting
FAQ
Help!
NetMag Postou
O nas a NetMagu
Obsah cisel
Registrace
Reklama u nas


NetTip
Lamers List
LiterNet
CzechCraft
NC InfoCentrum
Unix InfoCentrum
Peering v Cechach
Postavte si PC


TechNet
AdBanner
Digit Server
FSG
ISDN
Megaprint
Mobil Server
Notebooky
Vztlak

 

Security: IP Spoofing
by Radim Kolar


DECLAIMER

Pro Vasi informaci: Vyroba tohoto clanku vcetne vyzkouseni der trvala 3 hodiny, po sobe jsem si to neprecetl. Vazte si toho, kolik jsem vam venoval casu. Pokud chcete lepsi, detailnejsi, ci ja vim co jeste, clanky, tak zaridte, aby mne je nekdo zaplatil. NetMag i presto, ze vas otravuje reklamou, negeneruje (nebo o tom nevim) zadny income. Co se tyce mne osobne, tak NM je pro mne ztratova cinnost a cte jej na muj vkus prilis mnoho lidi, ktere se snazim vyhnat pryc vsemi prostredky, abych si sem, kdyz uz to nedostanu zaplacene, mohl psat clanky, ktere by mne vyhovovaly. Desne mne stve, ze si nemuzu ani sem napsat co bych chtel a tak to posilam do CZDU News, ktere maji v soucasne dobe 34 ctenaru.

Dale bych chtel podekovat firme DATAC presneji receno nekomu z info@bohemia.net, za opravdu necekanou odpoved na muj mail. Dekuji za vskutku nemeritelny stupen vami projevene ochoty a oznamuji vam, ze jste ve mne ziskali velmi ochotneho spolupracovnika, ktery ovsem nikdy nebude spolupracovat s vami.

Dneska na programu nemame zadny konkretni utok (bohuzel), ale techniku umoznujici posilat IP packety s cizi identifikaci. Tato technika se da kombinovat s ruznymi typy utoku, coz cini zivot napadene strany zajimavejsi, protoze nevi, kdo na ni utoci ( v logu ma napsane same hezke adresy jako 1.2.3.4).

Takze predpokladejme, ze umime poslat packet s cizi IP adresou ve hlavicce. Jako odesilatele musite zvolit pri TCP Spoofingu neaktivni IP adresu, protoze by jinak napadeny stroj dostaval RST packety, coz jeho napadeni znemozni. Takze nejriv vyradit prislusny stroj z provozu jinym utokem. Dnes funkcnich utoku, ktere umi toto udelat vsak neni mnoho a tak je TCP spoofing z aktivni IP adresy prakticky nemozny. Pri UDP spoofingu je to vsak jedno.

Pri spoofingu musite pocitat s tim, ze neuvidite odpoved ciloveho stroje a musite pracovat naslepo. Pokud vsak pres vas stroj, ze ktereho utocite, chodi packety mezi napadenym serverem a vymyslenym odesilatelem, neni nutne pouzivat spoofing, pro dosazeni stejneho efektu s mnohem mensim (prekladejte jako zadnym) usilim staci pouzit techniku transparent proxy, ci pripadne aliasing. Linux podporuje pro jistotu oboji.

Jak jiste vite, posilani IP packetu s cizi adresou je nam v praxi uplne k nicemu. Proto je nutne do IP packetu neco zabalit. Nejpouzivanejsi protokoly jsou UDP a TCP.

UDP Spoofing

Vzhledem k tomu, ze na urovni UDP protokolu zadne spojeni neexistuje - spojeni vytvari az aplikacni vrstva, je spoofing UDP naprosto bez problemu. Odeslete proste jen packet a o nic vic se nestarate. UDP Spoofing je velmi vhodny napr. pro spoofovani SNMP packetu, protoze jedina autorizace je u nich (tedy u verze 1) zalozena na IP adrese odesilatele a tu falsujeme.

TCP Spoofing

Je mnohem slozitejsi realizovat nez UDP Spoofing. Vzhledem k tomu, ze se musi na packety odpovidat. Samotny proces odpovidani na packety neni zadny problem, proste obcas nejakou tu odpoved naslepo posleme. Problem je, ze potrebujeme vedet SEQUENCE NUMBER, ktery vygeneruje napadeny stroj v okamziku prichoziho spojeni.

Cely problem TCP Spoofingu spociva v tom, jak toto cislo uhodnout a cela obrana proti nemu spociva v dostatecne nahodnem generovani tohoto cisla tak, aby utocnik nemel zadnou sanci se do nej trefit. Toto cislo je 4 bajtove a tak to vypada, ze by mel byt velky problem se do nej netrefit. Bohuzel v urcitych systemech je mozno toto cislo uhodnout z cisel pouzitych v predchozim spojeni a to budto tak, ze zname algoritmus pro generaci techto cisel (obvykle Gaussuv) a vypocitame seed, nebo proste proto, ze napadeny system prirazuje tyto cisla sekvencne. Systemy u kterych mate velmi vysoke sance uspesneho TCP Spoofingu jsou Windows 95/NT (nejake verze), OS/2 (vsechny dosavadni verze), AIX (testovano pouze s 4.1, takze nemuzu slouzit zda jsou derave vsechny), HP-UX (verze 9 a 10). Velmi male (zadne) sance mate u Linuxu a BSD. Zbytek systemu jsem netestoval, ostatne tcpdumpem (ja mam na to C/ term) to snadno a rychle zjistite sami. Uplnou raritu tvori systemy, ktere maji toto cislo vzdy konstatni (obvykle zacinaji cislovat od nuly) - TCP/IP stack On Netu od firmy FTP Software a MS-Kermit for DOS.

Spoofing a firewally

Zatim jsem nevidel firewall, ktery by precislovaval Sequence numbers v odchazejicich packetech nejakym svym kryptograficky silnym algoritmem, ale teoreticky mozne takovy firewall vytvorit. Pokud se jedna o lividaci incomming spoofovanych packetu, tak firewal nema moc moznosti jak zjistit, zda opravdu nejsou falesne. Zda jsou TCP packety spoofovane lze velmi elegantne overovat FIN packety. (Nejak moc zvanim) Moznost nepravdiveho identifikovani packetu jako spoofovaneho je v podstate vyloucena. Jediny mne znamy system, ktery tuto techniku pouziva, je routovaci system pouzivany v siti Cyberspace, pri prenosu dat pres Internet.

Technicka stranka veci

Pro posilani packetu s cizi IP adresou ve hlavicce je nutne pouzit RAW_SOCKETY (na Unixu to muze jen superuzivatel, coz potesi):
        if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) < 0) {
                perror("socket");
                exit(1);
        }
RAW socket se jeste musi ve vetsine pripadu (prekladejte jako vzdycky) podporit optionem IP_HDRINCL, coz nekdy byva (nastesti) v praxi problem, protoze ne kazdy TCP stack jej podporuje.
if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) {
        perror("IP_HDRINCL");
        exit(1);
}
Tento option neni podporovan ve Windows, OS/2 a AIXu, HP-UXu. Seznam neni uplny, vychazim jen z toho, kde jsem to zkousel.

Dalsi technicky problem je, jak moc TCP stack kontroluje packety, ktere chcete pres RAW socket poslat. Muze se stat (OS/2, AIX - ostatni jsem netestoval), ze vam odmitne spoofovany packet poslat, protoze se jeho adresa neshoduje s adresou zadneho interface a tudiz TCP stack nevi, pres ktery interface ho ma poslat. Tento problem se obvykle resi technikou zvanou ip aliasing (to neni utok).

Zaver

TCP spoofing je nastesti ponekud narocna prakticky realizovatelna metoda, takze se s nim v praxi setkate velmi malo. Nikdo nebude napadavat vas stroj obtiznejsi metodou, kdyz existuji desitky jednodusich. Mnohem jednodusi je pro utocnika dostat pod kontrolu nejaky bod, pres ktery behaji vase data - typicky nejaky pocitac ci router umisteny na paterni siti u ISP. Dosahne tam maximalniho efektu shodneho s IP spoofingem s minimalnim usilim. I presto, ze je obrana proti TCP spoofingu velmi jednoducha, je jeste stale hodne systemu napadnutelnych. Je to lenost vyrobcu a je videt jak moc jsou na tom free systemy lepe - vyhoda dostupneho zdrojoveho kodu je obrovska.

Hodnoceni clanku
(hodnoceni je jako ve skole, 1 je nejlepsi, 5 je nejhorsi)

12345

Email:
Komentar:
Nepouzivejte prosim diakritiku.
Souhlasim se zverejnenim komentare v NetMagu