Können Sie wirklich einen Trojaner in einer Bilddatei erhalten und wenn ja, wie wird er ausgeführt?

11

Ich habe gerade ein paar LPs digitalisiert und brauchte ein Cover. Mein Scanner ist nicht groß genug, um das Album zu scannen, daher habe ich die Bilder gesucht und aus dem Internet heruntergeladen.

Als ich dies tat, berichtete Avast, dass einer von ihnen den Trojaner "Win32: Hupigon-ONX" enthielt und ihn sofort unter Quarantäne stellte. Um kein Risiko einzugehen, habe ich eine andere Version heruntergeladen, die als sauber gemeldet wurde.

War das nur ein Fehlalarm von Avast oder hätte es wirklich einen Trojaner im JPG geben können?

Wenn ja, wie würde es ausgeführt werden?

Ich muss zugeben, dass mich dieser Aspekt von Trojanern und Viren immer verblüfft hat. Als Softwareentwickler habe ich immer die Länge von Arrays usw. überprüft, so dass ich nicht sehe, warum Dinge wie Pufferüberlauf auftreten sollten. Ich verstehe, dass die Leute Ecken schneiden und Fehler machen, und wenn die Software komplex genug ist, können diese Fehler durchschlagen.

ChrisF
quelle

Antworten:

11

Exploits in Image-Dateien nutzen Pufferüberlauffehler im Image-Verarbeitungscode des Betriebssystems aus. Vor ein paar Jahren gab es in der Windows-GDI-Ebene einige schwerwiegende Mängel: Patches wurden vor langer Zeit veröffentlicht, Exploit-Images sind jedoch immer noch verfügbar, entweder nur weil sie geblieben sind oder in der Hoffnung, dass sie auf einen Computer stoßen, der noch nicht gepatcht wurde .

Die übliche Ursache für eine solche Sicherheitslücke besteht darin, dass Bilddaten zwischen Funktionen auf dem Aufrufstapel übertragen werden und die maximale Länge der Daten nicht ordnungsgemäß überprüft wird. Dies kann durch geschickt konstruierte Daten ausgenutzt werden, die übergroß und so angeordnet sind, dass sie den Code als nächstes im Stapelrahmen überschreiben (ihn mit anderem Code überschreiben) oder Zeiger auf Code überschreiben, der zum Aufrufen anderer Funktionen verwendet wird oder wenn die aufgerufene Funktion zu "Aufrufer" zurückkehrt (Überschreiben eines solchen Zeigers, um ihn auf den Exploit-Code zu verweisen), oder Überschreiben von Daten auf eine Weise, die bewirkt, dass ein anderes Loch freigelegt wird. Die genaue Methode hängt von der jeweiligen Sicherheitslücke ab.

Moderne CPUs verfügen über einen Schutz, der die meisten dieser Exploits stoppt, wenn der Code dies unterstützt. Dies funktioniert, indem das Programm / die Bibliothek explizit markiert, welche seiner Seiten Daten und welche Code sind. Die CPU wird dann eine Ausnahme auslösen, wenn irgendetwas in den Daten (wie Bilddaten) versucht, als Code ausgeführt zu werden. Bei IIRC Vista und höher und neueren Versionen von .Net wurden alle Bibliotheken neu programmiert, um diesen Schutz zu unterstützen, und es wird auch von anderen Betriebssystemen unterstützt, dies hört jedoch nicht auf alles Solche Exploits funktionieren nur, wenn sie explizit aktiviert sind (andernfalls würde ein Großteil des alten Codes kaputt gehen).

David Spillett
quelle
9

Ich muss zugeben, dass dieser Aspekt von   Trojaner und Viren haben immer verwirrt   mir. Als Softwareentwickler habe ich   immer überprüfte Länge von Arrays etc.   Ich verstehe also nicht, warum Dinge wie Puffer   Überschreitungen sollten auftreten.

Nun, willkommen in der realen Welt ;-). Pufferüberläufe & amp; c. kann in vielen Sprachen vorkommen (insbesondere in solchen mit manueller Speicherverwaltung wie C), und wenn Entwickler Fehler machen, machen sie tun geschehen.

