Pozor, hekerji (3)
Pregledovanje sistemov hekerji izvajajo običajno potem, ko so že podrobneje spoznali žrtev. Pogosto pa gre tudi za slepo pregledovanje, še posebej, kadar se pojavi nova ranljivost. Klasično pregledovanje poteka v treh stopnjah: najprej odkrivanje aktivnih sistemov, potem strežniških programov in končno vrste operacijskega sistema
Odkrivanje aktivnih sistemov
Potem, ko je heker spoznal omrežne naslove podjetja, je njegov naslednji korak preverjanje, na katerih naslovih so delujoči računalniki. Najstarejši način preverjanja, ali je na izbranem IP naslovu dosegljiv računalnik, je uporaba zahtev ICMP (Internet Control Management Protocol) echo. Sled take dejavnosti, zajete s programom tcpdump, kaže naslednji zgled:
11:02:25 iskanje.heker.si > 192.168.6.1: icmp: echo request
11:02:37 iskanje.heker.si > 192.168.6.2: icmp: echo request
11:02:51 iskanje.heker.si > 192.168.6.3: icmp: echo request
11:03:06 iskanje.heker.si > 192.168.6.4: icmp: echo request
11:03:25 iskanje.heker.si > 192.168.6.5: icmp: echo request
...
Ta način iskanja razpoložljivih računalnikov je počasen, obenem pa ga je enostavno odkriti. Tako pregledovanje je mogoče izvesti s programom ping, ki se nahaja praktično v vseh operacijskih sistemih na trgu. Obstajajo pa tudi bolj dodelana in/ali hitrejša orodja, kot je npr. orodje fping, ki je hitrejše in mu lahko podamo seznam naslovov IP v datoteki. Heker lahko uporabi tudi program nmap, ki je nekakšen "kralj" med pregledovalniki (scanners). S programom nmap je mogoče pregledati v omrežje vključene računalnike, kakor kaže naslednji zgled:
$ nmap -sP 192.168.1.0/24
Nekatera druga orodja za tovrstno pregledovanje so še: Pinger, Ping Sweep, WS_Ping ProPack, NetScanTools, Hping in icmpenum.
Drugi način iskanja aktivnih sistemov poteka z uporabo zahtev UDP echo, ki so lahko tudi prepletene z izmeničnim napadom na več omrežnih naslovov, tako da ta dejavnost ni tako opazna. Zgled take sledi je:
00:31:12 iskanje.heker.si.2056 > 192.168.134.117.echo: udp 6
00:37:30 iskanje.heker.si.2056 > 172.31.73.1.echo: udp 6
00:37:42 iskanje.heker.si.2056 > 172.31.16.152.echo: udp 6
00:41:15 iskanje.heker.si.2056 > 192.168.91.18.echo: udp 6
00:55:20 iskanje.heker.si.2056 > 172.31.2.176.echo: udp 6
01:01:34 iskanje.heker.si.2056 > 192.168.5.103.echo: udp 6
01:11:12 iskanje.heker.si.2056 > 172.31.152.254.echo: udp 6
01:11:52 iskanje.heker.si.2056 > 192.168.219.32.echo: udp 6
01:31:12 iskanje.heker.si.2056 > 172.31.158.86.echo: udp 6
Najpogostejši in najučinkovitejši način odkrivanja razpoložljivih računalnikov pa je široko razpošiljanje (broadcast) zahtev ICMP echo. Njegov vzorec je viden v naslednjem zapisu omrežnega prometa, ki ga posreduje pripomoček tcpdump:
01:23:44 iskanje.heker.si > 192.168.6.255: icmp: echo request
01:23:56 iskanje.heker.si > 192.168.6.0: icmp: echo request
01:30:41 iskanje.heker.si > 192.168.7.255: icmp: echo request
01:30:57 iskanje.heker.si > 192.168.7.0: icmp: echo request
01:38:14 iskanje.heker.si > 192.168.8.255: icmp: echo request
01:38:26 iskanje.heker.si > 192.168.8.0: icmp: echo request
01:45:21 iskanje.heker.si > 192.168.9.255: icmp: echo request
01:45:35 iskanje.heker.si > 192.168.9.0: icmp: echo request
Kakor vidimo, heker preizkuša računalnike, na katerih je zadnja številka naslova IP 0 oziroma 255. Na prvi oddajajo zahteve echo predvsem operacijski sistemi unix, na drugi pa Okna, tako da lahko na ta način določimo celo operacijski sistem. Zaradi tega je, če je le mogoče, najbolje s požarnim zidom blokirati prihajajoče zahteve ICMP echo. Žal pa običajno to ne zadošča, saj lahko vdiralec uporabi vrata, ki jih požarni zid ne blokira, na primer vrata 80 (spletni strežnik). Z nmapom je to mogoče storiti na naslednji način:
$ nmap -sP -PT80 192.168.10/24
Poleg blokade s požarnim zidom lahko uporabimo detektor vdorov, ki nas bo opozoril na pregledovanje računalnikov. Snortovo pravilo za detekcijo prvega načina iskanja aktivnih sistemov ($nmap -sP) je:
icmp $EXTERNAL_NET any -> $HOME_NET any
(msg:"ICMP PING NMAP"; dsize: 0;
itype: 8; reference:arachnids,162;
classtype:attempted-recon; sid:469; rev:1;)
Razlaga pravila:
Grafični vmesnik programa nmap
Odkrivanje delujočih omrežnih programov
Potem, ko je heker odkril IP naslov računalnika, skuša ugotoviti, katera vrata (ports) na njem so odprta. Odprta vrata pomenijo, da na njih omrežni program (npr. FTP, Telnet, HTTP, e-mail ...) sprejema zahteve po svojih storitvah. Izvedba protokola TCP/IP nudi 65536 TCP in 65536 UDP vhodno-izhodnih vrat. Glede na način preizkušanja vrat na računalniku ločimo več vrst pregledovanja. To so:
$ nmap -sS doma.eocene.net
povzroči naslednjo sled:
13:09:06.694127 streznik.eocene.net.55353 > doma.eocene.net.ftp-data: S
13:09:06.694251 streznik.eocene.net.55353 > doma.eocene.net.ftp: S
13:09:06.694298 streznik.eocene.net.55353 > doma.eocene.net.ssh: S
13:09:06.694343 streznik.eocene.net.55353 > doma.eocene.net.telnet: S
13:09:06.694389 streznik.eocene.net.55353 > doma.eocene.net.24: S
13:09:06.694438 streznik.eocene.net.55353 > doma.eocene.net.smtp:S
13:09:06.694483 streznik.eocene.net.55353 > doma.eocene.net.26: S
13:09:06.694531 streznik.eocene.net.55353 > doma.eocene.net.27: S
13:09:06.694983 doma.eocene.net.ftp-data > streznik.eocene.net.55353: R 0:0(0) ack
13:09:06.694986 doma.eocene.net.ssh > streznik.eocene.net.55353: R 0:0(0) ack
13:09:06.695015 doma.eocene.net.telnet > streznik.eocene.net.55353: R 0:0(0) ack
13:09:06.695017 doma.eocene.net.24 > streznik.eocene.net.55353: R 0:0(0) ack
13:09:06.695083 doma.eocene.net.26 > streznik.eocene.net.55353: R 0:0(0) ack
13:09:06.695085 doma.eocene.net.27 > streznik.eocene.net.55353: R 0:0(0) ack
13:09:06.695386 doma.eocene.net.ftp > streznik.eocene.net.55353: S 3878129664:3878129664(0) ack
13:09:06.695404 streznik.eocene.net.55353 > doma.eocene.net.ftp: R
V sledi je vidno, da so odprta vrata 21 (to je ftp), druga so zaprta.
Ta vrsta pregledovanja je najpogostejša, saj poleg tega, da je enostavna in deluje na vseh sistemih, ponekod ostane tudi neopažena, zato sodi med tako imenovane skrite (stealth) tehnike.
$ nmap -sT doma.eocene.net
Sled je naslednja:
16:59:06.763002 streznik.eocene.net.1105 > doma.eocene.net.ftp: S
16:59:06.763071 streznik.eocene.net.1106 > doma.eocene.net.ssh: S
16:59:06.763139 streznik.eocene.net.1107 > doma.eocene.net.telnet: S
16:59:06.763208 streznik.eocene.net.1108 > doma.eocene.net.24: S
16:59:06.763277 streznik.eocene.net.kpop > doma.eocene.net.smtp: S
16:59:06.763342 streznik.eocene.net.1110 > doma.eocene.net.26: S
16:59:06.763414 streznik.eocene.net.1111 > doma.eocene.net.27: S
16:59:06.763984 doma.eocene.net.ssh > streznik.eocene.net.1106: R 0:0(0) ack
16:59:06.764015 doma.eocene.net.telnet > streznik.eocene.net.1107: R 0:0(0) ack
16:59:06.764017 doma.eocene.net.24 > streznik.eocene.net.1108: R 0:0(0) ack
16:59:06.764168 doma.eocene.net.26 > streznik.eocene.net.1110: R 0:0(0) ack
16:59:06.764171 doma.eocene.net.27 > streznik.eocene.net.1111: R 0:0(0) ack
16:59:06.764516 doma.eocene.net.ftp > streznik.eocene.net.1105: S 3035392410:3035392410(0) ack
16:59:06.766492 doma.eocene.net.smtp > streznik.eocene.net.kpop: S 3035451806:3035451806(0) ack
16:59:06.764543 streznik.eocene.net.1105 > doma.eocene.net.ftp: . ack 1
16:59:06.766517 streznik.eocene.net.kpop > doma.eocene.net.smtp: . ack
16:59:06.766628 streznik.eocene.net.1105 > doma.eocene.net.ftp: R 1:1(0) ack
16:59:06.766747 streznik.eocene.net.kpop > doma.eocene.net.smtp: R 1:1(0) ack
Iz sledi je razvidno, da sta na računalniku "doma" odprti vrati 21 in 25 (ftp in smtp).
$ nmap -sN doma.eocene.net
$ nmap -sF doma.eocene.net
$ nmap -sX doma.eocene.net
$ nmap -sA doma.eocene.net
14:15:32.706244 streznik.eocene.net.54515 > doma.eocene.net.ftp-data: . ack 0 win 2048
14:15:32.706631 streznik.eocene.net.54515 > doma.eocene.net.ftp: . ack 0 win 1024
14:15:32.706694 streznik.eocene.net.54515 > doma.eocene.net.ssh: . ack 0 win 2048
14:15:32.706749 streznik.eocene.net.54515 > doma.eocene.net.telnet: . ack 0 win 2048
14:15:32.706796 streznik.eocene.net.54515 > doma.eocene.net.24: . ack 0 win 2048
14:15:32.706844 streznik.eocene.net.54515 > doma.eocene.net.smtp: . ack 0 win 4096
14:15:32.706889 streznik.eocene.net.54515 > doma.eocene.net.26: . ack 0 win 3072
$ nmap -sW doma.eocene.net
$ nmap -sU doma.eocene.net
kar v omrežju povzroči spodnjo sled:
17:37:11.928297 streznik.eocene.net.56083 > doma.eocene.net.ftp-data: udp 0
17:37:11.928934 streznik.eocene.net.56083 > doma.eocene.net.ftp: udp 0
17:37:11.928994 streznik.eocene.net.56083 > doma.eocene.net.ssh: udp 0
17:37:11.929038 streznik.eocene.net.56083 > doma.eocene.net.telnet: udp 0
17:37:11.929082 streznik.eocene.net.56083 > doma.eocene.net.24: udp 0
17:37:11.929135 streznik.eocene.net.56083 > doma.eocene.net.smtp: udp 0
17:37:11.929180 streznik.eocene.net.56083 > doma.eocene.net.26: udp 0
17:37:11.929227 streznik.eocene.net.56083 > doma.eocene.net.27: udp 0
17:37:11.929273 streznik.eocene.net.56083 > doma.eocene.net.28: udp 0
17:37:11.929320 streznik.eocene.net.56083 > doma.eocene.net.29: udp 0
....
Zgled rezultata je:
PORT STATE SERVICE
20/udp open|filtered ftp-data
21/udp open|filtered ftp
22/udp open|filtered ssh
23/udp open|filtered telnet
24/udp open|filtered priv-mail
25/udp open|filtered smtp
26/udp open|filtered unknown
27/udp open|filtered nsw-fe
28/udp open|filtered unknown
29/udp open|filtered msg-icp
30/udp open|filtered unknown
Prikazali smo pregledovanje vseh ali vsaj najpomembnejših vrat v enem samem ciljnem računalniku. Hekerji pa pogosto pregledujejo ena sama vrata, vendar po celotnem omrežju. To počnejo pogosto, kadar poznajo ranljivost za določen program. Tak del prometa kaže naslednja sled:
13:04:32.07 zli.heker.si.3142 > 192.168.4.1.80: S
13:04:32.31 zli.heker.si.3143 > 192.168.4.2.80: S
13:04:32.87 zli.heker.si.3144 > 192.168.4.3.80: S
13:04:33.14 zli.heker.si.3145 > 192.168.4.4.80: S
13:04:33.53 zli.heker.si.3147 > 192.168.4.5.80: S
13:04:33.97 zli.heker.si.3149 > 192.168.4.8.80: S
13:04:34.71 zli.heker.si.3152 > 192.168.4.11.80: S
ki je posledica ukaza:
$ nmap -p80 192.168.4.0/24
Aktivna vrata odgovorijo na paket in heker ve, da ima tisti računalnik delujoč spletni strežnik. V primeru, da je ta spletni strežnik take vrste in različice, da heker pozna njegovo ranljivost, in ni nameščen ustrezen varnostni popravek, sledi vdor.
Zaščita pred temi napadi so - spet - ustrezno nastavljen požarni zid in detektor vdorov, pa tudi zaprtje vseh nepotrebnih strežniških programov. Zgled pravila Snort, ki zazna pregledovanje vrste božične jelke, je:
alert tcp $EXTERNAL_NET any -> $HOME_NET any
(msg:"SCAN nmap XMAS";flags:FPU; reference:arachnids,30;
classtype:attempted-recon; sid:1228; rev:1;)
Kakor vidimo, pravilo preverja, ali so vključene zastavice FIN/PSH/URG (flags:FPU).
Prepoznavanje operacijskega sistema
Naslednji, za hekerje zanimiv podatek, je operacijski sistem, ki je nameščen na ciljnem računalniku, ker so mnoge varnostne pomanjkljivosti vezane nanj. Klasične (ročne) možnosti neposredne detekcije so npr. povezava telnet ali ftp na ciljni računalnik. Kjer niso izključene zastavice z informacijami, je mogoče prebrati ali uganiti, za kateri operacijski sistem gre. Zgled take detekcije je:
$ telnet alfa.podjetje.si
Trying 163.143.103.12 ...
Connected to alfa.podjetje.si.
Escape character is '^]'.
HP-UX hpux B.10.20 A 9000/715 (ttyp2)
login:
Pri tem heker seveda ni imel namena, da se prijavi, temveč le, da pridobi informacije. Kot vidimo, mu je program z njimi velikodušno postregel.
Vrsto operacijskega sistema neznanega računalnika je mogoče prek omrežja določiti tudi samodejno, z ustreznimi orodji, glede na to. kakšna je izvedba protokola TCP/IP. Le-ta se razlikuje običajno že med različnimi izvedbami istega operacijskega sistema. Orodje, ki ga veliko omenjamo, nmap, je posebej znano tudi po tem, da dokaj zanesljivo ugane operacijski sistem. Nmap in drugi programi za aktivno detekcijo operacijskega sistema (npr. queso, Xprobe) sondirajo ciljni računalnik s posebej prirejenimi paketi in odgovor nanje primerjajo z vzorci, značilnimi za posamezne operacijske sisteme, shranjenimi v datoteki s "podpisi" operacijskih sistemov. Tako lahko hekerji zelo hitro določijo, kateri operacijski sistem je nameščen na sicer neznanem računalniku. Nekatere od značilnosti, ki jih program nmap preizkuša, so:
Zgled podpisa operacijskega sistema Windows Server 2003 v nmapu je:
Fingerprint Microsoft Windows Server 2003
Class Microsoft | Windows | 2003/.NET | general purpose
TSeq(Class=TR%gcd=<6)
T1(DF=Y%W=FB8B%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=N)
T3(Resp=N)
T4(DF=N%W=0%ACK=O%Flags=R%Ops=)
T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
T6(DF=N%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=N)
PU(DF=N%TOS=0%IPLEN=B0%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)
Razlaga:
Za ugibanje operacijskega sistema programu nmap podamo stikalo -O. Na primer:
$ nmap -O 192.168.1.3
Poleg orodij, ki določajo operacijski sistem z analizo odgovorov na posebej sestavljene poslane pakete, je tudi nekaj orodij, ki določijo operacijski sistem, tako da pasivno spremljajo dogajanje v omrežju. Te metode niso tako natančne, njihova prednost s hekerskega vidika pa je v tem, da jih je veliko teže opaziti. Običajno preverjajo naslednje parametre paketov:
Orodje, ki na ta način določa operacijske sisteme, je na primer siphon.
Zaščita pred prepoznavanjem našega operacijskega sistema ni lahka, vsaj ne za enote s požarnim zidom. Mogoče je z ustreznimi popravki spremeniti značilnosti izvedbe protokola TCP/IP, tako da zavedemo orodje, kot je nmap ali drugo. Dejstvo je tudi, da samo podatek o operacijskem sistemu hekerju ne zagotavlja uspešnega vdora.
Snortovo pravilo, ki zazna nmapovo detekcijo operacijskega sistema, je:
alert tcp $EXTERNAL_NET any -> $HOME_NET any
(msg:"SCAN nmap fingerprint attempt";flags:SFPU;
reference:arachnids,05; classtype:attempted-recon;
sid:629; rev:1;)
Razlaga: najpomembnejši podatek je, da so v paketu vključene zastavice SFPU, to je SYN, FIN, PSH in URG, kar je, kot vemo eden testov nmapa (T3).