Bienvenido a TryHackMe #9 – «Servicios de Red: Network Services». En este fascinante viaje, exploraremos los servicios fundamentales que impulsan las comunicaciones en red. Desglosaremos la esencia de cada servicio, comprendiendo su funcionamiento y las implicaciones en la seguridad cibernética.

¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?

Entendiendo SMB

SMB (Server Message Block Protocol) es un protocolo de comunicación cliente-servidor que se utiliza para compartir el acceso a archivos, impresoras, puertos serie y otros recursos en una red. Los servidores hacen que los sistemas de archivos y otros recursos estén disponibles para los clientes en la red. Los equipos cliente pueden tener sus propios discos duros, pero también desean acceder a los sistemas de archivos e impresoras compartidos en los servidores.

El protocolo SMB se conoce como protocolo de solicitud de respuesta, lo que significa que transmite múltiples mensajes entre el cliente y el servidor para establecer una conexión. Los clientes se conectan a los servidores mediante TCP/IP, NetBEUI o IPX/SPX.

¿Cómo funciona SMB?

Una vez que han establecido una conexión, los clientes pueden enviar comandos (SMB) al servidor que les permiten acceder a recursos compartidos, abrir archivos, leer y escribir archivos. Sin embargo, en el caso de SMB, estas cosas se hacen a través de la red.

¿Qué ejecuta SMB?

Los sistemas operativos Microsoft Windows desde Windows 95 han incluido compatibilidad con el protocolo SMB de cliente y servidor. Samba, un servidor de código abierto que admite el protocolo SMB, se lanzó para los sistemas Unix.

Enumeración de SMB

La enumeración es el proceso de recopilación de información sobre un objetivo para encontrar posibles vectores de ataque y ayudar en la explotación. Este proceso es esencial para que un ataque tenga éxito, ya que perder el tiempo con exploits que no funcionan o pueden colapsar el sistema puede ser una pérdida de energía. La enumeración se puede utilizar para recopilar nombres de usuario, contraseñas, información de red, nombres de host, datos de aplicaciones, servicios o cualquier otra información que pueda ser valiosa para un atacante.

SMB

Por lo general, hay unidades compartidas SMB en un servidor que se pueden conectar y usar para ver o transferir archivos. SMB a menudo puede ser un excelente punto de partida para un atacante que busca descubrir información confidencial: se sorprendería de lo que a veces se incluye en estos recursos compartidos.

Escaneo de puertos

El primer paso de la enumeración es realizar un escaneo de puertos para obtener la mayor cantidad de información posible sobre los servicios, las aplicaciones, la estructura y el sistema operativo de la máquina de destino.

Enum4Linux

Enum4linux es una herramienta que se utiliza para enumerar recursos compartidos SMB en sistemas Windows y Linux. Es básicamente un contenedor de las herramientas del paquete Samba y facilita la extracción rápida de información del objetivo perteneciente a SMB. Está instalado de forma predeterminada en Parrot y Kali, sin embargo, si necesita instalarlo, puede hacerlo desde github

La sintaxis de Enum4Linux es agradable y simple: “enum4linux [opciones] ip”

-U obtener lista de usuarios

-M obtener lista de máquinas

-N obtener volcado de lista de nombres (diferente de -U y -M)

-S obtener lista compartida

-P obtener información de política de contraseñas

-G obtener lista de miembros y grupos

-a todo lo anterior (enumeración básica completa)

Explotación de SMB

Tipos de explotación SMB

Si bien existen vulnerabilidades como CVE-2017-7494 que pueden permitir la ejecución remota de código mediante la explotación de SMB, es más probable que encuentre una situación en la que la mejor manera de ingresar a un sistema se deba a configuraciones incorrectas en el sistema. En este caso, vamos a explotar el acceso compartido anónimo de SMB, una configuración incorrecta común que puede permitirnos obtener información que conducirá a un shell.

Desglose del método

Entonces, de nuestra etapa de enumeración, sabemos:

    – La ubicación compartida de SMB

    – El nombre de una acción SMB interesante

Cliente SMB

