Nmap NSE Scripting. Breve reseña para creación y ejecución scripts NSE nmap. Parte 3

Seguimos con esta serie dedicada a los scripts nmap o nmap NSE. Ya vimos en la primera parte de esta serie dedicada a Nmap y, en concreto, al scripting NSE (Nmap NSE Scripting. Breve reseña para creación y ejecución scripts NSE nmap. Parte 1) nociones de como ejecutar un script, como interpretarlo, paso de argumentos, filtros, ejemplos, etc. Aprendimos también a analizar un script para ver su estructura y, de esta forma, aprender a modificar o crear nuestros propios scripts según nuestras necesidades (Nmap NSE Scripting. Breve reseña para creación y ejecución scripts NSE nmap. Parte 2).

smb netbios descubrimiento nmap script

En esta ocasión vamos a estudiar y practicar con los scripts SMB.

Actualizado (16-12-2010) por corrección de algunos errores tipográficos.

Scripts nmap SMB.

Existen muchas formas de auditar, descubrir, etc, todo lo relacionado con NETBIOS, por ejemplo, con el uso NBTSTAT, utilidades como NBTSCAN (Esas pequeñas utilidades. NBTSCAN) y comandos NET. De esta forma podemos descubrir nombres NETBIOS, SHARES o recursos compartidos, usuarios, etc. Pues bien, Nmap , tiene una serie de scripts NSE cuyo propósito es precisamente el descubrimiento y enumeración NETBIOS.

Sobre NETBIOS, CIFS y SMB, ya os he hablado en alguna ocasión:

Wireshark. Analizando eventos SMB / CIFS – NetBIOS. Parte 5.

Y sin más dilación, vamos al lío.

SMB Security Mode. 

smb-security-mode.nse 

Security mode, nos informa sobre subprotocolos de autenticación que espera el servidor del recurso compartido. Esta información forma parte de Negotiate Protocol Response y puede tomar valores como:

  • Mode: USER security mode.
  • Pasword: ENCRYPTED password. Use challenge/response.
  • Signatures: Security signatures NOT enabled.
  • Sig Req: Security signatures NOT required.

Para el descubrimiento de Security mode usaremos:

nmap -P0 -n -sS -p445,139 –script=smb-security-mode.nse 192.168.1.23

Host script results:
| smb-security-mode:
|   Account that was used for smb scripts: guest
|   User-level authentication
|   SMB Security: Challenge/response passwords supported
|_  Message signing disabled (dangerous, but default)

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

SMB OS Discovery

smb-os-discovery.nse

Dentro del los paquetes tipo Session Setup Andx Request, NTLMSSP_NEGOTIATE, parte del proceso de autenticación, tenemos una serie de campos, entre ellos Native OS.

Tenemos otro tipo de paquetes de respuesta:  Session Setup AndX Response con información, también de Native OS. Esta es la que nos interesa, con información añadida de Service Pack, etc.

nmap -P0 -n -sS -p445,139 –script=smb-os-discovery.nse 192.168.1.23

Host script results:
| smb-os-discovery:
|   OS: Windows Server 2003 R2 xxxx Service Pack 2 (Windows Server 2003 R2 5.2)
|   Name: XXXX\XX-3
|_  System time: 2010-12-14 13:40:54 UTC+1

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

smb nmap script nse

SMB Enum Shares.

smb-enum-shares.nse

Corresponde a los paquetes del tipo Tree connect Andx Request. A esta peitición, el servidor o host objetivo del descubrimiento de recursos compartidos, enviará un paquete tipo Tree Connect AndX Response. Este último paquete puede quedar así o contener alguna información de error, por ejemplo Error: STATUS_BAD_NETWOTK_NAME o NT_STATUS_ACCESS_DENIED.

Usa el script smb-brute.nse mediante un include, e intenta conectar con una serie de recursos tales como BACKUP,  WWW, cualquier letra para unidades compartidas (Z o Z$), etc. Por defecto usa el usuario guest / invitado o sin usuario.

nmap -P0 -n -sS -p445,139 –script=smb-enum-shares.nse 192.168.1.23

Host script results:
| smb-enum-shares:
|   ERROR: Enumerating shares failed, guessing at common ones (NT_STATUS_ACCESS_DENIED)
|   ADMIN$
|     Anonymous access:
|   C$
|     Anonymous access:
|   E$
|     Anonymous access:
|   F$
|     Anonymous access:
|   IPC$
|_    Anonymous access: READ

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

