Enumeración en Ethical Hacking

* Este post corresponde a la serie de apuntes del Learning Path «Become an Ethical Hacker» de LinkedIn Learning.
* Todos los comandos mencionados son para ser ejecutados desde Linux a no ser que se diga lo contrario.

Enumeration es el proceso de identificar nombres de usuario, direcciones del sistema, recursos de red, servicios y otras características de un objetivo. El objetivo es entender el target del ataque antes de testearlo. Forma parte de la fase 1 de ethical hacking: recolección de información o reconnaissance.

Contexts

El código se ejecuta en forma de procesos, los cuales operan en uno de los siguientes modos (en realidad los procesos suelen ir cambiando de un modo a otro por ejemplo operando en modo kernel cuando se ha de hacer una llamada de sistema):

User mode

  • Corren en su propio espacio de direcciones
  • Hace llamadas de sistema para acceder al resto de recursos del sistema

Kernel o System mode

  • Corren procesos con acceso a todos los recursos del sistema (privileged)
  • Se divide en 1) Kernel interrupt, para código ejecutado como resultado de una interrupción [+ info] y 2) Kernel user, para peticiones de usuario a través de llamadas de sistema.

Los OS proporcionan diferentes niveles de acceso a los recursos, a través de anillos de protección. El de nivel 0 (kernel mode) tiene acceso directo al hardware como la CPU o la memoria. Los niveles 1/2 no se usaban hasta que pasó a usarlos el hypervisor. Finalmente el tercer nivel es el de usuario. Ésto puede variar según la arquitectura del host.

En Windows, la cuenta local SYSTEM sería el análogo a «root». Esta cuenta corre todos los procesos de sistema. Quizá tenga otros usuarios administradores, pero no tendrán todos los permisos que tiene SYSTEM.

NetBios, SMB, Samba y RPC

  • NetBIOS (Network basic I/O system): Es una API (requiere del uso de protocolos de transporte para transportar los payloads) que permite a otros hosts de la misma LAN comunicarse con él. Usa los puertos 137/TDP (Name Service), 138/UDP (Datagram distribution service) y 139/TCP (NetBIOS over TCP/IP)
  • SMB (Server Message Block): permite habilitar acceso compartido a cuentas, ficheros, impresoras y demás, no sólo a nivel LAN si no también WAN. SAMBA es una implementación libre de SMB.
  • RPC se usa para implementar comunicaciones cliente-servidor. Un programa en el cliente haría una llamada a una subrutina que se ejecutaría en el servidor. Microsoft RPC es una implementación extendida que usa SMB over TCP/IP. En Windows lo usan por ejemplo sus servidores DNS, MS Exchange o MAPI.

Local Host Enumeration

Linux profiling

Windows profiling

Microsoft ofrece unas herramientas «PsTools» que nos permiten obtener bastante información sobre el sistema local, así como de sistemas remotos (si éstos lo permiten)

Windows network interface

Linux network interface

Remote Hosts Enumeration

Enumerating SMB from Linux

SMB (o Samba en Linux) son protocolos clave para los pentesters. Podemos enumerar la red mediante «nbtscan«

Kali viene con muchos SMB scripts para ser usados con nmap y enumerar así dominios, grupos, procesos, sesiones, shares y usuarios. en /usr/share/nmap/scripts

Otras herramientas de Kali para enumerar hosts Linux son enum4linux, smbmap o shareenum

rpcclient es útil para enumerar máquinas Windows, las cuales por cierto, no aceptan null sessions con lo que se ha de indicar un usuario/password. Al establecer la conexión aparecerá el rpcclient prompt donde poder ejecutar los comandos

Enumerating SMB from Windows

Windows ofrece tools como netbiosscan, nbtenum (o deepnetscanner), MiTec Network Scanner, ShareEnum de la propia Microsoft o SoftPerfect Network Scanner.

SNMP (Simple Network Management Protocol) enumeration

SNMP permite gestionar máquinas tanto Windows como Linux, a través de un agente SNMP corriendo en ellas, lo cual da acceso a muchísima información sobre el estado y la configuración del sistema. El SNMP manager (desde el que conectamos a los agentes) almacena toda esta información en la Management Information Base (MIB).

A la información se le da un identificador de objeto siguiendo un número, tal y como se explica aquí. snmpenum de Packet Storm es un script perl (y un conjunto de ficheros txt) que usa SNMP para obtener la información sin necesidad de tener que introducir nosotros el identificador de los objetos.