Debido a que estamos tratando de acceder a un recurso compartido SMB, necesitamos un cliente para acceder a los recursos en los servidores. Usaremos SMBClient porque es parte de la suite de samba predeterminada. Si bien está disponible de forma predeterminada en Kali y Parrot, si necesita instalarlo, puede encontrar la documentación aquí. Podemos acceder de forma remota al recurso compartido SMB usando la sintaxis:

smbclient //[IP]/[SHARE]

Seguido de las etiquetas:

-U [nombre] : para especificar el usuario

-p [puerto]: para especificar el puerto

Entendiendo Telnet

¿Qué es Telnet?

Telnet es un protocolo de aplicación que le permite, con el uso de un cliente, conectarse y ejecutar comandos en una máquina remota que aloja un servidor telnet. El cliente establecerá una conexión con el servidor y se convertirá en una terminal virtual, lo que le permitirá interactuar con el host remoto.

Reemplazo

Telnet envía todos los mensajes en texto claro y no tiene mecanismos de seguridad específicos. Por eso ha sido reemplazado por SSH en la mayoría de las implementaciones.

¿Cómo funciona Telnet?

Puede conectarse a un servidor telnet con la siguiente sintaxis: “telnet [ip] [puerto]”

Enumeración de Telnet

Las vulnerabilidades que podrían ser potencialmente triviales de explotar no siempre saltan a la vista. Por esa razón, especialmente cuando se trata de enumerar servicios de red, debemos ser minuciosos en nuestro método. 

Escaneo de puertos

Comencemos de la misma manera que lo hacemos habitualmente, un escaneo de puertos, para encontrar la mayor cantidad de información posible sobre los servicios, aplicaciones, estructura y sistema operativo de la máquina de destino. Escanea la máquina con nmap.

Tipos de explotación de Telnet

Telnet, al ser un protocolo, es en sí mismo inseguro por las razones que mencionamos anteriormente. Carece de cifrado, por lo que envía toda la comunicación en texto sin formato y, en su mayor parte, tiene un control de acceso deficiente. Sin embargo, existen CVE para los sistemas de cliente y servidor Telnet, por lo que al explotar puede verificarlos en:

Un CVE, abreviatura de Vulnerabilidades y exposiciones comunes, es una lista de fallas de seguridad informática divulgadas públicamente. Cuando alguien se refiere a un CVE, generalmente se refiere al número de identificación de CVE asignado a una falla de seguridad. Sin embargo, es mucho más probable que encuentre una configuración incorrecta en la configuración o el funcionamiento de telnet que le permitirá explotarla.

Desglose del método

Entonces, de nuestra etapa de enumeración, sabemos:

    – Hay un servicio telnet mal oculto ejecutándose en esta máquina

    – El servicio en sí está marcado como “puerta trasera”

    – Tenemos un posible nombre de usuario de “Skidy” implicado

¡Usando esta información, intentemos acceder a este puerto telnet y usarlo como punto de apoyo para obtener un shell inverso completo en la máquina!

Conexión a Telnet

Puede conectarse a un servidor telnet con la siguiente sintaxis:

    “telnet [ip] [puerto]”

Tendremos que tener esto en cuenta mientras tratamos de explotar esta máquina.

¿Qué es una Shell Inversa?

Un “shell” se puede describir simplemente como una pieza de código o programa que se puede usar para obtener código o ejecutar comandos en un dispositivo. Un shell inverso es un tipo de shell en el que la máquina objetivo se comunica con la máquina atacante. La máquina atacante tiene un puerto de escucha, en el que recibe la conexión, lo que da como resultado que se logre la ejecución del código o comando.

Entendiendo FTP

Es un protocolo utilizado para permitir la transferencia remota de archivos a través de una red. Utiliza un modelo cliente-servidor para hacer esto y, como veremos más adelante, transmite comandos y datos de una manera muy eficiente.

¿Cómo funciona FTP?Una sesión típica de FTP opera usando dos canales:

  • un canal de comando (a veces llamado control)
  • un canal de datos.

FTP opera usando un protocolo cliente-servidor. El cliente inicia una conexión con el servidor, el servidor valida las credenciales de inicio de sesión proporcionadas y luego abre la sesión. Mientras la sesión está abierta, el cliente puede ejecutar comandos FTP en el servidor.

