Enumeración de servicios
Para esta sesión, vamos a ver una serie de mecanimos a la hora de enumerar los servicios más comunes que nos podemos encontrar en nuestro proceso de pentesting.
FTP
FTP (File Transfer Protocol) es un protocolo de red estándar utilizado para la transferencia de archivos entre un cliente y un servidor en una red TCP/IP, como Internet.
Fue diseñado para permitir la carga y descarga de archivos.
Características principales de FTP:
- Autenticación: Requiere usuario y contraseña para acceder al servidor, aunque también puede configurarse en modo "anónimo" (sin autenticación) para permitir el acceso público.
- Transferencias de archivos: Permite enviar y recibir archivos desde y hacia un servidor.
- Gestión de archivos: Soporta comandos para manejar archivos y directorios en el servidor, como crear, renombrar, eliminar y listar archivos y carpetas.
- Conexión de control y datos: FTP utiliza dos conexiones separadas: una para el control (comandos y respuestas) y otra para la transferencia de datos.
- Seguridad: La versión básica de FTP no cifra los datos, por lo que no es segura para transmitir información confidencial. Sin embargo, existen versiones seguras, como FTPS (FTP sobre SSL/TLS) y SFTP (Secure File Transfer Protocol, que usa el protocolo SSH) que proporcionan cifrado y mayor seguridad.
Uso común de FTP:
FTP es común en aplicaciones de administración de servidores web, donde se usa para cargar y descargar archivos del sitio web, hacer copias de seguridad y gestionar datos.
Es adecuado para transferencias grandes, pero, dado que no es seguro de forma predeterminada, suele utilizarse en redes de confianza o con versiones seguras (FTPS o SFTP).
TFTP
TFTP (Trivial File Transfer Protocol) es un protocolo de red simple diseñado para la transferencia de archivos en redes TCP/IP. A diferencia de FTP, TFTP es muy básico y no tiene autenticación ni encriptación, lo que lo hace menos seguro pero adecuado para situaciones donde la simplicidad y rapidez son prioritarias. Características principales de TFTP:
- Protocolo ligero: TFTP está diseñado para realizar transferencias de archivos de forma muy sencilla, con un conjunto mínimo de comandos.
- Sin autenticación: No requiere usuario ni contraseña, lo cual simplifica su uso pero reduce la seguridad.
- Sin encriptación: La falta de cifrado hace que cualquier archivo transferido sea vulnerable a ser interceptado.
- Basado en UDP: TFTP usa el protocolo UDP (en el puerto 69), lo que hace que las transferencias sean rápidas pero sin confirmación de entrega completa o control de errores exhaustivo.
- Operaciones básicas: Permite solamente leer y escribir archivos desde o hacia un servidor; no tiene comandos para listar directorios, renombrar o eliminar archivos.
Uso común de TFTP
Dado que es un protocolo no seguro, TFTP se utiliza en redes locales o en entornos controlados. Es comúnmente empleado para tareas como:
- Carga y actualización de configuraciones en dispositivos de red (como routers, switches y puntos de acceso).
- Actualización de firmware en equipos que lo soportan.
- Arranque remoto de sistemas en redes locales (por ejemplo, usando PXE para arrancar computadoras sin disco duro).
En resumen, TFTP es un protocolo útil para transferencias rápidas y simples en entornos seguros y confiables, donde la seguridad avanzada y el control de archivos no son necesarios.
Técnicas de enumeración FTP
Obteniendo la versión
nmap -sV -p21,2121 192.168.100.129
Haciendo uso del script banner de nmap:
nmap -sV -p21,2121 -sC banner 192.168.100.129
O incluso, intentando conectarnos directamente via Telnet;
telnet 192.168.100.129 21
Podemos lanzar los scripts relacionados con FTP que posee nmap:
nmap -sV -p21,2121 -sC "ftp*" 192.168.100.129
Si se permite el login anónimo podríamos acceder al servidor y descargar contenido:
ftp 192.168.100.129
get <archivo>
SMB
SMB (Server Message Block) es un protocolo de red utilizado principalmente para compartir archivos, impresoras y recursos en una red local (LAN). Fue desarrollado originalmente por IBM y posteriormente extendido y popularizado por Microsoft. Este protocolo permite que dispositivos de una red, como computadoras y servidores, accedan y administren archivos de forma compartida, además de facilitar otras funciones de comunicación entre equipos. Principales características de SMB
-
Intercambio de archivos: SMB permite que varios usuarios accedan y manipulen archivos almacenados en servidores o computadoras de una red, ofreciendo servicios como abrir, leer, escribir, y cerrar archivos de forma remota.
-
Impresión remota: Además de archivos, SMB facilita el uso de impresoras en red. Con este protocolo, es posible enviar documentos a una impresora conectada a otro dispositivo en la red.
-
Autenticación y permisos: SMB incluye mecanismos de autenticación y permisos que permiten a los administradores controlar quién puede acceder a ciertos archivos o recursos. Esto es importante para la seguridad, especialmente en redes empresariales.
Versiones de SMB
- SMBv1: La primera versión ampliamente usada de SMB, que incluía vulnerabilidades como las explotadas en el ataque de ransomware WannaCry.
- SMBv2 y SMBv3: Estas versiones mejoraron la eficiencia y seguridad del protocolo, reduciendo la vulnerabilidad a ciertos tipos de ataques y añadiendo soporte para cifrado.
Usos de SMB en la seguridad informática
SMB es importante en la seguridad informática porque, si no se configura correctamente, puede ser vulnerable a ataques. Los atacantes pueden aprovechar conexiones SMB abiertas o mal configuradas para acceder a archivos, instalar malware o ejecutar ataques como SMB relay o brute force en el contexto de redes corporativas.
Nmap, por ejemplo, ofrece scripts como smb-enum-shares o smb-os-discovery que permiten detectar y explorar servicios SMB en redes para evaluar su seguridad.
Técnicas de enumeración SMB
Existen múltiples herramientas para llevar a cabo la enumeración de este servicio. Todas ellas nos permiten, como se puede intuir leyendo el título de la sección, la enumeración y recopilación de todo tipo de información sobre el servicio SMB para, más adelante, pasar a la fase de explotación haciendo uso de la misma.
Algunas de las herramientas más conocidas y utilizadas son:
- nbtscan: permite escanear servicios NetBIOS, entre ellos SMB.
- smbap: es una herramienta de código abierto diseñada para facilitar la enumeración y el acceso a recursos compartidos en redes que utilizan el protocolo SMB (Server Message Block). Es especialmente útil para realizar auditorías de seguridad y pruebas de penetración en entornos de Windows. SMBMap permite a los usuarios explorar y verificar los permisos de acceso a los recursos compartidos en dispositivos que utilizan SMB, lo que puede ayudar a identificar vulnerabilidades o configuraciones inseguras.
- nmap: también posee scripts específicos para SMB
- smbclient: es una herramienta de línea de comandos utilizada para interactuar con servidores que implementan el protocolo SMB (Server Message Block). Forma parte del paquete de software Samba, que permite a sistemas operativos basados en Unix y Linux comunicarse con redes de Windows y acceder a recursos compartidos, como archivos e impresoras. smbclient actúa como un cliente FTP para recursos compartidos de SMB, permitiendo la navegación, el acceso y la manipulación de archivos.
- rpcclient: es una herramienta de línea de comandos que forma parte del paquete Samba, diseñada para interactuar con el servicio Remote Procedure Call (RPC) de sistemas que utilizan el protocolo SMB (Server Message Block). Esta herramienta permite a los usuarios realizar una variedad de tareas administrativas y de gestión de red en servidores que implementan el servicio RPC, que es común en sistemas Windows.
- enum4linux: que no es más que una metaherramienta que combina información obtenida de smbclient, rpclient, net y nmblookup.
Si queremos comenzar a enumerar con una herramienta ya conocida, como es nmap, lanzando los scripts default, podemos hacer:
nmap -sC -p 139,445 -sV 192.168.100.129
Otros scripts que se pueden utilizar con nmap para SMB son: + smb-protocols: descubrir que versiones maneja la víctima (<SMBv3 sería vulnerable) + smb-os-discovery + smb-enum-shares + smb-enum-users + smb-vuln-*: para probar vulnerabilidades concretas de SMB
Con smbmap obtendremos una lista de shares:
smbmap -H 192.168.100.129 -R
Quote
Main arguments:
-H HOST IP of host
--host-file FILE File containing a list of hosts
-u USERNAME Username, if omitted null session assumed
-p PASSWORD Password or NTLM hash
-s SHARE Specify a share (default C$), ex 'C$'
-d DOMAIN Domain name (default WORKGROUP)
-P PORT SMB port (default 445)
-v Return the OS version of the remote host
--admin Just report if the user is an admin
Y si quisiéramos conectarnos directamente al servidor, podríamos usar smbclient. Para listar los shares usando una sesión nula (sin credenciales):
smbclient -N -L //192.168.100.129
smbclient //192.168.100.129/tmp
También con la herramiento rpclient podemos ejecutar diversas peticiones para obtener información sobre SMB tras conectarnos al servidor:
rpcclient -U "" 192.168.100.129
Petción | Descripción |
---|---|
srvinfo | Información del servidor |
enumdomains | Enumerar todos los dominios desplegados en la red |
querydominfo | Proporciona dominio, servidor e información de usuario de los dominios existentes domains. |
netshareenumall | Enumera los shares disponibles |
netsharegetinfo |
Información acerca de algún share específico |
enumdomusers | Enumera usuarios del dominio |
queryuser |
Proporciona información sobre un usuario concreto |
Y, como ya comnentábamos, podríamos obtener una salida combinada con enum4linux:
enum4linux 192.168.100.129 -A
NFS
NFS (Network File System) es un protocolo de red que permite compartir archivos entre computadoras en una red de manera que los usuarios puedan acceder a ellos como si estuvieran en su sistema local. Fue desarrollado originalmente por Sun Microsystems en la década de 1980 y se ha convertido en un estándar ampliamente utilizado, especialmente en sistemas Unix y Linux, aunque también es compatible con otros sistemas operativos. Principales características de NFS:
-
Transparencia: Los archivos y directorios compartidos a través de NFS aparecen en la red como parte del sistema de archivos local. Esto permite que los usuarios accedan a archivos remotos sin necesidad de moverlos o copiarlos.
-
Arquitectura cliente-servidor: NFS sigue un modelo en el que un servidor central aloja los archivos y los distribuye a los clientes que se conectan a él. Los clientes pueden montar los sistemas de archivos del servidor en su propio sistema y trabajar con los archivos directamente.
-
Protocolos de red: NFS utiliza típicamente el protocolo TCP/IP para la transmisión de datos en la red. También puede emplear otros protocolos de seguridad, como Kerberos, para autenticación y cifrado.
-
Permisos y control de acceso: NFS ofrece control de acceso mediante permisos de archivos Unix (propiedad, grupo y permisos de lectura, escritura y ejecución) y se puede integrar con otros sistemas de autenticación y seguridad.
-
Compatibilidad y escalabilidad: Es compatible con varios sistemas operativos y permite que varias máquinas se conecten a los archivos compartidos, haciéndolo ideal para redes de oficina y entornos de computación distribuida.
Ejemplos de uso de NFS
- Almacenamiento compartido en servidores: Permite que varias máquinas accedan a una misma base de datos o sistema de archivos.
- Entornos de desarrollo: Facilita la colaboración entre desarrolladores, permitiendo el acceso a los mismos archivos desde múltiples dispositivos.
- Virtualización y contenedores: En entornos donde se crean instancias de contenedores o máquinas virtuales, NFS permite almacenar archivos de configuración y datos de manera centralizada.
NFS es una solución eficiente y robusta para compartir archivos en redes internas de manera segura y escalable.
¿Cómo funciona NFS?
Primero, el cliente solicitará montar un directorio de un host remoto en un directorio local de la misma manera que puede montar un dispositivo físico. El servicio de montaje actuará entonces para conectarse al demonio de montaje correspondiente mediante RPC.
El servidor comprueba si el usuario tiene permiso para montar el directorio solicitado. A continuación devolverá un manejador de fichero que identifica unívocamente cada fichero y directorio que está en el servidor.
Si alguien quiere acceder a un archivo utilizando NFS, se realiza una llamada RPC a NFSD (el demonio NFS) en el servidor. Esta llamada toma parámetros como:
- El manejador del archivo
- El nombre del archivo al que se quiere acceder
- ID de usuario del usuario
- El ID de grupo del usuario
Estos datos se utilizan para determinar los derechos de acceso al archivo especificado. Esto es lo que controla los permisos de usuario, es decir, la lectura y escritura de archivos.
Ejemplo de enumeración de NFS
El primer paso es como siempre, realizar un escaneo general de la máquina:
nmap -p- -sT -T5 10.10.192.87
Cuando descubrimos que existe un servicio NFS, podemos listar las comparticiones visibles con:
showmount -e 10.10.192.87
Nos creamos un directorio ad-hoc y montamos el share que hemos visto anteriormente:
mkdir /tmp/mount
sudo mount -t nfs 10.10.192.87:home /tmp/mount/ -nolock
SMTP
SMTP (Simple Mail Transfer Protocol) es un protocolo de comunicación usado para enviar correos electrónicos a través de redes de internet. Es fundamental en la transmisión de mensajes de correo entre servidores de correo electrónico y desempeña un papel clave en el sistema de correo electrónico.
Funcionamiento básico de SMTP
- Envío del correo: Cuando un usuario envía un correo, su cliente de correo (como Outlook o Gmail) usa SMTP para enviar el mensaje al servidor de correo saliente.
- Transferencia entre servidores: El servidor de correo del remitente utiliza SMTP para entregar el mensaje al servidor de correo del destinatario.
- Recepción del correo: Una vez que el servidor del destinatario recibe el mensaje, el usuario puede leerlo a través de protocolos de recepción como IMAP o POP3.
Características clave de SMTP
- Conexión: Opera en el puerto 25 (aunque también usa 465 o 587 para conexiones seguras).
- Simples comandos y respuestas: Utiliza comandos básicos, como
HELO
,MAIL
,RCPT
, yDATA
, para establecer la conexión y transmitir el mensaje. - Textos sin formato: SMTP fue diseñado para enviar mensajes de texto sin formato; para enviar contenido multimedia, se usa una codificación adicional (como MIME).
SMTP es uno de los protocolos de red más antiguos y sigue siendo el estándar para enviar correos electrónicos hoy en día.
Enumeración SMTP
Iniciamos, como casi siempre, la enumeración con un escaneo con nmap
nmap -p- -sT -T5 10.10.192.87
Si descubrimos un servidor SMTP (puerto 25 por defecto), podemos por ejemplo enumerar usuarios con algú nombre o lista que hayamos recolectado previamente:
smtp-user-enum -M VRFY -u admin -t 10.10.192.87
smtp-user-enum -M VRFY -U lista_usuarios.txt -t 10.10.192.87
Podemos intentar ver qué comandos se nos permiten para interactuar con el servidor de correo o descubrir si es un open-relay:
nmap -p25 --script smtp-commands 10.10.192.87
nmap -p25 --script smtp-open-relay 10.10.192.87 -v