# Pentesting Basics

{% file src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FmkKL6o1JGq5G9d4D0v5j%2FGetting_Started_Module_Cheat_Sheet.pdf?alt=media&token=9a3857b6-36fb-449a-88fb-c19b74a5f4b4" %}

## Shell

| **Tipo de Shell** | **Descripción**                                                                                                                                                                                                                                                                                             |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Reverse Shell** | Inicia una conexión con un "oyente" en nuestro cuadro de ataque.                                                                                                                                                                                                                                            |
| **Bind Shell**    | "Se vincula" a un puerto específico en el host de destino y espera una conexión desde nuestro cuadro de ataque.                                                                                                                                                                                             |
| **Web Shell**     | Ejecuta comandos del sistema operativo a través del navegador web, normalmente de forma no interactiva o semiinteractiva. También se puede utilizar para ejecutar comandos individuales (es decir, aprovechar una vulnerabilidad de carga de archivos y cargar un PHPscript para ejecutar un solo comando). |

## Puerto

**TCP**\
Está orientado a la conexión, lo que significa que se debe establecer una conexión entre un cliente y un servidor antes de que se puedan enviar los datos. El servidor debe estar en estado de escucha esperando las solicitudes de conexión de los clientes.

**UDP**\
Utiliza un modelo de comunicación sin conexión. No hay "apretón de manos" y, por lo tanto, introduce una cierta cantidad de falta de fiabilidad, ya que no hay garantía de entrega de datos. UDP es útil cuando no se necesita la corrección/verificación de errores o la gestiona la propia aplicación. Es adecuado para aplicaciones que ejecutan tareas sensibles al tiempo, ya que descartar paquetes es más rápido que esperar paquetes retrasados ​​debido a la retransmisión, como es el caso de TCP en un sistema en tiempo real y puede afectar significativamente a este.

| **Puerto(s)** | **Protocolo**   |
| ------------- | --------------- |
| 20/21 (TCP)   | FTP             |
| 22 (TCP)      | SSH             |
| 23 (TCP)      | Telnet          |
| 25 (TCP)      | SMTP            |
| 80 (TCP)      | HTTP            |
| 161 (TCP/UDP) | SNMP            |
| 389 (TCP/UDP) | LDAP            |
| 443 (TCP)     | SSL/TLS (HTTPS) |
| 445 (TCP)     | SMB             |
| 3389 (TCP)    | RDP             |

## SSH

[Secure Shell (SSH)](https://en.wikipedia.org/wiki/SSH_\(Secure_Shell\)) es un protocolo de red que se ejecuta en el puerto `22`de manera predeterminada y ofrece a los usuarios, como los administradores de sistemas, una forma segura de acceder a una computadora de forma remota. SSH se puede configurar con autenticación por contraseña o sin contraseña mediante [autenticación de clave pública](https://serverpilot.io/docs/how-to-use-ssh-public-key-authentication/) utilizando un par de claves pública/privada de SSH. SSH se puede utilizar para acceder de forma remota a sistemas en la misma red, a través de Internet, facilitar conexiones a recursos en otras redes mediante reenvío de puertos/proxy y cargar/descargar archivos hacia y desde sistemas remotos.

```bash
ssh usuario@IP
```

## Netcat

[Netcat](https://linux.die.net/man/1/nc) , `ncat`, o `nc`, es una excelente utilidad de red para interactuar con puertos TCP/UDP. Se puede utilizar para muchas cosas durante una prueba de penetración. Su uso principal es para conectarse a shells, de lo que hablaremos más adelante en este módulo. Además de eso, `netcat`se puede utilizar para conectarse a cualquier puerto de escucha e interactuar con el servicio que se ejecuta en ese puerto.

```bash
netcat IP
```

## Nmap

```
nmap IP
```

Podemos utilizar el `-sC`parámetro para especificar que `Nmap`se deben utilizar scripts para intentar obtener información más detallada. El `-sV`parámetro indica `Nmap`que se debe realizar un escaneo de versiones. Por último, `-p-`indica a Nmap que queremos escanear los 65 535 puertos TCP.

```bash
nmap -sC -sV IP
```

## SMB

SMB permite a los usuarios y administradores compartir carpetas y hacer que otros usuarios puedan acceder a ellas de forma remota. A menudo, estos recursos compartidos contienen archivos que contienen información confidencial, como contraseñas. Una herramienta que puede enumerar e interactuar con los recursos compartidos de SMB es [smbclient](https://www.samba.org/samba/docs/current/man-html/smbclient.1.html) . El `-L`indicador especifica que queremos recuperar una lista de recursos compartidos disponibles en el host remoto, mientras que `-N`suprime la solicitud de contraseña.

```bash
smbclient -N -L \\\\IP
```

## SNMP

Las cadenas de comunidad de SNMP proporcionan información y estadísticas sobre un enrutador o dispositivo, lo que nos ayuda a obtener acceso a él. Las cadenas de comunidad predeterminadas del fabricante de `public`y `private`a menudo no se modifican. En las versiones 1 y 2c de SNMP, el acceso se controla mediante una cadena de comunidad de texto sin formato y, si conocemos el nombre, podemos acceder a ella. El cifrado y la autenticación solo se agregaron en la versión 3 de SNMP. Se puede obtener mucha información de SNMP. El examen de los parámetros del proceso puede revelar credenciales pasadas en la línea de comandos, que podrían reutilizarse para otros servicios accesibles externamente dada la prevalencia de la reutilización de contraseñas en entornos empresariales. También se puede revelar información de enrutamiento, servicios vinculados a interfaces adicionales y la versión del software instalado.

```bash
snmpwalk -v 2c -c private/public IP
```