Activo vs Pasivo

El servidor FTP puede admitir conexiones activas o pasivas, o ambas. 

  • En una conexión FTP activa, el cliente abre un puerto y escucha. Se requiere que el servidor se conecte activamente a él. 
  • En una conexión FTP pasiva, el servidor abre un puerto y escucha (pasivamente) y el cliente se conecta a él. 

Esta separación de la información de los comandos y los datos en canales separados es una forma de poder enviar comandos al servidor sin tener que esperar a que finalice la transferencia de datos actual. Si ambos canales estuvieran interconectados, solo podría ingresar comandos entre transferencias de datos, lo que no sería eficiente ni para transferencias de archivos grandes ni para conexiones de Internet lentas.

Más detalles:

Puede encontrar más detalles sobre la función técnica y la implementación de FTP en el sitio web del Grupo de Trabajo de Ingeniería de Internet:  https://www.ietf.org/rfc/rfc959.txt . El IETF es una de varias agencias de estándares que definen y regulan los estándares de Internet.

Enumeración de FTP

Si se queda atascado usando alguna herramienta, siempre puede usar “herramienta [-h / -help / –help]” para obtener más información sobre su función y sintaxis. Igualmente, las páginas man son extremadamente útiles para este propósito. Se puede llegar a ellos usando “man [herramienta]”.

Método

Vamos a explotar un inicio de sesión FTP anónimo, para ver a qué archivos podemos acceder y si contienen alguna información que nos permita abrir un shell en el sistema. Este es un camino común en los desafíos de CTF e imita una implementación descuidada de la vida real de los servidores FTP.

Recursos

Como vamos a iniciar sesión en un servidor FTP, debemos asegurarnos de que haya un cliente FTP instalado en el sistema. Debería haber uno instalado por defecto en la mayoría de los sistemas operativos Linux. Puede probar si hay uno escribiendo “ftp” en la consola. Si aparece un mensaje que dice: “ftp>”, entonces tiene un cliente FTP en funcionamiento en su sistema. Si no, es una simple cuestión de usar “sudo apt install ftp” para instalar uno.

Métodos de enumeración alternativos

Vale la pena señalar que algunas versiones vulnerables de in.ftpd y algunas otras variantes del servidor FTP devuelven diferentes respuestas al comando “cwd” para los directorios de inicio que existen y los que no. Esto puede explotarse porque puede emitir comandos cwd antes de la autenticación, y si hay un directorio de inicio, es más que probable que haya una cuenta de usuario que lo acompañe. Si bien este error se encuentra principalmente en los sistemas heredados, vale la pena conocerlo como una forma de explotar FTP.

Esta vulnerabilidad está documentada en:  https://www.exploit-db.com/exploits/20745 

Explotando FTP

De manera similar a Telnet, cuando se usa FTP, tanto los canales de comando como los de datos no están encriptados. Cualquier dato enviado a través de estos canales puede ser interceptado y leído. Dado que los datos de FTP se envían en texto sin formato, si se produce un ataque MiM, un atacante podría revelar cualquier cosa enviada a través de este protocolo (como contraseñas). Un artículo escrito por JSCape  demuestra y explica este proceso utilizando ARP-Poisoning para engañar a una víctima para que envíe información confidencial a un atacante, en lugar de a una fuente legítima.

Al observar un servidor FTP desde la posición en la que nos encontramos para esta máquina, una vía que podemos aprovechar es la configuración de contraseñas débiles o predeterminadas.

Desglose del método

Entonces, de nuestra etapa de enumeración, sabemos:

    – Hay un servidor FTP ejecutándose en esta máquina

    – Tenemos un posible nombre de usuario

Con esta información, intentemos aplicar fuerza bruta a la contraseña del servidor FTP.

Hidra

Hydra es una herramienta de descifrado de contraseñas en línea muy rápida, que puede realizar ataques rápidos de diccionario contra más de 50 protocolos, incluidos Telnet, RDP, SSH, FTP, HTTP, HTTPS, SMB, varias bases de datos y mucho más. Hydra viene de forma predeterminada tanto en Parrot como en Kali, sin embargo, si lo necesita, puede encontrar el GitHub aquí

