Tato služba může obsahovat Google překlady. Společnost Google odmítá veškerou odpovědnost za překlad, doslovný i předpokládaný, včetně veškerých záruk aktuálnosti, spolehlivosti a veškerých záruk předpokládané zobchodovatelnosti, vhodnosti pro daný účel a neporušení práv.

Web Kaspersky Lab byl přeložen překládacím softwarem založeným na Google Translate. Bylo vynaloženo přiměřené úsilí, aby byl zajištěn přesný překlad, avšak žádný automatický překlad není dokonalý a není určen k nahrazení lidských překladatelů. Překlady jsou poskytovány jako služba uživatelům webových stránek a jsou poskytovány „tak jak jsou“. Neexistuje žádná záruka jakéhokoliv druhu, na vyjádřený nebo předpokládaný překlad, na přesnost nebo správnost překladů. Některý obsah (například obrázky, videa, Flash atd.) Nemusí být přesně přeložen z důvodu omezení překladového softwaru.

Virus.Win9x.Memorial

Třída Virus
Platfoma Win9x
Popis

Technické údaje

Tento text napsal Peter Szor, Data Fellows Ltd

Memorial je velmi zajímavý vir Windows 95. V dosavadním vývoji virem Windows došlo k dlouhému vývoji (konec roku 1997). Seznam infektorů systému Windows 95 však stále není dlouhý. Paměť zobrazuje nové nápady tím, že je virem Windows 95 "rezidentní pamětí". To znamená, že infikuje soubory COM a EXE založené na DOSu, stejně jako soubory Win32 PE (Portable Executable). Hlavní formát viru je Windows 95 VxD (Virtual Device Driver).

Virus není zašifrován v souborech COM a EXE založených na DOSu, ale spíše infikované soubory PE jsou zašifrovány oligomorfní (semipolymorfní) rutinou. Navíc hlavní virové tělo (obraz VxD) je zabaleno jednoduchým algoritmem. Existuje již jeden virus šifrovaný v PE souborech (nazvaný Win95.Mad), ale Memorial je jistě první virus Windows 95, který vykazuje oligomorfní schopnosti. Proto je prvním krokem na cestě polymorfismu systému Windows 95.

Památník je také účinným retrovirusem. Manipuluje s registrem systému Windows 95 zakázat několik známých antivirových programů.

Naštěstí má virus několik málo velkých chyb, které mohou zpomalit šíření. Nicméně, Memorial.12413 byl hlášen, že je ve volné přírodě ve Švédsku, bez ohledu na tyto problémy.

Spuštění infikovaného souboru DOS COM

Spisovatelé virů systému Windows 95 začali chápat, že lidé si vyměňují více programů DOS než aplikace systému Windows 95. To se stává velkým problémem z hlediska viru: prostě se nemůže šířit příliš daleko tím, že infikuje pouze programy Windows 95. Paměť řeší tento problém infikováním spustitelných souborů DOS také. Infikované soubory fungují jako droppery hlavního modulu VxD.

Když je spuštěn infikovaný soubor COM s pamětí, virus vloží soubor VxD do kořenové jednotky C: C: CLINT.VXD. Nejprve zkontroluje, zda je systém Windows v provozu. Pokud tomu tak je, virus jednoduše spustí hostitelský program DOS. V opačném případě provede volání "Jste tam", což je INT 2Fh AX = 0. Pokud při návratu z hovoru je registr AX nastaven na 4AB3h, virus předpokládá, že je již aktivní v paměti a vrátí kontrolu do hostitelského programu. Pak vytvoří soubor C: CLINT.VXD se skrytým atributem a začne do něj zapisovat.

Písemná rutina se objeví jako funkce proti heurismu. Cíl této funkce je však jiný. Hlavní tělo viru je zabaleno na 7508 bytů a tato funkce má rozbalit. Tento algoritmus je velmi jednoduchý, ale efektivní. Soubory VxD jsou ve formátu LE (Linear Executable). Struktura těchto souborů obsahuje mnoho nul. Proto balení těchto ploch může být docela efektivní. V podstatě je plná VxD zabalena na 7508 bajtů, která po rozbalení roste na 12413. Když je paměť CLINT.VXD připravena, Memorial zkopíruje část kódu do tabulky vektorů přerušení v poměru 0: 200 a zavěsí INT 2Fh (multiplexní přerušení). Tímto způsobem se virus nemusí starat o to, jak přidělit paměť, ale bude to nekompatibilní s některými aplikacemi.