Während ein Pufferüberlauf normalerweise das Programm zum Absturz bringt (Segmentierungsverletzung oder ähnliches), kann ein Angreifer möglicherweise Code ausführen. Trojaner aktiviert

Zum Beispiel:

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories/35216/

Und zur Erklärung, wie dies die Ausführung von Code ermöglicht:

https://stackoverflow.com/questions/460519/how-are-buffer-overflows-used-to-exploit-computers

sleske
quelle
Ich weiß, dass sie passieren - es ist nur eine der grundlegenden Prüfungen, die ich bei der Verarbeitung von Daten durchgeführt habe - zu prüfen, ob ich genügend Speicherplatz für die Daten habe / zugeteilt bekommen habe.
ChrisF
@ ChrisF, die Tatsache, dass Sie müssen sicherstellen, dass Sie überprüfen (im Gegensatz zum "Computer" ist das Problem selbst.
Zabba
@Zabba, was ich meinte, war, dass ich "das zu überprüfende Programm codiere", wenn ich Daten verarbeite.
ChrisF
3

Es gab einen Exploit, durch den eine beschädigte JPEG-Bibliothek, in der im Jahr 2006 beliebiger Code ausgeführt werden konnte, mit einem Puffer überschwemmt wurde. Microsoft hat einen Patch veröffentlicht, mit dem er schneller behoben werden konnte, als ich es je gesehen hatte. Ihr Rechner ist fast sicher nicht anfällig und Hupigon generiert gerade zu viele falsche Ergebnisse.

http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?name=Win32/Hupigon

msw
quelle
2

Ich muss zugeben, dass mich dieser Aspekt von Trojanern und Viren immer verblüfft hat. Als Softwareentwickler habe ich immer die Länge von Arrays usw. überprüft, damit ich nicht verstehe, warum Dinge wie Pufferüberläufe auftreten sollten. Ich verstehe, dass Leute Abstriche machen und Fehler machen, und wenn die Software komplex genug ist, können diese Fehler durchkommen.

Vielleicht überprüfen Sie alle Ihre Zeiger, Arrays usw. Aber sind Sie sich sicher, dass alle Programmierer einer 3rd-Patry-Bibliothek, die Sie (möglicherweise) irgendwann auch verwenden, dies auch getan haben?

Die einfachste Lösung hierfür wäre das Herunterladen einer Datei wie "image.jpg.exe" oder etwas Ähnlichem anstelle eines echten Bildes.

Die fortgeschritteneren Möglichkeiten, Ihren PC zu infizieren, wurden hier bereits beschrieben (zB Pufferüberlauf, ...).

Elvith
quelle
1
True - aber ich ändere die Ordneroptionen, um Erweiterungen anzuzeigen. Ich bin sicher, dass das Verbergen bekannter Erweiterungen mehr Probleme verursacht hat, als es löst. In der Tat kann ich mir kein Problem vorstellen, das es tatsächlich löst.
ChrisF
full ack - Dies ist eine der ersten Optionen, die ich beim Arbeiten mit Windows aktiviere
Elvith
@ChrisF: Nun, offensichtlich besteht das Problem darin, dass Benutzer die Dateierweiterung versehentlich ändern können, wenn sie sie umbenennen. Dies verursacht das bekannte Problem "Das Symbol meines Dokuments sieht komisch aus und ich kann es nicht mehr öffnen. Hilfe!" :-) (und ja, ich mache manchmal technische Unterstützung für meine Familie).
sleske
@sleske - Windows 7 wählt die Erweiterung nicht aus, wenn Sie eine Datei umbenennen.
ChrisF
1
@ChrisF: Interessant, wusste das nicht. Früher war es anders - zumindest Windows Server 2003 wählt den gesamten Namen für eine Umbenennung aus. Und wenn Benutzer die Erweiterung bearbeiten können, werden sie auf jeden Fall :-).
sleske