Mutation Engine Trident Polymorphic Engine

Wirusy polimorficzne

Jest to typ wirusa, który potrafi generować
nowy kod przy każdym zarażeniu pliku.
Dzięki temu są one bardzo trudne do wykrycia
(nie posiadają charakterystycznej sygnatury).
Wirusy te korzystają z bibliotek funkcji
tworzących mutacje. Pierwszą taką bibliotekę
- Mutation Engine stworzył Dark Awanger.
Wykorzystał w niej fakt, że w zestawie poleceń
procesorów istnieją różne instrukcje, które
po wykonaniu dają ten sam efekt.

Mutation Engine

Biblioteka jest rozpowszechniana w postaci
skompilowanej. Składa się z pliku MTE.OBJ
zawierającego właściwą funkcję kodowania,
oraz plik RND.ASM zawierający generator licz
pseudolosowych. Aby jej użyć należy najpierw
napisać kod źródłowy wirusa i zapisać go w
pliku *.ASM. Gdy wirus ma zainfekować plik
wywołuje się funkcje MUT_ENGINE
Funkcja ta tworzy mutacje, którą należy skopiować
do pliku wraz z funkcją i wygenerowaną przez
nią procedurą dekodującą. Następnie należy
stworzyć generator liczb pseudolosowych
(funkcje RND_INIT i RND_GET)
lub skorzystać z dostarczonego. Następnym
krokiem jest kompilacja pliku z kodem źródłowym
i RND.ASM i połączenie plików *.OBJ, RND.OBJ
i MTE.OBJ w COM'a.
Tak właśnie narodził się pierwszy wirus
polimorficzny.



TridenT Polymorphic Engine

Jest to drugi generator polimorficzny. Działa na
podobnych zasadach jak Mte. Składa się z:
  • ES - segment roboczy
  • DS:DX - wskazanie początku kodu wirusa
  • CX - długość wirusa
  • BP - wartość rejestru IP w momencie wywoływania
    procedury rozkodowującej
  • DI - offset miejsca, do którego ma być przekazane
    sterowanie. Po zakończeniu działania procedury
    rozkodowującej Zwykle ustawiany na 0 (gdy kod
    wirusa znajduje się bezpośrednio za funkcj4 dekodująca).
  • SI - offset miejsca, z kt6rego ma być wzięty fragment
    do rozkodowania. Najczesciej ustawiany na 0 (tak jak
    poprzednio - gdy kod wirusa znajduje się bezpośrednio
    za funkcją dekodujacą).
  • AX - opcje - tutaj zaczynają się różnice w stosunku do MtE
    • 0 - nie zakładaj, że na starcie procedury dekodującej
      DS=CS (jedynkę należy wstawiać w wyjątkowych
      przypadkach. Najczęściej wystarczy 0),
    • 1- wstawiaj w kod deskryptora losowo takie instrukcje,
      które nie mają na niego wpływu.
    • 2 - wstaw losowe instrukcje przed dekryptorem,
    • 3 - zachowaj wartość rejestru AX podczas
      rozkodowywania.

Analogicznie wartości zwracane w poszczczególnych
rejestrach oznaczają:
  • ES - segment roboczy
  • DS:DX wskazuje na początek procedury rozkodowującej
    (po niej w pamięci znajduje się zakodowany wirus).
  • CX łączna długość funkcji rozkodowującej i kodo wirusa.
  • AX - długość zakodowanego wirusa
  • DI - wskazuje na koniec procedury dekodującej.
    Jest ona przydatna tylko wtedy, gdy do funkcji CRIPT
    została przekazana wartość SI inna niż 0.

Przykłady wirusów korzystających z TPE:
  • TPE.AEP family - zawiera tekst:

    DGME (C) 1993 American Eagle Publications, Inc., All Rights Reserved.

  • TPE.Civilwar family - zawiera tekst:

    "Civilwar.1979": Civil War IV, (c) 1993 *.com
    
       For all i'v seen has changed my mind
       But still the wars go on as the years go by
       With no love of God or human rights
       'Cause all these dreams are swept aside
       By bloody hands of the hypnotized
       Who carry the cross of homicide
       And history bears the scars of our Civil Wars.
    
       [ DH / TridenT ] [ MK / TridenT ]
    
     "Civilwar.1994":
       Civil War IV v1.1, (c) Jan '93 *.com
    
       For all i've seen has changed my mind
       But still the wars go on as the years go by
       With no love of God or human rights
       'Cause all these dreams are swept aside
       By bloody hands of the hypnotized
       Who carry the cross of homicide
       And history bears the scars of our Civil Wars.
    
       [ DH / TridenT ] [ MK / TridenT ]
    
     "Civilwar.2049":
       Civil War V v1.0, (c) Jan '92
       [ DH / TridenT ][ MK / TridenT ]
    
    

  • TPE.Gambit.2259 - zawiera tekst:

    Gambit 1.0 by Viper [NuKE]

  • TPE.Lamer - zawiera tekst:
    
    
                                            @@@@@  The
                                            |          _         | Lamer Exterminator
                                            [      ř]  -  [ř    ]                Virus by
                                            |           |          | ---> UGLY BOY <---
                                            |          ě         |  Hi Dude!.Sorry for
                                            |        \_/        | your HD! HiHiHiHi!
                                                \   ___   /    23/10/1993  Italy
    
    
  • TPE.Little
  • TPE.Nazis - zawiera tekst

    DH Nazi Cop by Micro-Spirit *.com
    Just wanted to let the world know thatall cops are fucking Nazis.
    Anarchy Rulez - Fuck the System [ Micro-Spirit / 1995 ] [ MK / TridenT ]

  • TPE.Poet zawiera tekst

    Lucifer Messiah -- ANARKICK SYSTEMS POET Prototype

Odmiany generatora:
  • TPE.Bosnia
  • TPE.Girafe
  • TPE.Kela.4568



Przykłady innych bibliotek polimorficznych
  • Amber
  • APME
  • Biological Warfare Mutation Engine
  • CLME
  • Dark Angel's Multiple Enkryptor
  • Dark Slayer Confusion Engine
  • FOG
  • Guns'n'Roses Polymorfic Engine
  • MutaGen
  • NuKE Encryption Device
  • Phantasie Mutation Engine
  • TCE
  • TVED
  • Virogen's Irregular Code Engine
  • The Visible Mutation Engine