Řadič INT 2Fh odpoví na zprávu "Jste tam volat" a čeká 1605h v registru AX a zkontroluje oznámení o inicializaci systému Windows. Tato zpráva oznamuje ovladačům zařízení DOS a systémům TSR, že spouští standardní systém Windows nebo rozšířený systém Windows 386. Systém Windows volá tuto funkci, protože začne umožňovat ovladačům zařízení DOS a TSR, které monitorují INT 2Fh příležitost připravit se na běh v prostředí Windows.

Když tato počáteční volání přichází do obsluhy přerušení Memorial, virus otevře C: CLINT.VXD a zkontroluje její existenci. Pokud byl úvod úspěšný, paměť inicializuje strukturu Win386_Stratup_Info_Struc a nasměruje systém Windows k načtení VxD. Každý ovladač zařízení nebo systém TSR může používat systém Windows VxD k podpoře jeho fungování v prostředí Windows. Chcete-li zadat název VxD, ovladač zařízení nebo TSR nastaví člen SIS_Virt_Dev_File_Ptr na adresu názvu souboru virtuálního zařízení. Memorial tedy používá zdokumentované prostředky směrování Windows k načtení C: CLINT.VXD. To je mnohem elegantnější než modifikace části souboru System.ini, která je složitější a není tak úspěšná.

Spuštění infikovaného souboru DOS EXE

Když jsou infikované soubory EXE spuštěny, stejný rozbalovací kód převezme kontrolu nad vstupním bodem viru jako u souborů COM. Tato funkce však zapíše do C: CLINT.VXD nekonečně, protože v kódu DOS EXE existuje velká chyba. Paměť používá špatný ukazatel a špatný parametr velikosti viru během infekce EXE. Nevypisuje zabalený kód VxD (7508 bajtů) do souborů EXE, ale rozbalené 12413 bajtů po rozbalení kódu. Při rozbalení tedy kapátkový kód extrahuje již vybalený obraz VxD.

Protože kód Extractor neví o tomto problému, zapíše megabajty kódu do C: CLINT.VXD, dokud nevyplní veškeré dostupné místo na pevném disku, ale dokonce i potom se kontrola nevrátí do DOSu. Při použití Ctrl-C během této operace nebo při restartování stroje je možné najít obrovskou C: CLINT.VXD, ale pouze pokud je použita volba / AH (zobrazit skryté soubory) příkazu DIR. Takže virus v souborech EXE lze klasifikovat jako "zamýšlený". Naštěstí je možné detekovat a dezinfikovat tyto soubory.

Spuštění infikovaného souboru PE

Při spuštění infikovaného souboru PE se virus nejprve dešifruje, protože hlavní tělo viru je zašifrováno a zabaleno. Dekryptor je 46 bajtů dlouhý a oligomorfní (viz níže).

Stejně jako v případě infekce COM virus také klesne C: CLINT.VXD z PE souborů. V případě infekcí DOS kapátka trvá 275 bytů dalšího kódu na vstupním místě viru. V PE souborech je tato funkce v 32bitovém kódu a je složitější než verze DOS. To je důvod, proč je tento kód delší: 1360 bajtů. Tato funkce také zahrnuje aktivační rutinu Memorial a předpokládá se, že se načítá i VxD.

Nejprve virus vypočítá vstupní bod funkce GetModuleHandleA v paměti. To dělá pomocí skutečného hack; provádí vyhledávání ve vnitřních strukturách systému Windows 95. To ztěžuje pozdější infekci PE; virus by neměl přidávat žádné jména do tabulky importovaných jmen. Paměť nepotřebuje pro tento účel komplikovanou funkci patchů v kódu infekce PE.

Později vypočítá vstupní bod GetProcAddress pomocí stejného triku. Potom použije GetModuleHanldeA k získání rukojeti modulu KERNEL32. Pomocí této úchytky Memorial je schopen volat GetProcAddress získat a uložit CreateFileA-, WriteFile-, ReadFile-, SetFilePointer-, CloseHandle-, GetLocalTime-, LocalAlloc procedur adresy. Poté znovu použije GetModuleHandleA, abyste získali rukojeť USER32. Potom znovu použije GetProcAddress k uložení adresy procedury MessageBox.

Poté virus zavolá funkci GetLocalTime a zkontroluje datum: pokud je 10. dubna, virus aktivuje a zobrazí hlášení pomocí procedury MessageBox:


Clinton Haines Memorial Virus od Quantum / VLAD a Qark / VLAD
Clinton Haines, také známý jako Harry McBungus, Terminator Z a Talon
zemřel na předávkování léků na svých 21. narozeninách, 10. dubna 1997.
Během svého času spisovatele virů napsal rodinu No Frills, X-Fungus,
Daemon a 1984 viry. Byl to dobrý přítel VLAD, a tak píšeme
tento virus na jeho počest. Doufáme, že je to dost dobré, aby mu to bylo spravedlivé.
VLAD si pamatuje. Odpočívej v pokoji
RIP
Jinak zkontroluje, zda je .CLINT již funkční. Pokud ano, spustí se hostitelský program. V opačném případě vytvoří C: CLINT.VXD jako normální soubor (bez použití skrytého atributu tentokrát) pomocí CreateFileA. Pokud to bylo úspěšné, paměť přiděluje paměť voláním procedury LocalAlloc. Je to proto, že musí rozbalit zabalené tělo viru na nové místo dříve, než je schopen zapsat kód do souboru. Tímto rozbalí VxD kód (7508 bajtů) do vyrovnávací paměti a zapíše 12413 bajtů z něj do CLINT.VXD s WriteFile procedurou. Poté soubor zavře pomocí funkce CloseHandle. Poté provede VxD pomocí procedury CreateFileA se zadaným názvem formátu pro tento účel .C: CLINT.VXD. Nakonec spustí hostitelský program.

Inicializace (háček IFS API)

Když je spuštěn soubor CLINT.VXD, virus čeká na následující ovládací zprávy v ovladači ovládacích zpráv: W32_DEVICEIOCONTROL, INIT_COMPLETE, SYS_DYNAMIC_DEVICE_INIT a SYS_DYNAMIC_DEVICE_EXIT. V případě zprávy W32_DEVICEIOCONTROL virus vrací 0, protože nechce komunikovat s jinými aplikacemi Win32. Po příchodu zprávy SYS_DYNAMIC_DEVICE_EXIT Paměť vrací 1, aby zakázala požadavek na vyloučení. V případě zpráv SYS_DYNAMIC_DEVICE_INIT a INIT_COMPLETE virus provede svou inicializační proceduru.

Tento postup zavede nejprve volání rozhraní API pro rozhraní IFS (Instalovatelný souborový systém) API. Poté odstraní několik klíče z registru systému Windows 95 pod "SystemCurrentControlSetServicesVxd", kde lze nalézt staticky načtená jména VxD; jako jsou anti-virus VxD. Nejprve odstraní klíče "VETMON95" a "VETMACRO". Pak odstraní klávesy "NAVAP", "virusafe" a "WIMMUN32". Potom otevře sekci 'SOFTWAREMicrosoftWindowsCurrentVersionRun' a z ní odstraní následující hodnoty: 'NORTON AUTO-PROTECT', 'TBAV pro Windows 95', 'Anywhere Antivirus Validation', 'Vshwin32EXE' a 'ViruSafe'. Poté jde na 'SOFTWAREMcAfeeScreenScan' a odstraní 'bEnableScreenScan', 'bScanAllFiles', 'bScanSubDirs'. Následující klíče v části "SOFTWARECybecVET Antivirus for Win32" se vymažou takto: "ActionsInfectedAction", "ActionsSuspectAction", "MemoryEnabled", "ResidentFileCheck", "ResidentInfectedAction", "ResidentSuspectAction", ScanningScan All Files, ScanningScan Type, ScanningSkip Přejmenovat ',' ScanningSubfolders 'a nastaví hodnotu' ScanningExtension List 'na' bin, dll, doc, drv, ovl, sys, dot '. Tímto způsobem paměť zakáže mnoho antivirových programů systému Windows 95.

Poté virus vymaže atributy na C: CLINT.VXD. Poté otevře soubor a získá a uloží jeho velikost a přidělí dostatek paměti pro rozbalenou a zabalenou kopii. Pak se přečte ze souboru do hlavní vyrovnávací paměti. Paměť pak uzavře soubor VxD a odstraní ho.

Pak zabalí kód VxD do druhého vyrovnávací paměti. Nakonec se vrátí z rutiny inicializace.

COM infekce

Když paměť zachycuje soubor otevřený hovor, nejprve zkontrolujte, zda je přípona souboru porovnána nejprve s 'COM'. Pokud je přípona "COM", Memorial získá a uloží atribut souboru oběti a vymaže ho. Atribut pouze pro čtení tedy nezabrání infekci. Pak otevře oběti a čte 4 bajty z toho. Pokud byl třetí bajt (po počátečním skoku) "Z" Memorial předpokládá, že soubor je již infikován. Poté zkontroluje, zda jsou značky "MZ" a "ZM", aby se ujistil, že struktura oběti není COM. Poté kontroluje velikost oběti a neinfikuje ji, je-li menší než 7168 nebo větší než 51200 bajtů. Pak čte poslední 5 bajtů programu a zkontroluje, zda začínají s 'SN'. Pokud se tak stane, virus neinfikuje soubor. Nevidím žádný jiný důvod pro tuto funkci, s výjimkou inokulace určitého PC (možná spisovatelů virů vlastní) přidáním tohoto speciálního značky na konec souborů COM.

