Viskas, ką norėjot sužinoti apie eksploitus, bet nedrįsote paklausti…
Daugelį žmonių domina klausimas: „Kas yra eksploitas?“ Pabandysiu duoti išsamų atsakymą. Taigi:
Eksploitų rūšys:
Sąlyginai juos galima suskirstyti į dvi rūšis:
– Eksploitą gali sudaryti tik vienas failas, kurį galima iškart paleisti arba prieš tai sukompiliuoti.
– Eksploitas gali būti sudarytas iš archyvo (dažniausiai jis turi .tar arba tar.gz plėtinį, nes daugguma jų rašoma UNIX tipo sistemoms). Šiuose archyvuose gali būti kas tik nori:
* pl failai
* C, Java, etc. programinis kodas
* paprastas „gudraus triuko“ aprašymas
* viskas, kas nepaminėta aukščiau.
Veikimo algoritmas:
* Skanuojame hostą (geriausia su nmap)
* Ieškome atvirų prievadų (ports) ir žiūrime, kokios juose „kabančios“ programos
* Telnetu prisijungiame prie atvirų prievadų ir sužinome šių programų versijas
* Randame „skylėtą“ tarnybinę programą
* Ieškome jai eksploito
* Pakrauname jį į shell-account‘ą
* Kompiliuojame
* Paleidžiame eksploitą
Eksploito paieškos…
Tarkime, kad radome skylių turintį „demoną“. Greitai lendame į bugtrack‘ams skirtas svetaines ir pagal „demono“ ar konkrečios OS versiją randame eksploitą.
shell-account
Variantai:
1. Jūs jau turite shell‘ą (jei taip, iškart pereiname prie kito punkto).
2. Shell‘o jūs dar neturite ir jums jo, žūtbūt, reikia.
Veiksmai:
– Galima naudotis dykai gautu shell‘u (tačiau jame bus atjungta daug mums reikalingų dalykų :))
3. Jūs turite kompiuterį su įdiegta UNIX tipo sistema (žr. kitą punktą)
Kompiliavimas
Tarkim, kad mums reikalingas eksploitas parašytas C programavimo kalba – ja rašoma dauguma eksploitų.
gcc file.c -o file – Sukompiliuojamas C kodas, turėtų gautis dvejetainis failas.
Jei rastas eksploitas – suarchyvuotas, tai jį išpakuojame:
tar -xvzf pack.tgz
cd [nurodomas katalogo vardas]
./configure
make
make install
Jei eksploitas kuo nors specifinis, prieš jo įdiegimą gali tekti paskaityti Readme File.
Eksploito paleidimas
Jei turimas Perl kalba parašytas eksploitas, jo paleidimui naudojama komanda:
perl exploit.pl [parameters|flags]
Jei jis parašytas C kodu, tai:
$./sploit [parameters]
Kiekvienas eksploitas turi savo parametrus, jų reikšmės nurodomos, jį paleidžiant.
Keblumai su dykai gautais shell‘ais
Nemokamai gautuose shell‘uose dažniausiai yra tokių bėdų:
– nepakankamai teisių
– neįmanoma prijungti .h bibliotekų (o jas naudoja visi eksploitai)
Šios problemos – joks stebuklas. Jei administratoriai leistų visas shell‘ų funkcijas, tai būtų jau nebe nemokama tarnyba pažinčiai su UNIX sistema, o masinių serverių atakų poligonas. Tikiuosi, kad jums dėl šito problemų nekils.
Keletas paaiškinimų:
1. Kas yra šelas?
Pažodžiui „shell“ verčiama kaip „apvalkalas“. Tai – programa, vykdanti vartotojo komandinėje eilutėje įvedamas komandas, jas perkeisdama į operacinėms sistemoms suprantamą formą ir OS atsakymą vartotjui pateikianti jam suprantama forma :). Kitas šelo pavadinimas – komandinis interpretatorius. Dažniausia vartojami šelai – tai bash, sh, csh, tcsh, psh. Jie skiriasi tik tuo, kad kiekvienas šelas skriptų rašymui turi savo kalbą (giminingų šelų ji – beviek vienoda, pvz., taip yra su bash ir sh).
Taip pat jie skiriasi ir funkcionalumu: kai kurie šelai leidžia keisti komandinės eilutės išvaizdą. Beveik kiekvienas šelas turi savo kintamuosius. Jei nežinote, koks jūsų turimas šelas, įveskite komandą echo $SHELL. Šelas pagal nutylėjimą keičiamas chsh komanda.
2. Kas yra demonas [daemon]?
Demonu vadinama programa, veikianti foniniu režimu (background) ir neturinti kontrolinio terminalo. Vienu žodžiu, tai – rezidentinė programa – mes jos nematom, tačiau ji veikia.