From d1d8b66fd4fe9272e70d626f42965d5edf10f249 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 16 Jul 2025 20:10:17 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/135-pentesting-msrpc.md'] t --- .../135-pentesting-msrpc.md | 74 ++++++++++++++++++- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/src/network-services-pentesting/135-pentesting-msrpc.md b/src/network-services-pentesting/135-pentesting-msrpc.md index 4e587f0aa..d7ffd95dc 100644 --- a/src/network-services-pentesting/135-pentesting-msrpc.md +++ b/src/network-services-pentesting/135-pentesting-msrpc.md @@ -26,7 +26,7 @@ Annotation: Messenger Service UUID: 00000000-0000-0000-0000-000000000000 Binding: ncadg_ip_udp:[1028] ``` -Pristup RPC lokator servisu je omogućen kroz specifične protokole: ncacn_ip_tcp i ncadg_ip_udp za pristup preko porta 135, ncacn_np za SMB konekcije, i ncacn_http za web-baziranu RPC komunikaciju. Sledeće komande ilustruju korišćenje Metasploit modula za audiranje i interakciju sa MSRPC servisima, prvenstveno fokusirajući se na port 135: +Pristup RPC locator servisu je omogućen kroz specifične protokole: ncacn_ip_tcp i ncadg_ip_udp za pristup preko porta 135, ncacn_np za SMB konekcije, i ncacn_http za web-baziranu RPC komunikaciju. Sledeće komande ilustruju korišćenje Metasploit modula za audiranje i interakciju sa MSRPC servisima, prvenstveno fokusirajući se na port 135: ```bash use auxiliary/scanner/dcerpc/endpoint_mapper use auxiliary/scanner/dcerpc/hidden @@ -52,7 +52,7 @@ Sve opcije osim `tcp_dcerpc_auditor` su posebno dizajnirane za ciljanje MSRPC na - **Opis**: Planer zadataka, koristi se za daljinsko izvršavanje komandi. - **IFID**: 338cd001-2244-31f1-aaaa-900038001003 - **Named Pipe**: `\pipe\winreg` -- **Opis**: Udaljena usluga registra, koristi se za pristup i modifikaciju sistemskog registra. +- **Opis**: Usluga daljinskog registra, koristi se za pristup i modifikaciju sistemskog registra. - **IFID**: 367abb81-9844-35f1-ad32-98f038001003 - **Named Pipe**: `\pipe\svcctl` - **Opis**: Menadžer kontrole usluga i server usluga, koristi se za daljinsko pokretanje i zaustavljanje usluga i izvršavanje komandi. @@ -83,8 +83,78 @@ Moguće je izvršiti daljinski kod na mašini, ako su dostupni kredencijali vali **rpcdump.exe** iz [rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools) može interagovati sa ovim portom. +### Automatizovana enumeracija interfejsa i dinamička generacija klijenta (NtObjectManager) + +PowerShell guru **James Forshaw** je izložio većinu Windows RPC internih funkcija unutar open-source *NtObjectManager* modula. Koristeći ga možete pretvoriti bilo koji RPC server DLL / EXE u **klijent stub** sa punim funkcijama za nekoliko sekundi – bez IDL, MIDL ili ručnog unmarshalling-a. +```powershell +# Install the module once +Install-Module NtObjectManager -Force + +# Parse every RPC interface exported by the target binary +$rpcinterfaces = Get-RpcServer "C:\Windows\System32\efssvc.dll" +$rpcinterfaces | Format-Table Name,Uuid,Version,Procedures + +# Inspect a single procedure (opnum 0) +$rpcinterfaces[0].Procedures[0] | Format-List * +``` +Tipičan izlaz otkriva tipove parametara tačno onako kako se pojavljuju u **MIDL** (npr. `FC_C_WSTRING`, `FC_LONG`, `FC_BIND_CONTEXT`). + +Kada znate interfejs, možete **generisati C# klijent spreman za kompajliranje**: +```powershell +# Reverse the MS-EFSR (EfsRpc*) interface into C# +Format-RpcClient $rpcinterfaces[0] -Namespace MS_EFSR -OutputPath .\MS_EFSR.cs +``` +Unutar proizvedenog stub-a naći ćete metode kao što su: +```csharp +public int EfsRpcOpenFileRaw(out Marshal.NdrContextHandle ctx, string FileName, int Flags) { +// marshals parameters & calls opnum 0 +} +``` +PowerShell pomoćni alat `Get-RpcClient` može kreirati **interaktivni klijent objekat** tako da možete odmah pozvati proceduru: +```powershell +$client = Get-RpcClient $rpcinterfaces[0] +Connect-RpcClient $client -stringbinding 'ncacn_np:127.0.0.1[\\pipe\\efsrpc]' ` +-AuthenticationLevel PacketPrivacy ` +-AuthenticationType WinNT # NTLM auth + +# Invoke the procedure → returns an authenticated context handle +$ctx = New-Object Marshal.NdrContextHandle +$client.EfsRpcOpenFileRaw([ref]$ctx, "\\\127.0.0.1\test", 0) +``` +Autentifikacija (Kerberos / NTLM) i nivoi enkripcije (`PacketIntegrity`, `PacketPrivacy`, …) mogu se direktno obezbediti putem `Connect-RpcClient` cmdleta – idealno za **obići sigurnosne deskriptore** koji štite visoko privilegovane imenovane cevi. + +--- + +### Fuzzing sa svesti o kontekstu RPC (MS-RPC-Fuzzer) + +Staticko znanje o interfejsu je odlično, ali ono što zaista želite je **fuzzing vođen pokrivenošću** koji razume *kontekstualne handle-ove* i složene lance parametara. Open-source projekat **MS-RPC-Fuzzer** automatski obezbeđuje upravo taj radni tok: + +1. Enumerisati svaki interfejs/proceduru koju izvozi ciljni binarni fajl (`Get-RpcServer`). +2. Generisati dinamičke klijente za svaki interfejs (`Format-RpcClient`). +3. Randomizovati ulazne parametre (dužina širokih stringova, opsezi celih brojeva, enumeracije) uz poštovanje originalnog **NDR tipa**. +4. Pratiti *kontekstualne handle-ove* koje vraća jedan poziv kako bi se automatski hranili sledeći postupci. +5. Izvršiti pozive velike zapremine protiv odabranog transporta (ALPC, TCP, HTTP ili imenovana cev). +6. Zapisati izlazne statuse / greške / vremenske limite i izvesti **Neo4j** import fajl za vizualizaciju *interfejs → procedura → parametar* odnosa i klastera rušenja. + +Primer izvršavanja (cilj imenovane cevi): +```powershell +Invoke-MSRPCFuzzer -Pipe "\\.\pipe\efsrpc" -Auth NTLM ` +-MinLen 1 -MaxLen 0x400 ` +-Iterations 100000 ` +-OutDir .\results +``` +Jedno pisanje van granica ili neočekivana izuzetak će odmah biti prikazani sa tačnim opnum + fuzzed payload koji ga je izazvao – savršena polazna tačka za stabilan proof-of-concept exploit. + +> ⚠️ Mnogi RPC servisi se izvršavaju u procesima koji rade kao **NT AUTHORITY\SYSTEM**. Svaki problem sa bezbednošću memorije ovde obično se prevodi u lokalno eskalaciju privilegija ili (kada je izložen preko SMB/135) *daljinsko izvršavanje koda*. + +--- + ## Reference +- [Automating MS-RPC vulnerability research (2025, Incendium.rocks)](https://www.incendium.rocks/posts/Automating-MS-RPC-Vulnerability-Research/) +- [MS-RPC-Fuzzer – context-aware RPC fuzzer](https://github.com/warpnet/MS-RPC-Fuzzer) +- [NtObjectManager PowerShell module](https://github.com/googleprojectzero/sandbox-attacksurface-analysis-tools/tree/master/NtObjectManager) + - [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-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://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/) - [https://0xffsec.com/handbook/services/msrpc/](https://0xffsec.com/handbook/services/msrpc/)