nmap scripts smb

Si tuviésemos algún usuario / password, podríamos usar argumentos para enumerar recursos compartidos para ese usuario. Lo vemos más adelante.

SMB Enum Users.

smb-enum-users.nse

Corresponde a los paquetes del tipo Name Query NBSTAT. A esta peitición, el servidor o host objetivo del descubrimiento responde con una lista de los usuarios del sistema mediante Name Query response NBSTAT.

También usa, para obtener más información, los paquetes del tipo :

  • Session Request, to usuario
  • Negotiate protocol Request
  • LookupDomain request, usuario
  • Connect4 request
  • EnumDomains request
  • OpenDomain request
  • QueryDisplayInfo

con sus Response para cada uno de los Request.

De la lista anterior, los 5 últimos corresponden a SAMR (Security Account Manager Remote Protocol).

Por ejemplo:

Para una petición  LookupDomain request, usuario, tenemos una respuesta LookupDomain request para informar del SID del usuario:

nmap script smb SAMR SID

Probamos en un Windows 2000.

nmap -sU -sS –script smb-enum-users.nse -p U:137,T:139 192.168.1.30

Host script results:
| smb-enum-users:
|   HOST0FI\Administrador (RID: 500)
|     Description: Cuenta para la administraci\xF3n del equipo o dominio
|     Flags:       Password does not expire, Normal user account
|   HOST0FI\USUARIO1 (RID: 1002)
|     Full name:   USUARIO1
|     Flags:       Password does not expire, Normal user account
|   HOST0FI\USUARIO2 (RID: 1000)
|     Full name:   USUARIO2|     Flags:       Password does not expire, Normal user account
|   HOST0FI\Ctx_StreamingSvc (RID: 1004)
|     Full name:   Ctx_StreamingSvc
|     Description: Cuenta de usuario de Citrix para el servicio de aplicaciones distribuidas por streaming.
|     Flags:       Password does not expire, Normal user account
|  
HOST0FI\USUARIO3 (RID: 1005)
|     Full name:   USUARIO3

|     Flags:       Password does not expire, Normal user account
|  
HOST0FI\INTERNAT (RID: 1001)
|     Full name:   INTERNAT
|     Flags:       Password does not expire, Normal user account
|   HOST0FI\Invitado (RID: 501)
|     Description: Cuenta para acceso como invitado al equipo o dominio
|     Flags:       Password not required, Password does not expire, Account disabled, Normal user account
|   HOST0FI\USUARIO4 (RID: 1012)
|     Full name:   USUARIO4|_    Flags:       Password does not expire, Normal user account

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

Bien, ya tenemos algunos usuarios. Vamos a usar los argumentos–script-args () para obtener, mediante  smb-enum-shares.nse los recursos compartidos y tipos de acceso para un determinado usuario y con un password (smbpass) por defecto.

Decir que los argumentos smbuser y smbpass se usan en otros scripts que veremos en otros capítulos.

La prueba:

nmap -P0 -n -sT -p445,139 —script=smb-enum-shares.nse –script-args=smbuser=USUARIO1,smbpass=1234 192.168.1.30

Obtenemos para este caso:

Host script results:
| smb-enum-shares:
|   ADMIX$
|     Anonymous access:
|     Current user (‘USUARIO1’) access:
|   ADMINIS
|     Anonymous access:
|     Current user (‘USUARIO1’) access:
|   xz_serve$
|     Anonymous access:
|     Current user (‘USUARIO1’) access: READ
|   C$
|     Anonymous access:
|     Current user (‘USUARIO1’) access:
|   SNORT$
|     Anonymous access: READ
|     Current user (‘USUARIO1’) access: READ
|   COMUN
|     Anonymous access:
|     Current user (‘USUARIO1’) access: READ/WRITE
|   COMUN_LOGS
|     Anonymous access:
|     Current user (‘USUARIO1’) access: READ
|   E$
|     Anonymous access:
|     Current user (‘USUARIO1’) access:
|   LOGS_SEND
|     Anonymous access:
|     Current user (‘USUARIO1’) access: READ
|   EXTERIOR
|     Anonymous access:
|     Current user (‘USUARIO1’) access: READ/WRITE
|   F$
|     Anonymous access:
|     Current user (‘USUARIO1’) access:

