» »

Zaznavanje zlonamerne programske kode s pomočjo Linux jedra

Zaznavanje zlonamerne programske kode s pomočjo Linux jedra

ScienceDaily - Boj proti virusom in ostali zlonamerni kodi je težaven, protivirusno programje pa praviloma nudi le zaščito proti vnaprej poznanemu zlonamernemu programju. Posebno težavo tako predstavljajo še neodkriti, a v "divjini" že dejavni virusi.

Zato sta v boju proti zlonamerni kodi profesor Avishaia Wool in njegov študent Ohad Ben-Cohen iz Univerze v Tel Avivu ubrala povsem drugačen pristop. Razvila sta namreč odprtokodno rešitev poimenovano Korset, ki je namenjena zaustavljanju zlonamerne kode v okolju Linux.

Raziskovalca sta spremenila Linux jedro tako, da stalno nadzoruje in beleži obnašanje programskih aplikacij v sistemu. Poleg tega sta razvila tudi model, ki predvideva kako bi programske aplikacije na strežniku morale delovati.

Če modificirano jedro Linuxa zazna nenormalno delovanje programskih aplikacij, zaustavi njihovo izvajanje. Nova metoda naj bi bila tako bistveno bolj učinkovita kot tradicionalno zaznavanje (že odkritih) virusov, po besedah avtorjev pa za delovanje porabi le minimalno sistemskih sredstev.

Kot je pri odprtokodnem programju v navadi je tudi Korset že na voljo za prenos (pozor, gre za različico 0.01), ogledati pa si je mogoče tudi prosojnice iz predstavitve na konferenci BlackHat.

Se obeta konec protivirusnih podjetij?

12 komentarjev

MrStein ::

"Korset is a research project aiming to provide zero false-alarms intrusion detection against code-injection attacks."

AV softver dela še precej drugega. V bistvu tega ponavadi sploh ne dela. Tako da ni strahu za AV firme ;)

(posebej, če upoštevamo da je to za linux, 99% trga AV pa laufa Windows)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

MrYoda ::

Nekaj, kar funkcionira na podobnih principih za Windows OS:
http://www.solidcore.com/

fiction ::

Zadeva je precej podobna Systrace.

Razlika je v tem, da Systrace omogoca pisanje policy-ev administratorju ali pa se na podlagi
opazovanja izvajanja programa nauci pravil.
Pri Korset je pa fora v tem, da se ze med prevajanjem naredi graf v kaksnem zaporedju naj bi
se prozili sistemski klici. Na podlagi tega se doloci vsa veljavna zaporedja (kar vsebuje
tudi tiste poti do katerih pri izvajanju nikoli ne pride). Je pa res, da zaradi tega
nikoli ne pride do "false positive" primerov. Med ucnim nacinom mogoce niso bile pokrite vse
moznosti, tukaj pa 100% so.

Systrace gleda tudi na parametre sistemskega klica, v stilu read() se lahko naredi samo nad
odprto datoteko v /htdocs, ce nekdo bere /etc/passwd ali pa naredi execve() je to narobe,
ne glede pa na zaporedje, medtem ko Korset gleda samo na zaporedje sistemskih klicev v stilu
ce je najprej read() in potem write() je kul, ce pride za read() execve() je pa narobe.

Systrace ima probleme s tekmovalnimi okoliscinami (saj je majhna razlika med casom
preverjanja in dejansko izvedbo sistemskega klica), Korset bi se pa dalo prelisiciti
s prilagojeno shellcodo. Staticno analizo namrec lahko naredi napadalec za dolocen
program tudi pri sebi. Pri izkoriscanju ranljivosti bo pac treba biti malo bolj izviren
kot to, da se samo naredi execve("/bin/sh"). Si predstavljam da se bo poskusalo
najti kaksen nacin za dostop do open(), ... , write() poti s katero bi se recimo
lahko spreminjalo /etc/shadow ali pa do kaksne veje kjer nastopa vmes execve().
Bo pa za zadoscenje pravilom taka zlobna koda najbrz imela precej "dummy" sistemskih klicev
in zato veliko daljsa.

Zgodovina sprememb…

  • spremenil: fiction ()

fiction ::

Tole sploh ni misljeno za AV software ampak za preprecevanje izkoriscanja se neznanih
varnostnih pomankljivosti.

