Frage:
Wie ist es möglich, ausführbaren Code in ein Bild einzubetten?
Jeremy Thompson
2015-02-15 11:58:01 UTC
view on stackexchange narkive permalink

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

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 Fotos geladen mit Malware.

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 Ich 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?

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

Hier ist ein Link zu einem Bild eines niedlichen Kätzchens, das ausführbaren PHP-Code enthält: http://nullcandy.com/php-image-upload-security-how-not-to-do-it/ (Es ist sicher, das zu öffnen Seite, zumindest soweit ich das beurteilen kann.)
Wird der Code der Bilder auf dem Server ausgeführt? Oder wenn ich es clientseitig herunterlade und in Photoshop / mspaint / etc öffne, wird es irgendetwas tun?
Dies ist ein Beispiel dafür, wie ein Server durch einen Bild-Upload kompromittiert werden kann, und daher keine direkte Antwort auf Ihre Frage. (Deshalb habe ich einen Kommentar abgegeben.) Der Code ist harmlos, ein Proof of Concept und kein bösartiger Code. Wenn Sie es erkunden möchten, erfassen Sie das Kätzchenbild und öffnen Sie es mit Textpad oder ähnlichem.
Cool, das habe ich mir gedacht und deshalb implementiere ich Sicherheitsschutz wie folgt: http://stackoverflow.com/a/15595571 - wird dieses Bild nebenbei weiter untersuchen. Vielen Dank für das Teilen
Schauen Sie sich das Corkami-Projekt an, nicht genau das, wonach Sie suchen, aber er recherchiert nach Dateiformaten und wie man sie ineinander bindet. https://code.google.com/p/corkami/
Sieben antworten:
Mints97
2015-02-18 19:36:58 UTC
view on stackexchange narkive permalink

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

Wie aus dem Protokoll im Artikel von NYTimes hervorgeht und wie der aktuelle Bericht von FireEye bestätigt, handelte es sich bei der verwendeten Datei um eine .pif-Datei. Es ist eine der weniger bekannten ausführbaren Dateierweiterungen von Windows.

.pif ist ein Erbe 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 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 ein .pif über ShellExecute aus, das technisch ein geeignetes Programm finden sollte, um eine Datei zu öffnen und sie dann zum Öffnen zu verwenden. 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 gruseligen genialen Hacker getan? Diese Jungs haben sich nicht die Mühe gemacht, etwas Kompliziertes zu tun: Sie haben ein selbstextrahierendes und ausführendes SFXRAR-Archiv aus einem Vireninstallationsprogramm und einem Programm (wahrscheinlich nur ein .bat) erstellt, das ein Bild eines Mädchens öffnet, das sie im Internet gefunden haben. benannte diese teuflische Erfindung in eine .pif-Datei um und schickte sie an den unglücklichen Freiheitskämpfer.

Warum haben sie .pif verwendet? Natürlich aus zwei Gründen:

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

  2. Es klingt offensichtlich nach .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? ;)

  3. ol>

    Bezüglich 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 Jungs haben tatsächlich DarkComet verwendet, das die Fähigkeit hat, zu generieren komprimierte ausführbare Dateien mit verschiedenen Erweiterungen, wobei .pif in ihrer Liste enthalten ist. Ich bin mir nicht sicher, ob ein Bild angezeigt werden soll, aber dies könnte eine Funktion sein, die in einer neueren Version hinzugefügt wurde.

    Eine weitere Bearbeitung

    Ich sehe, dass Sie es sind Fragen, wie Sie sich vor dieser spezifischen " Sicherheitslücke " schützen können. Die Antwort ist einfach.

    Stellen Sie zunächst sicher, dass Windows Ihnen Dateierweiterungen anzeigt. Windows verbirgt 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 sendet, 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 Option besteht darin, einfach proaktiv zu sein und zu überprüfen und zu verdoppeln -Überprüfen Sie alle heruntergeladenen Dateien mit einem unbekannten Dateiformat. Es könnte sich um Malware handeln, wissen Sie.

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