MibDepot es una web con más de 1800 millones de identificadores SNMP.

Enumerating with RPC

En RCP, cada endpoint tiene su propio UUID, usado por el server para identificar la aplicación a usar. RPC provee varios métodos para que cliente y servidor se comuniquen entre sí una vez establecida la conexión.

Windows incluye algunas herramientas oficiales para RPC como rpcdump, u otras third-party como WinFingerprint de QP Download. Kali tiene rpcinfo

Usando WMI para enumerar Windows

Microsoft provee objetos WMI (+info) para comunicar información sobre el OS así como herramientas como powershell para acceder a estos objetos o ejecutar métodos WMI.

Hay 2 tipos de objetos, los generádos dinámicamente mediante queries usando WMI Query Language (WQL), como los procesos, y los persistentes, guardados en el CIM repo, en:

Windows ofrece dos protocolos para acceder a los datos WMI de forma remota: DCOM (135/TCP) y WinRM (5958/TCP).

Las clases WMI se categorizan jerárquicamente en nampespaces. Todos penden de root. La herramienta WMI Explorer de CodePlex nos ayudará a explorar todas las tablas de la base de datos WMI que existen a través de su GUI.

Enumeración usando finger

finger (puerto 79) es protocolo legacy que hace fácil enumerar usuarios y sus propiedades en hosts remotos.

Enumerating Web Apps

Una forma rápida de hacer fingerprint de un servidor web es usando el comando whatweb. Es útil para empezar a recopilar información.

Una vez identificado el objetivo, podemos usar nikto para obtener más información sobre el webserver incluyendo vulnerabilidades y problemas de configuración

La herramienta Burp Suite permite rastrear una web, actuando como proxy para nuestro tráfico web. Ésto nos ayudará a obtener el listado de todos los enlaces que dependen de la web principal. Para obtener los enlaces no linkados a la web principal podemos usar DIRB, Dirbuster o Gobuster, que usan diccionarios para validar la existencia de enlaces. La clave es usar el diccionario correcto. Kali viene con varios de ellos, aunque lo ideal es ir haciéndose uno propio en función de los resultados de tus pentests.

Database enumeration with sqlmap

Usando Burp Suite como proxy para nuestro tráfico web, navegaríamos para obtener datos recuperados de la base de datos (un foro, el listado de posts, etc.). En Burp Suite podríamos tratar de identificar la llamada (por ejemplo una llamada POST a una determinada url, con su cookie con la sesionID y el datastring). Con ésto, podríamos realizar la siguiente consulta (nótese que al parámetro cookie se le ha añadido «showhints=0»):

Enumerating the Internet

En ocasiones es útil trazar las rutas desde nuestra máquina al host objetivo. Para ello, además de traceroute, podemos usar hping3.

Shodan es un buscador de cualquier tipo de dispositivo conectado a intenet. Permite realizar búsquedas del estilo «dame los servers con puerto 80 abierto para la red 177.137.102.0/24». Además de los resultados en sí, muestra valiosa información sobre vulnerabilidades y exploits.

zmap permite escanear en menos de 5 minutos porciones de internet (sólo IPv4). Incluye una blacklist con IPs que no quieren ser escaneadas. Incluye opciones como «-p» para ver sólo los hosts con determinados puertos abiertos.

Otras herramientas

SuperScan de McAfee es una herramienta gráfica para Windows que permite enumerar sesiones, grupos y usuarios, endpoints RPC, shares, dominios, drives, registro y servicios etc.

NetScanTools Pro es otra herramienta para Windows que permite enumerar nuestra red.

LDAP (Lightwight Directory Access Protocol) se usa principalmente para autenticar usuarios y usa una base de datos en forma de árbol para almacenar información sobre la compañía. OpenLDAP para Linux y AD para Windows son los más usados.
Se puede instalar phpLDAPAdmin junto a OpenLDAP para la gestionarlo gráficamente. OpenLDAP permite conectar de forma anónima por defecto. Otras herramientas para enumerar LDAP son nmap o JXplorer.

Directamente con telnet podemos conectar via SMTP a un emailserver para validar si una cuenta de email existe o no.

Recursos

Metasploitable 2, una máquina virtual intencionadamente vulnerable pensada para testeos. La máquina incluye Mutillidae, scripts PHP con vulnerabilidades.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *