Cocaine

Jest to paso偶ytniczy wirus, kt贸ry zara偶a pliki Windows PE, szablony NORMAL.DOT programu MS Word. Potrafi si臋 rozprzestrzenia膰 poprzez e-mail. Jego rozmiar to oko艂o 22 KB.

Podstawowe zadanie kodu wirusa to zara偶enie plik贸w PE EXE. Gdy uruchomiony zostaje zara偶ony plik wirus natychmiast wyszukuje pliki PE EXE w bie偶膮cym katalogu, oraz w katalogu Windows, a nast臋pnie zara偶a je. Nast臋pnie wirus infekuje szablon globalny (NORMAL.DOT) w katalogu programu MS Word i wysy艂a e-maile zawieraj膮ce zainfekowany plik jako za艂膮cznik.

Wirus infekuje szablon globalny i uruchamia zainfekowany plik PE EXE za ka偶dym razem, gdy zamykany jest dokument. Nie jest mo偶liwe zainfekowanie innych dokument贸w lub szablon贸w.

Kod wirusa w postaci za艂膮cznika do wiadomo艣ci e-mail, mo偶e zar贸wno zara偶a膰 32-bitowe pliki wykonywalne Windows PE, jak i szablon globalny.

Wirus "tymczasowo" rezyduje w pami臋ci. Oznacza to, 偶e pozostaje on w pami臋ci do momentu zako艅czenia zara偶ania aplikacji. Je偶eli aplikacja taka u偶ywana jest przez kr贸tk膮 chwil臋, w贸wczas kod wirusa egzystuje w pami臋ci r贸wnie偶 bardzo kr贸tko. Je偶eli natomiast aplikacja u偶ywana jest przez d艂ugi okres czasu, w贸wczas wirus jest aktywny r贸wnie d艂ugo. Podczas swej aktywno艣ci wirus przejmuje funkcje Windows, zara偶a pliki PE EXE, do kt贸rych ma dost臋p oraz wysy艂a wiadomo艣ci e-mail.

Wirus jest polimorficzny i mo偶e r贸wnie skutecznie zara偶a膰 pliki PE jak i szablony Word'a. Wirus posiada w swoim kodzie EXE dwa polimorficzne mechanizmy. Pierwszy, dzia艂aj膮cy w p臋tli, generuje mechanizm zara偶ania plik贸w PE EXE, drugi natomiast tworzy makrowirusa, kt贸ry zara偶a szablon globalny.

Wirus ujawnia swoje istnienie po up艂ywie czterech miesi臋cy od zara偶enia. Wy艣wietla okno z nag艂贸wkiem "W32/Wm.Cocaine" oraz tekst utworzony losowo, sk艂adaj膮cy si臋 z siedmiu wierszy:

Your life burn faster, obey your master...
Chop your breakfast on a mirror...
Veins that pump with fear, sucking darkest clear...
Taste me you will see, more is all you need...
I will occupy, I will help you die...
I will run through you, now I rule you too...
Master of Puppets, I'm pulling your strings...

Ponadto wirus pr贸buje zlokalizowa膰 programy antywirusowe. Za ka偶dym razem, gdy wirus zara偶a pliki i instaluje si臋 w pami臋ci, szuka r贸wnie偶 plik贸w ochrony antywirusowej w bie偶膮cym katalogu i usuwa je. Usuwane pliki to: KERNEL.AVC, SIGN.DEF, FIND.DRV, NOD32.000, DSAVIO32.DLL, SCAN.DAT, VIRSCAN.DAT (AVP, DSAV, NOD, SCAN oraz inne pliki wykorzystywane przez programy antywirusowe). Wirus przerywa dzia艂anie starych wersji skanera AVP Monitor.

Ze znanych przypadk贸w wiadomo, 偶e wirus posiada pewne usterki, w wyniku kt贸rych nie mo偶e rozprzestrzenia膰 si臋 z makra Worda do plik贸w wykonywalnych Windows. Ponadto istnieje usterka w budowie pliku PE EXE wirusa i mo偶e zdarzy膰 si臋, 偶e paso偶yt przejmie i zniszczy plik uruchamialny w systemie Windows NT.

Wirus zawiera podpis autora:

(c) Vecna 

Niekt贸re z zachowa艅 wirusa (szczeg贸lnie te dotycz膮ce makr) zaczerpni臋te s膮 z wirusa Fabi. Niekt贸re z zainfekowanych plik贸w mog膮 by膰 identyfikowane jako pliki zara偶one przez w艂a艣nie tego wirusa.

Zara偶anie plik贸w EXE

