Musim rict, ze takovy virus ktery "bezi" i na Windows i na Linuxu bych si predstavoval jinak. Presnejsi popis chovani zmineneho viru je totiz ze "umi infikovat jak windowsowske soubory, tak linuxove". Infikovany soubor uz totiz na obou platformach nebezi, proste proto, ze (pokud pomineme wine, cygwin apod.) infikovany exac nespustite na Linuxu, a naopak linuxovou binarku na Windows.
Myslim, ze je to mysleno trochu jinak - ze pokud najde jak ELF, tak EXE soubory, tak dokaze nakazit oboji takovym zpusobem, ze jeho kopie ma opet tuto vlastnost ...
Tedy treba ho spustis na Windows, on tam nakazi ruzne EXE, ale take treba nejaky volne lezici ELF, ktery kdyz spustis na Linuxu, tak nakazi jedna vsechny dostupne ELF, jednak i EXE, ktere po spusteni ve Win nakazi ... atd atd ....
Svuj smysl to ma treba na souborovych serverech, kde muzou byt ulozeny soubory i pro jiny, nez aktualni system. (At uz ke stazeni, nebo ke spousteni po siti).
Taky by to mohlo mit jisty puvab na dualboot systemech ...
Je nemozne napsat program, ktery vyhovuje soucasne formatu EXE (tedy zacina MZ) a formatu ELF (tedy druhy az ctvrty znak je ELF a ten prvni je taky 7Fh skoro porad ...)
Necital som podrobnosti o implemntacii toho riesenia, ale nevidim dovod preco by to neslo. Ono subor nemusi vyhovovat sucasne obom formatom. Ak sa jedna o virus, staci aby bol schopny rozpoznat a infikovat cielovy subor podla jeho formatu (EXE/ELF). Je predpoklad, ze dany subor sa potom bude spustat len na v prislusom prostredi (Win, Linux, ...).
Co sa tyka podstaty trojana, myslim ze dobre vysvetlenie tu napisal Gilhad. Kto neveri, nech si pozrie nejaku knizku, ktora sa virusmi zaobera. :-)
Nie som nijaky odbornik cez malware, posledne co som hooodne davno pisal bol nejaky rezidentny polymorfny virus pod M$ DOS, vedel napadat len .COM subory. Nikdy som ho nevypustil, pisal som to len tak ako sa to obcas robi - aby clovek skusil, ci to dokaze. To boli casy ...
Nesledujes diskuzi. To co popisujes ten virus skutecne dela (coz dokazuje ze to jde). Oproti tomu to co pozadoval junix (neregistrovaný) na zacatku tohoto threadu je ono vyhovovani oboum formatum a proto jsem reagoval ze je to nemozne.
To ja se k polymorfizmu nedostal. Napsal jsem si virus obycejny (jeden na com, jeden i na exe) a pote se zabyval necim zajimavejsim - chraneny mod a hackovani memory manageru (EMM386 a QEMM). Kdyby ty casy vydrzeli dele, asi bych napsal rezidentni virus v chranenem modu (chci videt jak by ho antiviry nasli - problem by byl v sireni, ale to jsem stejne nemel v umyslu tak co) .... jenze prisli windows a linux a ja si vybral linux.
Docela by me zajimal zdrojak toho viru, nevite o nem nekdo? Protoze me zarazi tohle:
To infect ELF files, the virus uses INT 80 system calls and injects its body into the file immediately after the ELF file header...
The virus uses the Kernel32.dll function to infect systems running Win32...
To by znamenalo, ze pokud virus narazi na ELF (cil), pouzije INT 80 systemove volani Linuxu. Jenze on muze prave bezet na Windows, protoze mel nekto infikovany soubor na windows, kde ma nejake elfy (treba sdilene). To by asi nefungovalo, protoze pocitam, ze na Windows nebudou syscally (volani Win32 API) pres stejne preruseni a pokud ano, pak tezko budou stejne identifikovana, pripadne se stejnymi parametry.
Stejne je to i v opacnem pripade, pokud infikovany ELF zkusi napadnout nalezeny PE, protoze chce spustit funkci Windows.
K protected modu a podobnym veciam som sa zase uz ja nedostal... :-(
I tak, co sa tyka virov si myslim, ze najvacsiu buducnost maju asi modularne navrhnute krizence cervu a viru. Mozu trebars mat casti, ktore si zistia info o cielovej platforme/systeme, ktoru chcu infikovat, na ich zaklade mozu posudit zranitelnosti, vybrat vhodny typ utoku, atd. Takmer vsetky casti by mohli byt samostatne moduly, ktore by si cerv stahoval v aktualnej verzii (a trebars aj podpisane :-))
Vdaka modularnemu rieseniu by kludne mohol napadat rozne platformy, staci ked najde zranitelne miesto a ma modul, ktory vie bezat na danej platforme.
Viem, ze taketo dake koncepty existuju dlhsi cas, len nikto asi nieco podobne vo vacsom rozsahu nezrealizoval. Zrejme je s tym spojene mnozstvo dalsich problemov, moc som nad tym neuvazoval. Uz len spolahlive vyhladanie a aktualizacia modulov moze byt vcelku zapeklity problem.
Na to jsem prave narazel. Nejde napsat "program", ktery bude spustitelny na Linuxu i Windows (pokud nepocitame wine/cygwin apod.), ale lze napsat kod v ASM, ktery bezi na obou systemech. Muzete ho tedy vlozit jak do PE, tak do ELF spustitelneho souboru. Musi to byt ale na stejnem typu procesoru, aby se jednalo o stejne instrukce (takze i386). To je tento pripad.