In welchen Programmiersprachen werden Computerviren geschrieben?

6 Antworten

Viren werden seit fast zehn Jahren (zu Windows Vista Zeiten) nicht mehr geschrieben, Trojaner hingegen machen den größten Teil der Schadsoftware aus.

In der Regel ist ein Virus ein Stück Maschinencode, das in der Lage ist, andere Binärformate (vornehmlich ausführbare Dateien wie EXEn oder DLLs) zu "infizieren", indem es seinen eigenen Code in diese Dateien einbaut, ohne deren Funktionsweise merklich zu verändern.

Es gibt auch Viren in Textform, die Skriptdateien oder Bibliotheken infizieren können, aber die sind noch seltener.

Aufgrund von Signaturprüfungen werden seit Windows Vista keine Programme mehr ausgeführt, die eine fehlerhafte Prüfsumme haben. Würde ein Virus seinen eigenen Code in eine EXE-Datei injizieren, hätte diese eine andere Prüfsumme und Windows würde die Ausführung verweigern. Das ist der Grund dafür, dass es heutzutage keine Computerviren im wörtlichen Sinne mehr gibt!

Allerdings wird jegliche Schadsoftware im Volksmund auch heute noch als "Virus" bezeichnet, und die Programme, die etwas dagegen tun sollen, heißen immer noch "Antivirensoftware".

(Disclaimer am Rande: Es gibt auch heute noch "richtige" Viren und die Möglichkeit EXEn zu infizieren ohne die Prüfsumme zu verändern. Das lag an einem Fehler der Verifizierung unter Windows bis vor einigen Jahren, aber inzwischen ist das a) nicht mehr möglich, und war b) auch damals schon nur eine Demonstration. In freier Wildbahn gibt es keine Viren mehr.)

Aber das alles nur als Begriffsklärung, zurück zum Thema: Heutzutage wird Schadsoftware immer noch vornehmlich (zumindest teilweise) in Assembler geschrieben, zumindest von jedem, der etwas auf sich hält. Entwickler, die ihre Trojaner in Delphi, Java, C#, oder teilweise auch schon tatsächlich C++ schreiben, werden "in Fachkreisen" schief angeguckt bzw. ausgelacht. Das gilt ganz extrem für AutoIt oder Visual Basic. :)

Wenn du dich mal dort rumtreibst, wo sich "richtige" Malwareautoren tummeln, wird dir schnell auffallen, dass es extrem viel Assembler-Code gibt.

Die Routine eines Kryptotrojaners zum Verschlüsseln einer Datei mithilfe von AES, ist in Assembler z. B. weniger als 30 Byte groß und benötigt keinerlei Funktionen des Betriebssystems, da seit 2009 so ziemlich alle CPUs über eine AES-Extension verfügen!

Und auch die sog. "Downloader", welche gerne als Anhang in Spammails verbreitet werden um das System grob vor zu untersuchen und ggf. nachträglich größere Trojaner nachzuladen, sind nicht ohne Grund oftmals EXE-Dateien mit einer Größe kleiner als ein einziges Kilobyte. So etwas wird in Assembler gemacht und ist selbst mit Kopfständen in C und C++ nicht machbar.

Ein weiteres Einsatzgebiet für Assembler ist der sog. Shellcode in Zusammenhang mit Exploits. So etwas wird zu 99% auch in reinem Assembler gemacht. Wenn jemand einen Bug in deinem Webbrowser ausnutzen will, dann ist eine gängige Methode, den in Assembler geschriebenen Shellcode über JavaScript einzuschleusen, um Bugs im kompilierten C++ Code deines Browsers auszunutzen.

Es gibt natürlich auch Leute, die schreiben ihre Malware in C oder C++, was "ja noch gerade mal so geht", aber so richtigen Respekt habe ich davor nicht, zumal ein 2KB Trojaner damit schnell auf 200KB aufgeblasen wird und für die gängigen Standardfunktionen eines Trojaners braucht man keine Hochsprache. Dinge wie Verbinden mit einem C2-Server, Screenshots machen, Dateien mopsen, usw. schreibt man direkt in Assembler indem man Systemfunktionen aneinanderkettet.