SMB Enum Process.

smb-enum-process.nse

Enumeración de procesos de un host remoto u objetivo. Para ello debemos, nmediante argumentos, indicar el usuario administrador y password.

Hace uso de Remote Registry Service con requests del tipo:

  • QueryValue
  • OpenHKPD

El servidor con QueryValue response, enviará las información del Registrode Wwindows relativo a los procesos.

nmap -P0 -n -sT -p445 —script=smb-enum-processes –script-args=smbuser=Administrador,smbpass=TALYTALYTAL 192.168.1.30

Host script results:
| smb-enum-processes:
|
| `+-Idle
|  | `-System
|  |   `-smss
|  |     `+-WINLOGON
|  |      | `+-SERVICES
|  |      |  | `+-spoolsv
|  |      |  |  +-sched
|  |      |  |  +-avguard
|  |      |  |  +-CdfSvc
|  |      |  |  +-cisvc
|  |      |  |  | `-cidaemon
|  |      |  |  +-dsNcService
|  |      |  |  +-FreeSSHDService
|  |      |  |  +-mysqld-nt
|  |      |  |  +-tcpsvcs
|  |      |  |  +-nvsvc32
|  |      |  |  +-RadeSvc
|  |      |  |  +-regsvc
|  |      |  |  +-uphclean
|  |      |  |  +-winmgmt
|  |      |  |  +-mspmspsv
|  |      |  |  `-svchost
|  |      |  +-LSASS
|  |      |  `-explorer
|  |      `-csrss
|_ `-thebat

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

Si añadimos verbouse (-v ), obtendremos mayor información. Relativa al PID del proceso, Prioridad, etc:

Host script results:
| smb-enum-processes:
|  PID  PPID  Priority Threads Handles
| —– —– ——– ——- ——-
|
|     0     0        0       1       0 `+-Idle
|     8     0        8      57     206  | `-System
|   216     8       11       6      33  |   `-smss
|   236   216       13      16     394  |     `+-WINLOGON
|   288   236        9      36     554  |      | `+-SERVICES
|   520   288        8      17     193  |      |  | `+-spoolsv
|   548   288        8       4      71  |      |  |  +-sched
|   560   288        8      23     117  |      |  |  +-avguard
|   572   288        8       3      87  |      |  |  +-CdfSvc
|   588   288        8       9     212  |      |  |  +-cisvc
|  1116   588        4       4     141  |      |  |  | `-cidaemon
|   632   288        8       3      95  |      |  |  +-dsNcService
|   680   288        8       4     121  |      |  |  +-FreeSSHDService
|   724   288        8      13   34046  |      |  |  +-mysqld-nt
|   772   288        8       2      94  |      |  |  +-tcpsvcs
|   808   288        8       3      92  |      |  |  +-nvsvc32
|   864   288        8       6      67  |      |  |  +-RadeSvc
|   868   288        8       4      95  |      |  |  +-regsvc
|  1016   288        8       2      43  |      |  |  +-uphclean
|  1132   288        8       4     123  |      |  |  +-winmgmt
|  1156   288        8       2      52  |      |  |  +-mspmspsv
|  1168   288        8       7     401  |      |  |  `-svchost
|   300   236        9      15     282  |      |  +-LSASS
|  1456   236        8      13     304  |      |  `-explorer
|   240   216       13      10     352  |      `-csrss
|_  396  1028        8       2      31  `-thebat

=======================================

Hast aquí por hoy. Hay mucho mas. Lo veremos en el siguiente captítulo referido a la obtención de información de un sistema y otras hierbas. Hasta la próxima.

Esta entrada fue publicada en Nmap, Seguridad y redes. Guarda el enlace permanente.

4 respuestas a Nmap NSE Scripting. Breve reseña para creación y ejecución scripts NSE nmap. Parte 3

  1. Oscar dijo:

    Alfon muchas gracias por tus artículos.
    No te puedes imaginar lo que ayudan.

  2. Dabo dijo:

    Como siempre impecable trabajo bro 😉

  3. Alfon dijo:

    Gracias Dabo y Oscar.

  4. Gustavo dijo:

    Genial!!! Gracias por todo!!! =) y Feliz Navidad aunque se haya pasado

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s