Categorías
Ciberinteligencia Hacking

Nueva formación:Curso de OSINT para analistas e investigadores: Técnicas de rastreo en Internet y la Deep Web – Nivel 1

Ya está disponible nuestra nueva formación especializada en OSINT (Open Source Intelligence), dirigida a analistas, investigadores y profesionales de la ciberseguridad que quieran mejorar sus habilidades de investigación y aplicar técnicas de reconocimiento.

🔍 ¿Qué aprenderás en este curso de OSINT?

Como de costumbre en The Hacker Way, es una formación 100% práctica y didáctica, repleta de ejemplos reales y ejercicios. A lo largo del contenido aprenderás a:

  • Utilizar herramientas avanzadas de OSINT para rastrear información en Internet y la Deep Web.
  • Investigar personas y empresas desde una perspectiva profesional.
  • Organizar y documentar hallazgos de forma estructurada.
  • Entender los aspectos legales y éticos de las investigaciones OSINT.
  • Navegar y trabajar en Darknets como TOR, I2P y Hyphanet (antes Freenet).
Aprende sobre la Deep Web

🗓️ ¡En preventa hasta el 22 de junio!

La formación se encuentra en preventa hasta el 22 de junio con un descuento exclusivo de 30 €.


👉 Mi recomendación es que aproveches esta oferta antes de que finalice.

Ah, además, en el precio están incluidas todas las actualizaciones que se irán publicando, las cuales incluirán ejercicios prácticos, uso de herramientas y técnicas modernas.

La formación está compuesta por vídeos y recursos descargables.

En total, tendrás acceso a aproximadamente 10 horas de vídeo, a las que estimamos que deberás dedicarle aproximadamente 40 horas para realizar las prácticas y ejemplos que se enseñan en las lecciones.

Además de este curso de OSINT para analistas e investigadores, también tenéis disponible el curso de Técnicas de Investigación con OSINT si buscas algo más introductorio y no tan avanzado sobre este tema.

¡Aprovecha la oportunidad y apúntate!

Categorías
Hacking

SSH Hardening and Offensive Mastery: Guía Completa de Seguridad SSH

SSH Hardening and Offensive Mastery: Guía Completa de Seguridad SSH

La seguridad SSH es esencial para proteger servidores y sistemas remotos frente a accesos no autorizados. Este artículo aborda desde conceptos básicos de hardening SSH hasta técnicas ofensivas para evaluar y fortalecer la seguridad de tus conexiones. Descubre las mejores prácticas para asegurar tu entorno y dominar herramientas para pruebas de penetración.

¿Qué es SSH y por qué es importante asegurar su acceso?

SSH (Secure Shell) es un protocolo que permite conexiones seguras y cifradas entre un cliente y un servidor. Se utiliza principalmente para administrar servidores de forma remota, evitando que atacantes puedan interceptar credenciales o comandos.

La exposición de un servicio SSH sin protección puede suponer un riesgo grave, ya que los atacantes suelen buscar vulnerabilidades para obtener acceso privilegiado. Por eso, es crucial practicar el ssh hardening para proteger tus sistemas.

Conceptos clave para el hardening SSH

El ssh hardening implica aplicar configuraciones y medidas que limiten los riesgos y dificulten el acceso no autorizado. Aquí algunas de las técnicas más efectivas:

1. Cambiar el puerto SSH por defecto

El puerto por defecto es el 22, y cambiarlo ayuda a evitar ataques automatizados que escanean esta puerta comúnmente.

«`bash

Editar el archivo /etc/ssh/sshd_config

Port 2222
«`

2. Deshabilitar el acceso root directo

Permitir acceso root directo es un gran riesgo. Mejor iniciar sesión con un usuario normal y usar `sudo` para privilegios.

«`bash
PermitRootLogin no
«`

3. Uso obligatorio de autenticación por clave pública

Eliminar el acceso mediante contraseñas y forzar el uso de llaves SSH mejora mucho la seguridad.

«`bash
PasswordAuthentication no
PubkeyAuthentication yes
«`

4. Limitar el acceso a usuarios específicos

