PsExec
Explicación sobre PsExec
Fuentes
PsExec
Explicación e implementación básica
PsExec es una herramienta que permite ejecutar procesos en otros sistemas de la red sin tener que instalar nada manualmente. Hay varias implementaciones de la herramienta:
Por defecto, al ejecutar psexec.exe:
El programa copia el ejecutable
PSEXESVC.exe, ubicado dentro del propiopsexec.exe, al shareADMIN$del objetivo (A través de SMB, y que apunta aC:\Windows)Mediante el API de servicios de Windows (SVCCTL RPC), contactando con él a través de MSRPC (p135) o de named pipes (Share
$IPC, p139,445), crea un nuevo servicio con el ejecutable subido antes, con privilegiosSYSTEM.Ese nuevo servicio crea varios named pipes nuevos en el share a través de los cuales tendrá lugar la comunicación.
Al terminar, PsExec detiene el servicio y lo borra del sistema, pero el binario de
C:\Windowspuede quedar ahí, lo que deja rastro de la conexión.
Por esto último hay otras implementaciones, algunas que siguen el modelo original, pero reescritas en otros lenguajes, y otras que se ejecutan únicamente en memoria.
Otras implementaciones
Impacket PsExec: Versión en python, usa
RemComSvcen lugar dePSEXESVC.exeImpacket SMBExec: Monta un servidor SMB en la máquina local en el que la víctima escribe el output de los comandos.
Impacket Atexec: Crea una tarea inmediata en el task scheduler de Windows por cada comando, escribe su output al share, lo lee y lo borra. (Solo permite comandos individuales, no sesiones interactivas)
Netexec: Herramienta de post-explotación que integra muchas de éstas.
Metasploit psexec_psh: Implementación en memoria, sin tocar el disco, usando IEX de Powershell. Más info aquí
Uso
Para usar cualquier implementación de PSExec generalmente necesitaremos privilegios administrativos (y en este caso también nos sirven hashes, así que podremos usar PtH)
Para Impacket-PsExec/-AtExec/-SMBExec:
Para netexec/crackmapexec:
Por defecto netexec usa atexec, tenemos que especificar manualmente si queremos otra implementación.
Última actualización