Gdy zara偶any jest plik EXE uruchomione zostaj膮 polimorficzne p臋tle deszyfruj膮ce. Dekoduj膮 one kod wirusa linijka po linijce (wirus jest zaszyfrowany za pomoc膮 od dw贸ch do pi臋ciu takich p臋tli), a nast臋pnie zwracaj膮 kontrol臋 do mechanizmu instalacyjnego wirusa. W tym miejscu mo偶e zdarzy膰 si臋, 偶e wirus nie jest jeszcze kompletnie zdekodowany, gdy偶 szkodnik deszyfruje tylko te bloki, kt贸rych potrzebuje.

Mechanizm instalacyjny wirusa wyszukuje adresy funkcji Windows API, kt贸rych mo偶e u偶y膰. Lista tych funkcji jest do艣膰 d艂uga, zatem wirus musi wykona膰 wiele operacji, aby m贸c si臋 do nich dosta膰.

Wirus u偶ywa adres贸w tych funkcji w standardowy spos贸b: tworzy w pami臋ci systemowej obraz KERNEL32.DLL, skanuje jego tablic臋 eksportow膮 i zapami臋tuje adresy dw贸ch funkcji: GetModuleHandle i GetProcAddress. Aby u偶y膰 tych funkcji wirus musi mie膰 dost臋p do pozosta艂ych funkcji.

Nast臋pnie wirus wyszukuje i infekuje pliki MS Word. Odnalezione pliki PE EXE r贸wnie偶 s膮 zara偶ane. Nastepnie wirus rozpoczyna przejmowanie systemu obs艂ugi zdarze艅 (u偶ywa go do tworzenia pliku za艂膮cznika do wiadomo艣ci e-mail) i do艂膮cza si臋 do wiadomo艣ci e-mail.

Zara偶anie programu MS Word

Pierwszym mechanizmem zara偶ania jest system infekuj膮cy program MS Word, o ile oczywi艣cie jest on zainstalowany w systemie.

Pierwszym 艣ladem istnienia wirusa jest obecno艣膰 pliku o nazwie C:ANCEV.SYS. ("ANCEV" to czytane wstecz s艂owo "VECNA"). Plik ten tworzony jest, gdy zako艅czone zostanie zara偶anie szablon贸w MS Worda.

Po uruchomieniu MS Worda, wirus sprawdza czy istnieje ju偶 w/w plik. Je偶eli nie - rozpoczyna zara偶anie. Je偶eli natomiast plik zostanie odnaleziony, w贸wczas wirus z prawdopodobie艅stwem jeden do dziesi臋ciu kontynuuje infekowanie, a w pozosta艂ych przypadkach przestaje zara偶a膰. Oznacza to, 偶e w jednym na dziesi臋膰 przypadk贸w szablon NORMAL.DOT zostanie ponownie zara偶ony.

Nast臋pnie wirus unieszkodliwia ochron臋 antywirusow膮 MS Worda poprzez modyfikacj臋 kluczy rejestru systemowego:

SOFTWAREMicrosoftOffice8.0WordOptions
EnableMacroVirusProtection

Nast臋pnie wirus poprzez rejestr systemowy odszukuje katalog szablon贸w u偶ywanych przez program Word:

SOFTWAREMicrosoftOffice8.0Common
FileNewLocalTemplates

Wirus kasuje szablon NORMAL.DOT i tworzy jego zainfekowany odpowiednik. Nowy zara偶ony NORMAL.DOT zawiera w sobie makro "AutoExec", kt贸re zostaje automatycznie uruchomione podczas nast臋pnego startu Worda. Celem tego makra jest zaimportowanie g艂贸wnego makra wirusa z pliku C:COCAINE.SYS.

Plik C:COCAINE.SYS jest tworzony przez wirusa ju偶 po nadpisaniu szablonu NORMAL.DOT. Jest to plik tekstowy, zawieraj膮cy kod 藕r贸d艂owy w napisany w j臋zyku Visual Basic for Applications (VBA).

Z Worda do EXE

Aby przeskoczy膰 do pliku PE EXE z jego "szablonowego" (szablon Worda) odpowiednika, wirus u偶ywa triku. Tworzy dwa pliki. Pierwszym z nich jest plik C:COCAINE.SRC, zawieraj膮cy obraz zainfekowanego pliku PE EXE, skonwertowanego do postaci ASCII. Drugi plik ma format DOS-owy, generuje on przypadkowe nazwy.

Zara偶anie plik贸w PE EXE

Po zako艅czeniu infekowania plik贸w MS Word, wirus uruchamia mechanizm zara偶ania plik贸w PE EXE. Wirus wyszukuje pliki PE EXE w katalogu bie偶膮cym, oraz w katalogu Windows i zara偶a je. Infekowane s膮 tylko pliki z rozszerzeniami .EXE lub .SCR.

Nast臋pnie wirus szuka zainstalowanej przegl膮darki internetowej oraz klient贸w poczty elektronicznej i r贸wnie偶 je atakuje.

Mechanizm zara偶ania PE EXE