Solo ciertos usuarios deben poder iniciar sesión por SSH.

«`bash
AllowUsers usuario1 usuario2
«`

5. Configurar el firewall para permitir solo conexiones SSH desde rangos confiables

Filtra IPs para minimizar posibles atacantes.

«`bash
ufw allow from 192.168.1.0/24 to any port 2222
«`

Técnicas ofensivas para pruebas de seguridad SSH

Una buena seguridad implica también entender cómo atacan los ciberdelincuentes. Herramientas y técnicas ofensivas permiten evaluar la robustez del sistema.

Fuerza bruta y diccionarios

Ataques comunes que prueban múltiples combinaciones de usuario y contraseña. Herramientas como Hydra o Medusa son habituales para estas pruebas.

Escaneo de puertos

Escanear qué puertos SSH están activos usando nmap para identificar servidores vulnerables o mal configurados.

«`bash
nmap -p 22,2222 -sV IP_DESTINO
«`

Explotación de vulnerabilidades

Buscar versiones antiguas del servicio SSH que puedan tener bugs conocidos. Herramientas como Metasploit pueden automatizar estas tareas.

Ingeniería social y phishing

Aunque no es técnico, no debe subestimarse la capacidad de un atacante para engañar a usuarios y obtener credenciales.

Herramientas recomendadas para hardening y auditoría SSH

OpenSSH: Implementación estándar para configurar servidores SSH.
Fail2ban: Bloquea IPs con intentos de acceso fallidos repetidos.
ssh-audit: Analiza configuraciones SSH en busca de debilidades.
Lynis: Auditoría completa de seguridad de sistemas, incluyendo SSH.
John the Ripper: Para pruebas de cracking de contraseñas de llaves SSH.

Buenas prácticas adicionales para asegurar SSH

– Mantén siempre actualizado el software del servidor.
– Realiza auditorías periódicas de accesos y configuraciones.
– Utiliza autenticación de dos factores (2FA) en conexiones SSH.
– Implementa un sistema de registro y alerta ante accesos sospechosos.
– Limita el tiempo de sesiones o desconecta automáticamente tras inactividad.

Conclusión

El ssh hardening es una parte fundamental dentro de cualquier estrategia de ciberseguridad. Combinar configuraciones seguras con pruebas ofensivas controladas permite proteger eficazmente servidores y mantener confiables las conexiones remotas. La implementación de estas recomendaciones y el uso de herramientas especializadas te acercarán a la ofensive mastery en seguridad SSH, garantizando la integridad y confidencialidad de tus sistemas.

Para profundizar en seguridad y ofensiva SSH, sigue explorando nuevas técnicas y mantente siempre actualizado con las últimas tendencias en ciberseguridad. Tu servidor y su información lo agradecerán.

Categorías
Hacking Python

Cómo crear Rainbow Tables con Python para descifrar hashes

En esta ocasión os vamos a enseñar cómo crear Rainbow Tables con Python para cualquier algoritmo de hashing que esté soportado por la librería hashlib.

Pero, por si alguno aún no lo sabe…

¿Qué son las Rainbow Tables?

Se conoce como Rainbow Tables a tablas de hashes donde podemos encontrar equivalencias de contraseñas hasheadas. Realmente, esto recibe el nombre de Complete Lookup Tables.

Las Rainbow Tables son tablas con una función muy similar, pero que se usan principalmente para las contraseñas largas, ya que el coste computacional de encontrar esas contraseñas mediante ataques de fuerza bruta o ataques de diccionario puede ser demasiado elevado.

Por eso, en esta publicación, usaré el término Rainbow Tables como sinónimo de Complete Lookup Tables.

Es decir, por poner un ejemplo, si usamos la función de hashing MD5 para cifrar la contraseña «password», obtendremos el hash «5f4dcc3b5aa765d61d8327deb882cf99».

Las funciones de hashing, como muchos sabréis, no son reversibles, por lo que no es como convertir una cadena a base64, que se puede deshacer con una simple función.

