Rootkity

04.08.2001 20:07

Mozna ste o nich slyseli, mozna ste je i videli, nekteri je i pouzili. Rootkit je sbirka programu, ktere vas maji maskovat na hacknute masine.

Typicky obsah rootkitu jsou kryci nastroje, backdoorovane programy a par nezbytnych utilit jako sniffery a redirektory.
Na internetu se jich povaluje hafo hotovych. Vacsina z nich je vsak mirne zastarala, nebo jinak nevyhovujici a v dobe kdy nemuzete verit ani sve vlastni matce, taky nebezpecna. Nikdo vam nezaruci, ze nejaky zabackdoorovany program z baliku neudela echo: \"ahoj, sem tu, cekam na tebe, hacknuta.masina.cz, port 3000\" | lamerko@post.cz.

Lepsi variantou je si vyrobit takovy rootkit sam. Takze co tam chceme mit : nejake cistice, ktere nas vycisti z logu neco na kryti procesu, souboru, konekci par zabackdoorovanych programku utility (sniffer, redir...), ostatni veci - zalezici na situaci (file server, chat server, eggropi, bnc) cistice neni co resit. Na binarni logy wipe (nebo jeho klony), vyztuzeny par obsluznyma skriptikama, Na textove logy si muzete napsat nejaky primitivni shellovy skript, ktery je bude grep-v-ovat.result: wipe, cistic.

Skryti procesu etc.doba, kdy strasne frcelo patchovani ls, netstatu a ps je uz davno za nama. Patchovani ma totiz hned nekolik nevyhod. Nejenom, ze je nahrazovani binarek dost nebezpecne (tripwire, rpm -Va), ale admin si muze jednoduse donest svoje nezmenene na write protect diskete. Navic systemovych nastroju porad pribyva a vsecky je nemate sanci opatchovat. Par takovych rootkitu existuje (maji pres dve mega a obsahuji zdrojaky desitek systemovych nastroju). V dnesni dobe je jejich pouzivani sebevrazda. Vubec nejnebezpecnejsi jsou programy, ktere zkompilujete na jine masine nez na te, kde je chcete pouzit. Videl sem pripad, kdy nejaky lamerko hackl masinu a patchl binarku loginu svoji verzi. Nejak si nevsiml, ze na systemu jsou jine knihovny nez ma on a tak uz se neprihlasil nikdo (dokud neprisel administrator a nevrazil tam bootovacku).

Asi nejlepsi variantou jsou LKM. Takovy kernel modul nezabira moc mista, potichu ho zkompilujete, insmodnete, hidnete mod_hidem a mate vystarano. Admin si muze donest co chce, upravene je primo jadro a tak nema pravdive informace sanci dostat (ma, ale to by musel ten modul nejak odstranit a vrati do poradku syscall table). Navic nejsou zadne binarky patchnute - tripwire ani rpm nervou, ze maji blbe chcecksumy.

O komunikaci s jadremi se stara obsluzny program, ktery dela prislusne syscally, ktere LKM zna (mkdir /dej_mi_roota). Takovych modulu existuje nekolik - adore a knark jsou asi dva nejznamejsi.
Adore umi pouze hidovat procesy a zneviditelnovat adresare, Knark umi navic i skryvat konekce a redirovat exec (velice uzitecna vec).
Bohuzel knark se mi na par masinach vubec nepodarilo zkompilovat, takze pracuju na upravene verzi adore, ktera bude umet i hidovat konekce.
Result: adore, knark backdoory - nezbytnou soucasti jsou i zabackdoorovane programy, ktere vam daji v pripade potreby remote access a uid 0.

Je hodne moznosti.. Nejzastaralejsi zpusob je nechat zaheslovany bindshell na nejakem vysokem portu. Bohuzel je to videt az prilis moc - staci, aby si admin jenom tak ze srandy nmapoval masinu aby videl, jak mu funguje firewall. Pekne reseni jsou i cgi a php skriptiky, ktere provadeji exec. Bohuzel je tohle pro normalni praci az moc nepohodlny pristup. Asi nejschudnejsi je opatchovat ssh, aby akceptovalo nejake univerzalni heslo. upravu zdrojaku necham na vas, neni to nic sloziteho. Uzitecne je i automaticky hide (po prihlaseni hidne vas proces pomoci adore/knarku) a disable logovani - v messages se neobjevi nic jako sshd connect from xxx.xxx.xxx.xxx...

