cwbe coordinatez:
101
1
102
617302
619272

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


hilda0




::::::::::. :::::::.. :::.,:::::: ::: ... . :
`;;;```.;;;;;;;``;;;; ;;;;;;;'''' ;;; .;;;;;;;. ;;,. ;;;
`]]nnn]]' [[[,/[[[' [[[ [[cccc [[[ ,[[ [[,[[[[, ,[[[[,
$$$"" $$$$$$c $$$ $$"""" $$' $$$, $$$$$$$$$$$"$$$
888o 888b "88bo,888 888oo,__ o88oo,.__"888,_ _,88P888 Y88" 888o
YMMMb MMMM "W" MMM """"YUMMM""""YUMMM "YMMMMMP" MMM M' "MMM

prielom #15, 07.09.00 , prielom(at)hysteria.sk, http://hysteria.sk/prielom/





obsah


intro

trashdiving po slovensky

DOYOULOVEME??

bratislavsky heker a jeho manifesto

kybersaman [dokoncenie]

ako vykradnut banku

exploitovanie cez plt a got







intro



bingo, novy prielom.
po dlhsej odmlke sposobenej polrocnou drinou sme tu
zas. vlastne co to hovorim.. aka odmlka.. ked pouzivam terminy ako "oneskorenie", "odmlka"
a podobne, tak tym nechtiac navodzujem atmosku, akoze by mal prielom vychadzat povinne v
pravidelnych intervaloch.

hovno s makom

ak bude po tomto este dalsie cislo, berte to ako mile prekvapenie..


hysterka je totiz v stave existencnej krizy a s nou aj prielom. je na case decentne
zrusit dnesnu podobu hysterky este kym jej jednotlive casti (arxiv, prielom,
cZert...) tvorene v obdobi 1994-97 posobia "milo folklorne" a nie trapne detinsky.


myslim ze hysterka splnila svoj ciel - spojit ludi s podobnym konickom. mnoho projektov,
www stranok ci kamaratstiev priamo vzniklo v prostredi hysteria.sk, alebo ich
aspon hysterka ovplyvnila. ale moja snaha najst novych ludi ktori by krmili samotnu
hysterku novymi napadmi az, taku odozvu nenasla. server skapina hardverovymi problemami a
nedostatkom cerstveho obsahu.


priatelia a pribuzni pacienta... pripravte sa na najhorsie..


pajkus, 03.09.00, bratislava





trashdiving po slovensky


trashdiving (resp. trashing) - vyberanie smetnych kosov, ktore sa nachadzaju
pri rozlicnych instituciach, za ucelom ziskania zaujimavych informacii, je napr.
v usa velmi popularna cinnost. kazda kvalitnejsia session alebo con skonci
obvykle pri odpadkovych kosoch at&t alebo ma bell. v nasich stredoeuropskych
podmienkach je to vsak cinnost takmer vobec nepraktikovana, ak nepocitam mna a
par mne blizkych ludi, nepocul som o nikom, kto by sa nou zaoberal. co je vsak
urcite na skodu, pretoze trashovanie je proces nadovsetko zabavny.


na akciu (odporucam tak raz za 3-4 tyzdne) sa treba poriadne pripravit. zakladom
su rukavice, bez ktorych sa, ak nie ste naozajstni humusaci, nezaobidete. ale
nezabudnite ani na minimalne tri vacsie igelitove tasky, do ktorych vytrashovany
material nahadzete, obvykle ste v casovej tiesni. baterka taktiez nie je na
zahodenie, pretoze predsa len, trashovat za bieleho dna, to je prisilna kava aj
pre anarchistickejsich jedincov.


dalsou dolezitou castou je vyber institucii, ktorym sa hodlate pozriet na zubok.
toto vsak v nasich slovenskych ubohych podmienkach ani nemusite pripravovat
vopred, pretoze aj bratislava je malomesto, ktore sa da za jeden vecer v pohode
takmer kompletne obehat. treba sa zamerat najma na banky (mozny nalez vypisov z
uctov, na ktorych su cisla kreditnych kariet), internetovych providerov (obvykle
sa vytrashuju maximalne dialup hesla, niekedy sa postasti aj nejaky ftp alebo
telnet pass) a pravdaze telekomunikacie (mozne zaujimave info, manualy k
ustredniam, cisla na ustredne, hesla). fantazii sa medze nekladu, institucii je
dost, netreba sa obmedzovat. ide predsa o informacie a napr. zaujimave sumy sa
najdu aj za fondom narodneho majetku. to, ze tieto institucie skartovace takmer
vobec nepouzivaju, je u nas na slovensku samozrejmost. prinajhorsom je dokument
roztrhnuty na dve polovice.


ked uz sa nachadzate pri vyhliadnutej budove, obehnete si ju dookola a dufate,
ze najdete smetny kos, banky a vacsi provideri maju obvykle smetne kose dobre
skryte v svojom areali, resp. v podzemi, takze s tym sa mozete hned rozlucit, ak
nehodlate mat problemy s bezpecnostnou sluzbou. naproti tomu, telecom vas casto
nesklame. maju sice okolo svojho arealu nejaky provizorny mur alebo plot, avsak
vysoky akurat tak, ze sa da preskocit jednym tahom. celemu procesu to dodava
urcitu davku adrenalinu. mensi provideri sa casto nachadzaju v budovach spolocne
s inymi firmami a kancelariami, smetny kos je najcastejsie pred budovou na
hlavnej ulici. to je tiez celkom zaujimavy zazitok, ked okolo vas chodia ludia
a auta a vy sa hrabete v smetnom kosi. otvorte kos s odpadkami, pozrite, ci su
dnu papiere, ak ano, tak naberajte vsetko, co najrychlejsie ako mozete, pravdaze
v rukaviciach, do vopred pripravenych igelitovych tasiek. zajdite za roh na
nejake tmave miestecko a vsetko pekne pretriedte.


triedenie je zazitok sam o sebe. pri nakladani vsetkeho mozneho do igelitovych
tasiek sa nevyhnete aj rozlicnym nechcenym objektom. ked si myslite, ze obal od
cokolady je humus, tak triedenie prenechajte radsej niekomu inemu. este aj
zhnita bananova supka je slaby odvar oproti nedojedenemu kelimku od tresky,
v ktorom sa nachadza damska vlozka. nepytajte sa ma, co to robilo medzi
klientskymi zmluvami jedneho nemenovaneho providera.


necakajte od trashdivingu velke zazraky. sem tam najdete nejake to zaujimave
info, pri nutnej davke stastia aj par hesiel, ktore si pri troche sikovnosti a
vole, mozete zadovazit aj pomocou svojho unixoveho umenia. trashing je o niecom
inom. trashing je o akcii v terene, o adrenalinovom preskakovani plotov, o
hnusnom a odpornom humuse, co vam postupne prechadza cez ruky a o radosti z
toho, ze nakoniec z tych vsetkych sraciek ste vytiahli aj nieco uzitocne.
trashdiving je alternativna zabavka pre alternativnych ludi.



hromi, hromi(at)hysteria.sk


navrat na obsah




DOYOULOVEME??


po nedavnej afere s cervom ILOVEYOU, ktora otriasla hlavne medialnym svetom
isty pan zalewski (pre mnohych, ktori sleduju bugtraq nie neznamy) usudil, ze
nebude tak celkom od veci ludom ukazat, ze tento sposob nie je to, coho by sme
sa mali bat a publikoval v uz spominanej konferencii zaujimavy prispevok,
popisujuci projekt, na ktorom pracoval. odovodnil to slovami:


"media, podporovane altavista "expertmi", vykreslili apokalypticku viziu
destrukcie sposobenu hlupym m$ outlook/vbs cervom, nazvanym "ILOVEYOU". absurdne
odhady - 10 milionov dolarov vynalozenych na "odstranovanie skod", specialne
ked sa blizsie pozriete na rychlostou svetla rastuce hodnoty tychto spolocnosti
na trhu, pride mnohym ludom zle. trapna vbs aplikacia, ktora sama o sebe sa
nedokaze sirit bez luzerskej klikni-na-mna! interakcie a je limitovana na jeden
operacny system, urceny pre stolove pocitace... cerv, ktory posle sameho seba
ludom vo vasom e-mailovom adresari a vo svojej originalnej verzii znici mp3
subory na disku. a vy ho nazyvate nebezpecnym? prestante si robit srandu.."


uz davnejsie ho zaujimalo, ci je take tazke vytvorit naozaj nebezpecneho
internetoveho cerva, ktory by dokazal byt skodlivejsi ako znamy morrisov cerv
spred par rokov. spolu s par priatelmi svoj projekt nazvali "samhain". dali si
za ciel sedem kriterii, ktore musi splnat:


1: portovatelnost - cerv musi byt nezavisly na architekture a musi dokazat
existovat na rozlicnych operacnych systemoch (nielen unixoveho typu ale
i dos/win).
2: neviditelnost - cerv musi mat implementovane maskovacie techniky na skrytie
sameho seba v zijucom systeme a zostat neodhaleny tak dlho ako to len bude
mozne.
3: nezavislost - cerv sa musi dokazat sirit svojpomocne, bez akejkolvek
uzivatelskej interkacie, vyuzivajuc vstavanu databazu exploitov.
4: ucenlivost - cerv by mal byt schopny ucit sa nove exploitovacie techniky za
behu, vypustenim jedinej kopie upraveneho cerva si ostatne pomocou
specialneho komunikacneho kanalu (nazvyme ho wormnet) stiahnu dokonalejsiu
verziu.
5: integrita - jednotlivi cervi i cela struktura wormnetu by mala byt tazko
vypatratelna a upravitelna/zneskodnitelna. (sifrovanie, znackovanie)
6: polymorfnost - cerv by mal byt uplne polymorfny, so ziadnou konstantnou
castou kodu, kvoli zamedzeniu odhalenia.
7: pouzitelnost - cerv musi byt schopny realizovat zadane ciele - napr.
nainfikovat system, stiahnut si instrukcie a ked je misia ukoncena,
jednoducho sa zo vsetkych systemov vyparit.


na tychto siedmych principoch polozili celu svoju pracu, tento text opisuje
idey, koncepty a uryvky implementacie. v ziadnom pripadne nema sluzit ako
teroristicka prirucka a nebol zverejneny na to, aby pomohol ludom napisat ich
vlastny podobny kod. bol napisany preto, aby ukazal seriozne potencialne riziko,
ktoremu nemozeme virtualne zabranit alebo ho zastavit, nie je iba v cisto
hypotetickej rovine. casti kodu, ktore su zverejnene su iba zlomkove a casto
pochadzaju z ranych verzii.


"ale nezabudajte - funkcny model bol napisany. a ten je smrtelne nebezpecnym
mechanizmom, ktory moze byt pouzity na velmi zle veci. pravdepodobne sme neboli
prvi, ktori o tom premyslali a pokusili sa ho napisat. to je to, co nas
znepokojuje..."


"zima 1998, traja znudeni ludia kdesi v strednej europe. posadte sa a
relaxujte."


1: portabilita


toto je pravdepodobne najdolezitejsia vec - nechceme predsa kod, ktory bude
bezat iba na windowsoch, linuxe alebo solarise, alebo este horsie, ktory bude
schopny fungovat iba na x86 platforme. uloha ma jednoduche riesenie, ked sa
rozhodnete vytvorit kod v platformovo nezavislej forme. ako to moze byt
docielene? vacsina systemov ma prekladac jazyka c. tak mozeme sirit cerva vo
forme zdrojoveho kodu s jednoduchym desifratorom (povedzme, ze to bude shellovy
skript).


ale pockat, niektore (nie je ich tak vela) systemy nemaju prekladac cecka. co
mozeme v takejto situacii urobit? pouzitim wormnetu, cerv pocas infikacie moze
poziadat ostatnych clenov wormnetu o skompilovany binarny kod pre danu
platformu. detailnejsi popis wormnetu je v sekcii 4. i tak, binarka bude
obsahovat prilozeny zdrojovy kod na dalsie infekcie. popis fazy infikovania je
v sekcii 3.


prva verzia dekryptora vyzerala takto:


const char decryptor[]="#!/bin/bashnX=/tmp/.$RANDOM$$n(dd if="$0" of="
"$X.f~ ibs=1 skip=x01x01x01x01 count=x02x02x02x02x02x02 ;dd if="
""$0" of=$X.b~ ibs=x03x03x03x03x03 skip=1;echo "int x;main(int c,"
"char**v){char a[99999];int i=read(0,a,99999);for(;x<i;)a[x++]-=atoi(v[1]"
");write(1,a,i);}" >$X.d~;test -x /tmp/.a012382~||cc -x c $X.d~-o/tmp/."
"a012382~;/tmp/.a012382~ x04x04x04 $X.gz~;gzip -cd <$X.gz~>$X.c"
"~;rm -f $X.f~ $X.d~;cc -O3 -x c $X.c~ -o $X~;chmod 755 /tmp/.a012382~)&>"
"/dev/null;test -x "$0"&&exec $X~ "$0" $@n";


pouziva velmi jednoduchu (po bajtoch sa avysujucu) "enkrypciu" zdrojoveho
kodu so specifickou inkrementalnou hodnotou (dekryptor sa modifikuje v
zavislosti od zvolenej hodnoty - x01, x02, x03 a x04 sa menia sifrovacou
rutinou). tak isto, tento konstantny dekryptor je kazdy raz prepisany za
pouzitia jednoducheho polymorfneho mechanizmu (sekcia 6) aby sa vyvaroval
konstantnych retazcov. neskor sme modifikovali enkrypcnu rutinu na nieco
o trochu silnejsie - v skratke, iba robi ovela zlozitejsie odhalenie cerva
v neaktivnej forme.


ako mozete vidiet, tento dekryptor (alebo jeho rana verzia ukazana vyssie) nie
je prilis portovateny - co ak nemame bash, prekladacm gzip alebo podobne
utilitky? to bol jeden z dovodov, preco sme sa rozhodli spojit cervy do
wormnetu - ak sa vyslany kod nespoji spat k materskej kopii a neoznami svoju
cinnost, ciel nie je oznaceny za infikovany a wormnet je poziadany o
predkompilovanu binarku pre danu architekturu (za predokladu, ze uz tato
architektura bola nekde na svete infikovana).


sebastian napisal virovy kod, ktory bol schopny sa sirit na win/dos platforme
s c-prekladacom a unixovych systemoch bez akejkolvek modifikacie alebo
interkacie. instaloval sameho seba ako trojskeho kona do prekladaca (modifikoval
vkladane hlavickove subory, aby vlozil svoje instrukcie do kazdej skompilovanej
binarky). vola sa califax a bol vyvinuty pocas prac na projekte samhain ako
cvicenie na ukazku, ze taketo medziplatformove skoky su mozne. nechcem pouzivat
sebastianove zdrojove kody bez jeho povolenia, vsetko co som tym chcel povedat
je, ze to spravil na menej ako 415 riadkov kodu. califax nebol nijako spojeny s
projektom sahain, pretoze sme nechceli infikovat winbloze z ideologickych
dovodov :P


2: neviditelnost


po naburani systemu, cerv nemusi vzdy dosiahnut rootovske prava, takze prvorade
je implementovat techniky, ktore by boli schopne ho zamaskovat, vydavat za iny
proces v systeme a stazit zneskodnenie pokym je sanca ziskat vyssie privilegia
(detaily v sekcii 3). takisto sme sa zhodli, ze by bolo dobre, aby sa tazko
debugoval/krokoval cerv aj v neaktivnom stave - v sekcii 5 najdete podrobnosti
o anti-debugovacich technikach.


nas maskovaci kod pre neprivilegovany rezim pozostava z nasledujucich casti:


maskovanie: prejde si /proc, vyberie mena najcastejsie beziacich procesov
a zmeni svoje meno tak, aby vyzeral ako jeden z nich,
cyklicky sa opakujuce zmeny: menit svoje meno (takisto aj nazov suboru) spolu
s pid tak casto ako sa len da, vzdy mat vytvoreny zrkadlovy proces v ocakavani
moznosti zabitia rodicovskeho alebo dcerskeho procesu sikovnejsimi utilitkami.


nas ciel bolo docielit, aby bolo takmer nemozne (s beznymi nastrojmi) "chytit"
proces samotny, vseky /proc parametre (pid, exe name, argv[0]) sa menia a i ked
je jeden z nich dostinuty, mame zrkadlovy proces. nasledujuci komentar pochadza
z README libworm pre unixove systemy:


-- odstrihnute z README --

a) anti-skenovacie rutiny

nasledujuce rutiny su urcene na odhalenie "anti-cervej techniky", ako napriklad
kill2, pripadne hocico ine, prefikanejsie. pouzivaju sa pred volanim fork():

int bscan(int lifetime);

bscan robi "povrchne skenovanie" za pouzitia iba dvoch dcerskych procesov.
zivotnost moze byt nastavena na hodnoty okolo 1000 mikrosekund. navratove
hodnoty:
0 - ziadne anti-cervie techniky neboli zistene, pouzit ascan alebo wscan.
1 - primitivne techniky zistene (ako "kill2"), pouzit kill2fork()
2 - prefikane (alebo hrube) techniky odhalene, trpezlivo pockat

int ascan(int childs,int lifetime);

ascan produkuje "vyspelejsie skenovanie" pouzivajuc dany pocet dcerskych
procesov (hodnoty medzi 2 a 5 su postacujuce). testuje prostredie
vykonstruovanim falosneho utoku forkbombou. vysledky su ovela presnejsie:
0 - ziadne anti-cervie techniky nezistene, pouzit wscan.
1 - anti-cervie utility v operacnom rezime.

int wscan(int childs,int lifetime);

wscan funguje podobne ako ascan ale pouziva system "chodiaceho procesu".
vyzera chybovo, vzdy vracia '1' bez akehokolvek dovodu ale je to taktiez
najlepsia odhalovacia technika. navratove hodnoty:
0 - ziadne anti-cervie techniky nezistene.
1 - beziace anti-cervie utility.

int kill2fork();

toto je alternativna verzia volania fork(), navrhnuta na oklamanie hlupeho
anti-cervieho programoveho vybavenia (pouzije sa, ked bscan vrati 1).
navratova hodnota: taka ako fork().

b) maskovacie rutiny

nasledujuce rutiny su navrhnute za ucelom maskovania a skrytia aktualneho
procesu:

int collect_names(int how_many);

collect_names vytvori tabulku s poctom zaznamov "how_many". tato (pristupuje
sa k nej cez "cmdlines[]" rozhranie) obsahuje mena procesov v systeme.
navratova hodnota: pocet zozbieranych procesov.

void free_names();

tato funkcia uvolni miesto alokovane funkciou collect_names ked uz viac nie je
potrebne vyuzivat cmdlines[].

int get_real_name(char* buf, int cap);

ziskame nou skutocne meno spustitelnej binarky pre aktualny proces do buf
(kde cap znamena maximalnu dlzku)

int set_name_and_loop_to_main(char* newname,char* newexec);

tato funkcia zmeni viditelne meno procesu na nove (moze byt zvolene pomocou
cmdlines[]), potom zmeni meno binarky na "newexec" a vrati sa na zaciatok
funkcie main(). nezmeni pid. ak je "newexec" NULL, binarka sa nepremenuje.
navratova hodnota: nenulova, ak nastane chyba.

poznamka: premenne, stack a vsetko ostatne sa zresetuje. treba pouzit iny
sposob (rury, subory, mena suborov, mena procesov) na vymenu dat zo starej
binarky do novej.

int zero_loop(char* a0);

tato funkcia vracia 1 ak je main() dosiahnuta prvy krat alebo 0, ak uz bola
pouzita set_name_and_loop_to_main(). argv[0] je vkladany ako parameter. iba
jednoducho skontroluje, ci real_exec_name prezentuje argv[0].

-- EOF --

tieto rutiny su relativne slabe a pouiztelne iba na kratkodobe skryvanie
procesov. cielom je cim skor ziskat rootovske privilegia (opat diskutovane
neskor). potom dosiahneme ziadaneho vysledku. pokrocile skryvanie procesov
je vysoko zavisle od systemu, obvykle riesene cez sledovanie systemovych volani.
vytvorili sme zdrojove kody pre univerzalne moduly urcene na skryvanie na zopar
systemoch, avsak nie su funkcne na vsetkych platformach, ktore je samhain
schopny napadnut. techniky tu pouzite su zalozene na dobre znamom principe
ukrytych modulov.


nas linux 2.0/2.1 (2.2 a 2.3 jadra v tom case este neboli zname), modul vyuziva
techniku popisanu neskor v prispevku nazvanom "abtrom", ktory sa objavil v
bugtraqu od 28. augusta 1999, sledovanie systemovych volani.
sebastian napisal skryvacie techniky v zavislosti na suboroch (na vracanie
povodneho obsahu infikovanych suborov), pokial som ja vyvinul techniky na
ukryvanie procesov a interface cerva. modul sledoval volania open, lseek,
llseek, mmap, fstat, stat, lstat, kill, ptrace, close, read, unlink, write
a execve.


na ukazkum nove volanie llseek moze vyzerat takto:


int new_llseek(unsigned int fd,unsigned int offset_high,
unsigned int offset_low,int *result,unsigned int whence) {
retval=old_llseek(fd,offset_high,offset_low,result,whence);
if (retvalfiles->fd[fd])) return retval;
if (S_ISREG(file->f_inode->i_mode) || S_ISLNK(file->f_inode->i_mode))
if (is_happy(fd) && file->f_pos < SAMLEN) file->f_pos += SAMLEN;
return retval;
}

v tomto pripade sme chceli vynechat kod loaderu samhain na zaciatku suboru.
funkcia is_happy() sa pouziva na identifikaciu infikovanych suborov.
nanestastie, musi tiez overovat dlzku loaderu - nezabudajte, je dynamicky
generovany. toto je cast kodu z is_happy() pouzita na zistenie tejto dlzky
z nasej rutiny dekryptora:


// Determine where ELF starts...
file->f_pos=0;
BEGIN_KMEM
r=file->f_op->read(file->f_inode, file, buf,sizeof(buf));
END_KMEM
// Groah! We have to write out own atoi... Stupido ;-)
znaki=0;
while (znaki!=TH && ++v0) {
BEGIN_KMEM
read(x,b,1);
END_KMEM
close(x);
if (!b[0]) return -ESRCH;
}
return old_ptrace(req,pid,addr,dat);
}


takisto musime ukryt sietove spojenia wormnetu a poslanych / prijatych paketov
wormnetu, aby sme sa vyhli odhaleniu pomocou tcpdump, sniffit atd.


to je vsetko, nic nezname. podobny kod bol napisany pre par inych platforiem.
pozrite si napr. afharm alebo sebastianove Adore moduly pre nazornu ukazku
implementacie skryvacich technik.


3: nezavislost + 4: ucenlivost


wormnet. magicke slovo. wormnet je vyuzivany na distribuovanie upgradnuteho
kodu, modulov (napr. nove exploity) a na vzajomnu komunikaciu cervov pri
ziadostiach o predkompilovanu binarnu formu. komunikacna schema skutocne nie je
az taka zlozita, pouzivaju sa tcp streamy a broadcast spravy v nich. spojenie
nie je stale. samhain vyuziva styri druhy ziadosti:


vyrozumenie o infekcii: vytvori sa spojenie so svojim materskym cervom ak
infekcia prebehne uspesne (ziadne spojenie = zlyhanie)
ziadost o obnovenie: dosiahne sa opatovnym infikovanim systemu (v tomto
pripade uz zahniezdeny worm verifikuje podpis na novo prichadzajucom cervovi,
a ak je binarka novsieho data, pomocou execve() vymeni beziaci proces), potom
posle svojim dcerskym cervom informaciu obsahujucu casove informacie o novej
verzii.
potvrdenie obnovenia: ak je casova informacia navratena po ziadosti novsia ako
aktualne beziaceho cerva, moze tuto informaciu potvrdit a stiahnut si novu
verziu cez ten isty tcp stream. potom by si mal overit podpis kodu, a
eventuelne vymenit beziaci proces novym, potom poslat informaciu dalsim cervom
nizsie polozenymi v hierarchickej strukture wormnetu.
ziadost o binarny kod pre danu platformu: poslanim ziadosti vsetkym spojenym
cervom (pouzity je ttl mechanizmus) s popisom typu platfomy, systemu a verzie,
tak isto aj ip adresy a specifikacie portu. tato ziadost je poslana (so
znizenym ttl) ostatnym cervom, sposobujuca wormnet broadcast, prvy cerv, ktory
moze poskytnut pozadovany binarny kod, odpoveda pripojenim k cielovemu hostu
na specifikovany port a cerv, ktory vyslal ziadost, spojenie akceptuje (iba
raz). akekolvek dalsie ziadosti o pripojenie (moze sa stat, pokym nevyprsi
ttl) budu autmaticky odmietnute. po spojeni sa posle vhodna binarka, ktora
je prijata infekcnymi rutinami. cerv posle ziadost s ttl priblizne 5, neskor,
pri zlyhani, moze poslat dalsie, ktore zvysuje o 5 a bude sa pokusat 3-5 krat,
nemali sme ziaden napad ohladne optimalnych hodnot.


pakety su "kryptovane" (opat, nic silne) klucom priradenym specifickemu spojeniu
(generovane z materskej ip adresy, ktoru cerv ziska pri infekcii). typ je
popisany jedno-bitovym polom, nasleduju ho infomracia o velkosti a data alebo
retazce ukoncene nulovym znakom, pripadne i ttl/casove informacie (zalezi od
typu spravy).


struktura spojeni wormnetu moze vyzerat lubovolne a je limitovana iba poctom
spojeni na jedneho cerva. spojenia su iniciovane od dcerskeho procesu smerom
k materskemu, obvykle obchadzajuc firewally a maskaradovaci softver.


pri infekcii sa dcerskemu procesu vygeneruje kratky zoznam predchadzajucich
materskych procesov. ak uz matersky proces obsluhuje prilis vela spojeni v danom
case, novy proces sa spoji s inym cervom zo zoznamu.


3
|
|
3 ----- 2 ---- 3 ----- 4 ------- 5 ------- 6
| / | |
| / | |
| / | | mozna struktura wormnetu.
1 ------------ 2 ----- 3 6 cisla reprezentuju poradie,
/ v akom boli hostitelia
/ infikovani. vyznaceny host "3"
/ sa z nejakeho dovodu nemohol
---- 3 ------ 4 spojit so svojim materskym
| procesom, preto nadviazal
| spojenie s hostom "1", ktoreho
| mal poznaceneho v zozname.
4


ok, poviete si, a co exploity? exploity su modularne (pripojene k telu cerva)
a rozdelene do dvoch kategorii - lokalne a remotne. chceme byt nezavisli na
platforme, tak prihliadame na chyby filesystemu, chyby ako napriklad -xkbdir
v xwindows a vlozime len zopar buffer overflowov, hlavne pre remote pristup
(ale rozhodli sme sa pouzit aj par chyb ako remote pine mailcap exploit a
podobne...kod je naozaj majstrovskym kusom shelloveho skriptu :)


obidva typy, aj remote aj lokalne exploity su zoradene podla ucinnosti.
exploity, ktore maju najvyssiu uspesnost sa skusaju ako prve, menej ucinne
sa presuvaju na koniec. tento zoznam dcerske procesy dedia.


ah, sirenie. obete su volene pomocou monitorovania aktivnych sietovych
spojeni. servery sa vyberu nahodne z tohto zoznamu a cerv sa ich pokusi
napadnut. v pripade uspechu je server zaradeny do zoznamu uspesne napadnutych
hostov a uz nie je viac napadany. v pripade neuspechu sa cerv nepokusa o dalsi
vypad az pokym sa neobjavi nova, vylepsena verzia. samozrejme, interny zoznam
je konecny a obcas sa moze stat, ze server je napadnuty znovu (ak to nie je
nas potomok a nie je prave napojeny) ale koho to trapi - pokus bude ignorovany
alebo prebehne upgrade, v zavislosti na casovych znackach.


tento kod je pouzity na ziskanie dalsieho ciela (zo zoznamu aktivnych spojeni)


void infect_host(int addr) {
struct hostent* h;
int (*exp)(char*);
int i=0,n=0,max=VERY_SMALL;
if ((0x7F & addr)==0x7F) return; // vynechaj 127.* subnet :-)
h=gethostbyaddr((void*)&addr,4,AF_INET);
if (is_host_happy(h->h_name)) return; // vo wormnete?
for (i=0;remote[i].present;i++) remote[i].used=0;
while ((max=VERY_SMALL)) {
n=-1;
for (i=0;remote[i].present;i++)
if (!remote[i].used && remote[i].hits>=max) { max=remote[i].hits;n=i; }
if (nh_name));
if (i>0) break;
}
}


5: integrita


najdolezitejsou vecou v zivote cerva je nedat sa chytit. chceme si byt isti, ze
nie je lahke nas vystopovat/debugovat - chceme urobit reverzne inzinierstvo co
najtazsim. nechceme ukazat nase interne protokoly wormnetu, komunikaciu s
modulom v jadre a detekcne techniky pouzivane samotnymi cervami na kontrolovanie
samych seba navzajom, atd. styri veci:


skryt vsetko: pozri sekciu 2
hashovat, kryptovat, bit sa: pozri sekcie 1 a 4
nenechat sa chytit: sekcia 2
znemoznit debugovanie i v pripade, ze sa nemozeme skryt!


pouzili sme zopar anti-debugovacich technik, vratane chyb zavislych na
aplikaciach (chyby v strace pri zobrazovani niektorych vadnych parametrov pri
systemovych volaniach, chyby v gdb pri parsovani elf hlaviciek, obchadzanie
ramcovych pointrov, samomodifikujuci sa kod a tak dalej), ako aj zopar
univerzalnych anti-debugovacich rutin, ktore su volane dost casto (nie su
narocne na cas). toto je jedna z nich:


void kill_debug(void) {
int x,n;
n=getppid();
if (!(x=fork())) {
x=getppid();
if (ptrace(PTRACE_ATTACH,x,0,0)) {
fprintf(stderr,
"nnn**************************************n"
"*** NAOZAJ SA NECHCEM DAT STOPOVAT ***n"
"**************************************nnn");
ptrace(PTRACE_ATTACH,n,0,0);
kill(x,9);
}
usleep(1000);
ptrace(PTRACE_DETACH,x,0,0);
exit(0);
}
waitpid(x,&n,0);
return;
}


ako som uz povedal, cervie moduly su podpisane. najprv su pouzite jednoduche
podpisy, neskor pouzivaju jednoduchy system privatnych klucov (naozaj nic tazke,
co by sa nedalo cracknut, kluc je relativne kratky ale je to dostatocne zlozite
pre amaterov) tymto je zabezpecene, ze nahradzame nasho cerva skutocncym cervom,
nie podvrhnutyn zabijakom.


6: polymorfizmus


polymorfny mechanizmus je v podstate jednoduchy - navrhnuty na to, aby sme si
mohli byt isti, ze nas dekryptor bude vzdy iny. kedze je napisany ako shellovy
skript, je velmi lahke pridat par matucich prikazov, vlozit prazdne premenne,
vlozit alebo nahradit niektore casti uz deklarovanymi $PREMENNYMI_SHELLU.
ziskat spat povodny obsah nie je jednoduche ale vsetko co potrebujeme je
imitovat parsovanie dekryptoru - a mame povodny kod.


pridavanie do dekryptoru moze vyzerat takto:


while (decryptor[x]) {
switch (decryptor[x]) {
case ' ':
if (!rnd(2)) buf[y++]=' '; else goto difolt;
break;
case 'n':
if (!you_can) you_can=1;
default:
difolt:
if ((you_can && you_can++>1) && !rnd(10) && decryptor[x]>5 &&
decryptor[x]!='>' && decryptor[x]!='2) {
buf[y++]='\';buf[y++]=10;norm=0;
} else {buf[y++]=decryptor[x++];norm++;}
}
}


7: pouzitelnost


je nahluple vypustit cerva navrhnuteho napriklad na kradnutie tajnych informacii
zo specifickeho hostitela, pretoze nemame ziadnu istotu, ze bude fungovat naozaj
spravne a nebude polapeny. ak ano, moze byt debugovany (ne spraveny tak, aby sa
dallen velmi tazko, ale ako kazdy program, nie je nemozne to urobit, specialne
ak sa vam podari ziskat separovany kod cerva). namiesto toho mozeme vypustit
neskodneho cerva, potom, ked sa uistime, ze dosiahol zaujimavych hostitelov a
doteraz nebol chyteny, mozeme rozoslat upraveneho noveho cerva, ktory bude
obsahovat nas zaskodnicky kod. ten sa bude snazit dosiahnut vsetky cervy vo
wormnete a upravi ich podla seba.


mozno to nie je najlepsie riesenie ale je to urcite ovela viac bezpecnejsie ako
standardne vkladat zadne vratka.


8: a co sa stalo potom?


tak to je on, projekt samhain, ktory sa zmestil do priblizne 40 kb kodu. co sa
s nim stalo? nic. nikdy nebol vypusteny a nikdy neboli odstranene obmedzenia
z rutin lookup_victim() a infect_host(). stale lezi na mojom disku, usadza sa
na nom prach a OBLIVION a to je presne to, co sme chceli.


prestal som vyvijat a testovat novy kod v januari 1999, vo verzii 2.2 a pri
priblizne 10 000 riadkoch kodu. wojtek bojdol vyvijal jeho ovela lepsie
premysleny wormnet a system infekcie/monitorovania do februara alebo marca, ale
nikdy som nenasiel dostatok casu spojit jeho zdrojove kody s povodnymi. potom
sme odstranili nas archiv zo serveru s pristupom zo siete, ktory sme pouzivali
na vymenu napadov. neskor som publikoval par chyb pouzivanych v databazi
exploitov v bugtraqu, niektore (hlavne tie, ktore som neobjavil ja) sme si
nechali pre seba.


pribeh sa skoncil. az do dalsieho dazdiveho dna, dalsich troch znudenych
hackerov. mozete si byt isti, ze sa to stane. jedina vec, ktorou si byt isti
nemozete je koniec dalsieho pribehu.






nechcem sa hrat na proroka alebo jasnovidca, ale dovolim si tvrdit, ze
takyto scenar sa mozno uz coskoro stane realitou. ludia nechcu byt v bezpeci,
nikdy nebudu dostatocne prihliadat na skutocne fakty. hackli nas? ale, ved sa
tolko nestalo, ututlat.. distribuovane utoky? kazdy sa citi bezpecne ale je to
klamliva bezpecnost. citia sa spokojni ale veci sa deju, to ze si to niekto
nevsimne neznamena, ze je vsetko v poriadku..


ved si len skuste na svojich "bezpecnych" serveroch spravit: find /dev -type f
a kludne sa stavim, ze kvantum z vas bude velmi nemilo prekvapenych. ale to je
len vrchol ladovca. to, co najdete, su len nevinne hracky pre deti..


este bude veselo.



autor: michal zalewski, lcamtuf(at)tpi.pl

preklad, uprava: salo


navrat na obsah




bratislavsky heker a jeho manifesto


povedaly mi, abi som napysal clanok o sebe do tohto casopysu "zlom". tak tu vam
teda o sebe pysem. aha ale este nieco: ak chcete bit taky dobri ako ja, musyte
vela hekovat a musite byt strasne inteligentny.


viete, no, hekovat som zacal, ked som mal 14. teras mam 15 a som uz velmi dobri
heker. pracujem na pocitaci s windows 98, ktore som sy aj sam nainstaloval. moj
pocitac je pentium 5 1200mhz, mam 512 mb ram a velki disk. mam cd-romku,
napalovacku a vsetko co existuje. rat sa hram hri a mynule som na internete
nasiel cheaet na quake a hekol som tu hru. viem si teraz sam pridat zivoti aj
zbrane a vsecko co chcem.


mam sa rad. ale este radsej mam kevina mytnicka. ten bol vazne dobry. viete, raz
chcem byt ako kevin. aj preto uz mam precytane vsetky navody co som nasiel na
internete (v altaviste). cital som how to hack unix od c00lhacka, tiez som cital
hacking linux - 10 dobrych rad, od fuckin' radical byte rippera a tiez som cital
how to hack government computers od frozen hack kinga. ako vydite, som dobri.


moje oblubene hekerske nastroje pod windows su winnuke (ten je vazne dobri),
potom black orifice (hahaha, mynule som ho poslal mame do roboti a vymazal som
jej cely disk!) a potom este aj unabomber (to je taki program, co s nim niekomu
mozte poslat aj tisyc mailov a mozte si vybrat z akej adresy mu to pride a on
vas potom nema ako zystit!!!).


strasne by som chcel heknut stranku nasej skoly. skola sucks, sucks, sucks,
sucks!!! dobre ma nasrala dneska triedna, lebo ma vyvolala zo slovenciny. tak
heknem skolsku stranku a napysem tam, ze je krava!!! uz viem ako sa vola ten
hlavni subor co treba heknut - "index.html". neviete niekto ako zistim nejaku
"ip adress"? zevraj ked to zystite, tak potom uz je to lachke heknut. (to pysali
v hacking manual-e od knight-a deadly-ho). inac, zakladam hekersku skupynu,
budeme sa volat killing bastarts, takze ak niekto chcete sa prydat a ste naozaj
dobri heker, tak mi napyste na tento e-mail: peter_ondruscak@kancelaria.potraviny-u-kamila.sk


to je email mojho oca, takze tam ako mate ze: "subject:" napiste "pre jozefa"
a on mi to vytlaci a donesie. ja nemam internet doma a chodim k nemu do prace.
inac, ked niekdo viete ako si hacknut emailovu adresu na hotmeily, tak mi
povecte, lebo zevraj to je lachke.


no, tak este vam poviem nieco o sebe. pocuvam hlavne tvrdu muziku - rammstein
a metallicu, ale dobra je aj elektronycka hudba ako aqua a eiffel 65. mam jednu
sestru, ale ona je krava - ma 20 rokov a furt sa zatvara do izbi so svojym
frajerom. a ten je ties blbec, lebo vobec nevie robyt s windows a stale nieco
trepe o aix a neviem co este. z jedla mam rad pizzu a na pytie cocacolu. (to aj
kevin mytnick mal rad!!!!) z hier mam rad quake a formule. a este mam rad
heking, ckraking a freking.


tak a to je vsetko. aha, vlastne hack da planeeeeeeeeeeeeeeeeet!!!!!!!


fez0j da hacka
(to fez0j je akoze moje meno odzadu, to som sam vimislel)



p.s. - podobnost s realnymi osobami, miestami, potravinami a operacnymi
systemami je cisto nahodna. ak si myslite, ze takito hackeri su napriklad
ten, tamten, alebo ini, tak to nie, to vobec neni pravda. ne, vazne. vazne!
heh.



cut&paste z realneho zivota vykonal niko, niko(at)hysteria.sk



navrat na obsah




kybersaman [dokoncenie]


bonnard bol celozivotnym studentom. ucil sa od svojho okolia, z knih, od ludi,
ktorych stretaval len tak na ulici, od svojich mileniek a na svojich chybach.
zaujimal sa o biologiu, chemiu, fyziku, etnobotaniku, matematiku a samozrejme
- o kybernetiku. cital diela davnych i nedavnych filozofov. ako povedal lama
govinda: "veda a filozofia su len dve odvetvia tej istej posvatnej discipliny.
v staroveku sa povazovalo za uplne samozrejme, ze velky ucenec bol aj svatym
muzom s hlbokou znalostou sameho seba". bonnard prisiel na to, ze svet je
postaveny z bitov. bity sa skladaju z nul a jednotiek - casti, ktore si
odporuju, no v tomto rozpolteni ho vlastne vytvaraju. a preto vedel, ze veda bez
vnutornej filozofie a vnutorna filozofia bez vedy moze stvorit len katastrofu.
ale ked ma niekto vedomosti aj mudrost, moze ho to zachranit pred takymi vecami
ako vyrobenie atomovej bomby. (keby tak jej vynalezcovia poznali samych seba!).


vnutorna filozofia sa da najlahsie dosiahnut kombinaciou psychedelickych drog
a starych uceni - to vedel. amazonska ayahuasca, indicky bhang, himalajsky caras,
norske muchotravky, mexicke lysohlavky. europsky alkohol sem akosi nezapada, ved
ako jediny vedomie nerozsiruje, naopak, obedzuje ho. bonnard vsak nevedel, ci
psychedelicke drogy su ten spravny sposob, ved existuje joga a meditacia. bral
to ako fakt, pretoze s nimi uz zacal. ostatne sposoby vsak vobec nepodcenoval.


vedomosti mohol ziskat v skole. tieto vedomosti mu vsak boli uplne nanic. uz len
z toho dovodu, ze o ne nemal zaujem. skola bola prenho len dalsia primitivna
push-technology. ako rozhlas a televizia. existovalo vsak moderne medium -
kyberpriestor... internet... miesto, kde sa obrovska neuronova siet ludi
rozhodovala, ku ktoremu nazoru (vyplodu neuronu) sa pripojit. internet uplne
popieral psychologiu. psychologia davu hovori, ze akykolvek dav je hlupejsi ako
priemerny jednotlivec. statisice open-sourcovych kyberpunkerov to popieralo.
vytvarali dielo, ktore nedokaze vytvorit ziadny jednotlivec osamote. internet
bol zdrojom informacii, navodom na riesenie problemu a samozrejme - neuronovou
sietou. mozno ludia na internete su spojeni priamo - neuronova siet s neuronovou
sietou. mozno ti kyberpunkeri uz vobec nepotrebuju klavesnicu, mys a monitor.
mozno vidia len to, co je za tymito "kraksnami" - neurony a data.


toto vsetko vedelo pred nim mnozstvo ludi. existovalo mnozstvo filozofov, ktori
poznali svoje vnutro viac ako cokolvek ine. existovalo mnozstvo vedcov, ktori
mali uzasne znalosti z roznych vednych disciplin. ale jedno este neskusal nikto.
nikto v tejto dobe. spojit vedca s myslitelom. a to bolo presne to, co spravil
bonnard na zaciatku nasho pribehu. chcel byt vedcom a myslitelom zaroven, aby
tak mohol poznat seba. cez seba mohol spoznat svet. a ked poznal svet a seba,
mohol pomahat inym. stal sa z neho levitujuci tibetsky mnich sediaci na zemi.
stal sa obrodou svatca v civilizovanom svete. bonnard slovo civilizovany bral
ako zivy priklad duality. civilizovany je priam nadavka. ked sa cez mreze, do
ktorych nas uvrhol svet za kurenie travy, pozerame na to, ako notoricki
alkoholici obcuravaju podchod. za prirodu a rozsirenie vedomia dostanete mreze!
za chemiu a obmedzenie vedomia dostanete tak maximalne tvrdu pecen. na druhej
strane slovo civilizovany znamena, ze uz nemusite stravit niekolko rokov na
lodi, aby ste sa dostali tam, kam sa dostat chcete. civilizacia znamena vedu
(cize vnutorne naplnenie), pricom absolutne odrieka duchovnu filozofiu, cize
sposobuje vnutorne prazdno.


nejakym zahadnym sposobom - pod vplyvom psychedelik - prisiel v kyberii na to,
ze svet duchovna a realisticky svet vytvaraju realitu. ved co ine bol pre neho
svet ako to, co vnimal vlastnym vedomim ? zmenou vedomia ziskal odlisny -
rozsireny a dualitny - pohlad na svet okolo neho. a prisun sveta, prisun dat,
informacii na spracovavanie, jedlo pre jeho neuronovu siet, to vsetko
zabezpecoval internet. maly opticky kabel.


"drogy su svinstvo!" - tvrdili mu intelektuali.

"kup si mobil a si s nimi!" - hovorili fetaci.


bonnard bol vsak iny ako ostatni. vedel, ze ked oboje vyuzije vo svoj prospech,
moze len ziskat. jeho vnutro sa naplni a navonok z neho bude vyzarovat klud.
bude sam. uplne sam. bude mat rad, ale nebude milovany. bude pomahat, no nikto
mu uz nepomoze.


stal sa z neho svatec, ktory prepadol diablovi. stal sa z neho fetak-vedec,
narkoman-intelektual. stal sa z neho... kybersaman.




nicotine, nicotine(at)hysteria.sk


navrat na obsah




ako hacknut banku


elektronicky vykradnut banku nie je zrovna lahke, ale nie je to ani take
tazke, ako by si ludia (rozumej poulicna zmes) mysleli. takze podme na to.


prvy krok: priprava


najprv si dame dokopy team ludi. budeme potrebovat tak aspon sest
softverovych vyvojarov na hackovanie, idealne, aby medzi nimi bol
specialista na as/400, sun solaris, unix vseobecne, digital vms, ibm vms,
windoze 95/98/nt no a na bankovy aplikacny software a komunikacne
protokoly. budeme tiez potrebovat jedneho cloveka v banke. staci ak to
bude clovek na strednej urovni, asistent manazera, cloviecik pri
prepazke, klepica co nahadzuje udaje do pocitaca, take nieco. kedze
slovenske banky teraz prijimaju relativne dost ludi a otvaraju nove pobocky
kade-tade, pre schopneho cloveka nie je problem najst si v banke robotu
niekde na strednej priecke rebrika hierarchie. jo a skoro by som zabudol
- potrebujeme niekoho sikovneho do fyzickej bezpecnosti a tiez nejakeho
vhodneho "socialneho inziniera", proste niekoho s vrtkym jazykom a silnym
sarmom :)


ok, teraz si vyberieme ciel nasho utoku. nebolo by dobre vybrat si
slovensku pobocku velkej zahranicnej banky - lebo ta bude dobre
zabezpecena. vo vseobecnosti nie je vhodna ziadna velka banka. mala
lokalna banka tiez nie je dobra, lebo by si velmi rychlo vsimli
poletovanie milionov korun von ich elektronickymi dvermi. idealna je teda
banka strednej velkosti so slovenskym IT manazmentom.


ako pri kazdom dobrom podnikatelskom plane, budeme potrebovat nejake
pociatocne investicie na masiny, pocitace, nastroje, zivobytie, uplatky,
atd. pre zaciatok by sme mohli vystacit s 2-3 milionmi korun. nasim cielom
je ukradnut z banky 100-200 milionov.


druhy krok: nabeh


nas clovek na fyzicku bezpecnost sa zamestna vo vybranej banke ako
elektrikar, udrzbar, alebo podobne. nasi hackeri dostanu za ulohu
skonstruovat jednoduche plostice (napr. podla navodu z phracku), tieto
nas clovek na fyzicku bezpecnost rozmiestni po banke na vhodnych
miestach. banky na slovensku nemonitoruju elektromagneticke spektrum a
nie su schopne najst plostice. vo vecernych hodinach pod zamienkou udrzby
sa nas "udrzbar" trosku pohrabe v kancelariach, pisacich stoloch a
skriniach. ziska prevadzkove predpisy, popis pocitacovej siete, fyzicky
si omrkne zapojenia v serverovni, atd. v tom istom case sa nas socialny
inzinier pokusi zistit maximalne mnozstvo informacii o tom ako banka
otvara, modifikuje a vyplaca svoje ucty. moze sa tvarit ako seriozny
business zakaznik, alebo napriklad ako obchodnik - dodavatel vypoctovej
techniky. moze sa skamaratit so zamestnancom banky, alebo nabalit
riaditelovu sekretarku. ked vie, ze v banke maju napriklad server as/400,
nas hacker moze zavolat do banky, tvarit ako novy servisny technik IBM a
pozistovat si informacie o hardverovej a sofverovej konfiguracii ich
servera. pokial clovek ovlada ten spravny dialekt a ma potrebne know-how,
nie je problem pozovat ako technik zahranicnej dodavatelskej firmy. no a
samozrejme nas hlavny insider zamestnany na strednej urovni bude ziskavat
maximum informacii o bankovej sieti, softveri, pracovnych postupoch a
zamestnancoch.


po par tyzdnoch by sme mali byt totalne v obraze. mame spisany vsetok
inventar suvisiaci s vypoctovou technikou a pozname postupy pri
platobnych prikazoch. je cas zacat trosku hackovat. s hackovanim zacneme
spociatku velmi opatrne. zatial sa budeme drzat prec od systemov, ktore sa
staraju o medzi-uctove a medzi-bankove operacie. skusime stary dobry
war-dialing a skusime napriklad najst nejaky modem, ktory je zaveseny na
telefonnej linke a odpoveda na zavolanie. v tomto stadiu je dobre zalozit
si ucet a spravit si na nom internet banking. skusime zistit, ci manazeri
ktori cestuju s notebookmi, nemaju spraveny dial-up do banky, alebo ci
niektory z dodavatelov hardveru banke nema spraveny remote monitoring cez
modem.


akokolvek sa dostaneme dnu, v kazdom pripade budeme k tomu potrebovat
zopar hesiel zamestnancov. tie ziskame lahko. nasi hackeri maju totiz v
tejto oblasti bohate skusenosti z napadania internetovskych serverov (viz
http://hysteria.sk/hacked/). nas insider z diskety nabehne na pc-kach
programy, ktore budu zachytavat stlacene klavesy. nabehneme back oriffice,
sniffery, budeme crackovat passwd fajly rozsiahlymi wordlistmi. ked prednedavnom
skupina binary division crackla nejakych 15 tisic hesiel z home.sk, pre nas predsa
nebude problem obdobne si zaobstarat aspon za tucet hesiel.. niektore
hesla uhadnu nasi socialni inzinieri, niektore mozno najdeme napisane v
poznamkovych blokoch, osobne som videl rootovske heslo napisane na
post-it papieriku a nalepene priamo na serveri v serverovej miestnosti
istej nemenovanej institucie, aby si ho administrator nemusel pamatat.
budeme sledovat zamestnancov a zistime ci maju konta na serveroch mimo
banky. ak maju konta na freemailoch (hotmail.com, post.sk, pobox.sk,
atd.) alebo hocikde na internete, crackneme alebo sniffneme ich heslo a
mame sancu, ze heslo vo vnutri v banke je take iste.


treti krok: programovanie


ked uz sme sa dostali do par masin na vnutornej bankovej sieti, snazime
sa sniffovanim a crackovanim hesiel dostat na co najviac systemov. aj ked
vonku v internete je bezne pouzivat sifrovane komunikacne protokoly ako
ssh, vo vnutropodnikovych sietiach je bezny telnet alebo rlogin a tie
mozeme v pohode sniffovat. vo vseobecnosti plati, ze servery vystavene na
internet su neustale vystavene scanovaniu hackermi, preto ich organizacie
pravidelne patchuju a kontroluju. na vnutropodnikove masiny za firewallmi
sa vsak vacsinou z pohladu security serie. ked ziskame uzivatelsky
pristup na unixovych serveroch, je lahke ziskat roota - lebo
vnutropodnikovy server malokto patchuje koli bezpecnosti. na komercne
unixy existuje take mnozstvo exploitov, ze ak napriklad natrafime na rok
staru instalaciu solarisu 7 bez security patchov, mozeme si vybrat
minimalne z poltucta exploitov...


ked uz mame zopar root kont, vytiahneme zbrane vacsieho kalibru.
nainstalujeme backdoory, trojske kone, vytvorime si vlastne konta.
nabehneme sniffre a monitorujeme vsetok traffic na sieti. naburame sa do
archivu e-mailov a pocitame si postu vyznamnych ludi. takto sa naucime
mechanizmus, akym sa v banke pohybuju peniaze, naucime sa nazvoslovie,
slangove vyrazy, skratky a terminologiu.. stiahneme si passwd fajly a
nabehneme crackery hesiel. kedze uz mame na masinach rootov a vieme mazat
logy, nabehneme network analyzery ako su nmap, satan, iss a podobne a
skanujeme siet na otvorene porty, sluzby a masiny. vzniknute logy mazeme
"cisticmi".


sucasne zacne boj na aplikacnom fronte. ziskame kopie softverovych
aplikacii, ktore banka pouziva na manazment penazi a uctov, pretoze chceme
tento softver potajme modifikovat a nasadit. pokusime sa ziskat zdrojaky
tychto programov. idealne by bolo dostat sa k zdrojakom cgi scriptov,
ktore obsluhuju internet banking a spravit si v nich backdoor. pokial sa
k zdrojakom nedostaneme, skusime dissasemblovat aplikaciu crackermi a
upravit si ju po svojom. neskor sa pokusime nahradit aplikacie nasimi
prerobenymi verziami.


skor ci neskor budeme presne vediet ako sa interne presuvaju peniaze
medzi uctami na urovni bezneho pracovnika a ako tieto presuny
kontrolovat. budeme vediet ake druhy bezpecnostnych kontrol a verifikacii
sa robia pre dany typ a velkost transakcie, kedy sa vykonavaju audity,
ako je nastavena ochrana pocitacovych systemov a ako ich monitoruju
spravci systemov. ale stale si nezoberieme ziadne peniaze.


kym ziskavame informacie o vnutornom fungovani banky, budeme tiez
ziskavat informacie o najnovsich hackerware-virusoch, autospameroch,
distribuovanych denial-of-service utokoch a podobnych lahodkach. hackneme
si servre po svete ako vhodne gateway masiny na spustenie takychto
utokov, ale zatial nic neaktivujeme.


nakoniec si cez web a pomocou anonymizerov a redirektorov zalozime ucty v
bankach na jamaike, cypre, bahamskych ostrovoch a v dalsich krajinach,
ktore poskytuju maximalne mnozstvo sukromia a minimalne kooperuju s
medzinarodnymi policajnymi a vysetrovatelskymi organmi. zalozime si tiez
konta v slovenskych bankach pomocou "bielych konov" a nastavime si v nich
internet banking tak, aby sme okamzite mohli cez internet posuvat velke
financne ciastky.


stvrty krok: kradez


nas uder si naplanujeme na jeden zo zhruba osmich rocnych obdobi so
zvysenou bankovou aktivitou, napriklad pred vianocami. najprv aktivujeme
denial of service utoky a pocitacove virusy. toto je ekvivalent dymovnice
a granatov so slznym plynom v civilnom svete - proste spravime trosku
chaos/bordel/paniku. pripadne pridame aj nejaky vyhrazny telefonat o tom,
ze na pobocke je umiestnena bomba, zapchame odtokove potrubia
kanalizacie, sposobime nejaky ten elektricky skrat, postriekame stenu
peknym grafiti napisom a tak. nasledne budu vsetci zamestnanci
vypoctoveho strediska banky skakat tri metre bez odrazu a sialene
monitorovat vsetky systemy, sledovat logy a tak.. samozrejme ze banka by
mohla predist serioznym skodam tak, ze zavrie vsetky pobocky dokial
vsetko nebude pod kontrolou. ale nespravi to, pretoze banka musi mat vzdy
imidz dokonalej spolahlivosti a fungovat 24 hodin denne.


.. ale toto vsetko je samozrejme iba na odvratenie pozornosti nepriatela..


hlavny utok pride na troch frontoch. najprv pretransferujeme peniaze zo
stoviek uctov na tie. ktore sme si otvorili. spravime to bud cez hacknute
konta operatorov, alebo pomocou hacknutej verzie softveru na manazment
uctov, alebo aj aj. z kazdeho uctu zoberieme len skromny obnos, taky aby
bol menej ako hodnota, ktora je nastavena na spustenie vyssieho stupna
bezpecnosti - moze to byt trebars prevod nad 50 000,- Sk, alebo 10% celej
hodnoty uctu, alebo oboje. v tomto obdobi roka sa to bude javit ako bezny
pohyb medzi uctami, nikto si to nevsimne ako zvysenu aktivitu pohybov
medzi uctami. teda mozno za normalnych okolnosti by si to vsimli technici
vypoctoveho strediska, ale teraz vsetci manazeri a technici banky sialene
pobehuju a maju co robit vysporiadat sa s panikou ktoru sme sposobili.
ked sa zacnu peniaze kumulovat na nasich uctoch, postupne ich
transferujeme von do nasich vonkajsich uctov, zase len v malych
ciastkach.


druhy frontalny utok bude zachytavanie skutocnych platobnych prikazov
medzi bankami. inak povedane - budeme zachytavat prevodne prikazy
legitimnych klientov nasej banky na ucty na cudzie banky. je extremne
tazke vytvorit falosny prevodny prikaz, pretoze vsetky platobne prikazy s
vyssou sumou (dajme tomu nad 100 000,- Sk) musia mat fyzicke povolenie od
najmenej dvoch manazerov banky. nedokazeme zachytit transfery medzi
bankami, pretoze cestuju zakryptovane. takze musime prevodny prikaz
zachytit po tom ako ho potvrdia podpisom manazeri v banke, ale pred tym
ako sa zasifruje. tento typ utoku sa vola man-in-the-middle utok a v
dnesnej dobe nie je na internete vobec neobvyklym javom. jednoduchym
prikladom z internetovskeho sveta je hacknuta binarka ssh klienta, ktora
zachyti a zapise heslo po tom ako ho uzivatel naklepe z klavesnice, ale
pred tym ako sa zasifruje a posle po sieti. ked sa elektronicke
potvrdenie platobneho prikazu presunie po lokalnej sieti banky - dostane
sa na server ktory de facto kontrolujeme, aby sa tam zasifroval. podobne
ako na uvedenom priklade s ssh staci modifikovat program ktory prijme na
serveri informaciu a zasifruje ju tak, aby ju este pred tym modifikoval a
zmenil prijemcu platobneho prikazu na niektory z nasich uctov. pokial v
istej faze prenosu ide po lokalnej pocitacovej sieti informacia o
potvrdeni platobneho prikazu, existuju aj utilitky ktore ho dokazu
"zabehu" modifikovat z masiny na tom istom segmente a netreba mat k tomu
kontrolu nad cielovou masinou.


treti frontalny utok pojde na server internet bankingu. ak na nom mame
roota, tak voila, pouzijeme podobny postup ako pri modifikacii platobnych
prikazov cestujucich po lokalnej sieti. ak nemame roota, mozeme pouzit
menej elegantny, ale predsa ucinny sposob. staci ak zmenime IP adresu v
internetovskom DNS zazname na dany server a presmerujeme WWW traffic na
nejaky nas hacknuty server. tuto metodu nedavno preslavil hack
www.hzds.sk, vsakze. vacsina slovenskych bank ma primarny DNS server u
svojho internet providera, a ti maju svoje masiny povacsine derave ako
emental - takze by to mala byt prudka pohoda. na novej IP adrese
nabehneme program, ktory si pokeca SSL s klientom, zapise si alebo
zmodifikuje prijate data o prevode, a vysledok posle skutocnemu
internet-banking serveru. jasne ze webovsky browser si popinda na to, ze
sa zmenil SSL verifikacny kluc. ale drviva vacsina uzivatelov klikne "OK,
accept" na nas novy kluc. ved poznate poulicnu zmes :)


peniaze, ktore miznu z napadnutej banky sa zbiehaju na niekolkych uctoch
inych slovenskych bank. okamzite posleme predpriravene prevodne prikazy
na banky do zahranicia. postupne skonsolidujeme vsetky peniaze na
niekolkych off-shore uctoch. mnohe off-shore banky poskytuju internet
banking, alebo aspon ovladanie cez modem. preto okamzite presuvame
peniaze z jedneho off-shore uctu na druhy a nakoniec v poslednej banke
nam ich biely kon vyzdvihne v hotovosti.


potom sa vyparime zo sceny na novom sportaku s V8 motorom. kupime si vilu
na grenade a pozveme iva lexu na afterparty.


utopia ?


myslite si, ze je to len utopia? vacsina computer-security expertov vam
potvrdi, ze hore popisany scenar je realizovatelny. na slovensku urcite.
ale kludne aj inde. v roku 1994 stiahol z citibanky 24-rocny hacker
vladimir levin z petrohradu 10 milionov dolarov. neskor ho chytili,
odovzdali do spojenych statov a bol odsudeny na tri roky nepodmienecne.
(az na 400 000 dolarov sa vsetky peniaze nasli.) taketo nieco sa deje
dost casto, ale zvycajne to neprenikne na verejnost - tvrdi michael
higgins - byvaly analytik informacnej agentury ministerstva obrany
spojenych statov. v usa pozaduje federalna vlada od bank aby reportovali
vsetky straty. higgins ale tvrdi, ze koli zlej publicite reportuju banky
skody vzniknute hackermi ako inak vzniknute skody. castokrat banka vobec
nekontaktuje policiu, lebo sa boji ze keby prenikli na verejnost spravy o
tom ze banka je hacknutelna, ludia by si z nej hystericky zacali vyberat
peniaze a sli by ku konkurencii. niektore zdroje z prostredia
financnictva v USA reportuju jednotlive pripady kde skoda presiahla sumu
100 milionov americkych dolarov.


pokial sa vyssie popisane scenerio hacknutia banky uz neodohralo aj v
nasich zemepisnych sirkach, coskoro sa odohra. taketo nieco zvladne totiz
len naozaj dobry programator, znalec pocitacov a hacker. taky, ktory by
na zapade vobec nemusel hackovat, lebo by mal dobre plateny job v
prekvitajucom IT priemysle. to vsak u nas neplati - dobre platenych jobov
v IT brandzi je malo, vlastne su len v slovenskych pobockach zahranicnych
IT firiem. ale aj v tych su prijmy vo vyske zlomkov zahranicnych prijmov.
navyse sa jedna povacsine len o povysunute marketingove kancelarie v
ktorych absentuju zaujimave a kreativne IT joby - tie sa koncentruju v
materskej krajine danej IT firmy.


aj ked nasa kradez by bolo elektronicka, pravdepodobne by bola nemozna
bez informacii zvnutra banky. Levin mal pri jeho kradezi partnera vo
vnutri banky. human resources manageri v slovenskych bankach nerobia
ziadne lustracie kandidatov o joby vo vnutri banky.. az na obligatny
vypis z registra trestov. hihi, neda mi v tejto chvili nepovedat, ze na
slovensku ich maju zatial vsetci hackeri cisty.


najlepsim tercom su banky strednej velkosti ktore sa agresivne vrhli na
informacne technologie a internetovy/gsm/tele banking, pretoze citia tlak
od technologicky-zalozenych velkych bank. toto ich prinutilo vletiet
strmhlav do sveta informacnych technologii bez toho, aby na to mali naozaj
potrebnu expertizu a znalosti, cim sami vytvaraju diery v bezpecnosti.
ktora zo slovenskych bank, ktore nedavno vypustili internetovy banking
naozaj do hlbky rozumie vsetkym technologiam suvisiacim s manazmentom
citlivych informacii v prostredi internetu ?


vsetky slovenske banky si nainstalovali nejaky ten mix hardverovych a
softverovych firewallov, ktore sedia medzi divokym slovenskym internetom a
ich hlavnym vstupom do internej siete. kto im ich vsak dodal? na
slovensku neexistuje poriadna firma so zameranim na computer security.
ano, je tu niekolko dilerov firewallov, ale to su suchi obchodnici. no a
samozrejme kazdy zo systemovych integratorov posobiacich na nasom trhu
tvrdi ze robi "aj" security, nemaju vsak na to dedikovany seriozny team
odbornikov. prave tieto velke IT firmy, ktore maju v lukrativnom bankovom
businesse najvacsi podiel na dodavkach, realizovali vacsinu security
rieseni v slovenskych firmach. ten kto cosi vie o tom ako u nas
prebiehaju vyberove konania na dodavky v oblasti IT, vie, ze technicka
uroven ponukanych rieseni je v podstate irelevantna. vyhravaju kontakty a
bocne prachy, vsakze.


a co nase skolstvo? pripravuju nase univerzity mladych profesionalov na
moderne bezpecnostne riesenia? hihi, no podme radsej dalej.


v podstate aj tak mozeme zabudnut na kvalitu firewallov. niektore su
dobre, ine su slabe. ale hackeri vzdy hladaju male dierky v systeme,
zadne vratka. netreba buchat baranidlom do hlavnej brany, ked staci rozbit
okienko na kupelni a vliezt dnu. plati zname klise, ze retaz je len tak
silna, ako je silny jej najslabsi clanok. a mimochodom, slovenski dileri
krabic so security softwarom zacali ponukat aj sofistikovany (rozumej
drahy) intrusion detection softver. tento komplexny softik sa snazi
rozpoznat hackersky traffic od bezneho trafficu. velmi narocna uloha,
ktoru ale sikovny hacker zvladne obist. ista security firma zo seattlu
ktora robi penetracne testy bankam napisala ze zo styridsiatich pokusnych
testov zareagovali intrusion detection systemy len raz.


servery, ktore obsluhuju internet banking, by mali by fyzicky oddelene od
internej siete banky. kaslime na programatorov, nic nie je bezpecnejsie
ako ked je internetovy server banky totalne fyzicky mimo a nevedie z neho
ani jeden kabel do internej siete. dnes vsak tuto logicku strategiu
narusuje moderny marketingovy trend. centralizacia! klienty sa stensuju
a servre sa konsoliduju do mamutich multi-domenovych strojov. ak je
internet banking na jednej domene multi-domenoveho servera a na dalsich
domenach su senzitivne data, bezpecnost visi na sikovnosti programatorov
operacneho systemu (zatial to vo svete unixu robi len sun a compaq). a na
milosti Vsemohuceho, lebo ak chcete volaco vediet o bezpecnosti
operacnych systemov spominanych vyrobcov, natukajte si vhodne slovicka do
searchenginu na packet-storm security sajte. uvidite desiatky
reportovanych bezpecnostnych bugov a exploitov na ne len za posledny
rok-dva.


jeden zakladny problem na slovensku v oblasti compsecurity suvisi s faktom,
ze bezpecnost pocitacovych systemov su preteky s casom. aj ten
najbozskejsi bezpecnostny system sa moze ukazat zranitelny vdaka
novoobjavenej security vulnerabilite. nedavna hysteria session 2000 v
piestanoch ma presvedcila o jednej veci - na slovensku je zdrava komunita
hackerov, ktori spolu velmi efektivne komunikuju a technicke novinky sa
medzi nimi siria rychlostou motoroveho prasata. a sprav je dnes veru
neurekom. statistika hovori, ze kazdy treti den sa objavi novy security
bug vo Windowse NT. ked hovorim o potrebe byt neustale up-to-date,
nepoukazujem len na povahovy rozdiel hackera prahnuceho po informaciach
od znudeneho admina s na_setko_serem strategiou. stale totiz existuje
principialny rozdiel medzi ochotou zdielat security informacie v tychto
dvoch rozdielnych svetoch. kym hacker nadsene zdiela svoju informaciu s
internetovou komunitou, komercna firma, ak aj nieco najde si to radsej
necha pre seba. internet security je boj o to, kto je informovanejsi a u
nas su na cele peletonu hackeri s dalekym naskokom pred hlavnou skupinou
cyklistov. vacsina adminov odstupila z pretekov pred prvym stupakom a
popijaju v bufete.


prenosy dat medzi bankami su sifrovane a je nepravdepodobne, ze by sa nam
podarilo zlomit sifru ktoru pouzivaju. nie, ze by to bolo nemozne.
dejiny su plne pripadov kedy sa prelomila "neprelomitelna sifra".
spytajte sa vyrobcov mobilnych telefonov, medialnych firiem ktore
vyrabaju DVD, alebo hocijaka firma, ktora pouzivala DES enkrypciu. Vacsina
bank v dnesnej dobe pouziva triple-DES, na prelomenie ktorej, by udajne
bolo treba "mimozemsku technologiu". my ale nepotrebuje crackovat
triple-DES. dokazeme zistit heslo zamestnanca, alebo zachytit informaciu
pred tym ako sa zasifruje.


v anglicku sa napriklad stal pripad, ze pracovnicka banky zistila, ze
zmena adresy majitela uctu sa nikam nezaznamenava. takze si zmenila
adresy niekolkych klientov banky na svoju vlastnu adresu kratko pred
koncom mesiaca, dostala postou ich seky, a potom adresy zmenila naspat.
robila to pocas desiatich rokov, potom ju chytili.


dokaze sa banka ochranit proti distribuovanemu DoS utoku cez internet ?
nie. a nech vas nemyli fakt, ze sa v cechach alebo na slovensku este
nezaznamenal rozsiahly utok podobny nedavnym utokom v USA na yahoo.com a
dalsie sajty. programy ako "extended trinu" sa daju stiahnut vselikde a
na ich spustenie je akurat treba mat podchytenych desiatky alebo stovky
masin. v usa takymto utokom vyrazne pomohli domaci uzivatelia na rychlych
pevnych linkach (cez kablovu televiziu a pod.) so zle zabezpecenymi
PCkami. to nas este len caka - UPC ohlasila start internetu cez kablovku
v centre Bratislavy na jar buduceho roku. okamzite budu pribudat stovky
vhodnych kandidatov na "otrokov" distribuovanych utokov - rychla linka a
zle zabezpecene PCko (rozumej - defaultne nainstalovane windowsy)


ak - alebo, povedzme si uprimne - ked sa na slovensku stane prvy velky
hack banky, o ktorom sa bude verejne vediet, vacsina ostatnych bank
pravdepodobne zvysi uroven zabezpecenia tak, ze asi nebude mat zmysel ist
po nich. alebo aspon nie dovtedy, kym je na internete tolko dalsich
prachatych firiem s ovela mensim zabezpecenim, ktore ponukaju drahy tovar,
zaujimave data, cisla kreditiek, platby za fiktivne sluzby, a tak dalej.


z pohladu hackera chvalabohu je iba malo IT firiem, ktore si bezpecnost
kladu ako jeden z najhlavnejsich kriterii pri tvorbe softveru. takze
aspon v dohladnej buducnosti sa bude nachadzat stale dostatok
bezpecnostnych dier. preto ked si oddychneme na vile v grenade a vratime
sa o nejaky ten rok na slovensko aby sme zase zarobili hackovanim, opat
sa skvele namastime.




pajkus
..s pouzitim vselijakych zdrojov..




navrat na obsah




exploitovanie cez plt (procedure linkage table) a got (global offset table)


Ciel


Objasnit mozne sposoby exploitovania nezasobnikovych overflowov (systemy
chranene StackGuardom, StackShieldom, non-executable stackom).


StackGuard


Klasicky exploit je postaveny na modifikovani navratovej adresy prepisanim
lokalnych premennych, alebo bufra. Vedlajsi efekt takehoto typickeho
zasobnikoveho overflowu je, ze znicime/modifikujeme vsetky data na zasobniku
od prepisovaneho bufra az po navratovu adresu. Viacmenej nas to nemusi
trapit, vzhladom k tomu, ze spustenie shellcodu (nejaky ten setuid, exec
syscall) nevyzaduje pritomnost tychto dat. Problem by mohol nastat v pripade,
ze modifikujeme navratovu adresu za adresu glibc funkcie (strcpy, system,
exec), kedy je nevyhnutne, aby sa tato funkcia zavolala s presne nastavenymi
hodnotami vstupnych argumentov (bud v registroch, alebo v zasobniku) a
neposkodenym EBP.
Princip StackGuardu je jednoduchy. Uklada sa "canary" slovo hned vedla
navratovej adresy v zasobniku. Ked je hodnota "canary" slova po navrate
z funkcie zmenena, zaznamena sa pokus o overflowovanie zasobnika, program
zaloguje vystrahu o danej snahe do syslogu a skonci.


Zasobnik vyzera asi takto :

	...				    ...
|-----------------------------------|
| parametre predavane funkcii |
|-----------------------------------|
| navratova adresa funkcie (RET) |
|-----------------------------------|
| "canary" slovo |
|-----------------------------------|
| lokalny frame pointer (%ebp) |
|-----------------------------------|
| lokalne premenne |
|-----------------------------------|
... ...

Na to, aby ochrana bola ucinna, utocnik nemoze mat moznost naspoofovat
"canary" slovo nejakou hodnotou vlozenou do zasobnika cez overflowovany
retazec. Stackguard pouziva proti takemuto moznemu spoofvaniu dve metody :
"terminator" a "random".

Terminator canary obsahuje znaky NULL(0x00), CR (0x0d), LF (0x0a) a EOF (0xff)
- 4 znaky, ktore zabezpecia prerusenie vacsiny retazcovych operacii (strcpy,
sprintf...) a znizia riziko uspesneho overflowu.

Random hodnota sa vybera nahodne v okamihu pustenia programu. Tym padom utocnik
nemoze zistit tuto hodnotu prehladanim tela binarneho suboru. Nahodna hodnota
sa berie z /dev/urandom (ak je k dispozicii) alebo sa vytvori hashovanim
casu a datumu dna (ak /dev/urandom nie je systemom podporovany). Nahodnost
je povacsine dostatocna na to, aby sme zabranili vacsine moznych snah o
overflow.

Novsie verzie StackGuardu podporuju tzv. XOR Random Canary mechanizmus, kedy
sa xoruje nahodne (random value) hodnota s navratovou adresou funkcie. Canary
valid




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




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