Hlavní navigace

Linux - bezpečnost a exploity

16. 12. 2004
Doba čtení: 3 minuty

Sdílet

Recenze nové knihy od Miroslava Dobšíčka a Radima Ballnera.

Nedávno jsem se procházel pro pražském Smíchově a trochu z nudy a trochu ze zvědavosti jsem se zašel podívat do knihkupectví, co je nového v počítačové literatuře. Po chvíli hledání tučňákova oddělení mi padla do oka kniha Linux – bezpečnost a exploity od autorské dvojice Miroslav Dobšíček a Radim Ballner. Po letmém prolistování se mi zdála natolik zajímavá, že jsem se rozhodl si ji koupit. Naštěstí cena byla příznivá, takže jsem si ji mohl dovolit i ze svého prvního platu a ještě mi zbylo na svetr na vánoce :-)

Sám se považuji za průměrného dlouholetého uživatele Linuxu. Nějaké to programovaní v C, správa síťových služeb, psaní v Latexu a ve volném čase pomoc s překlady do češtiny různých open source programů. O exploitech jsem vždycky tušil zhruba to, že někde něco přetéká a při troše štěstí to neznamená, že aplikace spadne, ale že vás někdo hackne :-) Místo pádu aplikace tak padne vaše soukromí, ale co.

Kniha je rozdělena do několika kapitol, konkrétně sedmi, ale protože nemám rád moc psaní, tak to shrnu do třech.

Úvod

V úvodních kapitolách se letem světem dozvíme něco o stránkování/seg­mentování na x86 a o tom, jak linuxové jádro tyto radosti (ti, co už to znají, vědí, že spíše strasti) využívá a nastavuje. Potom následují základy programování v assembleru pod Linuxem a seznámení s pár nástroji, bez kterých by život nebyl tak krásně rozmanitý. Nutno říci, že po přečtení těchto kapitol jsem nebyl ze všeho úplně moudrý, ale s dávkou odvahy a kávy jsem se pustil do dalšího čtení.

Shellkódy a exploity

Konečně to začalo. Popis jednoho shellkódu následuje druhý, a protože nechybí obrázky a množství zdrojových příkladů, jsem po pár dnech schopný psát a rozumět zběsilostem ve stylu (pozn. red: lízátko pro toho, kdo předcházející zeugma převede do validní podoby bez ztráty významu :) –Johanka) :

char shellkod[] =
    "\xeb\x1f\x5e\x89\ ....

int main() {
    int *ret;
    *((int *)&ret + 2) = (int) shellkod;
    return 0;
}

Dále jsem se dozvěděl, jakým způsobem se hotový shellkód vloží do paměti, aby byl v pravou chvíli spuštěn. Nepříjemným zjištěním bylo, že možností je opravdu mnoho a šance, že při programování v céčku uděláte osudovou chybu, jsou docela veliké. K závěru jsou zmíněny možnosti, jak staticky a dynamicky ohlídat váš výtvor, případně naučit jádro lepšímu chování. Informace v tomto směru ale považuji spíše za orientační.

Viry a ELF formát

V závěru knihy je popsán binární spustitelný formát ELF, který se používá jak na vašich tučňácích a ďáblících, tak snad na všech klonech Unixů. Znalost tohoto formátu se hodí jak pro exploitovací techniky, tak i pro, pokud vás zajímá, odolnost proti virové nákaze. Zklamáním možná bude, že samotný formát ELF je spíš virus-friendly než cokoliv jiného. Podle uvedeného náčrtu jsem si zkusil napsat injekci „Hello world“ do pár binárek a opravdu to funguje.

Co říci na závěr? Z množství nově získaných informací jsem byl jednoznačně nadšen. Knize lze snad vytknout jen příliš svižné tempo, ale to je diskutabilní. Po prvním zakousnutí jsem stručnost a jasnost ocenil více než omáčku po cestě a tlustou knihu na stole. Za zmínku také stojí, že u obrázku jsou chybné české znaky, ale dá se to přežít. Asi došlo k nějaké tiskařské chybě, která si našla cestu až do finálního výtisku.

root_podpora

Protože s Mirkem Dobšíčkem jsem se nejen potkával na chodbách pražského FELu, ale pár let se staral i o počítačovou síť na našem bloku na Strahově, dovoluji si ho tímto pozdravovat a pogratulovat mu k úspěšné diplomce, která se dočkala knižního vydání.

Linux – bezpečnost a exploity
Miroslav Dobšíček, Radim Ballner
160 stran, 169,– Kč
ISBN 80–7232–243–5

Byl pro vás článek přínosný?