A számítógépes vírusok polimorfizmusa

A számítógépes vírusok polimorfizmusa ( görögül πολυ-  - sok + görögül μορφή  - alak, megjelenés) egy speciális technika, amelyet a rosszindulatú programok szerzői alkalmaznak a rosszindulatú programok klasszikus víruskereső termékek általi észlelési arányának csökkentésére .

A módszer leírása

A polimorfizmus abban áll, hogy egy rosszindulatú program programkódját "menet közben" generálják - már a végrehajtás során, miközben magának a kódot előállító eljárásnak sem kell állandónak lennie, és minden újabb fertőzéssel változik. A kód megváltoztatását gyakran olyan utasítások hozzáadásával érik el, amelyek nem változtatják meg a programkód algoritmusát (például a NOP utasítás ).

A rosszindulatú programkód folyamatos módosítása nem teszi lehetővé egy adott kártevő-mintához univerzális aláírás létrehozását. A víruskereső szoftverek a mai napig olyan technológiákat használnak, mint a heurisztikus elemzés és az emuláció e módszer ellen .

Történelem

Az első ismert polimorf vírust Mark Washburn írta. Az 1260-nak nevezett vírust 1990-ben hozták létre. Egy ismertebb polimorf vírust 1992-ben mutatott be a bolgár Dark Avenger cracker (álnév), aki megalkotta az MtE-t (Mutation Engine) .

A mai napig számos rosszindulatú program ismert , amelyek polimorfizmust használnak az elemzés bonyolítására és az aláírás létrehozására.

Algoritmus példa

Egy algoritmus, amely az A és B változókat használja, de nem használja a C változót, akkor is működhet, ha sok különböző parancsot ad hozzá, amelyek megváltoztatják a C változó tartalmát.

Forrás algoritmusa:

Rajt: GOTO Decryption_Code Titkosított: ... sok titkosított kód ... Decryption_Code: A = Titkosított hurok: B = *A B=B XOR CryptoKey *A=B A=A+1 GOTO Loop IF NOT A = Decryption_Code GOTO Titkosítva CryptoKey: valamilyen_véletlen_szám

Ugyanaz az algoritmus, de olyan műveletek hozzáadásával, amelyek megváltoztatják a C változót:

Rajt: GOTO Decryption_Code Titkosított: ... sok titkosított kód ... Decryption_Code: C=C+1 A = Titkosított hurok: B = *A C=3214*A B=B XOR CryptoKey *A=B C=1 C=A+B A=A+1 GOTO Loop IF NOT A = Decryption_Code C=C^2 GOTO Titkosítva CryptoKey: valamilyen_véletlen_szám

A „Titkosított” részben lévő kód ezután feldolgozhatja a „Decryption_Code” és „CryptoKey” szakaszok közötti kódot, és eltávolíthatja a „felesleges” műveleteket, amelyek megváltoztatják a C változót. Mielőtt a kriptográfiai eszközt újra felhasználnák, új „felesleges” műveleteket adhat hozzá. amelyek megváltoztatják a C változót, vagy akár teljesen megváltoztatják az algoritmust, de úgy, hogy ugyanazokat a funkciókat látja el.

Példa összeállítási kódra

A vírus törzsének titkosításának egyik legegyszerűbb módja, ha bájtonként titkosítjuk az XOR művelettel.

mov cx, code_length mov si, offset start_code mov al, xor_key _hurok: xor [si+cx], al ;dekódoló bájt loop _loop ;vegye a következő bájtot jmp si  ;...  ;... kezdőkód: ;itt van a vírus testének titkosított része ; ő a felelős az új fájlok megfertőzéséért és egy új visszafejtési eljárás kialakítása ;ugyanakkor az új fájl vírustörzsének ugyanazt a részét kell átírni ;titkosított, de más kulccsal

Új visszafejtési eljárás a következő egyszerű lépésekkel hozható létre:

Mondjuk

add eax, 5

helyettesíthető

subeax, -5

és a kódot

mov ax, bx

helyettesíthető

nyomja meg a bx-et pop balta

A védekezés módjai

A polimorf kártevők elleni hatékony védelem proaktív vírusvédelmi módszerek , például heurisztikus elemzés és emuláció használatát igényli . A heurisztikus elemzés és emuláció azonban nem garantálja a polimorf kártevők 100%-os észlelését, ezért a HIPS használata javasolt .

Lásd még

Linkek