Wir sehen nicht viel Comedy (oder Kreativität) auf Stackexchange-Sites und Ihre Antwort hat mich zum Lachen gebracht. Danke für diese tolle Antwort. Ich bin mir nicht sicher, ob Sie dies in meinem Chat mit Bob gesehen haben, aber ich [benutze Binary Analysis, um das REAL-Dateiformat zu erkennen] (http://stackoverflow.com/a/15595571) und stelle MIME-Typen fest und verlasse mich nicht auf Dateierweiterungen.
@JeremyThompson: ist eine hervorragende Sicherheitsmaßnahme, wenn alle Dateiformate ordnungsgemäß identifiziert werden können. Danke auch für das Kompliment! ;)
Die beste Antwort von OF wird leicht zu bekommen sein. Durch, richtig und lustig. :) :)
Sind `.vb` und` .vba` ausführbare Dateierweiterungen?Müssen sie sich nicht erst einer Zusammenstellung unterziehen?
Du hast `.scr` vergessen.Das Bildschirmschoner-Dateiformat ist im Grunde nur eine ".exe", aber mit einer anderen Erweiterung.
Shelvacu
2015-02-15 14:35:55 UTC
view on stackexchange narkive permalink

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 anzeigen, beliebiger Code ausgeführt werden kann.

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

Pufferüberlauf in Laienbegriffen

Technische Details zum Pufferüberlauf

Ok, das ist es, wonach ich suche - ich hätte wahrscheinlich die Ausnutzung von Fehlern berücksichtigen sollen. Wenn in den kommenden Wochen niemand eine bessere Antwort findet, werde ich dies akzeptieren. Vielen Dank
IronManMark20
2015-02-24 07:10:11 UTC
view on stackexchange narkive permalink

Die Antwort von Mints97 ist großartig, aber ich denke, es könnte mehr als das sein. 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 in diesem Artikel auf howtogeek.com hervorragend dokumentiert.

Im Wesentlichen kann der Hacker U-202E in einen Dateinamen einfügen und den -Dateinamen durch gnp.tab ändern zu Dateiname von bat.png . 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 schwieriger 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 a zu betrachten Dateierweiterung und stellen Sie sicher, 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.)

Seien Sie vorsichtig!

BEARBEITEN: Ich habe ein Python-Skript erstellt hier herunterladen das die Dateinamen in einem Verzeichnis für U-202E liest. Hier erfahren Sie, 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.

