Analiza Office fajlova
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Za više informacija pogledajte https://trailofbits.github.io/ctf/forensics/. Ovo je samo rezime:
Microsoft je kreirao mnogo Office formata dokumenata, sa dve glavne vrste: OLE formats (like RTF, DOC, XLS, PPT) i Office Open XML (OOXML) formats (such as DOCX, XLSX, PPTX). Ovi formati mogu sadržati makroe, zbog čega su česti ciljevi phishinga i malware. OOXML fajlovi su strukturirani kao zip kontejneri, što omogućava pregled raspakivanjem i otkrivanje hijerarhije fajlova i foldera kao i sadržaja XML fajlova.
Da biste istražili OOXML strukturu fajlova, dat je naredba za unzip dokumenta i izlazna struktura. Tehnike skrivanja podataka u ovim fajlovima su dokumentovane, što ukazuje na stalne inovacije u skrivanju podataka unutar CTF izazova.
Za analizu, oletools i OfficeDissector nude sveobuhvatan set alata za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malvera, obično preuzimanjem i izvršavanjem dodatnih zlonamernih payload-a. Analiza VBA makroa može se izvršiti bez Microsoft Office koristeći Libre Office, koji omogućava debugging sa breakpoint-ima i watch varijablama.
Instalacija i upotreba oletools je jednostavna, sa komandama za instalaciju putem pip i izdvajanje makroa iz dokumenata. Automatsko izvršavanje makroa aktivira se funkcijama kao što su AutoOpen, AutoExec, ili Document_Open.
sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros
OLE Compound File eksploatacija: Autodesk Revit RFA – ECC rekalkulacija i kontrolisani gzip
Revit RFA modeli se čuvaju kao OLE Compound File (aka CFBF). Serijalizovani model se nalazi u storage/stream:
- Storage:
Global - Stream:
Latest→Global\Latest
Ključna struktura Global\Latest (uočeno u Revit 2025):
- Zaglavlje
- GZIP-kompresovani payload (stvarni serijalizovani graf objekata)
- Zero padding
- Error-Correcting Code (ECC) trailer
Revit će automatski ispraviti male perturbacije u streamu koristeći ECC trailer i odbaciti streamove koji se ne poklapaju sa ECC-om. Dakle, naivno menjanje kompresovanih bajtova neće ostati: vaše izmene će biti ili poništene ili će fajl biti odbijen. Da biste obezbedili kontrolu tačnu na nivou bajta nad onim što deserializer vidi, morate:
- Ponovo kompresovati koristeći Revit-kompatibilnu gzip implementaciju (tako da kompresovani bajtovi koje Revit proizvodi/prihtvata odgovaraju onome što očekuje).
- Ponovo izračunati ECC trailer preko popunjenog streama tako da Revit prihvati izmenjeni stream bez automatske ispravke.
Praktičan tok rada za patching/fuzzing RFA sadržaja:
- Raspakujte OLE compound document
# Expand RFA into a folder tree (storages → folders, streams → files)
CompoundFileTool /e model.rfa /o rfa_out
# rfa_out/Global/Latest is the serialized stream of interest
- Izmenite Global\Latest koristeći gzip/ECC disciplinu
- Rasklopite
Global/Latest: zadržite header, gunzip-ujte payload, mutirajte bytes, zatim ponovo gzip-ujte koristeći Revit-compatible deflate parameters. - Sačuvajte zero-padding i ponovo izračunajte ECC trailer tako da Revit prihvati nove bytes.
- Ako vam treba deterministička byte-for-byte reprodukcija, napravite minimalan wrapper oko Revit’s DLLs da pozove njegove gzip/gunzip paths i ECC computation (kao što je demonstrirano u istraživanju), ili ponovo iskoristite bilo koji dostupan helper koji replicira ove semantike.
- Ponovo izgradite OLE compound document
# Repack the folder tree back into an OLE file
CompoundFileTool /c rfa_out /o model_patched.rfa
Beleške:
- CompoundFileTool zapisuje storages/streams na filesystem sa escaping-om za karaktere nevažeće u NTFS imenima; stream path koji želite je tačno
Global/Latestu izlaznom stablu. - Prilikom isporuke masovnih napada preko ecosystem plugins koji preuzimaju RFAs iz cloud storage, osigurajte da vaš patched RFA prvo lokalno prođe Revit’s integrity checks (gzip/ECC correct) pre nego što pokušate network injection.
Exploitation insight (to guide what bytes to place in the gzip payload):
- The Revit deserializer reads a 16-bit class index and constructs an object. Certain types are non‑polymorphic and lack vtables; abusing destructor handling yields a type confusion where the engine executes an indirect call through an attacker-controlled pointer.
- Picking
AString(class index0x1F) places an attacker-controlled heap pointer at object offset 0. During the destructor loop, Revit effectively executes:
rcx = [rbx] ; object pointer (e.g., AString*)
rax = [rcx] ; attacker-controlled pointer to AString buffer
call qword ptr [rax] ; one attacker-chosen gadget per object
- Postavite više takvih objekata u serijalizovani graf tako da svaka iteracija destructor petlje izvrši po jedan gadget (“weird machine”), i obezbedite stack pivot u konvencionalni x64 ROP chain.
Pogledajte detalje o Windows x64 pivot/gadget building ovde:
i opšte ROP smernice ovde:
Alati:
- CompoundFileTool (OSS) za rastavljanje/ponovno sastavljanje OLE compound files: https://github.com/thezdi/CompoundFileTool
- IDA Pro + WinDBG TTD za reverse/taint; onemogućite page heap sa TTD da bi trace-ovi ostali kompaktni.
- Lokalni proxy (npr. Fiddler) može simulirati isporuku u lancu snabdevanja zamenom RFAs u plugin traffic-u za testiranje.
Reference
- Crafting a Full Exploit RCE from a Crash in Autodesk Revit RFA File Parsing (ZDI blog)
- CompoundFileTool (GitHub)
- OLE Compound File (CFBF) docs
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


