PSExec to narzędzie firmy Microsoft z pakietu Sysinternals, które umożliwia zdalne wykonywanie procesów na innych systemach Windows. W kontekście testów penetracyjnych, PSExec (oraz jego klony) są szeroko wykorzystywane do lateral movement po sieci oraz do uzyskiwania dostępu do systemów docelowych po kompromitacji danych uwierzytelniających.
Na czym polega atak
PSExec wykorzystuje protokół SMB do komunikacji z docelowym systemem i wymaga uprawnień administratora lokalnego na maszynie docelowej. Proces działania:
- Uwierzytelnienie: Połączenie z docelowym systemem przy użyciu danych uwierzytelniających (hasło lub hash)
- Upload service: Przesłanie pliku wykonywalnego usługi na system docelowy
- Service creation: Utworzenie i uruchomienie usługi Windows na zdalnym systemie
- Command execution: Wykonanie poleceń przez utworzoną usługę
- Cleanup: Usunięcie plików i usługi po zakończeniu sesji
Jakie luki wykorzystuje
- Credential reuse: Ponowne wykorzystanie skompromitowanych danych uwierzytelniających
- Administrative privileges: Wykorzystanie uprawnień administratora lokalnego
- SMB protocol: Komunikacja przez protokół SMB (porty 135, 445)
- Windows service mechanism: Wykorzystanie mechanizmu usług Windows do wykonania kodu
- Pass-the-hash: Możliwość użycia hashy NTLM zamiast jawnego hasła
Przykładowe polecenia
PSExec z hasłem
psexec.py <domain>/<user>:<password>@<ip address>
Wyjaśnienie:
<domain>
– nazwa domeny lub WORKGROUP dla komputerów lokalnych<user>
– nazwa użytkownika z uprawnieniami administratora<password>
– hasło użytkownika w postaci jawnej<ip address>
– adres IP docelowego systemu
Przykład:
psexec.py CONTOSO/administrator:P@ssw0rd@192.168.1.100
PSExec z hashem (Pass-the-Hash)
psexec.py <user>@<ip> -hashes <hash>
Wyjaśnienie:
-hashes <hash>
– hash NTLM w formacie LM:NTLM (zwykle LM jest pusty)- Pozwala na uwierzytelnienie bez znajomości jawnego hasła
Przykład:
psexec.py administrator@192.168.1.100 -hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76
Mitygacja
Podstawowe metody obrony z uwzględnieniem ograniczeń:
Włączenie podpisywania SMB na wszystkich urządzeniach
- Zalety: Zapobiega atakom typu SMB relay i utrudnia nieuprawniony dostęp
- Wady: Może powodować problemy z wydajnością sieci
- Konfiguracja: Group Policy → Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options
Wyłączenie uwierzytelnienia NTLM
- Zalety: Całkowicie zatrzymuje ataki Pass-the-Hash
- Wady: Jeżeli Kerberos przestanie działać, system wróci do uwierzytelnienia NTLM
- Konfiguracja: Group Policy → „Network security: Restrict NTLM”
Podział kont na kategorie
- Zalety: Ogranicza konta z najwyższymi uprawnieniami (domain admins) do konkretnych czynności
- Wady: Może generować spory opór w stosowaniu tego typu polityk
- Implementacja: Segregacja kont administracyjnych i użytkowników
Blokada administratorów lokalnych
- Zalety: Może zapobiec wielu technikom lateral movement
- Wady: Może być uciążliwe dla helpdesku
- Konfiguracja: Wyłączenie lub ograniczenie kont administratorów lokalnych
Dodatkowe środki bezpieczeństwa
- Network segmentation: Ograniczenie komunikacji SMB między segmentami sieci
- Privileged Access Management (PAM): Centralne zarządzanie kontami uprzywilejowanymi
- Application whitelisting: Ograniczenie możliwości uruchamiania nieautoryzowanych programów