it-swarm.com.de

Wie ist es möglich, ausführbaren Code in ein Bild einzubetten?

Ich habe FireEye gelesen und bin auf diesen NYTimes-Artikel gestoßen, in dem ein Skype-Chat beschrieben wurde, in dem ein Bild gesendet wurde mit Malware beladen:

Zitat:

Um Zugriff auf Informationen zu den Geräten zu erhalten, identifizierten Hacker, die sich als Frauen auf Skype ausgaben, die Gerätetypen, die die Ziele verwendeten, und sendeten mit Malware beladene Fotos.

Das zweite Foto war eine besonders starke Malware, die Dateien vom Zielcomputer kopierte

Ich weiß, dass Exif-Daten und IPTC-Header in Bildern vorhanden sind, und bin mir ziemlich sicher, dass Sie mithilfe von FileMagic-Mimetyp-Header-Informationen einige zusätzliche Informationen in eine Bilddatei einfügen können, aber wie ist es möglich, ausführbaren Code in ein Bild einzubetten? Bild?

Das Bilddateiformat war pif Wenn also nicht der Computer eine App hatte, die die Datei öffnete und ein Bild zeigte, während er heimlich Code ausführte, sehe ich nicht, wie es möglich ist.

36
Jeremy Thompson

Die Antwort ist einfach. Das war nicht ein Foto. Und .pif ist nicht ein Bildformat. Verlassen Sie sich auf NYTimes, um korrekte technische Informationen bereitzustellen.

Wie das Protokoll in NYTimes 'Artikel sagt und wie FireEyes aktueller Bericht bestätigt, war die verwendete Datei eine .pif-Datei . Es ist eine der weniger bekannten ausführbaren Dateierweiterungen von Windows.

.pif ist ein Vermächtnis von MS-DOS wie .com. Es soll eine "Programminformationsdatei" (daher der Name) sein, in der eine Verknüpfung zu einem (DOS) Programm zusammen mit verschiedenen Informationen zum System zur Behandlung gespeichert wird. Noch heute gibt Windows .pif-Dateien ein Verknüpfungssymbol.

Das Lustige ist, dass es Windows heute eigentlich egal ist, ob das .pif wirklich nur eine Programminformationsdatei ist. Probieren Sie es aus: Benennen Sie eine EXE-Datei in eine PIF-Datei um und führen Sie sie aus. Es kann einen Unterschied geben, dass das Symbol nicht angezeigt wird, aber das ist alles. Das ist es, was Sie durch eine einheitliche Behandlung von Dateien in verschiedenen Formaten erreichen. Danke, Microsoft !

Warum passiert das? Kurze Antwort: Weil Windows. Längere Antwort: Windows führt eine .pif-Datei durch ShellExecute aus, die technisch ein geeignetes Programm zum Öffnen einer Datei finden und diese dann zum Öffnen verwenden sollte. Bei PIF-Dateien wird zunächst geprüft, ob es sich tatsächlich um eine Datei handelt, die auf eine ausführbare MS-DOS-Datei verweist. Wenn es nicht dem PIF-Dateiformat entspricht, prüft ShellExecute, ob es ausführbaren Code enthält. Wenn dies der Fall ist, wird es ausgeführt, als wäre es eine EXE-Datei. Warum? Weil Windows !

Was haben die super-gruseligen Genie-Hacker getan? Diese Jungs machten sich nicht die Mühe, etwas Kompliziertes zu tun: Sie erstellten ein selbstextrahierendes und ausführendes SFXRAR-Archiv aus einem Vireninstallationsprogramm und einem Programm (wahrscheinlich nur ein .bat), das ein Bild eines Mädchens öffnete, das sie im Internet gefunden hatten. benannte das teuflische Erfindung in eine .pif-Datei um und schickte sie an den unglücklichen Freiheitskämpfer.

Warum haben sie .pif verwendet? Aus zwei Gründen natürlich:

  1. Nur wenige Leute wissen, dass es als ausführbare Datei ausgeführt werden kann ( danke, Microsoft !)

  2. Es klingt offensichtlich wie .gif oder .tiff oder .pdf oder etwas sehr image-y. Selbst Sie haben an seinem Namen nicht gezweifelt, dass es sich um ein Bildformat handelt, nicht wahr, OP? ;)

Zu Ihrer eigentlichen Frage ("Wie ist es möglich, ausführbaren Code in ein Bild einzubetten"). Ja, es ist möglich, Code über ein speziell gestaltetes Image auszuführen, sofern es in einem anfälligen Programm geöffnet ist. Dies kann durch Ausnutzen eines Angriffs wie eines Pufferüberlaufs erfolgen. Aber diese speziellen Hacker waren höchstwahrscheinlich nicht klug genug dafür.

Bearbeiten