Przed zainfekowaniem pliku PE EXE wirus sprawdza czy:

  • d艂ugo艣膰 pliku nie jest podzielna przez 101 (aby unikn膮膰 multiinfekcji: zainfekowany plik PE EXE ma w艂a艣nie tak膮 d艂ugo艣膰),
  • nazwa pliku nie zawiera litery 'V' lub cyfry (w celu oszukania popularnych skaner贸w antywirusowych oraz "plik贸w pu艂apek".

      Je偶eli pierwsza cz臋艣膰 pliku PE EXE jest wystarczaj膮co du偶a (wi臋ksza ni偶 2304 bajt贸w) wirus wpisuje do niej 8 blok贸w swojego kodu, kt贸re s艂u偶膮 rozkodowaniu krok po kroku ca艂ego cia艂a wirusa poprzez p臋tle deszyfruj膮ce. Aby zachowa膰 zgodno艣膰 wirus nie modyfikuje adres贸w programowych punkt贸w charakterystycznych, lecz przywraca oryginalny wygl膮d nadpisanych plik贸w, a nast臋pnie zwraca kontrol臋 oryginalnej procedurze wykonywania.

      Je偶eli natomiast pierwsza cz臋艣膰 pliku jest zbyt ma艂a kontrola jest przekazywana bezpo艣rednio do kodu wirusa. W tym przypadku wirus modyfikuje adresy punkt贸w charakterystycznych w programie, aby przej膮膰 kontrol臋 w momencie gdy uruchomiony zostanie zara偶ony plik.

      Wirus koduje si臋 sam poprzez kilka (od dw贸ch do pi臋ciu) polimorficznych p臋tli. Mechanizm polimorfizmu w tym wirusie dzia艂a do艣膰 dobrze i produkuje oko艂o 2 KB polimorficznych p臋tli.

      Gdy uruchamiany jest mechanizm zara偶ania wirus przejmuje r贸wnie偶 funkcje GetProcAddress, GetModuleHandle, CreateProcessA, WinExec i MAPISendMail.

      Na koniec wirus dopisuje sw贸j zaszyfrowany kod do ostatniej cz臋艣ci pliku oraz zmienia rozmiar pliku w nag艂贸wku pliku PE.

      Przechwytywanie zdarze艅 Gdy zara偶anie Worda i PE EXE zako艅czy si臋, wirus przejmuje funkcje Windows pozwalaj膮ce na egzystowanie w pami臋ci jako cz臋艣膰 g艂贸wnego programu. Wirus przejmuje dwie funkcje dost臋pu do plik贸w WinExec i CreateProcessA, o ile mo偶liwe jest importowanie ich z KERNEL32.DLL poprzez g艂贸wny program. Gdy funkcje te przejm膮 kontrol臋 (program jest wykonywany) wirus mo偶e odczyta膰 nazw臋 pliku PE EXE, zlokalizowa膰 plik w kt贸rym si臋 znajduje, odnale藕膰 go oraz zarazi膰.

      Wysy艂anie wiadomo艣ci e-mail

      Wirus uruchamia r贸wnie偶 w膮tek infekowania poprzez Internet. Przejmuje funkcj臋 MAPISendMail eksportowan膮 przez MAPI32.DLL, "艂膮czenie" i "odpowied藕" z WSOCK32.DLL oraz GetProcAddress z KERNEL32.DLL.

      Pierwsza z tych funkcji s艂u偶y do wysy艂ania kopii poprzez Internet. Je偶eli wirus zaobserwuje takie zdarzenie, w贸wczas sprawdza wiadomo艣膰. Je偶eli nie posiada ona za艂膮cznika, wtedy wirus umieszcza w niej zainfekowany plik NORMAL.DOT lub PE EXE.

      Funkcja "GetProcAddress", "艂膮cznie" i "odpowied藕" s膮 u偶ywane przez wirusa do stworzenia alternatywnej drogi wysy艂ania zainfekowanych wiadomo艣ci e-mail. Wirus skanuje nag艂贸wki wiadomo艣ci przychodz膮cych w poszukiwaniu adres贸w nadawc贸w. Przetwarza CRC na adresy, a nast臋pnie por贸wnuje je ze stworzon膮 przez siebie baz膮 danych adres贸w ju偶 zara偶onych (baza ta mie艣ci si臋 w katalogu Windows pod nazw膮 BRSCBC.DAT). Je偶eli adres taki nie istnieje w bazie danych, w贸wczas wirus umieszcza go tam, a nast臋pnie tworzy wiadomo艣膰 zawieraj膮c膮 zara偶ony szablon NORMAL lub plik PE EXE. Za pomoc膮 funkcji MAPISendMail wirus wysy艂a nowo utworzon膮 wiadomo艣膰. Temat wiadomo艣ci jest losowo wybierany z poni偶szych mo偶liwo艣ci:

      Kewl page!
      Improvement to your page
      Your page r0x0r!
      You must see this...
      Secret stuff!