pozdrav,
odmah da kazem , nije mi cilj da izzazivam neki flame ili bilo sta slicno
these are just my 2 cents
sve sto je cynique rekao je tacno , samo kako je on rekao to zvuci jako obeshrabrujuce
sto u sustini i jeste
stvari su postale mnogo teze, sto je naravno dobro ,
trenutno radim na maturskom radu u kome je rec o Openwall linuxu i njegovim sistemima zastite
prvo sto ima jeste non exec stranice, tako da klasican shellcode pristup ne radi
ceo libc je mapiran na memorijske adrese koje imaju null bajtove sto onemogucava klasican ret2libc pristup
sta onda ostaje?
naravno , ovo nije savrseno jer onda mozete da uradite ret2PLT ,, gde se nalaze adrese svih funkcija koje program
koristi, pa pomocu toga opet mozete da izgradite nesto sicno ret2libc exploitu
samo da napomenem advanced ret2libc tehnike koje je predstavio nergal
http://www.phrack.org/archives/58/p58-0x04
non exec pages nije nista novo , ako se nevaram solaris ga ima od pamtiveka, a *BSD ima svoje W^X fore
naravno , ASLR ili ti addres space layout randomization nije nista novo i postoji odavno
linux 2.6 grana kernela ga ima naravno
to dodatno komplikuje stvari , randomizirane su adrese libc-a , stack i sl ,
ali ta randomizacija nije prevelika , (32bitni adresni prostor mora da se podeli na sve potrebno, tako da za pojedine stvari ostaje
relativno mala entropija) sto omogucava brute force tehnikama da daju dobre rezultate.
Ima jedan , ne bas dobar , ali zadovoljavajuc tekst bas na tu temu od nekih likova sa stanford universiteta
http://www.milw0rm.com/papers/116
sve vece linux distribucije imaju gorepomenute ili slicne vidove zastita same po sebi, Openwall ekipa konkretno pproverava sav software koji njihova distribuciaj koristi , i naravno dodaju sopstvene patcheve. Suse konkretno ima jako jako dobro auditane dozvole na fajlovima ( secam se par symlink bugova cija exploitacija nije bila moguca na suse upravo zbog toga...) i tako dalje.
Najdivnija stvar na koju sam ja naisao u poslednje vreme jesu nove 64bitne platforme x86-64. Stvari se tu menjaju mnogo na bolje.
Samim tim sto je addres space mnogo mnogo veci (2^32 << 2^64 ) ima mnogo vise mesta za randomizaciju, pored tog aimamo i NX Bit koji stiti memorijske stranice,
jos jedna komplikacija jeste i promena u samom asembleru procesora, sada funkcije ne primaju argumente sa steka vec direktno iz registara
sto je dosta brze , ali definitivno onemogucava ret2libc tehniku.
Gosn Sebastian Khramer je objavio svoje istrazivanje na ovu temu gde pokazuje svoju borowed code chunks tehniku (za koju mislim da se prvi put pominje u nekom teksstu o solaris exploitaciji , ali nije bitno ) kojom zaobilazi i te pomenute zastite
http://www.suse.de/~krahmer/no-nx.pdf
a da, video sam visual studio na delu kad prijavljuje greske u programiranju , zaista lepa stvar , cak je prepoznao i SQL injection ranjivost koju sam porobao da napravim, nisam video kako se snalazi sa integer overflow bugovima
na drugu stranu gcc 4.0 ima neke slicne stvari , daleko manje obimne i siromasnije , ali daje upozorenja
Ponavljam , cilj ovog posta nije bio da negiram bilo sta sto je cynque rekao , zaista nisam ekspert kada je rec o MS-ovim platformama , cynque je daleko kompetentniji od mene
cilje je bio da predstavim trenutnu situaciju vezanu za linux systeme,
odavno je proslo vreme prostih bugova , a takodje i vreme prostih exploita,
zadnji jako prost bug koga se secam jeste skorasnji sandmail snprintf() bug , ali je i on bio daleko od prostog za exploitanje (race condition ...)
pozdrav,
Aca