Interessanter Hinweis: Diese Leute haben tatsächlich DarkComet verwendet, das komprimierte ausführbare Dateien mit verschiedenen Erweiterungen generieren kann, wobei .pif in ihrer Liste enthalten ist. Ich bin mir nicht sicher, ob ich ein Bild anzeigen soll, aber dies könnte eine Funktion sein, die in einer neueren Version hinzugefügt wurde.

Eine weitere Bearbeitung

Ich sehe, Sie fragen, wie Sie sich vor dieser speziellen " Sicherheitslücke" schützen können. Die Antwort ist einfach.

Stellen Sie zunächst sicher, dass Windows zeigt Ihnen Dateierweiterungen. Windows versteckt sie meistens standardmäßig ( danke, Microsoft !)

Dann lernen Sie dies auswendig: .exe .com .cmd .bat .pif .vb .vba .vbs .msi .reg .ws .wsc .wsf .cpl .lnk. Dies sind die bekanntesten Dateitypen, die leicht schädlichen Code ausführen oder Ihren Computer beim Öffnen auf andere Weise beschädigen können, unabhängig davon, ob anfällige Anwendungen installiert sind oder nicht. Wenn Ihnen jemand eine solche Datei schickt, die besagt, dass es sich um ein Bild eines hübschen Mädchens handelt, können Sie sicher sein, dass es sich um einen anderen unauffälligen Hacker wie diese syrischen Typen handelt.

Eine andere Möglichkeit besteht darin, einfach proaktiv zu sein und heruntergeladene Dateien mit einem unbekannten Dateiformat zu überprüfen und zu überprüfen. Es könnte Malware sein, wissen Sie.

Bei echten Bildern mit Exploits ... könnten Sie wahrscheinlich versuchen, Ihre Software auf dem neuesten Stand zu halten.

64
Mints97

Nichts ist perfekt, und eine häufige Art von Fehler ist ein Pufferüberlauf, bei dem Daten in kurzer Zeit dort kopiert werden, wo sie nicht sein sollten. In einigen Fällen kann dies dazu führen, dass beliebiger Code ausgeführt wird.

Zum Beispiel hier ist ein Fehler in alten Microsoft-Versionen, bei dem, wenn Sie ein bestimmtes Bild mit IE] angezeigt haben, beliebiger Code ausgeführt werden könnte.

Beachten Sie, dass dies sehr implementierungsspezifisch ist. Wenn Sie also dasselbe Image in Firefox oder chrome) öffnen, führt dies einfach zu einem fehlerhaften Image, aber zu keiner Codeausführung.

Pufferüberlauf in Laienbegriffen

Technische Details zum Pufferüberlauf

12
Shelvacu

Die Antwort von Mints97 ist großartig, aber ich denke, es könnte mehr als das geben. Ein besonders wunderbares (sprich: schreckliches) Problem mit Windows ist, dass es den vollständigen Unicode-Zeichensatz in Dateinamen unterstützt, einschließlich (und dies ist das Schlimmste) U-202E.

Ich bin mir zwar sicher, dass es einige gute harmlose Verwendungszwecke hat, aber es kann Menschen ermöglichen, den Dateinamen in böswilliger Weise auf eine Weise zu ändern, die für den durchschnittlichen Benutzer schwer zu bemerken ist. Dies ist hervorragend dokumentiert in dieser Artikel auf howtogeek.com .

Im Wesentlichen kann der Hacker U-202E in einen Dateinamen einfügen und filename by gnp.tab In filename by bat.png Ändern. Das Zeichen kehrt die Reihenfolge aller Namen nach sich selbst um. Der Angreifer muss lediglich den richtigen Dateityp auswählen, der ausgeführt wird, und Windows ordnet ihn dem Namen der ausführbaren Datei zu.

Dies ist schwerer zu verhindern als Sie denken. Die beste Verteidigung wäre, die Namen der Dateien danach zu scannen. Der CMD-Befehl dir scheint einen ? Für dieses Unicode-Zeichen zu melden. Python und ich bin sicher, dass andere Sprachen den Unicode-Namen erhalten können, sodass ein Skript oder Programm dieses Problem verhindern kann.

Die bei weitem einfachste Lösung besteht darin, auch die vier Buchstaben vor einer Dateierweiterung zu betrachten und sicherzustellen, dass die Rückseite kein ausführbarer Name ist. (Ich denke, es gibt einige ausführbare Namen mit vier Buchstaben, aber ich bin mir nicht sicher).

Sei vorsichtig!

BEARBEITEN: Ich habe ein python Skript hier herunterladen erstellt, das die Dateinamen in einem Verzeichnis für U-202E liest. Es sagt Ihnen, ob a) der tatsächliche Name und b) die Erweiterung. Es sollte die Arbeit mit mehreren Dateien und mehreren U-202Es unter einem Namen unterstützen.

6
IronManMark20

