Blog

Obtención de información, enumeración y acceso a través de SMB

Buenas a todos! En el post de hoy vamos a hablar sobre el protocolo SMB, como podemos obtener información de el para poder realizar un test de intrusión, cual de toda esa información nos será útil, y algunas cosas más como, como podemos aprovecharnos de la vulnerabilidad de sesión nula presente en muchos sistemas que utilizan este protocolo.

El protocolo SMB (Server Message Block) es un protocolo de red que pertenece a la capa de aplicación, el cual permite compartir archivos e impresoras (entre otras cosas) entre nodos de red.

Este servicio podemos encontrarlo tanto en TCP como en UDP. En TCP lo encontramos en el puerto 445 y los puertos 137 y 139 a través de NetBios, y en UDP en los puertos 137 y 138.

En muchas ocasiones, los administradores de red no se encargan de asegurar este protocolo, lo cual cómo vamos a ver a continuación puede permitir a un atacante obtener gran cantidad de información, así como lograr acceso a través de una sesión nula.

Antes de empezar podemos hacer una búsqueda en Shodan y ver la inmensa cantidad de host que tiene este servicio abierto a Internet, permitiendo además en muchos casos el acceso con la sesión nula como se puede ver en la descripción que nos devuelven los host resultado.

smb-01

 

 

Lo primero que deberíamos hacer seria utilizar algún escáner de puertos para comprobar que los puertos del sistema objetivo están abiertos, para ello podemos utilizar sin duda Nmap, con escaneo tanto TCP como UDP.

Para realizar el escaneo TCP:

nmap -sS -p137,139,445 -T4 IP
smb-03

Para realizar el escaneo UDP:

nmap -sU -p137,138 -T4 IP

smb-02

 

Con los resultados obtenidos podemos ver que nuestro objetivo tiene el servicio SMB abierto, sin saber aun si está o no protegido. Para obtener más información podríamos utilizar Nessus, el cual nos avisaría también de si nuestro objetivo permite la conexión con sesiones nulas.

Tanto si lo pasáis como si no, podríamos seguir obteniendo más información del objetivo. Para ello vamos a utilizar el comando “nbtscan -r” como se muestra a continuación:

smb-04

 

Como vemos esto nos permite obtener algún usuario y el nombre de NetBios, lo cual aunque no es mucho ya es información.

Vamos a ver ahora como podríamos sacar muchísima información de forma automatizada mediante el comando “enum4linux”. Para ello lo ejecutamos de la siguiente manera y observamos los datos que nos devuelve:

smb-05 smb-06 smb-07 smb-08 smb-09 smb-10 smb-11 smb-12

 

Como habéis observado, nos ha permitido obtener una enorme cantidad de información debido a que además de la información que obtiene el programa, si este detecta que es posible hacer uso de una sesión nula, la utiliza para seguir obteniendo aún más información acerca del host, usuarios, etc.

En concreto gracias al protocolo SMB y a que dicho host permitía las conexiones a través de sesiones nulas hemos podido obtener: todos los usuarios que hay en el sistema e información acerca de ellos, información sobre el dominio o grupo de trabajo, si se puede o no realizar una conexiones mediante una sesión nula, información sobre el sistema operativo y la versión del mismo, los directorios compartidos, política de contraseñas de los dominios, grupos de usuarios, etc.

Antes de terminar vamos a ver cómo podríamos realizar todas estas opciones de forma manual, utilizando para ello un usuario valido que se haya obtenido anteriormente o mediante la sesión nula en caso de que esta esté permitida.

Para conectarnos al host objetivo podemos hacerlo mediante “rpcclient” de la siguiente manera:

rpcclient -U [Usuario] [IP]

 

En nuestro caso, si queremos hacer uso de la sesión nula para acceder deberemos hacerlo de la siguiente manera:

smb-13

Es decir, metiendo un usuario nulo y como password únicamente damos a enter. Esto nos permite estar conectados al sistema y poder realizar la obtención de información y enumeración a nuestra manera y sin necesidad de herramientas automáticas. Podríamos por ejemplo obtener la información sobre el host:

smb-14

 

O cualquiera de las acciones que realiza de forma automatizada “enum4linux”, pero eso ya os lo dejo a vosotros que investiguéis un poco 😉

Como hemos visto, todo esto supone una enorme cantidad de información muy valiosa para un atacante, que podría intentar realizar ataques de fuerza bruta con los usuarios conocidos, conectarse a los recursos compartido, realizar ataques dirigidos de ingeniería social gracias a la información de la política de contraseñas y un sin fin más de cosas.

Hasta aquí llega el post de hoy,  espero que os haya gustado!

Un saludo,

Eduardo – eduardo@highsec.es – @_Hykeos

Leave a Reply

*

    No Twitter Messages