Linuks I Maliciozni Programi
Total Page:16
File Type:pdf, Size:1020Kb
[0] Intro * Napomena: Ako pri čitanju članka nai ñete na neke nepoznate pojmove, preporu čujem čitanje Malog Re čnika Zaštite (http://www.mycity.rs/Zastita/Mali-recnik-zastite.html) kako bi se informisali o tim pojmovima ili možda rešili neke nedoumice po pitanju razgrani čavanja pojmova. Rešio sam da malo prou čim kakvo je stanje na Linuksu po pitanju malicioznih programa ( malware -a) i da ovim člankom utvrdim " malware scenu" Linuksa. Da bih to istražio morao sam da pose ćujem razli čite underground sajtove na kojima sam mogao da na ñem razne maliciozne programe. Kao što znamo, Linuks generalno važi za bezbedan operativni sistem, ali ipak nije u potpunosti imun na malware . U članku će biti opisani razlozi zašto je to tako, na čini zaštite, inficiranje u realnom vremenu, pokušaj dezinfekcije i neki generalni saveti i utisci. Kod pojedinih stvari će biti napravljena paralela sa operativnim sistemom Windows . Bobby me je, tako ñe, snabdeo sa razli čitim uzorcima malware -a za Linuks u vidu ELF datoteka, shell i perl skripti koje sam testirao na virtualnoj mašini, a neke na fizi čkoj mašini (testirani malware ne ću da imenujem, ve ć ću ga pomenuti u generi čkom smislu). Za svaki operativni sistem je mogu će napraviti malware koji će uništiti, tj. onesposobiti taj operativni sistem. Me ñutim, moderni malware ima tendenciju da preuzme kontrolu nad ra čunarom (tj. da napravi zombija) kako bi poslužio nekoj svrsi tvorcima malware-a ili kako bi se pokrali neki podaci. Što se ti če onesposobljavanja operativnog sistema, najlakše ga je onesposobiti tako što mu se zauzmu resursi. Na primer, pretpostavimo da operativni sistem ima više korisnika, i da korisnicima nije odre ñena quota za raspoloživ prostor na disku. Postoji PoF (proof of concept) malware koji prodire na sistem, i kreira izuzetno veliki broj malih fajlova, sve dok ne popuni File Alocation Table (FAT ili ekvivalentan na datoj particiji) čime prakti čno blokira mogu ćnost kreiranja datoteka ostalim korisnicima. Druga mogu ćnost je kreiranje ogromnog broja programskih niti (thread ova) ili procesa, sve dok se ne popuni limit broja procesa/ thread ova koje kernel može da kreira. Time se blokira rad gotovo svih aplikacija na ra čunaru. Ovaj napad se zove " Fork Bomb " ( Fork je isto što i Thread kod Windows a). Onda, postoje i bombe za antivirus programe. Jedna od najpoznatijih je ZIP bomb . Predstavlja posebno osmišljenu ZIP datoteku (veli čine svega par kB) kome je struktura direktorijuma tako napravljena da se vrti u krug, usled čega antivirus bude beskona čno dugo zaposlen skeniranjem te arhive. U slu čaju Linuksa - postoji TAR.GZ bomba . [1] Tvr ñava Linuks predstavlja tvr ñavu koju je, u principu, teško probiti iz slede ćih razloga: 1. postojanje velikog broja distribucija, forkova, derivata (recimo Debian --> Ubuntu --> Mint i sl.) koje, opet, imaju razli čite na čine instalacije paketa i softvera, dolaze sa razli čitim grafi čkim okruženjima, ... Dakle, razli čitost je jedna od linija odbrane. 2. *NIX operativni sistemi su "od starta" osmišljeni kao višekorisni čki i bezbedni operativni sistemi. Svaki korisnik ima svoje privilegije i može da manipuliše sa onim datotekama za koje ima privilegije. Da bi malware mogao da zarazi celokupan sistem, potrebna mu je privilegija root -a (privilegija najvišeg nivoa). Dakle, za pravljenje "ve će štete" je neophodan root pristup ra čunaru. U ve ćini slu čajeva malware ima opseg home particije teku ćeg korisnika i može da manipuliše (i pravi štetu) nad datotekama teku ćeg korisnika (korisnika koji je ulogovan). (zabranjeno)er ima je još uvek enigma kako pribaviti pristup root nalogu. 3. i Linuks ima svoje ranjivosti (recimo: postojanje neažurnih biblioteka), ali Linuksov mehanizam ažuriranja sistema i aplikacija (što zavisi od distribucije do distribucije) i aktivnosti zajednice doprinose da se neažurne datoteke brzo zamene novijim. Za razliku od Windows a, gde moramo ažurirati svaku aplikaciju pojedina čno, kod moje distribucije se ažuriranje svih aplikacija na najnovije verzije vrši samo uz par klikova mišem. Time se izbegavaju ranjivosti neažurne aplikacije, kriti čne za bezbednost sistema. 4. upotreba softverskih repozitorijuma zna čajno smanjuje opasnost od malicioznih programa. Stoga nema pojava rogue softvera niti trojanaca koje možemo "zaka čiti" na razli čitim mestima na Internetu jer se o repozitorijima stara tim održiva ča ( maintainers ), koji prakti čno garantuju da je softver legitiman. 5. što se ti če open source softvera i exploit a, primarna prednost open source modela je što kôd može pro čitati svako, tj. dostupan je svakome. A više pogleda na kôd može izna ći i potencijalne bezbednosne probleme. Zbog ovih razloga još uvek nema masovnih infekcija na Linuksu (za razliku od Windows a). [2] Napad na tvr ñavu! S obzirom na stavku 1.1 pisci malware -a su prinu ñeni da napišu takav malware koji će da funkcioniše na razli čitim distribucijama. Jedan od na čina je da se koristi kôd koji se pokre će sa nekim interpreterom (na primer Perl skripta) ili kôd koji treba kompajlirati. Iz ovoga vidimo da pisci malware -a pretpostavljaju da je instaliran Perl ili pak GCC (ili drugi), jer ako iste nemate instalirane, ne ćete mo ći pokrenuti malware . Tvr ñavu je još teže napasti ako imamo u vidu da Linuks skripte po defaultu nisu podešene kao executable (isto važi i za ELF datoteke). Po Wikipediji trebalo bi da do danas postoji oko 1000 uzoraka malware -a za Linuks. Dosta njih predstavlja samo " proof of concept ", dakle, malware samo pokazuje mogu ćnost da se nešto uradi ali ne pravi štetu. Ostali koje sam pokretao su relativno stari (najviše do 2008. godine) i ga ñaju rupe koje su odavno zakrpljene, ali ima tu i funkcionalnog malware -a. Recimo, virusi; na Internetu se mogu na ći izvorni kodovi virusa (pa čak i tutorijali) koji zaista mogu da rade u dozvoljenom opsegu, a ako dobiju root pristup mogu da zaraze sve izvršne datoteke na ra čunaru! Teoretski, poznavalac programskog jezika C može, uz minimalne modifikacije postoje ćih izvornih kodova za viruse, napisati svoj virus i dati mu ime (tako da je broj oko 1000 uzoraka, vrlo upitan ) Kao što rekoh, pisci malware se najviše bave pribavljanjem root privilegije. U "podzemlju" sam video da postoje tzv. local root exploits koji su posebna filozofija (svaka verzija kernela ima zasebnu temu) i koji se vezuju za specifi čne verzije Linuks kernela (recimo 2.2 ili 2.4). Dakle, ni ovde nema nekog univerzalnog pristupa jer su exploit i usko specifi čni za kernel. Pod pretpostavkom da je malware dobio sve neophodne privilegije, jedan od na čina pokretanja je kroz crontab . Susretao sam se i sa malicioznim screensaverim a koji su usput pokušavali da pokrenu malicioznu skriptu. Postoje i exploit i za aplikacije, recimo OpenOffice dokumenta sa makro kôdom ( Document malware ). Od 2007. godine su registrovani pokušaji da se napiše multipltformski malware . Jedan na koji sam naišao predstavlja proof of concept i teoretski se može izvršiti na Windows u, Linuks i MacOS-u (kažem teoretski jer i on pretpostavlja postojanje Perl a odnosno Ruby -ja. Za Windows je dovoljan samo dvostruki klik ) Na Internetu sam malo tražio i utiske napadnutih korisnika, kao i onih koji su pokušavani biti napadnuti. Obi čno je re č o nekom backdoor u ( perl trojancu, npr.) ili ranjivostima sistema ( ssh , telnet ) usled čega ra čunar treba da postane deo botnet mreže na IRC kanalu kako bi služio za DDoS napade ili kao server za pirateriju. Korisnici uglavnom otkriju čudno ponašanje računara - zakucavanje procesora na 100% (recimo iz foldera /tmp/ ), te pove ćana mrežna aktivnost. Za Linuks nije karakteristi čano širenje virusa, s obzirom na pomenuta ograni čenja ve ć su neki drugi tipovi malware -a zastupljeni na njemu, na primer trojanci, crvi i rootkit ovi. Posebnu pažnju sam posvetio rootkit ovima jer kod Unix ovih naslednika rootkit ovi uklju čuju i razli čite metode napada trojancima, sniffing a i drugo, pa je dobro ovako kumulativno obraditi ovu pri ču. Na Unix sistemima rootkit ovi se spominju od 1990-ih godina i ovaj naziv se preneo i na ostale operativne sisteme (dakle, prvi rootkit ovi su pisani za Unix ). Iako po svojoj definiciji nisu maliciozne prirode, ovde će biti razmatrani u zlonamernog kontekstu. Za Unix i naslednike postoje 3 klase rootkitova: 1) binarni rootkitovi - cilj im je da zamene odre ñene sistemske datoteke sa trojancima. Naime, kriti čne sistemske datoteke ( /bin/login i sl. ) se kompromituju kako bi se obezbedio udaljeni ili lokalni pristup mašini. Prvi rootkit ovi su bili binarni rootkit ovi koji su predstavljali tar arhive popularnih sistemskih datoteka koje admin koristi. Tako ñe, dizajnirani su tako da sakriju maliciozne procese od korisnika. Obi čno su prekompjalirani za odre ñenu arhitekturu (Intel i386, Sparc i sl.). Zamenom datoteka, rootkit ima cilj da: • Pribavi root pristup ra čunaru. Dakle, u prošlosti se ubacivao trojanac na poziciju /bin/login ili SUID datoteke (/bin/ping, /usr/sbin/traceroute, /bin/su i druge) kako bi se pribavile root privilegije • Omogu ći sakrivanje procesa. Ubacivanjem trojanca na /bin/ps (na primer). • Omogu ći sakrivanje konekcije. Ubacivanjem trojanca na /bin/netstat (primer) • Omogu ći sakrivanje datoteka. Trojanovani ls, dir ili cat, mogu da sakriju maliciozne datoteke. Rootkit ovi ovoga tipa uklju čuju i dodatne alate za modifikovanje atributa tipa datum kreiranja (tj. timestamp ) i veli čina datoteke. Na primer preko komande touch , timestamp jedne datoteke se može dodeliti drugoj (malicioznoj): touch -r prvobitna_datoteka trojan_datoteka 2) kernel rootkitovi - manipulišu sa modulima kernelima ili predstavljaju dodatne maliciozne module koji se zaka če (hook ) na kernel. Za razliku od binary rootkit ova koji zamenjuju legitimne sistemske izvršne datoteke, LKM ( Loadable Kernel Module ) rootkit ovi se zaka če ( hook uju) na kernel sistema i zamenjuju (remapiraju) ili izmene (tj. presre ću) pozive kernela. Na ovaj na čin, prakti čno celi operativni sistem postaje nepouzdan.