Ein weiterer Grund, [mithilfe der binären Analyse das REAL-Dateiformat zu ermitteln und MIME-Typen festzulegen und sich nicht auf Dateierweiterungen zu verlassen] (http://stackoverflow.com/questions/15300567/alternative-to-findmimefromdata-method-in-urlmon -dll-one-which-has-more-mime-typ) - dies sollte irgendwo dokumentiert werden, dies ist eine WIRKLICH schlechte Sicherheitslücke! Ich danke Ihnen für das Teilen!!
Hier ist eine andere Technik in meinem Toolkit, mit der ich dies erkennen kann. Wenn Sie sich die Eigenschaften der umbenannten Datei ansehen, erfahren Sie, mit welchem ​​Typ Windows die Datei öffnet. Hier ist [Code zum Erkennen aller Eigenschaften einer Datei] (http://stackoverflow.com/a/11660616/495455).
Dies ist in der Tat ein lustiger Trick.Es ist übrigens nicht nur für Windows.Viele Linux-Dateimanager zeigen auch den umgekehrten Text an, obwohl `ls` und andere Befehlszeilendarstellungen nicht betroffen sind.
MoonPoint
2015-02-16 03:31:03 UTC
view on stackexchange narkive permalink

Sie haben geschrieben: "Das Bilddateiformat war pif", aber in dem Artikel heißt es: "FireEye-Forscher haben eine Sammlung von Chats und Dokumenten gefunden, als sie in PDF-Dokumenten versteckte Malware recherchiert haben." Das Format Programminformationsdatei wurde auf Microsoft Windows-Systemen verwendet, obwohl Dateien in diesem Format jetzt seltener sind als früher. Es gab Schwachstellen im Zusammenhang mit PIF-Dateien, siehe z. B. 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 für Exploits mit PDF-Dateien anfällig machen. In diesem Fall wird das Problem wahrscheinlich nicht durch das Bild verursacht, sondern durch den Container, d. H. Die PDF-Datei, in der es übertragen wurde. Einige PDF-Sicherheitslücken finden Sie unter PDF-Bedrohungen und Die zunehmende Ausnutzung alter PDF-Sicherheitslücken. In der letztgenannten Referenz wird beispielsweise eine mit JavaScript verbundene Sicherheitsanfälligkeit in einer PDF-Datei erwähnt, in der darauf hingewiesen wird, dass das eingebettete JavaScript möglicherweise schädliche Anweisungen enthält, z. B. Befehle zum Herunterladen und Installieren anderer Malware.

Siehe den Link "ny times", den Chat-Convo-Auszug, von dort habe ich PIF erhalten. Das Senden eines Bildes als PDF wäre etwas seltsam, aber danke für diese Antwort
Wahrscheinlich war der Empfänger so aufgeregt, ein Bild von einem hübschen Mädchen zu bekommen, dass er nicht einmal über das Format nachdachte, in dem es ankam.
Erst neulich habe ich einen Action-Assistenten in Distiller programmiert (zum ersten Mal mit scheinbar Javascript). Hmmm, es schien eine Schwäche zu sein, dass es clientseitiges * Javascript * in einer Datei ausführte - kein WebBrowser und reif war, ausgenutzt zu werden !!). Mit den Recherchen, die Sie durchgeführt haben, neige ich zu dieser Antwort. Ich werde etwas länger warten, um zu sehen, ob jemand andere Gedanken hat. Können Sie Informationen darüber bereitstellen, wie ein PIF eine MS Dos-App startet (wie eine dos cmd-Eingabeaufforderung für zukünftige Besucher)?
Obwohl Sie vielleicht auf dem Geld sind und alles mit PDFs zu tun hatte und der Trick über Social Hacking war. Ein hübsches Mädchen, das sagt, ich weiß nicht, was ich tue. Ich denke, es ist eine Adobe-Datei (dh ** ändere die pif-Erweiterung in pdf **).
ddyer
2015-02-20 02:42:59 UTC
view on stackexchange narkive permalink

Vor einigen Jahren gab es einen weit verbreiteten Exploit, bei dem ein Fehler in einer bestimmten, weit verbreiteten JPEG-Bibliothek verwendet wurde. 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 das kein Fehler erforderlich war, sondern nur eine wenig bekannte Funktion des RTF-Formats zum Ausführen des Codes auf dem Computer des Benutzers verwendet wurde.

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 von Ihnen ausgewählte Makros enthält, kann dies auch ein leistungsstarkes Hacking-Tool sein.

Im Allgemeinen ist es sehr verlockend, Funktionen in komplexe Dateien einzubetten Formate, die themenäquivalente Funktionen bieten. Auch keine gute Idee.

"weit verbreitete JPEG-Bibliothek"? Könnten Sie bitte näher darauf eingehen, damit nur Personen mit der JPEG-Bibliothek installiert sind? Wer öffnet ein mit dieser Bibliothek gespeichertes JPEG? Ohne Referenzen oder Links ist es schwierig, diese Antwort zu quantifizieren, und heutzutage müssen Sie Makros aktivieren, um sie in Office-Anwendungen auszuführen.
Es war vor Jahren und ich habe die Details nicht zur Hand. Es gab einen Ansturm, eine bestimmte Windows-DLL zu ersetzen.
Höchstwahrscheinlich gutes altes libjpeg.Es ist so ziemlich der einzige JPEG-Decoder da draußen.
user283885
2015-02-18 21:48:32 UTC
view on stackexchange narkive permalink

Nun, Sie beginnen 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 System und Netzwerke anfangs mit dem vorgeformten Missverständnis aufgebaut wurden, dass Menschen ehrlich sind und sich wie Maschinen verhalten und keine Muster brechen und die Software nicht im Freien verwenden die beabsichtigten Fälle. 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.

Damian Nikodem
2015-02-18 23:35:30 UTC
view on stackexchange narkive permalink

Ich erinnere mich an die guten alten Zeiten, als ich eine .ico-Datei mit den APIs angezeigt oder geladen habe, die mit Windows geliefert wurden, um eine direkte Codeausführung zu ermöglichen, wenn sie böswillig genug erstellt wurden.

Und das gesamte Konzept dahinter Das wmf-Dateiformat rief Grafikroutinen direkt auf. (daher die Erstellung des geräteunabhängigen Bitmap-Formats, auch bekannt als .bmp-Dateien)

Ja, das ist möglich und wurde in der Vergangenheit durchgeführt. wenn auch heutzutage unwahrscheinlich. Ich würde es nicht völlig ausschließen, aber ich würde sagen, es würde einen äußerst erfahrenen Angreifer erfordern, um es zu schaffen.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...