Sie haben geschrieben: "Das Bilddateiformat war pif", aber der Artikel besagt, dass "FireEye-Forscher eine Sammlung von Chats und Dokumenten gefunden haben, als sie nach Malware gesucht haben, die in PDF Dokumenten" versteckt ist. "Das Programm Informationsdatei Format wurde auf Microsoft Windows-Systemen verwendet, obwohl Dateien in diesem Format jetzt seltener sind als früher. Mit PIF-Dateien waren Schwachstellen verbunden, z. B. siehe Microsoft Windows führt automatisch Code aus, der in Verknüpfungsdateien angegeben ist , aber der Artikel der New York Times erwähnt PDF Dokumente.

Bilder können in PDF Dokumenten) gespeichert werden, und jemand, der ein PDF Dokument öffnet), kann sich mit PDF Dateien) für Exploits anfällig machen. In diesem Fall wird das Problem wahrscheinlich nicht durch das Bild verursacht, sondern durch den Container, dh die Datei PDF, in der es übertragen wurde. Für einige PDF) = Schwachstellen, siehe pdf aktuelle Bedrohungen und Der Anstieg der Ausbeutung alter PDF Schwachstellen . ZB erwähnt die letztere Referenz eine damit verbundene Schwachstelle mit JavaScript in einer PDF - Datei mit dem Hinweis "Das eingebettete JavaScript enthält möglicherweise schädliche Anweisungen, z. B. Befehle zum Herunterladen und Installieren anderer Malware."

3
MoonPoint

Vor einigen Jahren gab es einen weit verbreiteten Exploit, der einen Fehler in einer bestimmten, weit verbreiteten JPEG-Bibliothek verwendete. Der Nettoeffekt dieses Exploits bestand darin, die Ausführung von beliebigem Code auf dem Computer des Opfers zu ermöglichen, wenn nominell nur versucht wurde, ein Bild anzuzeigen.

Außerdem gab es beispielsweise einen Exploit für Rich-Text-Dateien (RTF-Format), für den kein Fehler erforderlich war. Es wurde nur eine wenig bekannte Funktion des RTF-Formats verwendet, um Code auf dem Computer des Benutzers auszuführen.

Ein weiteres Beispiel ist das Einbetten von Makros in Word-Dokumente. Makros sind eine unglaublich leistungsstarke und nützliche Funktion. Wenn Sie jedoch jemandem ein Dokument geben können, das Makros Ihrer Wahl enthält, kann dies auch ein leistungsstarkes Hacking-Tool sein.

Im Allgemeinen ist es sehr verlockend, Features in komplexe Dateiformate einzubetten, die ihnen turing-äquivalente Funktionen bieten. Auch keine gute Idee.

2
ddyer

Nun beginnen Sie mit der Analyse des Dateiformats. Und dann raten Sie eine Weile, wie unterschiedliche Software reagieren wird.

Zum Beispiel [~ # ~] jpeg [~ # ~] - http://en.wikipedia.org/wiki/JPEG - verwendet spezielle Markierungen, um den Anfang und das Ende des Bildes abzugrenzen. Nun würde man wetten, dass Software, die sich mit JPEG befasst, nur nach dem Anfang und dem Ende von Bildmarkierungen sucht und alles dazwischen zeichnet. Wenn einer der Marker nicht gefunden wird, ist das JPEG ungültig, oder? Was ist nun, wenn wir nach dem Ende der Bildmarkierung eine Markierung für das Dateiende hinzufügen und danach unsere ausführbare Nutzlast hinzufügen. Nun, ich wette, dass die meisten JPEG-Plotter die Nutzlast einfach ignorieren und wie angenommen funktionieren. Erfolg an dieser Stelle haben wir eine Nutzlast in das Bild angehängt. Nun, um es auszuführen, ist dies ein bisschen schwieriger. Wir könnten unsere "Software" nach dem Ende des Bild-Markups nach Dingen suchen lassen und diese, falls vorhanden, aufnehmen, oder wir könnten versuchen, dem ELF/EXE/COM-Header vor Beginn des Bild-Markups einen Versatz für den Code zu injizieren, und hoffen, dass dies geplottet wird Software wird es ignorieren, Betriebssystem jedoch nicht.

Das Problem ist, dass ursprünglich Systeme und Netzwerke mit dem vorgeformten Missverständnis aufgebaut wurden, dass Menschen ehrlich sind und sich wie Maschinen verhalten und keine Muster brechen und die Software außerhalb der beabsichtigten Fälle verwenden. Aus diesem Grund wurden viele Annahmen getroffen. Ja, der Benutzer gibt höchstens 200 Zeichen ein, ja, der Benutzer gibt immer ein lesbares Format ein und so weiter. Wenn Sie an Anwendungsfälle denken, gewöhnen Sie sich als Programmierer an, dass die Fälle absolut sind und keine Ausnahmen schützen. Ratet mal, was passiert, wenn jemand kommt, der über den Tellerrand hinaus denkt.

1
user283885