“Macro-less” malware – Triviális kódfuttatási lehetőség a Word-ben

A SensePost kutatói (majd a Talos is) felfedeztek egy triviális lehetőséget, amely segítségével a Word alkalmazásban megnyíló dokumentumból makrók nélkül lehet kódot futtatni.

*** UPDATE ****

És megjelent az első, a DDE macro-less technikára épülő malware a FancyBear/APT28 "jóvoltából"!

Bővebb információ: HWSW

A sérülékenység a Microsoft alkalmazások közötti adatcserét megvalósító Dynamic Data Exchange (DDE) protokolból ered. Normál működés során az alkalmazás a DDE-n keresztül tesz elérhetővé adatokat más Microsoft alkalmazások számára, de a SensePost kutatói egyéb „nem kívánt” felhasználási lehetőséget is találtak, mégpedig, hogy a DDE utasítás beilleszthető a Word dokumentumba, mint dokumentum mező.

A mezőként beillesztett DDE utasítás a dokumentum megnyitásakor automatikusan (frissül) lefut, tehát ha a DDE utasításban egy külső alkalmazást hívunk meg, akkor az a dokumentum megnyitásával meghívásra és futtatásra kerül.

DDEAUTO beillesztése mint dinamikus mező

 

Nincs makró riasztás, makró engedélyeztetés.

Szerencsére a Word kéri a felhasználó jóváhagyását a mező frissítésére – tehát ebben az esetben is szükség van a felhasználó interakciójára a sikeres támadáshoz.

Vagy

Ismerős üzenet, frissítsük a dinamikus mezőt!

Azonban a makró engedélyeztetés és a dinamikus mező frissítési engedélye között jelentős különbség van: a makró sok esetben megszólaltatja a felhasználó fejében a vészcsengőt (jó esetben), viszont a mező frissítése még nem feltétlen ébreszt gyanút a felhasználóban.  

A dinamikus mezők frissítése szerintem sokkal gyakoribb (tartalomjegyzék, lábléc adatok, template doksik esetén a Document Property adatok beolvasása és megjelenítése, stb.). A felhasználók hozzászoktak, hogy megnyitáskor a Word frissíti a dinamikus adatokat az adott dokumentumban – jelen esetben viszont a DDE elindítja a rosszindulatú kódot vagy PowerShell scriptet.

Szintén a sérülékenység kihasználását teszi egyszerűbbé a nagyvállalati környezetekben megszokott email szűrő szabály, ami a levelezéssel beérkező dokumentumokat - makró kódok észlelésekor - elblokkolja vagy karanténozza.

Ez a védelmi funkció a DDE-alapú, „macro-less” dokumentumok esetén nem működik, a levélszűrő át fogja engedni a levelet és a levéllel együtt a csatolmányként érkező dokumentumot.

Onnantól megint minden a felhasználón múlik.

Malware védelem és sandboxing

A vírusvédelmi rendszerek esetében érdekes eredmény tapasztalható, az általam összerakott doksi (amely egy számológépet indít el) 7/61-el végzett a VirusTotal-on.

virustotal-dde.png

A vizsgát fájl nem malware, a találatot jelző motorok a DDE-alapú CMD.EXE hívás miatt jeleznek (meg nyilván amiatt, hogy a bejelző motorok Bitdefender 3td party-k :))

A sandbox-hívők most persze döngethetik a mellüket, mennyire fontos a tényleges viselkedés-vizsgálat, hiszen, ha tényleg megvizsgálná valami a fájlt, akkor láthatná, hogy nem káros tartalmú, csak egy számológépet indít el – felesleges ezért jeleznie.

Őket kicsit lehűteném, hogy néhány sandbox malware-nek (néhány pedig gyanúsnak) ismeri fel a mintaállományt, holott káros tevékenységet igazából nem végez.

fireeye-dde.png

FireEye AX

payload-dde-indicators.png

vx-dde-process.png

VxStream Sandbox

Na jó, nincs igazam egyébként, az ilyen hívásokra szerintem is jeleznie kell egy sandboxnak, mert az ilyen kódfuttatás semmiképpen nem számít normálisnak és kívánatosnak.

Hogyan lehet védekezni?

User awareness

A legfontosabb a user awareness, a felhasználói biztonságtudatosság mindnek előtt!

Ha a felhasználó kritikusan áll hozzá az ismeretlen, kapott dokumentumok dinamikus mezőfrissítési kéréséhez, és nem kattint, hanem értesíti a megfelelő személyt, akkor nem történik baj.

Yara

Akinek esetleg olyan jóféle email vagy webszűrő eszköze van, amely tud Yara szabályokkal állományokat feldolgozni, a Yara elég jó hatékonysággal fogja felismerni a dokumentumban a DDE hívást, és ilyen találat esetén el lehet blokkolni a letöltést vagy az email továbbítást.

Fájl alapú DLP megoldás

Meglepő, de ahogy Godó Jani felhívta a figyelmemet, a fájl alapú adatszivárgás védelmi megoldások is képesek védelemt biztosítani. Nem erre vannak kitalálva, de simán beállítható ilyen szabály is. Ez olyan, hogy a kenyérpirítóval is lehet szöget beverni - néha a teljesen más területen alkalmazott megoldások is működőképesek lehetnek :)

mcafee-dde-protection.jpg

McAfee DLP - mivel beleolvas a fájlokba, így lehet szabályt is konfigurálni az ilyen tartalom blokkolására

mcafee-dde-protection2.png

CDR

Jó lehetőségnek tűnt a CDR, azaz a Content Disarm and Reconstruction eljárás, amikor is a védelmi komponens szétszedi a fájlt, kiszedi belőle az aktív kódokat, majd újra összerakja az aktív kódok nélkül.

Sajnos az általam tesztelt három CDR benne hagyta a DDE hívást a fájlban, az elvileg megtisztított dokumentum továbbra is működőképes maradt (remélem ez nem általános, de kezdek aggódni).

votiro.png

Egy nagy túrót szanitizáltad a fájlt :(

Fájlkonverzió

A fájlkonverzió jó megoldás lehetne, vannak olyan védelmi eszközök, amelyek a csatolmányokat átkonvertálva továbbítják a felhasználónak, egy .docx->PDF konverzió során természetesen a makrók mellett a DDE h0vások is eltűnnek. Sajnos ez a módszer a legtöbb vállalat esetében értelemszerűen nem alkalmazható a felhasználók ellenállása miatt.

Használj Mac-et! A Mac-en nincs malware! 

Hát, az hagyján, hogy van, de a DDE is ugyanúgy alkalmas a kódfuttatásra Mac OS X esetében, akár csak ha makró lenne :)

dde-mac.png

Jó, a calc.exe nemigen fog Mac-en elindulni, de látható, hogy a DDE működik

Patch

A Microsoft nem ítéli kritikusnak a sérülékenységet, és a következő Word verzióra ígéri a javítást.

Olvassátok el a SensePost eredeti cikkét, és nézzétek meg a SensePost videóját!