Para descubrir la equivalencia de un hash con una contraseña, hemos de comparar el hash que tenemos con el hash generado a partir de esa contraseña. Y ahí es donde entran las Rainbow Tables.

Además, en algunas funciones de hashing se puede añadir lo que se conoce como «salt», que no es otra cosa que una palabra de cifrado que ayuda a dificultar aún más la posibilidad de descifrar la contraseña.

En este caso nos centraremos en hashes sin salt, es decir, hashes que han sido creados a partir de la contraseña directamente, y con los que se ha creado una tabla para un diccionario de palabras concreto.

En nuestro ejemplo usaremos el algoritmo MD5 y el diccionario rockyou.txt, de sobras conocido por la gran mayoría de hackers. Cabe decir que se puede editar el código que encontraréis a continuación para elegir otro algoritmo, y el diccionario a utilizar puede ser cualquier archivo de texto plano «txt» con una lista de palabras.

Es momento de enseñaros cómo crear esas rainbow tables con python y desgranar el algoritmo de la herramienta en cuestión, creada por DamonCDB y la cual podéis encontrar en su GitHub.

Python para crear Rainbow Tables

Rainbow Tables con Python línea a línea

Lo primero que debemos hacer es importar la librería hashlib que es la que contiene las distintas funciones de hashing que utilizaremos para crear las rainbow tables con Python. Para ello, la primera línea del código debe ser la siguiente:

import hashlib

De esta forma tenemos disponibles las funciones incluidas en hashlib que nos ayudarán a crear las rainbow tables según la función de hashing que elijamos (MD5, SHA-256, etc.)

A continuación hacemos que el programa nos pida el hash que queremos buscar en la tabla:

hash = input("Introduce el hash a buscar en el diccionario: ").strip()

Con esta línea de código nos aseguramos de que se elimine cualquier espacio al final o al principio del hash, por si lo copiamos con algún espacio y no nos damos cuenta (algo que puede pasarnos si vamos demasiado deprisa).

Después hemos de indicarle a la herramienta la ruta del diccionario de contraseñas que queremos usar. Para ello usamos la siguiente línea de código:

dict_path = input("Introduce la ruta del archivo del diccionario de contrasenyas: ").strip()

La herramienta ya está preparada para pedirnos el hash y el diccionario que queremos usar, pero no es suficiente para que lea el contenido del diccionario. Para ello le decimos a la herramienta que lea la lista de palabras:

f = open(dict_path, "r", encoding='latin-1')

Una vez abierto al archivo del diccionario en modo lectura e introducido el hash, lo que queda es que la herramienta compruebe si dicho hash pertenece a alguna de las palabras del diccionario que le hemos indicado.

Para ello lo que haremos es, línea por línea, crear el hash de cada palabra con la función seleccionada (en nuestro caso MD5, pero como ya se ha dicho, se puede cambiar el código para que use otra función de hash incluida en hashlib).

Después de eso se comparará el hash creado con el introducido por el usuario, y si coinciden, nos devolverá la contraseña a la que pertenece dicho hash y la herramienta se cerrará. En caso de no coincidir, pasará a la siguiente línea, y así continuamente hasta llegar a la última. Si la herramienta no devuelve un resultado, significa que no ha encontrado ninguna palabra cuya conversión con esa función coincida con el hash introducido.

En el supuesto caso en que el archivo que le hemos introducido como ruta del diccionario no exista, nos avisará de que no puede abrir el archivo indicado.

Todo esto se hará mediante una sentencia try – except de Python:

try:
    for line in f:
        password = line.strip()
        hash_md5 = hashlib.md5(password.encode('utf-8')).hexdigest()
        if hash == hash_md5:
            print("El hash " + hash + " pertenece al password " + password)
            break
except FileNotFoundError:
    print("No se pudo abrir el archivo. Verifica la ruta.")

Y eso es todo. Como veis es bastante sencillo crear una herramienta de este tipo para tener nuestras propias rainbow tables con Python.

Y si queréis aprender más sobre Python y ciberseguridad, no dudéis en visitar nuestro curso de Herramientas para Hacking y Pentesting integradas en Python

Curso de Herramientas de Hacking con Python