135, 593 - Pentesting MSRPC
Reading time: 5 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Podstawowe informacje
Protokół Microsoft Remote Procedure Call (MSRPC), model klient-serwer umożliwiający programowi żądanie usługi od programu znajdującego się na innym komputerze bez zrozumienia specyfiki sieci, początkowo pochodził z oprogramowania open-source, a później został rozwinięty i objęty prawami autorskimi przez Microsoft.
Mapper punktów końcowych RPC można uzyskać za pomocą portu TCP i UDP 135, SMB na TCP 139 i 445 (z sesją null lub uwierzytelnioną) oraz jako usługę internetową na porcie TCP 593.
135/tcp open msrpc Microsoft Windows RPC
Jak działa MSRPC?
Inicjowany przez aplikację kliencką, proces MSRPC polega na wywołaniu lokalnej procedury stub, która następnie współdziała z biblioteką uruchomieniową klienta, aby przygotować i przesłać żądanie do serwera. Obejmuje to konwersję parametrów na standardowy format Network Data Representation. Wybór protokołu transportowego jest określany przez bibliotekę uruchomieniową, jeśli serwer jest zdalny, co zapewnia dostarczenie RPC przez stos sieciowy.
Identyfikacja wystawionych usług RPC
Ekspozycję usług RPC przez TCP, UDP, HTTP i SMB można określić, zapytując usługę lokalizatora RPC oraz poszczególne punkty końcowe. Narzędzia takie jak rpcdump ułatwiają identyfikację unikalnych usług RPC, oznaczonych wartościami IFID, ujawniając szczegóły usługi i powiązania komunikacyjne:
D:\rpctools> rpcdump [-p port] <IP>
**IFID**: 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc version 1.0
Annotation: Messenger Service
UUID: 00000000-0000-0000-0000-000000000000
Binding: ncadg_ip_udp:<IP>[1028]
Dostęp do usługi lokalizatora RPC jest włączony przez określone protokoły: ncacn_ip_tcp i ncadg_ip_udp do dostępu przez port 135, ncacn_np dla połączeń SMB oraz ncacn_http dla komunikacji RPC opartej na sieci. Poniższe polecenia ilustrują wykorzystanie modułów Metasploit do audytowania i interakcji z usługami MSRPC, koncentrując się głównie na porcie 135:
use auxiliary/scanner/dcerpc/endpoint_mapper
use auxiliary/scanner/dcerpc/hidden
use auxiliary/scanner/dcerpc/management
use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor
rpcdump.py <IP> -p 135
Wszystkie opcje z wyjątkiem tcp_dcerpc_auditor
są specjalnie zaprojektowane do atakowania MSRPC na porcie 135.
Znaczące interfejsy RPC
- IFID: 12345778-1234-abcd-ef00-0123456789ab
- Named Pipe:
\pipe\lsarpc
- Opis: Interfejs LSA, używany do enumeracji użytkowników.
- IFID: 3919286a-b10c-11d0-9ba8-00c04fd92ef5
- Named Pipe:
\pipe\lsarpc
- Opis: Interfejs LSA Directory Services (DS), używany do enumeracji domen i relacji zaufania.
- IFID: 12345778-1234-abcd-ef00-0123456789ac
- Named Pipe:
\pipe\samr
- Opis: Interfejs LSA SAMR, używany do uzyskiwania dostępu do publicznych elementów bazy danych SAM (np. nazwy użytkowników) i łamania haseł użytkowników niezależnie od polityki blokady konta.
- IFID: 1ff70682-0a51-30e8-076d-740be8cee98b
- Named Pipe:
\pipe\atsvc
- Opis: Harmonogram zadań, używany do zdalnego wykonywania poleceń.
- IFID: 338cd001-2244-31f1-aaaa-900038001003
- Named Pipe:
\pipe\winreg
- Opis: Usługa rejestru zdalnego, używana do uzyskiwania dostępu i modyfikacji rejestru systemowego.
- IFID: 367abb81-9844-35f1-ad32-98f038001003
- Named Pipe:
\pipe\svcctl
- Opis: Menedżer kontroli usług i usługi serwera, używany do zdalnego uruchamiania i zatrzymywania usług oraz wykonywania poleceń.
- IFID: 4b324fc8-1670-01d3-1278-5a47bf6ee188
- Named Pipe:
\pipe\srvsvc
- Opis: Menedżer kontroli usług i usługi serwera, używany do zdalnego uruchamiania i zatrzymywania usług oraz wykonywania poleceń.
- IFID: 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57
- Named Pipe:
\pipe\epmapper
- Opis: Interfejs DCOM, używany do łamania haseł i zbierania informacji za pomocą WM.
Identyfikacja adresów IP
Używając https://github.com/mubix/IOXIDResolver, pochodzącego z badania Airbus, możliwe jest nadużycie metody ServerAlive2 wewnątrz interfejsu IOXIDResolver.
Metoda ta była używana do uzyskiwania informacji o interfejsie jako adres IPv6 z maszyny HTB APT. Zobacz tutaj dla opisu 0xdf APT, zawiera alternatywną metodę używającą rpcmap.py z Impacket z stringbinding (patrz powyżej).
Wykonywanie RCE z ważnymi poświadczeniami
Możliwe jest wykonanie zdalnego kodu na maszynie, jeśli dostępne są poświadczenia ważnego użytkownika, używając dcomexec.py z frameworka impacket.
Pamiętaj, aby spróbować z różnymi dostępnymi obiektami
- ShellWindows
- ShellBrowserWindow
- MMC20
Port 593
rpcdump.exe z rpctools może współdziałać z tym portem.
Odniesienia
- https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/
- https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/
- https://0xffsec.com/handbook/services/msrpc/
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.