Zum Wort "Respekt" aus dem vorherigen Absatz noch eine Anmerkung: Das bezieht sich ausschließlich NUR auf die Programmierkunst, und Malwareautoren sind allesamt unethische Ar'''löcher, egal ob sie ihren kriminellen Gelüsten fröhnen oder für Regierungen arbeiten.

Ich analysiere beruflich u. a. Schadsoftware und das schreiben bzw. analysieren von Malware ist die beste Methode um zu Lernen! Bis hier hin ist alles völlig legitim, aber wenn jemand anfängt seine Ergüsse zu "verteilen", ist das eine riesen große Schweinerei! Die Opfer können (= werden) auch ältere Leute sein, oder unbedarfte Laien, für die es eine mittlere Katastrophe darstellt, wenn ihr Rechner "einen Virus hat".

Fazit: Du kannst natürlich Malware schreiben und analysieren, aber bitte verbreite diese nicht! Das wäre deinen Mitmenschen ggü. nicht in Ordnung und moralisch verwerflich. Lass dich nicht von der dunklen Seite der Macht verführen und tue als "White Hat" lieber etwas Gutes! Glaub mir, das ist langfristig wesentlich befriedigender!

Auch und ... reiner Assembler reicht natürlich nicht! Auch wenn du eine Malware nur in Assembler schreibst, musst du natürlich wissen, wie andere Dinge (Soft- / Hardware, Betriebssystem, ...) funktionieren um evtl. auch Lücken darin ausnutzen zu können. Deshalb solltest du neben Assembler natürlich auch mindestens C / C++ lernen, die ein oder andere Skriptsprache, und JIT-Sprachen wie Java oder C# kennen.

Aber um deine Frage letztendlich zu beantworten: Malware, die etwas auf sich hält, wird in Assembler geschrieben. Zumindest teilweise. Größere nachladbare Module (wie bei Stuxnet usw.) dürfen selbstverständlich auch in C++ entwickelt werden. :)

Naja, schönen Tag noch! :)

Diese Frage wurde bereits in einigen Foren gestellt, sogar hier: https://www.gutefrage.net/frage/in-welcher-programmiersprache-werden-viren-hauptsaechlich-geschrieben

Geschrieben werden können sie in jeglicher Programmiersprache. Am ehesten eignen sich wohl Sprachen, mit denen sich Logiken schnell und einfach ausdrücken lassen (also z.B. Skriptsprachen) und die (z.B. als Programm) gut auf das Zielgerät geschleust werden können.

Das könnten bspw. diese sein: Java, C, Python, VB, VBScript, PostScript.


TeeTier  30.10.2017, 02:21

Das könnten bspw. diese sein: Java, C, Python, VB, VBScript, PostScript.

Das ist ja schön, dass du PS erwähnst! Ich glaube, das ist eine der am meisten unterschätzten Gefahren in Druckern und Kopierern.

Vor allem, da die Hersteller sich hier gar nicht so viel um Sicherheit kümmern, wie auf anderen Systemen. Außerdem fällt eine PS-Malware a) noch weniger auf als eine Herkömmliche, und lässt sich b) wesentlich schlechter wieder entfernen. :)

0
regex9  30.10.2017, 11:06
@TeeTier

Genau daran habe ich dabei auch gedacht. 😄

1

Es kommt darauf an, es ist meistens eine Mischung. Viele Sprachen sind für Viren geeignet, welche Schadfunktionen meinst du genau? 


hahanoob 
Fragesteller
 21.10.2017, 22:58

Destruktive Malware; also vor allem Bootsektorviren und Skripviren

0
TeeTier  30.10.2017, 02:25
@hahanoob

Das sind zwar zwei völlig unterschiedliche Dinge, aber als Malwareautor würde ich mich hüten, etwas in den Bootsektor zu schreiben, weil das der vermutlich am besten überwachte Bereich ist, und man dadurch sehr schnell enttarnt werden wird. Es sei denn, es ist eine Kryptotrojaner-Welle, bei der es auf eine vorzeitige Entdeckung nicht ankommt.

Skriptviren sind trivial einfach und die kannst du eigentlich überall dort einbauen, wo ein Skript interpretiert wird. Also z. B. bei Photoshop-Effekten, als kreative Idee. :)

Aber mach so etwas bitte nicht, deinen Mitmenschen zuliebe! (siehe dazu das Ende meiner Antwort)

0

C# ist eine „managed“ Sprache, welche in Zwischencode kompiliert wird. C oder C++ sind da deutlich besser. In vielen Fällen wird es wohl auch eine der beiden sein.

Erfolgreiche Virenprogrammierer können gar nicht mehr programmieren .. Computer-Viren Programmieren ist nämlich eine völlig unsinnige Beschäftigung ...

Auch nur "ordentliche" Antiviren-Programme finden inzwischen alle "Viren".

Es ist inzwischen so wie beim Bombenbau: mit einem Koffer in dem es einen grossen Stein und einen Wecker hat, kann man mehr Schaden anrichten, wie mit einer echten Bombe. 


TeeTier  30.10.2017, 02:59
Mit Verlaub, aber das, was du schreibst, ist leider falsch!

Die Entwicklung von Schadsoftware ist mit eines der anspruchsvollsten Dinge, die man programmieren kann, und die sehr viel Erfahrung auf vielen verschiedenen Gebieten erfordert. (Auch wenn viel Malware gepfuscht und auf einem absolut unterirdischen Niveau ist!)

Dass zwar nur Idioten ihre Schadsoftware unter die Leute bringen ist zwar kein Geheimnis, aber zu Übungszwecken kann ich nur jedem IT-Studenten ans Herz legen, sich dringend doch mal eingehender mit der Entwicklung und Funktionsweise von Schadsoftware zu beschäftigen.

Wie gesagt, diese darf dann natürlich nicht verbreitet werden, aber nur durch eine aktive Eigenentwicklung lernt man!

Hättest du dich z. B. näher mit Schadsoftware beschäftigt, dann würdest du nicht schreiben, dass "ordentliche Antivirensoftware alle Viren findet", sondern du würdest - wie ich auch - Antivirensoftware als glatten Betrug bezeichnen, der aus technischer Sicht gar nicht zuverlässig funktionieren KANN, nur ein Bruchteil aktueller Schadsoftware gefunden wird, und ahnungslosen Nutzern das Geld aus der Tasche zieht, wobei diese sich in trügerischer / falscher Sicherheit wiegen.

Aus diesem Grunde erachte ich Antivirensoftware als äußerst kontraproduktiv und gefährlich, vom Leute-übers-Ohr-hauen mal abgesehen.

Ich schreibe das als jemand, der beruflich seit Jahrzehnten Schadsoftware analysiert, professionell Sicherheitslücken sucht und sich auf defensive Programmierung spezialisiert hat.

Siehe meine (längere) Antwort oben und diesen Link zu einer Frage hier auf GF und meiner Antwort darunter (inkl. der dort verlinkten anderen Antworten):

https://www.gutefrage.net/frage/wie-kann-das-sein-antivirus-erkennt-selbstgemachten-keylogger-nicht

Fazit: Antivirensoftware (egal von welchem Hersteller) funktioniert nicht (ansatzweise ausreichend) und selbst Schüler überlisten die Heuristik "ausversehen" ohne es überhaupt versucht zu haben.

Wenn Kaspersky oder Norton sinngemäß Dinge wie "zu 100% geschützt" oder auch "zu 99% sicher" schreiben, dann ist das eine ganz freche und dreiste Lüge, und für diese Verbrauchertäuschung sollten diese Unternehmen eigentlich zu einer Strafzahlung gezwungen werden!

Also fall nicht auf bunte Werbeflyer rein! Antivirensoftware ist Betrug. Punkt!
0
intello99  30.10.2017, 03:58
@TeeTier

@TeeTier wie viele von meinen Berufskollegen schwätzt Du völlig an der Sache vorbei und kritisierst mich wegen Sachen, die Du offensichtlich völlig falsch verstehst und auslegst.

Im Grunde genommen bist Du (fast) auf meinem Standpunkt angelangt.

In diesem Threat geht es um Computerviren. Nicht um Malware und anderen Schwachsinn, der nicht unter den Begriff Computer-Viren fällt.

Es hat ständig irgendwelche Tölpel, die nicht begreifen, dass die Anti-Computer-VIREN-Industrie ständig die Leute mit Spitzfindigkeiten betrügt.

Es ist schliechtweg so, dass die AV Hersteller nur Computer-Viren bekämpfen, aber gewollt, oder vielleicht auch ungewollt, bei den Computer-Begeisterten, die Idioten Idee aufkommen lassen, dass Malware, Spyware und ähnliches auch "Viren" sind.

Ich habe mindestens so viel Erfahrung, wie Du, im Bereich Internet Schweinereien.

Ein richtiger Computer-Virus braucht bestimmte Programm Routinen ... ohne die kann er gar nicht funktionnieren.

Und das müsstest Du eigentlich genauso gut wissen wie ich.

Deshalb kann man ECHTE Computer-Viren auch problemlos herausfiltern ... das Problem was sich dabei zeigt, ist nur, dass man etwas entwickeln muss, dass nicht praktisch jedes normal funktionnierende Programm, als "Virus" eingestuft wird.

Wohlgemerkt: ich spreche hier nicht von anderer "Malware", nur von Computer-Viren.

Ich habe inzwischen festgestellt, dass Computer-Viren (fast immer) keine "Software" mehr sind, sondern "Gehirnwäsche" ... man gaukelt dem Opfer einen nicht existierenden "Computer-Virus" vor und hofft dann darauf, dass der Tölpel seinen Computer selbst versaut.

Ein einfaches Beispiel dafür ist es den Leuten einzureden, dass irgend eine bestimmte Datei auf Ihrem Computer ein "Virus" ist und man gibt ihnen dann eine Anleitung, wie sie diese Datei durch eine "saubere" Datei ersetzen können ... die dann ein "Virus" ist.

Das ist ein wunderbar funktionnierendes System, was besonderst bei aufgeblasenen Computer.-Bastlern funktionniert.

Auch ich halte Anti-Viren Software für eher unnütz .. dabei gibt es einige, die sogar selbst "Viren" mitbringt. Die die ich noch bei Kunden verwende ist "harmlos", bis auf die Tatsache, dass sie den Leuten einen falschen Eindruck erweckt und sie davon abhällt vorsichtig zu sein.

Auch das viele Zeug, was die Leute warnt, wenn irgend etwas an der Registery geändert wird, oder auch Firewalls, wo der Nutzer bestätigen muss, dass irgend eine Aktion "sauber" ist ... sind eher gefährlich, wie nützlich.

Auch SSL Verbindungen und der ganze Kram, der Sicherheit vortäuscht ist extrem gefährlich ... da kann man meistens nicht klar feststellen, ob das Ganze nicht mehr Schaden anrichten kann, wie es angeblich verhindert.

Von mir aus gesehen ist das alles dazu da, um die Leute von den echten "Schädlingen" abzulenken.

Wir entwickeln inzwischen ständig neue Methoden, die dafür sorgen, dass irgendwelche "Malware" (egal welcher Art) den Daten nichts mehr anhaben kann und wir sorgen dafür, dass das Betriebssystem möglichst redunant ist. 

Wir haben sehr viele Methoden entwickelt, die deshalb erfolgreich sind, weil sie völlig anderst funktionnieren, wie die Methoden von den Computer-Begeisterten.

Wir haben zum Beispiel auch eine Methode entwickelt mit der man den Email-SPAM komplet abstellen kann ... auch diese Methode arbeitet komplet anderst herum, wie die vielen, völlig erfolgslosen, SPAM-Filter.

Du darfst mir gerne eine FA schicken, dann bleiben wir in Verbindung... vielleicht entsteht daraus ein produktiver Meinungsaustausch. Ich könnte gut einen "Freund" brauchen, der mich objektiv kritisiert ... ich habe es mit sehr vielen Themen zu tun, wo man nur weiterkommt, wenn man das Thema nicht einseitig begutachtet. 

0