Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
RpcProxyInvoke — Libreria POC semplice per eseguire chiamate arbitrarie proxyandole tramite NdrServerCall2 o simili. | Kitploit
Strumenti/GitHubGitHub/klezvirus/rpcproxyinvoke
Escalation di PrivilegiExploitMovimento LateraleShellcodePost-ExploitPenetration TestingCommand and ControlRed TeamingStrumento di Accesso RemotoSviluppo PayloadBinary Exploitation
139172 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
klezvirus/rpcproxyinvoke

RpcProxyInvoke

Libreria POC semplice per eseguire chiamate arbitrarie proxyandole tramite NdrServerCall2 o simili.

Vedi Repository

RpcProxyInvoke

Panoramica

Per creare un metodo generale per eseguire codice locale e remoto, abbiamo progettato un metodo di esecuzione del codice relativamente oscuro, che internamente chiamiamo RpcCraft (Self) e RpcExec (Remote Process). Questa tecnica sfrutta una metodologia ben nota tra gli sviluppatori di exploit, abusando delle chiamate del server RPC (Remote Procedure Call) come NdrServerCall2 o NdrServerCallAll per eseguire codice arbitrario.

Abusare delle Chiamate al Server per l'Esecuzione

All'interno di RPCRT4.dll, funzioni come NdrServerCall2, NdrServerCallAll e NdrServerCallNdr64 (un alias di NdrServerCallAll) sono implementate come wrapper per invocare dinamicamente funzioni relative alle funzionalità del server. Queste funzioni accettano un singolo argomento, un puntatore a una struttura RPC_MESSAGE.

Struttura RPC_MESSAGE:

root@kitploit:~
typedef struct _RPC_MESSAGE {
  RPC_BINDING_HANDLE     Handle;
  unsigned long          DataRepresentation;
  void                   *Buffer;
  unsigned int           BufferLength;
  unsigned int           ProcNum;
  PRPC_SYNTAX_IDENTIFIER TransferSyntax;
  void                   *RpcInterfaceInformation;
  void                   *ReservedForRuntime;
  RPC_MGR_EPV            *ManagerEpv;
  void                   *ImportContext;
  unsigned long          RpcFlags;
} RPC_MESSAGE, *PRPC_MESSAGE;

Inizializzazione ed Esecuzione

Per inizializzare il runtime senza associarsi a un servizio, viene utilizzata la funzione PerformRpcInitialization. Questa funzione inizializza internamente le strutture necessarie senza richiedere un binding manuale.

Problemi Noti

Questa versione pubblica della tecnica è stata sviluppata come POC per dimostrarne la fattibilità, e attualmente genera un'eccezione su NdrGetBuffer a causa di un Binding Handle mancante. Questo può essere gestito in diversi modi, ma l'implementazione corrente fa:

  • Esegue una patch a ntdll (RaiseException -> RtlExitUserThread)
  • Recupera il valore di ritorno tramite VEH
root@kitploit:~
int FetchReturnValue(const PEXCEPTION_POINTERS ExceptionInfo) {
    ExceptionInfo->ContextRecord->EFlags |= (1 << 16);
    g_ReturnValue = (PVOID)ExceptionInfo->ContextRecord->Rax;
    return EXCEPTION_CONTINUE_EXECUTION;
}

Limitazioni e Patching

L'invocazione RPC è protetta da CFG, il che significa che per ottenere un'esecuzione di codice completa e senza restrizioni, è necessario marcare il target come valido con SetProcessValidCallTargets o applicare una patch a RpcInvokeCheckICall.

Conclusione

Il progetto RpcProxyInvoke dimostra una tecnica alternativa che può essere abusata per implementare una libreria in stile RailGun. Sebbene l'implementazione pubblica non sia perfetta, può servire come base per ulteriori sviluppi.

Licenza

Questo progetto è concesso in licenza con la licenza MIT - vedere il file LICENSE per i dettagli.

Scarica lo strumento