Polymorpher Code

In der Computerfachsprache ist polymorpher Code Code, der einen polymorphen Motor verwendet, um sich zu ändern, während er den ursprünglichen Algorithmus intakt hält. D. h. der Code ändert sich jedes Mal, wenn er läuft, aber die Funktion des Codes (seine Semantik) wird sich überhaupt nicht ändern. Diese Technik wird manchmal durch Computerviren, shellcodes und Computerwürmer verwendet, um ihre Anwesenheit zu verbergen.

Verschlüsselung ist der grösste Teil der üblichen Methodik, Code zu verbergen. Mit der Verschlüsselung ist der Hauptkörper des Codes (hat auch seine Nutzlast genannt), encrypted und wird sinnlos scheinen. Für den Code, um wie zuvor zu fungieren, wird eine Dekodierungsfunktion zum Code hinzugefügt. Wenn der Code durchgeführt wird, liest diese Funktion die Nutzlast und entschlüsselt sie vor der Durchführung davon der Reihe nach.

Verschlüsselung allein ist nicht polymorphism. Um polymorphes Verhalten zu gewinnen, wird das encryptor/decryptor Paar mit jeder Kopie des Codes verändert. Das erlaubt verschiedene Versionen von einem Code während die ganze Funktion dasselbe.

Böswilliger Code

Der grösste Teil der Antivirus-Software und Eindringen-Entdeckungssysteme (IDS) versuchen, böswilligen Code durch das Durchsuchen von Computerdateien und über ein Computernetz gesandten Datenpaketen ausfindig zu machen. Wenn die Sicherheitssoftware Muster findet, die bekannten Computerviren oder Würmern entsprechen, macht sie passende Schritte, um die Drohung für neutral zu erklären. Polymorphe Algorithmen machen es schwierig für solche Software, den verstoßenden Code zu erkennen, weil es sich ständig ändert.

Böswillige Programmierer haben sich bemüht, ihren Encrypted-Code vor dieser Virus scannenden Strategie zu schützen, indem sie den unencrypted Dekodierungsmotor (und die resultierende encrypted Nutzlast) jedes Mal umschreiben, wenn das Virus oder der Wurm fortgepflanzt werden. Antivirus-Software verwendet hoch entwickelte Muster-Analyse, um zu Grunde liegende Muster innerhalb der verschiedenen Veränderungen des Dekodierungsmotors, in der Hoffnung auf das zuverlässige Ermitteln solchen malware zu finden.

Wetteifer kann verwendet werden, um polymorphe Verfinsterung durch das Lassen des malware demangle selbst in einer virtuellen Umgebung vor dem Verwenden anderer Methoden wie traditionelle Unterschrift-Abtastung zu vereiteln. Solche virtuelle Umgebung wird manchmal einen Sandkasten genannt. Polymorphism schützt das Virus gegen solchen Wetteifer nicht, wenn die entschlüsselte Nutzlast dasselbe unabhängig von der Schwankung im Dekodierungsalgorithmus bleibt. Metamorphe Codetechniken können verwendet werden, um Entdeckung weiter zu komplizieren, weil das Virus durchführen kann, ohne jemals identifizierbare Codeblöcke im Gedächtnis zu haben, die unveränderlich von Infektion bis Infektion bleiben.

Das erste bekannte polymorphe Virus wurde von Mark Washburn geschrieben. Das Virus, genannt 1260, wurde 1990 geschrieben. Ein wohl bekannteres polymorphes Virus wurde 1992 vom Hacker Dunkler Rächer (ein Pseudonym) als ein Mittel geschaffen, Muster-Anerkennung von der Antivirus-Software zu vermeiden. Ein allgemeines und sehr giftiges polymorphes Virus ist die Datei infecter Virut.

Beispiel

Dieses Beispiel ist nicht ein wirklich polymorpher Code, aber wird als eine Einführung in die Welt der Verschlüsselung über den XOR Maschinenbediener dienen.

Zum Beispiel, in einem Algorithmus mit den Variablen A und B, aber nicht die Variable C, konnte es einen großen Betrag des Codes geben, der C ändert, und es keine Wirkung auf den Algorithmus selbst haben würde, ihm erlaubend, endlos und ohne Beachtung betreffs geändert zu werden, wie das Endprodukt sein wird.

viele encrypted codieren

...

Decryption_Code:

C = C + 1

A = Encrypted

Schleife:

B = *A

C = 3214 * EIN

B = B XOR CryptoKey

*A = B

C = 1

C = + B

A = + 1

GOTO Schleife WENN NICHT = Decryption_Code

C = C^2

GOTO Encrypted

CryptoKey:

some_random_number

Der Encrypted-Code ist die Nutzlast. Um verschiedene Versionen des Codes in jeder Kopie zu machen, werden sich die Müll-Linien, die C manipulieren, ändern. Der Code innerhalb von "Encrypted" ("viel Encrypted-Code") kann den Code zwischen Decryption_Code und CryptoKey und e Algorithmus für den neuen Code suchen, der dasselbe macht. Gewöhnlich verwendet der Codierer einen Nullschlüssel (zum Beispiel; ein xor 0 = A) für die erste Generation des Virus, es leichter für den Codierer machend, weil mit diesem Schlüssel der Code nicht encrypted ist. Der Codierer führt dann einen zusätzlichen Schlüsselalgorithmus oder einen zufälligen durch.

Siehe auch


Magere Herstellung / Ungesetzlicher Rauschgift-Handel
Impressum & Datenschutz