Bedrohungsanalyse

    Die Rückkehr des Gleichungseditor-Exploits - DIFAT-Überlauf

    Das Neueste von Mimecast Research Labs.

    by Meni Farjon
    gettyimages-868363098.jpg

    Zusammenfassung

    In den letzten Monaten hat das Team von Mimecast Research Labs mehrere einzigartige Varianten von Microsoft Office Word-Exploits gesehen, insbesondere die Kombination des zuvor gepatchten Problems der Speicherbeschädigung CVE-2017-11882 (auch bekannt als Equation Editor Exploit) mit einem anderen Problem, um den Angriff zu verstärken und ihn unentdeckt zu lassen. Diese Exploits koppelten eine unserer Meinung nach nicht behobene Sicherheitslücke im Dateiformat Object Linking and Embedding (OLE) und dessen Handhabung in Microsoft Office Word.

    Unsere Erkennungs-Engines entdeckten eine Angreifergruppe, die offenbar aus Serbien stammt und speziell erstellte Microsoft Word-Dokumente verwendet, um die Art und Weise auszunutzen, wie Microsoft Word Integer Overflow-Fehler im OLE-Dateiformat behandelt. Die Gruppe war in der Lage, diesen Fehler auszunutzen, um viele Sicherheitslösungen zu umgehen, die Daten vor Befall schützen sollen, einschließlich führender Sandbox- und Anti-Malware-Technologien.

    Wir haben uns an Microsoft gewandt, als wir dieses Problem entdeckten, gemäß Coordinated Vulnerability Disclosure (CVD) und mit einem funktionierenden Proof-of-Concept (POC). Microsoft bestätigte, dass es sich um ein unbeabsichtigtes Verhalten handelt, lehnte es jedoch ab, zu diesem Zeitpunkt ein Sicherheits-Patch zu veröffentlichen, da das Problem an sich nicht zu einer Speicherbeschädigung oder Codeausführung führt. Das Problem wird möglicherweise zu einem späteren Zeitpunkt behoben. Die Zeitleiste unserer Korrespondenz finden Sie unten.

    Erhalten Sie Artikel wie diesen jede Woche in Ihren Posteingang. Abonnieren Sie noch heute Cyber Resilience Insights.

    In diesem Artikel möchten wir Ihnen zeigen, wie wir einen Fehler in OLE32.dll gefunden haben, der Integer Overflow falsch behandelt und dazu verwendet wird, Sicherheitslösungen zu umgehen und Parser zu täuschen.

    Technische Analyse

    Gemäß den Formatspezifikationen für das Compound File Binary File Format enthält der OLE-Stream-Header eine Tabelle namens DIFAT (double-indirect file allocation table), die ein Array von Zahlen ist. Jeder Sektor hat eine ID, die eine beliebige 32-Bit-Zahl ohne Vorzeichen unter 0xFFFFFFA sein kann. Die DIFAT-Tabelle enthält alle Sektor-IDs und einige spezielle Zahlen. Um auf den Sektor N in der Tabelle zuzugreifen, wird der Offset nach der folgenden Formel berechnet: Sektorgröße * (Sektor-ID + 1), wenn die Sektor-ID DIFAT[N] ist.

    Im Folgenden werden die relevanten Teile [Seiten 15-20] der offiziellen Spezifikation vorgestellt:

     

    gleichung-bild-1.png
    gleichung-bild-2.png
    gleichung-bild-3.png
    gleichung-bild-4.png
    gleichung-bild-5.png

    Es scheint, dass die oben erwähnte Formel bei einer großen Sektor-ID zu einem Integer-Überlauf führt, der in einem relativ kleinen Offset resultiert. Die folgenden Bildschirmfotos zeigen die Codeschnipsel, die den Überlauf verursachen.

    gleichung-bild-6.png
    gleichung-bild-7.png

    Die Abschnittsgröße beträgt 512, und die erste Sektor-ID ist 0xFF000000. Wenden wir die obige Formel an (wie in der offiziellen Spezifikation): (0xFF000000+1) * 512 = 2190433321472, oder 0x1fe00000200 in hex.

    Da das Ergebnis mehr als 32 Bits beträgt (Integer-Überlauf), werden nur die niedrigsten 32 Bits das Produkt sein, wenn der obige Code die Berechnung durchführt. Mit anderen Worten, der berechnete Offset ist 0x200 = 512, wie im folgenden Debug-Screenshot zu sehen ist.

    gleichung-bild-8.png

    Dieses Ergebnis ist sinnvoll, weil es direkt nach der Kopfzeile kommt, die der natürliche Platz für den ersten Abschnitt ist.

    Dieses Verhalten ist nicht von Microsoft in den Formatspezifikationen dokumentiert, aber es kann High-Level-Parser verwirren, die den Überlauf nicht bemerken werden. Die Berechnungsergebnisse zeigen außerdem auf einen unmöglichen Offset, was im besten Fall dazu führt, dass der Abschnitt, der den Exploit enthält, ignoriert wird, oder im schlimmsten Fall zu einem Absturz führt.

    In einem von uns untersuchten Fall, bei dem diese Schwachstelle in OLE ausgenutzt wurde, bestanden die Angriffe darin, CVE-2017-11882 mit einem Gleichungsstrom auszunutzen, der innerhalb eines OLE-Objekts mit einer überlaufenden Sektor-ID definiert war, wie oben beschrieben, was dazu führte, dass das Objekt, das den Exploit und den Shellcode enthielt, nicht extrahiert und daher von Sicherheitslösungen nicht erkannt wurde. Wenn der Gleichungseditor-Exploit mit diesem Integer-Überlauf verkettet wird, behandelt Microsoft Office Word den Fehler falsch, da es die höheren Bytes der OLE-Sektor-ID ignoriert und das bösartige Objekt (CVE-2017-11882) in den Speicher lädt, ohne die richtigen Richtlinien zu befolgen.

    In dem von uns untersuchten Fall wurde bei dem Angriff eine neue Variante von Java JACKSBOT eingesetzt, eine Backdoor für den Fernzugriff, die nur aktiv werden oder das Ziel infizieren kann, wenn Java installiert ist. JACKSBOT ist in der Lage, die vollständige Kontrolle über das angegriffene System zu übernehmen. Der Malware-Code verrät, dass er in der Lage ist, URLs aufzurufen, Dateien und/oder Ordner zu erstellen, Shell-Befehle auszuführen und Programme zu starten und zu beenden. Er kann auch Informationen stehlen, indem er Tastatureingaben und Mausereignisse protokolliert.

    JACKSBOT's allgemeine Fähigkeiten:

    • Tastenanschläge sammeln
    • Stehlen von zwischengespeicherten Kennwörtern und Abgreifen von Daten aus Webformularen
    • Bildschirmfotos machen
    • Bilder und Videos mit einer Webcam aufnehmen
    • Tonaufnahme über das Mikrofon
    • Dateien übertragen
    • Sammeln von allgemeinen System- und Benutzerinformationen
    • Schlüssel für Kryptowährungs-Geldbörsen stehlen
    • SMS verwalten (für Android)
    • Stiehlt VPN-Zertifikate

    In der folgenden Tabelle sind Indikatoren für eine Kompromittierung (IoC) wie Hashes von Dateien und Command-and-Control-Servern aufgeführt, die von JACKSBOT verwendet werden.

    BeschreibungIOC-TypIOC
    DokumentSha256

    d5df2386a2a405a9d664d4b423a8a

    9d31e8288b1202a82977dae445a9a6526cd

    Fallengelassenes htaSha256

    A7AC436359CB8F5E6A5B8B59DDB7C5

    E9F56D88882F52B031EB50E6A8F47599A7

    Eingetropftes Gefäß (1)

    Sha256

    9F64401359151AD1E3EB7B52C91291

    CB7FA2F1D591FD3DF7E995F9D41B55FAAD

    Eingetropfter Krug (2)

    Sha256

    D808B528489EDF4F26B40676253EF

    9CA7827EC7227BC0BB3F86C3F06625B70EA

    Fallengelassene vbs

    Sha256

    CCD30B0C19B9AA21EC79E3234A9FE5

    79540EDC110527DBF07D4935AF20439BA5

    Malware-Namen

    Datei Name

    Presh.jar,pr.hta,mtfsmgr.jar,gvxfatoymt.vbs

    C&C

    IP

    184.117.72.28

    C&C

    URL

    Hxxp://etnografskimuzej.rs/presh.jar

    C&C

    IP

    46.183.221.12

    C&C

    URL

    isajra52ali20loggm.duckdns.org

    Installationspfad der Malware

    Pfad

    C:\Benutzer\USERNAME\AppData\Roaming\ntfsmgr.jar

    C:\Benutzer\USERNAME\AppData\Lokal\Temp\presh.jar

    C&C-Tropfer

    URL

    http://anvietpro.com/pr.hta

    AutoStart Pfad

    Registrierungsschlüssel

    Schlüssel:HKCU\Software\Microsoft\Windows

    \CurrentVersion\Run

    Wert: ntfsmgr

    Daten: "C:\Programme\Java\jre1.8.0_144

    \bin\javaw.exe" -jar "C:\Users\user\AppData\Roaming\ntfsmgr.jar"

     

    Schlussfolgerung

    Mimecast Targeted Threat Protection war in der Lage, die in diesem Bericht beschriebenen Beispiele zu erkennen, da es sich nicht auf strukturierte Formatspezifikationen verlässt, um Malfeasance zu bestimmen. Die Code-Erkennungs-Engine kann problemlos unstrukturierte oder sogar völlig "kaputte" Dateien lesen, um bösartigen Code zu erkennen, egal wie tief er in einem bestimmten Dateiformat vergraben oder verschleiert ist. Die Engine wurde mit einer "angriffsorientierten" Methodik entwickelt, bei der die Engine keinem bestimmten Dateiformat "vertraut" und nicht den RFC- oder Formatrichtlinien "folgt". Stattdessen geht die Engine Byte für Byte vor und versucht jede mögliche Technik, um den Angriffscode zu entschlüsseln und zu entschleiern.

    gleichung-bild-9.png

    Mimecast erkennt den Maschinencode (x86) in der Datei

     

    Zeitplan für die Offenlegung

    • 15. Mai 2018 - Erreichte das Microsoft Security Response Center (MSRC) mit Informationen und einem funktionierenden POC.
    • 16. Mai 2018 - Fall eröffnet MSRC Fall 45367.
    • 17. Mai 2018 - MSRC antwortet, dass Microsoft dieses Verhalten nicht mit einem Sicherheitspatch beheben wird, da das Problem an sich nicht zu einer Speicherbeschädigung führt und die Sicherheitsanforderungen nicht erfüllt.
    • May 18, 2018 - Gemäß CVD erlaubt Microsoft die Veröffentlichung dieses Artikels.

    Abonnieren Sie Cyber Resilience Insights für weitere Artikel wie diesen

    Erhalten Sie die neuesten Nachrichten und Analysen aus der Cybersicherheitsbranche direkt in Ihren Posteingang

    Anmeldung erfolgreich

    Vielen Dank, dass Sie sich für den Erhalt von Updates aus unserem Blog angemeldet haben

    Wir bleiben in Kontakt!

    Zurück zum Anfang