Puerto 389: LDAP

LDAP (Lightweight Directory Access Protocol) es un protocolo de aplicación que se utiliza para acceder y gestionar servicios de directorio de manera centralizada. Los directorios LDAP se utilizan comúnmente para almacenar información sobre usuarios, grupos, dispositivos y otros objetos en una red. LDAP generalmente opera sobre el puerto 389 para comunicaciones no cifradas y sobre el puerto 636 para comunicaciones cifradas mediante SSL/TLS (LDAPS).

Descripción de LDAP

  • Protocolo: LDAP es un protocolo basado en TCP/IP que proporciona un método estándar para acceder y gestionar directorios distribuidos.

  • Puerto: El puerto 389 es el puerto estándar para LDAP en comunicaciones no cifradas.

  • Funcionalidad: LDAP permite realizar operaciones como la búsqueda, modificación y eliminación de entradas en un directorio. Es esencial para la autenticación y autorización en muchas aplicaciones empresariales y servicios de red.

  • Autenticación y Cifrado: Aunque LDAP sobre el puerto 389 no utiliza cifrado por defecto, puede configurarse para usar STARTTLS para asegurar las comunicaciones. Para conexiones seguras, se utiliza LDAPS sobre el puerto 636.

Relevancia en Pentesting

Importancia de LDAP en Pentesting:

  • Enumeración de Usuarios y Grupos: Los pentesters utilizan LDAP para enumerar usuarios, grupos y otros objetos en el directorio, lo que puede proporcionar información crítica para la fase de reconocimiento.

  • Autenticación y Autorización: LDAP es a menudo una pieza central en la infraestructura de autenticación de una organización, y las debilidades en su configuración pueden permitir el acceso no autorizado.

  • Configuraciones Inseguras: La falta de cifrado y configuraciones de acceso inapropiadas pueden exponer información sensible. Los pentesters buscan configuraciones de enlace anónimo y otras configuraciones inseguras que puedan ser explotadas.

Ejemplo de Escaneo de LDAP con Nmap

Para identificar servidores LDAP activos y recopilar información adicional sobre los servicios LDAP, se puede utilizar Nmap con scripts NSE específicos.

Comando Nmap

nmap -p 389 --script ldap-rootdse,ldap-search,ldap-novell-getpass target-ip

Explicación del Comando

  • nmap: Ejecuta el comando Nmap.

  • -p 389: Especifica que Nmap debe escanear el puerto 389, el puerto predeterminado para LDAP.

  • --script ldap-rootdse,ldap-search,ldap-novell-getpass: Utiliza scripts NSE para detectar configuraciones y vulnerabilidades en el servicio LDAP.

    • ldap-rootdse: Recupera información del Root DSE (DSA-Specific Entry), que proporciona detalles sobre el servidor LDAP.

    • ldap-search: Realiza búsquedas LDAP en el servidor.

    • ldap-novell-getpass: Intenta recuperar contraseñas de usuarios en servidores Novell LDAP.

  • target-ip: Especifica la dirección IP del objetivo.

Ejemplo de Salida de Nmap

Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-18 22:30 UTC
Nmap scan report for 192.168.1.200
Host is up (0.0021s latency).

PORT    STATE SERVICE
389/tcp open  ldap
| ldap-rootdse: 
|   LDAP Responses: 
|     currentTime: 20240518223000Z
|     subschemaSubentry: cn=Subschema
|     dsServiceName: cn=Directory Service,cn=Windows NT,c=US
|     namingContexts: DC=example,DC=com
|     defaultNamingContext: DC=example,DC=com
|     schemaNamingContext: CN=Schema,CN=Configuration,DC=example,DC=com
|     configurationNamingContext: CN=Configuration,DC=example,DC=com
|     rootDomainNamingContext: DC=example,DC=com
|     supportedLDAPVersion: 3
|     supportedLDAPVersion: 2
|     supportedControl: 1.2.840.113556.1.4.319
|     supportedControl: 1.2.840.113556.1.4.801
|_    supportedExtension: 1.3.6.1.4.1.1466.20037
| ldap-search:
|   Context: DC=example,DC=com
|     dn: DC=example,DC=com
|       dc: example
|       objectClass: top
|       objectClass: domain
|       distinguishedName: DC=example,DC=com
|     dn: CN=Users,DC=example,DC=com
|       cn: Users
|       objectClass: top
|       objectClass: container
|       distinguishedName: CN=Users,DC=example,DC=com
|     dn: CN=John Doe,CN=Users,DC=example,DC=com
|       cn: John Doe
|       sn: Doe
|       givenName: John
|       objectClass: top
|       objectClass: person
|       objectClass: organizationalPerson
|       objectClass: user
|       distinguishedName: CN=John Doe,CN=Users,DC=example,DC=com
| ldap-novell-getpass: 
|   Account 'admin' has password 'password123' (plaintext)
|_  Accounts found: 1

Nmap done: 1 IP address (1 host up) scanned in 10.23 seconds

Interpretación de la Salida

  • Host is up: Indica que el sistema objetivo está en línea y responde.

  • 389/tcp open ldap: El puerto 389 está abierto y el servicio LDAP está activo.

  • ldap-rootdse: Recupera información del Root DSE, que proporciona detalles sobre la configuración del servidor LDAP.

    • currentTime: Hora actual del servidor LDAP.

    • namingContexts: Contextos de nombres disponibles en el servidor (e.g., DC=example,DC=com).

    • supportedLDAPVersion: Versiones de LDAP soportadas (v2 y v3).

  • ldap-search: Realiza una búsqueda LDAP en el contexto DC=example,DC=com.

    • dn: DC=example,DC=com: Entrada de directorio para el dominio example.com.

    • dn: CN=Users,DC=example,DC=com: Contenedor de usuarios.

    • dn: CN=John Doe,CN=Users,DC=example,DC=com: Entrada de usuario para John Doe.

  • ldap-novell-getpass: Intenta recuperar contraseñas de usuarios en servidores Novell LDAP.

    • Account 'admin' has password 'password123' (plaintext): Indica que la cuenta admin tiene la contraseña password123 en texto plano.

Última actualización