O nebezpecnosti patchovani binarek jsem uz mluvil. Ted pouzijeme jinou fintu. Knark umi perfektni vec - redirectovani execu. Muzeme tedy nastavit, at se pri spousteni otvira jiny soubor nez ten, ktery opravdu chceme spustit. Pokud chceme tedy teto moznosti vyuzit, zkompilovanou verzi naseho sshd nepreplacneme puvodni verzi, ale uklidime si ji nekam do chladecku. Pomoci knarku nastavime redir exec na nasi verzi a tripwire ani rpm nic nezjisti (budou cist originalni verzi).
Result: patchnute sshd

Utility sniffer : dobry sniffer je dulezitou soucasti kazdeho rootkitu. Snifferu existuje spousta, Od jednoduchych programku, ktere dumpujou prvnich 512 bytu kazdeho spojeni, az po komplexni, ktere umi selektivne vybirat spojeni, sifrovat logy a killnout se pri prichodu roota. Tady bude asi nejlepsi osvedceny czert sniffer.sniffer, ale asi udela vec, ktera je nezadouci, aby byla videt.
Nastavi promisc flag sitovky. zabranit tomu sice nelze, ale muzeme promisc aspon zneviditelnit pomoci knarku. Krome sniffovani obycejnych tcp konekci muzeme i chytat hesla ssh klienta. Pokud je na masine aspon trosku vetsi provoz, urcite budete mit za par dnu/tydnu hesel az nad hlavu.

Redirector tady zalezi na vkusu. Je dobre sebou vzit i interaktivni, i neinteraktivni, nikdy nevite, kdy se vam budou hodit. Ohledne launchovani, je dobre je poustet z prikazove radky, Imho je to pohodlnejsi.

Bindshell utils : pokud se z teto masiny budeme dostavat nekam dal, urcite stoji za to pridat do baliku tyto 4 skriptiky. Vytvari pohodlny interface k bindshellu, ktery nam krome exec a sh, umoznuje pres bindshell i download a upload.
K nalezeni v brutalwaru.netcat - obdoba k programu cat ale se sitovym rozsirenim.
Velice uzitecne k posilani souboru, jako klienty k ruznym sitovym sluzbam apod. V zakladni sade spousta skriptiku (ident scan, web server, web proxy, jednoduchy scanner)ostatni...

Chat server : nejpouzivanejsi chatserver z tridy tech nejjednodusich je chat-0.2 (kde se vzal to nevim, ale je to uz postarsi kousek softwaru). Nabinduje si port a ceka na klienty. Umi room msg, priv msg a dokaze logovat do souboru. Jedina jeho nevyhoda je, ze je nesifrovany, cimz se prakticky degraduje jeho jakakoliv pouzitelnost. Na druhou stranu sifrovane chat servery jsou prilis velke na to, aby se nam vlezly do rootkitu, nechame tedy jakekoliv realtime komunikacni nastroje na dalsim specializovanem baliku.
Ircpro tejkry a pro jine, predem ztracene existence je jednodusi pridat si bouncery, floodery, smurfery a irc boty (eggies, void) primo do baliku. Sice tim rootkit (mno tak uz se ani neda nazvat, spis balik nastroju) vyrazne pribere na objemu, ale usetri to praci.
File servery : cpat do rootkitu nejaky komplexnejsi fileserver je blbost. pro nase ucely staci jednoducha verze webserveru z prielomu (20 radku), ci jednoduchy shellovy skriptik sendsome, pouzivajici netcat.

Zaver.
Mno tak sme si vytvorili svuj rootkit, staci jen pridat instalacni skript, ktery programy zkombajnuje a rozstrka po masine a zabalit. Umistime ho nekde na web nebo ftp, odkud si ho jednoduse stahnem (wget, neinteraktivni ftp) i pres bindshell.thement