Pak Memorial přidá DOS kapesní kód (275 bajtů) na konec oběti spolu s nabitým obrazem viru (7508) bajtů. Nakonec modifikuje vyšívání oběti změnou prvních 4 bajtů na počáteční skok + značku Z a nastaví atribut na původní. Tak velikost viru je 7783 bajtů v případě infekce COM.

DOS EXE infekce

Pokud je soubor spuštěn pomocí značek "MZ" nebo "ZM", virus kontroluje rozšíření porovnáním s příponami ".EXE" a ".SCR". Poté volá IFSMgr_Get_DOSTime, že má základní číslo generátoru náhodných čísel. Vzhledem k tomu, že v systémech PE virus vyžaduje název oddílu přidaný do oblasti hlavičky PE a chce být oligomorfní, nechce používat konstantní název oddílu. Tímto způsobem nejprve změní standardní název z 'CLINTON' na nějaký řetězec 'odpadků'.

V podstatě používá 8bit XOR pro šifrování. Během šifrování vypočítá kontrolní bajt a uloží jej jako poslední znak řetězce názvu sekce. Tento další bajt bude použit při kontrole stávajících infekcí PE. Paměť změní název oddílu pouze během infekcí DOS EXE. To způsobuje dostatečnou pomalou mutaci (pomalý oligomorfismus).

Když je tento připraven Memorial, otevírá oběť, přečte hlavičku a kontroluje podpis 'MZ', 'ZM'. Pak čte 4 bajty z pozice 3Ch souboru. Toto dvojité slovo obsahuje ukazatel oblasti záhlaví spustitelných oken systému Windows. Pokud je tímto ukazatelem 0, virus předpokládá, že soubor je normální soubor DOS EXE a pokusí se ho infikovat jako takový. Zkontroluje pole kontrolního součtu záhlaví EXE. Pokud je toto číslo 6666h, virus neinfikuje soubor, navíc v případě, že pole IP je 100h v záhlaví, infikuje virus také.

Poté virus zvětší velikost souborů EXE na hranici odstavce a přidá kapesní kód VxD (275 bajtů) na konec souboru. Největší chyba viru přichází: Napíše nevybalený VxD na konec souboru (12413 bajtů). Velikost virů je tedy 12688 bytů v případě souborů DOS EXE. Nakonec modifikuje záhlaví spustitelného souboru na bod, který bude ukazovat na vstupní bod viru.

PE infekce

Když byl soubor EXE nebo SCR považován za spustitelný soubor Windows, Memorial nejprve zkontroluje podpis PE. Pak věnuje pozornost atributu jen pro čtení. Pak přečte poslední část ze struktury Image Header a vypočítá kontrolní bajt na názvu oddílu. Pokud kontrolní součet odpovídá Memorialu, neinfikuje se. V opačném případě upraví hlavičku PE přidáním nové části viru do ní. Vzhledem k tomu, že Memorial je oligomorfní virus, nejprve přemění 46-bytový dlouhý dekryptor (viz: Oligomorfní motor) na počátek jeho těla. Pak šifruje verzi VxD kapátka PE, která je dlouhá 1360 bajtů. Šifrování je založeno na 8 bitovém XOR. Pak přidá kód dešifrátoru + kód kapky VxD na konec oběti (1406 bajtů). Nakonec šifruje zabalený obraz VxD a přidá jej na konec souboru (7508 bajtů). Pak obnoví atribut oběti a zavře jej. Infekce PE je připravena. Velikost kódu viru je tedy 46 + 1360 + 7508 = 8914 bajtů. Všimněte si však, že se to může změnit, protože virus musí zvýšit velikost souboru až po zarovnání oddílu.

Oligomorfní motor

Tento motor je jednoduchý, ale účinný. Základní decrypor se skládá z 11 různých částí. Motor mutace upravuje pořadí těchto malých bloků změnou některých z nich navzájem. Tedy blok 1 s 2, 8 s 9, 6 se 7, 3 s 4, 5 se 4 a 10 s 0 mohou být nahrazeny každý jiný. To dává 2 * 2 * 2 * 2 * 6 dohromady 96 různých případů. To dělá detekci viru obtížné v PE souborech.

Závěr

Památník je velmi složitý virus. Ukazuje, že polymorfní viry systému Windows 95 se objeví v blízké funkci později na polymorfních mutačních motorech, které lze použít pouze s viry systému Windows 95. To znamená, že je čas zavést nové skenovací motory pro tato nová zvířata.


Odkaz na originál