La sintaxis del comando que vamos a usar para encontrar las contraseñas es esta:“hidra -t 4 -l dale -P /usr/share/wordlists/rockyou.txt -vV 10.10.10.6 ftp”

SECCIÓN FUNCIÓN

hidra Ejecuta la herramienta hidra

-t 4 Número de conexiones paralelas por objetivo

-l [usuario] Señala al usuario cuya cuenta está intentando comprometer

-P [ruta al diccionario] Señala al archivo que contiene la lista de posibles contraseñas

-vV Establece el modo detallado en muy detallado, muestra la combinación de inicio de sesión y contraseña para cada intento

[IP de la máquina] La dirección IP de la máquina de destino

ftp/protocolo Establece el protocolo

Task 2  Understanding SMB

Todas las respuestas se encuentran en la descripción de la tarea.

1 – What does SMB stand for?    

Server Message Block

2 – What type of protocol is SMB?    

response-request

3 – What do clients connect to servers using?    

TCP/IP

4 – What systems does Samba run on?

Unix

Task 3  Enumerating SMB

Conduct an nmap scan of your choosing, How many ports are open?

3

Ejecutemos un escaneo nmap. Como recordatorio, esto es lo que significan las banderas:

  • -sV: escaneo de servicio/versión
  • –script vuln: ejecute un escaneo de secuencias de comandos con las secuencias de comandos vuln .
  • -oN nmap-$ip.out: salida en formato normal al archivo

nmap -sV –script vuln -oN nmap-$ip.out $ip

Ahora para comprobar si hay puertos abiertos a partir de los resultados del análisis.

cat nmap-$ip.out | grep abierto

What ports is SMB running on?

445

Concluimos nuestro recorrido por TryHackMe #9, donde desentrañamos los entresijos de los servicios de red. ¡Avanza con confianza y aplica estas habilidades en desafíos más complejos de ciberseguridad!

Felicidades has finalizado – Happy Hacking!

Hacking Ético Ofensivo. 100% Practico en Red Team. +42hs

Aprende Hacking Ético y Pentesting 100% Practicando. Laboratorios donde te explicamos detalladamente cada herramienta: https://achirou.com/ctf-red-team

Lo que aprenderás

  • Hacking Ético Ofensivo
  • Ser un Hacker Ético Profesional Ofensivo (Red Team)
  • Utilizar Herramientas para Hacking
  • Montar un Laboratorio para hacer las Prácticas
  • Introducción a Redes
  • Modelo OSI
  • Dirección IP, Protocolos de Red y Puertos
  • Conexiones Inversas, Directas y Lado del Cliente
  • Las 5 Fases del Pentesting
  • Herramientas Útiles para Realizar Escaneo
  • Herramientas Útiles para Encontrar Vulnerabilidades
  • Herramientas Útiles para Obtener Acceso al Sistema
  • Utilizar Tryhackme
  • Diferencias entre Red Team y Blue Team
  • Cómo Realizar Investigaciones Autodidactas
  • Manejar Linux como todo un Profesional
  • Usa la Herramienta Nmap como todo un Profesional
  • Entender, Escanear y Explotar el Servicio de Red SMB
  • Entender, Escanear y Explotar el Servicio de Red Telnet
  • Entender, Escanear y Explotar el Servicio de Red FTP
  • Entender, Escanear y Explotar el Servicio de Red NFS
  • Entender, Escanear y Explotar el Servicio de Red SMTP
  • Entender, Escanear y Explotar el Servicio de Red MySQL
  • Cómo Funcionan y se Crean los Sitios Web
  • Cómo Funciona toda la Web
  • Uso de la Herramienta Burp Suite como todo un profesional
  • Entender, Enumerar, Explotar y Reconocer las TOP 10 Vulnerabilidades de OWASP
  • Poner en Práctica la Explotación de las Vulnerabilidades OWASP
  • Entender, Enumerar, Reconocer y Explotar la Vulnerabilidad de Carga de Archivos
  • Escenarios Reales donde Prácticar Pentesting Ofensivo

¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?