Je pa "analiza obnasanja" precej zanimiva tudi za AV programe.
Sedaj bodo koncno za kriminalce proglaseni tudi tisti ljudje ki jih najdejo
s pistolo v banki in ne vec samo tisti ki gledajo z "wanted" plakatov. :)
Ceprav po drugi strani je pa to se vedno neke vrste security-through-obscurity.
Kmalu se lahko zgodi to, da se za kriminalca proglasi tudi ljudi z dolgo brado.

fiction ::

MrYoda: Hm kako pa Solidcore (tocno) deluje?

Eno je ideja, drugo pa izvedba, tako da argument proti resitvi samo zato ker
tece na GNU/Linux sistemu ne vzdrzi. V bistvu je to da tece na Linuxu bolj posledica
zelje po implementaciji, saj Windows jedra pac ni mogoce na enostaven nacin popravljati.
Vsak moderen OS pozna princip sistemskih klicev.

3p ::

Sodeč po slajdih gre samo za malo bolj napredno (oziroma samodejno) preprečevanje izvrševanja podatkov...

Looooooka ::

in za razliko od antivirusnih programov je tle vecja moznost za false positive.
si mors verjetn vzet kr neki cajta da si zapomni pravilno obnasanje programa.se posebi ce ta ustvarja bogve kaj z mrezo...

MrYoda ::

fiction:
Solidcore naredi inventar "dobre" kode in samo in edino tej omogoča izvajanje. Prav tako ne dopušča nobenih sprememb na "solidificirani" kodi. Uporablja še nekaj drugih mehanizmov, ki omogočajo (skoraj) nemoteno posodabljanje sistema (Windows update itd.). Sistem deluje na popolnoma drugem nivoju kot AV. Torej, če je virus prisoten ob t.i. "solidifikaciji", ti bo lepo haral po podatkovnih datotekah, kajti za Solidcore bo to legalni program. Ne bo pa mogel spreminjati ostalih programov in zaščitenih sistemskih datotek.

Je pa ta SW namenjen specifičnim okoljem, kot so npr. proizvodne linije (GM), strežniki v vojski (US NAVY) itd.

fiction ::

3p: It's not rocket science. So pa takele zascite vseeno malo bolj high-level kot pa
neizvrsljiv sklad ali kaj takega. Koncept je boljsi ker dejansko ne sciti pred tocno
dolocenim tipom ranljivosti, ampak je v bistvu kakrsnokoli odstopanje delovanja programa od
tistega kar pocne ponavadi napaka. Vprasanje je samo kako definiras odstopanje od tistega
kar ponavadi pocne program. :)
Se bolj lame so programi, ki delujejo na podlagi vzorcev in detektirajo samo tocno dolocen
napad.

Looooooka: Ne, fora pri Korset sistemu je, da NI moznosti da pride do false-positive
(medtem ko je false-negative najbrz kar precej).
Za razliko od Systrace tukaj naredis med prevajanjem analizo in si zapomnis vse
sistemske klice v kodi, nima veze ce se potem tisto res kdaj izvede ali ne.
Prednost je v tem, da ne rabi prakticno nobenega sodelovanja s strani administratorja in
tudi ni potrebnih nekih test runov.

Edino kar ne razumem najbolje je, kaj stvar naredi v primeru:
a();
if (user_input()) b();
c();

Najbrz dovoli a-b-c kot tudi a-c, za pogoje ki se lahko izracunajo ze v casu prevajanja pa
itak poskrbi compiler, tako da stvari v stilu if (0) Korset sploh ne vidi.

MrYoda: Hm, in po cem identificira Solidcore kasneje dobro kodo? Si shrani nekam hash vseh
datotek? Jaz sem vcasih uporabljal TripWire.

RejZoR ::

Tradicionalni antivirusi še en leeeeep čas ne bodo šli nikamor. Sej so že vrsto let obljubljal sveti gral proti virusom pa se je nakoncu izkazalo, da je vse skupaj en bikov drek.
Če v vseh teh letih najmočnejše firme z vrhunskimi inžinerji niso uspeli narediti popolne zaščite proti zlonamernim programom, potem tud kr neka leva ravnokar ustanovljena firma ne bo. Nekako nenapisan zakon ker v AV svetu enostavno ne moreš kar uletet na sceno in bit najboljši. Enostavno ne gre.
To kar pa so tle naredil pa je vbistvu behavior detection samo da je implimentirana že v sam kernel.
Nekaj kar na Windows sistemu nekako dobiš z npr ThreatFire al pa Norton Anti-Bot...
False positive rate je izjemno nizek, detection rate povsem nezannih stvari pa izjemno visok.
Plus zadeva je povsem imuna na crypterje in packerje, ki so dandanes največji problem.
Angry Sheep Blog @ www.rejzor.com

