Citat:
Dusannn:
Nemoguce je zaista zastititi strukture procesom koji se izvrsava na istom sec. nivou na kom se svi ti grozni "malicious-system-crashing-hackalishous-poorly-written" (fuj fuj fuj) third-party softver izvrsava. To je poznato svakom ko je barem poceo da se bavi bezbednoscu. Naravno da to zna i Microsoft..
Naravno da zna, to sam i naglasio u prethodnoj replici na ovoj temi citirajući skapeovu konkluziju da ovakva proaktivna zaštita konzistentnosti krucijalnih kernel-mode struktura OS-a
neće potpuno sprijećiti ni rootkite niti loše napisane AV-ove i drivere koji, umjesto da koriste formalna sučelja koja OS pruža u tu svrhu, preferiraju old-skul prčkanje po tablici sistemskih servisa, IDT-u, vezanoj listi struktura koje predstavljaju aktivne procese, MSR etc., već će
povećati donju granicu složenosti (
raise the bar) koja je potrebna za implementiranje takove filtering infrastrukture, te konsekventno tome natjerati developere da prije koriste formalni OS API nego nekakve dirty hackove (koji, mora se priznati, jesu elegantni, ali i loši sa stajališta dobrog dizajna).
Zašto imamo kernel, HAL, drivere, filesystem, protokol handlere....sve u istoj protekcijskoj domeni (
prstenu)? Jebiga, ostatak još od davnih dana s početka 70-ih, poglavice mentaliteta u kojem je svaki CPU ciklus i svaki bajt memorije svet i skup k'o svetog Petra kajgana. Ironično je što x86 i danas ima 4 hardverske razine privilegija koje nijedan napredniji general-purpose OS ne iskorištava, sve iz razloga skupe tranzicije između njih. MULTICS ih je imao
čak 8, a da su se Thompson&Ritchie malo više ugledali na uzor čiji su dizajn se okušali (loše) simplificirati, sigurnost današnjih OS-eva bi bila za tri koplja veća. Iako su i igri još neki malo prizemniji faktori (neki glupi RISC-evi, npr Alpha, podržavaju samo 2 PL..)
Ironično je doduše da MS u Visti masu driver infrastrukture pokušava offloadati u userland (
UMDF), ulažeći herkulski napor da natjera gomilu 3rd party developera da prepišu iznova svoje drivere, i pritome dakako očuvajući API/ABI kompatibilnost sa što je moguće više starijim verzijama drivera. U 2006. godini bi gotovo svatko žrtvovao 5-10% CPU resursa za x puta sigurniji i stabilniji OS, nažalost prije 15 godina taj je postotak bio mnogo veći pa stoga trebamo pribjegavati ovakvom krpežu.
Citat:
Ono sto ti perfidno pokusavas da plasiras je da kriterijum sta je dopustivo a sta nedopustivo ponasanje (multi/single threaded) procesa univezalna, vecita i nepromenljiva istina i da nju ne odredjuje Microsoft vec je samo usvaja kao takvu. WRONG!
Ne znam odakle ti takva interpretacija onoga što sam iznio, ali ne vidim da sam se igdje pozivao na vječne i nepromjenjive Istine o kriterijima za podobnost izmjene kernelovih podatkovnih struktura, niti sam pokušao insinuirati postojanje istih.
NT je MS-ov OS i on je taj koji dirigira pravila igre, koji pruža ekosistem API-ja u obliku raznih frameworka i pravila dopustljivog i
nedopustljivog (nedefiniranog) ponašanja, a koje 3rd party driver developeri imaju usvojiti ukoliko misle proći WHQL, odnosno očekivati da OS ne BSOD-uje zato jer je MS odlučio u sljedećem QFE-u promijeniti bazu od KeServiceDescriptorTable.
Oni produkti koji ne koriste dirty hackove neće nimalo beneficirati od ovog MS-ovog poteza, dok će dežurni generatori junk AV-ova (KAV, Symantec pogotovo, imate još na Asembler forumu jedan snippet od 15ak instrukcija koje NAV svojim genijalnim "heuristikama" detektira kao generički win32 infektor, ne trebam ni pričat da taj snippet koda ništa ne radi osim što se ruši pri izvođenju), koji revno slijede liniju manjeg otpora na radost mnogobrojnih pingvina i MS bashera pjevati žalopojke i prijetiti tužbama EU komisije (=gomile nesposobnih debelih seronja koji se nikad neće pomiriti sa činjenicom da USA praktično vodi sve konce IT industrije).
Citat:
Kada smo ogolili istinu, ispada da ce preosveceni MS gurui pokazivati zabludelim ovcama iz Adobe-a, Symantec-a i KasperskyLabs-a kako se u stvari bezbedno kodira za njihov kernel. Da li je neko rekao "exploatisanje monopola da bi se povecao uticaj na trziste", ne? Zatvorite oci, i zamislite svet gde ce microsoftovi programeri uciti ostale kako se koduje stabilan sistem.
Vidim veeeliki "no pasaran" u EU.
Hot-patching koji spominješ nema nikakve veze sa modificiranjem kernel-mode OS struktura. već sa runtime apliciranjem (uglavnom sigurnosnih) patcheva na način da se prije prologa funkcije (push ebp; mov ebp, esp) stavi dvobajtni junkcode (mov edi, edi) koji se izmjeni u short jump na kod od patcha. Na taj način se logika bilo koje kernel fje može on-the-fly izmjeniti bez potrebe za restartanjem OS-a.
Hot-patching postoji implementiran inače i na XP SP2, te WS2K3 SP1 x32, a svi oni
nemaju PatchGuard. Dakle, ne radi se o nekakvom MS-ovom "backdooru", kao što ti pokušavaš dati do znanja zabludjelim i neukim masama, već o odavno poznatom featureu.
Jedina komponenta PG-a koja dozvoljava Hot-Patching jesu checksumi in-memory imagea od ntoskrnl i OS drivera, a sve ostale kernel-mode strukture (SSDT, IDT etc.) Hot-Patching mehanizam
ne dira.
Citat:
Btw, mislis da su gorepomenuti sw giganti toliko zeljni da "in vivo" modifikuju kriticne strukture u kernelu? Prakticno zive za to. WRONG. Soory, ali tom OS-u je to moralo biti uradjeno da bi se obezbedio minimum funkcionalnosti. W/ever gets the job done!
Tim AV-ovima bi bilo pametnije da updateaju svoje heurističke algoritme koje nisu značajnije principijelno unaprijedili desetljećima, umjesto da po blogovima proljevaju svoje mentalne prosere. No to bi opet značilo lišavanje milijonskog incomea od pretplatnog modela na definicije svježeg malware-a koji tako fino sjeda u duboke im džepove. Današnji rootkiti su u stanju sakriti se od skeniranja memorije uhakiranjem u Memory Manager OS-a (
ShadowWalker tehnologija opisana u posljednjem phracku), loadati se prije početka OS-a u boot fazi i loadati kernel modificirajući ga za svoje subverzivne potrebe(
BootRootKit genijalnog Dereka Soedera), pa čak i pokrenuti cijeli OS kao hypervisor utilizirajući virtualizacijske mehanizme modernih CPU-ova (
Blue Pill još genijalnije Joanne Rutkowske, ženskog geeka koja usto nije ružna k'o noć :D).
Kako bi se zaboga ijedan IPS/AV mogao boriti protiv ovako nečeg? Trebao bi fundamentalno izmjeniti gomilu funkcionalnosti OS-a i raditi provjere na mnogim razinama, runtime enkriptirati masu koda da pruži 100%tnu odbranu od ovakvih napasti. Za većinu state-of-the-art rootkit tehnologija postoje specifični alati za detektiranje, koji i sami rade užasne hackove - npr. protiv
DKOM-a koji izbacivanjem iz dvostruko vezane liste procesa (EPROCESS strukture) efektivno proces sakriva kako iz Task Manager, tako i svih drugih alata za enumeriranje aktivnih procesa. Postoji i Linux port DKOM-a (unlinka se iz liste
task_struct-ova), da samo navedem kao primjer (oba schedulera su thread-based, ne process-based, pa se stoga i dalje izvršavaju threadovi unlikanih procesa). Praktično jedini način da sigurno detektiraš tako sakriven proces jest da patchuješ kernelov scheduler (SwapContext()) i usporediš listu procesa koji sadrže threadove koji su selektirani za izvršavanje, što je, moraš priznat, jaaaaako gadan i ružan hack, s obzirom da SwapContext() nije ni exportana niti javna (public) fja koja u svakom trenutku može promijeniti svoj signature (broj parametara, način povrata vrijednosti, lokaciju u memoriji).
Neka se granica mora povući, a PG i polisa da se ne dižu u kernel unsigned driveri su prvi korak ka eliminaciji kako rootkit gamadi tako i loše napisanih drivera, što će u konačnici djelovati pozitivno i za sigurnost i stabilnost OS-a.
Da se u krajnoj liniji više ne događa da skinem npr.
IceSword i u dumpu SSDT-a vidim redirekciju u driver genijalno-h4k3rsk0g naziva
d347bus.sys, i sve mi nešto desna pretklijetka počne poskakivat sve dok ne shvatim da je to driver od Daemon Toolsa :)
[Ovu poruku je menjao cynique dana 14.10.2006. u 17:36 GMT+1]