fiction ::

Če v vseh teh letih najmočnejše firme z vrhunskimi inžinerji niso uspeli narediti popolne zaščite proti zlonamernim programom, potem tud kr neka leva ravnokar ustanovljena firma ne bo.

Po cem sklepas, da imajo antivirusne firme vrhunske inzenirje? :) Vse skupaj najbrz prica
samo o tem, da 100% zascite ni kar je tudi logicno. Seveda pa to ne ustavi AV podjetij
pri prodajanju megle. :)
Aja tole ni neka na novo ustanovljena firma, ampak raziskovalno delo.

Nekako nenapisan zakon ker v AV svetu enostavno ne moreš kar uletet na sceno in bit najboljši. Enostavno ne gre.

V AV svetu je tako kot kjerkoli drugje: ce imas zelo dobro idejo lahko se vedno uspes,
drugace rabis veze. Pac za enkrat se ni bilo nikogar.

Analiza obnasanja v antivirusnih programih je samo neka dodatna hevristika. Problem je,
da gre spet samo za crne sezname obnasanja. V Korset primeru ti definiras bel seznam
in vsako odstopanje od tega proglasis za hack. Seveda pa tudi to ni 100% ker obstaja
neskoncno programov z istim zaporedjem sistemskih klicev in je najbrz za vsak dober program
mozno najti njemu "enakovreden" zloben program.

RejZoR ::

Po čem sklepam? Ker jih imajo. Problem je samo da vsi ti ne delajo v eni skupni firmi...
Prodajanja megle je pa tle tolk kot ko bom tale sistem dejansko videl v ITW uporabi in kjer bo 100% efektiven (ali vsaj >95%). Drugače ga takoj okličem za bikov drek. Nima veze al je firma al pa ena raziskovalna ekipa.
Ko mi bojo dokazal da je v realnem okolju dejansko tko efektivno potem jim bom verjel.
Je blo že precej raznih študij z oh in sploh učinki, pa se nič ni prijelo. Ker verjemi, če bi bilo tko hudo bi ena od AV firm sigurno že zagrabila.

Zakaj v AV svetu ne moreš uspet kar čez noč? Delo in dolgoletne izkušnje. Eno je če prebereš nekaj teorije v parih dneh ali letu ali dveh ali pa da imaš za sabo 15 let dejanskih izkušen o analizi in evoluciji dejanske zalege.
Pri principu blacklistanja pa še toliko bolj ker moraš imet neko osnovo, začet iz nule kjer imajo drugi desetletje podlage je zelo težko opravilo.

In črnih/belih seznamov se nekako ne moreš znebit. Kako pa bo sistem vedel kaj je slabo in kaj dobro?
Če nimaš tega si naredil samo en butast HIPS, ki nima blage kaj je slabo in kaj ni. Zazna ti svašta sprememb ampak je še vedno glup ker naredi samo to, ne ve pa zakaj.
Karkoli narediš, da zazna nekaj izven osnove je al whitelistanje al pa blacklistanje. Tako ali drugače.
Samo da tam nekako dobi drugačen manj očiten pomen kot recimo virusne definicije (blacklistanje) pri antivirusih.
Angry Sheep Blog @ www.rejzor.com


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Wikileaks objavila največjo zbirko internih dokumentov CIE (strani: 1 2 3 4 )

Oddelek: Novice / Varnost
17442745 (36132) Saul Goodman
»

Nov članek: "All your firmware are belong to us" (strani: 1 2 3 )

Oddelek: Novice / Nova vsebina
13815926 (12766) arrigo
»

Sony mora izplačati odškodnino zaradi prodaje "okuženih" CD-jev

Oddelek: Novice / Tožbe
173684 (2529) Legend(SLO)
»

Slovenska vlada meni, da je koda Linuxa preveč odprta (strani: 1 2 3 4 5 6 7 8 )

Oddelek: Novice / Ostala programska oprema
36440357 (27993) cryptozaver

Več podobnih tem