Wmap es un framework para ejecutar escaneos contra aplicaciones Web, diseñado para ser utilizado como un plugin de MetaSploit Framework, cuenta con una arquitectura simple y no obstante sumamente potente en comparación con otras alternativas open source o comerciales que se encuentran actualmente en el mercado, la simplicidad de este plugin radica en que no depende de ningún navegador web o motor de búsqueda para capturar datos y manipularlos.

Esta herramienta es principalmente utilizada con fines de recolección de información, su funcionamiento consiste en la captura y almacenamiento de trafico por medio del uso de módulos Wmap y escaners Wmap que sirven de apoyo a un ataque sobre un sitio web o un proxy, la información recolectada es posteriormente utilizada con el fin de lanzar diferentes pruebas implementadas como módulos, dado que se trata de módulos MetaSploit, estos pueden ser fácilmente implementados y ejecutados de forma manual o de forma automática por medio de Wmap

Esta simple arquitectura permite tener diferentes clientes y/o diferentes proxies, todos almacenando información al repositorio central, que usualmente se trata de una base de datos conectada por medio de metasploit, los módulos de prueba son implementados como módulos auxiliares de metasploit, así que de esta forma pueden interactuar con otros componentes que se incluyen en el framework, tales como exploits, auxiliaries u otros módulos .

Instalación de WMAP

En primera instancia, es necesario tener una conexión a base de datos y en dicha base de datos es necesario establecer al menos un objetivo para realizar el ataque.

Las librerías que se deben instalar antes de proceder con la ejecución del plugin en un sistema Debian/Ubuntu son:

apt-get install libxml-ruby libxml2-dev libxslt-ruby libxslt-dev libnokogiri-ruby

Posteriormente, se deben tener también instaladas las siguientes dependencias de ruby (o gemas)

gem install robotsgem install nokogirigem install anemone

Una vez instaladas dichas librerías, iniciar la consola de metasploit y realizar una conexión con la base de datos deseada, para hacer esto, se utilizan los comandos db_driver y db_connect

Ahora se carga el plugin:

msf > load wmap
[*] [WMAP 1.0] === et [ ] metasploit.com 2011
[*] Successfully loaded plugin: wmap

Uso simple de WMAP

El uso mas simple que se puede dar con este plugin consiste en primer lugar, en escanear un objetivo, para este fin, es posible utilizar Nessus (ver uso de Nesus en una entrada anterior aquí: https://thehackerway.wordpress.com/2011/04/23/instalacion-nessus-e-integracion-con-metasploit-framework/), Nmap (ver uso de Nmap en una entrada anterior https://thehackerway.wordpress.com/2011/03/07/nmap-para-escaneo-de-puertos-parte-i/) o el modulo crawler de MetaSploit, independiente del mecanismo empleado, es necesario obtener información suficiente sobre el sitio objetivo y cargar la base de datos con dicha información, esto es indispensable, ya que el plugin utilizará la conexión a base de datos existente e intentará consultar la tabla de hosts de MetaSploit para identificar objetivos.

En este caso, utilizando el modulo crawler de Metasploit:

msf exploit(handler) > use auxiliary/scanner/http/crawler
msf auxiliary(crawler) > show options
Module options (auxiliary/scanner/http/crawler):Name Current Setting Required Description—- ————— ——– ———–MAX_MINUTES 5 yes The maximum number of minutes to spend on each URL

MAX_PAGES 500 yes The maximum number of pages to crawl per URL

MAX_THREADS 4 yes The maximum number of concurrent requests

Proxies no Use a proxy chain

RHOST yes The target address

RPORT 80 yes The target port

URI / yes The starting page to crawl

VHOST no HTTP server virtual host

msf auxiliary(crawler) > set RHOST http://www.target.com

RHOST => www.target.com

msf auxiliary(crawler) > set RPORT 443

RPORT => 443

msf auxiliary(crawler) > run

[*] Crawling https://www.target.com:443/…

[*] [00001/00500] 200 – http://www.target.comhttps://www.target.com/

[*] FORM: GET /s

[*] FORM: POST /xxxx

[*] FORM: POST /xxxx

[*] FORM: POST /xxxx/xxxx/xxxx

[*] FORM: POST /xxxx/xxxx

………….

Este escaneo se ha ejecutado sobre el puerto 443, suponiendo que dicho puerto se encuentre abierto en el servidor web, se intentará escanear todos los recursos del sitio, esta información se almacena en la base de datos y puede ser consultada con los comandos de manipulación de datos de metasploit (ver entrada anterior sobre Conceptos y comandos básicos de Metasploit Framework aquí: https://thehackerway.wordpress.com/2011/03/14/uso-de-bases-de-datos-en-metasploit-framework/)

Ahora es posible utilizar los comandos disponibles en el plugin de Wmap:

wmap_sites

Con este comando se pueden visualizar todos los sitios que han sido escaneados y que se encuentran almacenados en la base de datos, de esta forma, WMAP puede utilizar esta información para ejecutar una serie de módulos contra dicho servidor o aplicación web una vez sea incluido en la lista de objetivos

msf > wmap_sites
[*] Usage: wmap_sites [options]-h Display this help text-a [url] Add site (vhost,url)-l List all available sites-s [urls] (level) Display site structure (vhost,url)

Para listar los sitios adicionados:

msf > wmap_sites -l
Available sites===============Id Host Vhost Port # Pages # Forms– —- —– —- ——- ——-2 72.21.194.9 http://www.target.com 443 292 2193 72.21.207.225 http://www.target.com 80 88 95

Otra de las opciones disponibles que resulta muy útil, es la estructura del sitio, de este modo es posible se listan todos los recursos del sitio web objetivo, directorios, paginas y demás.

msf > wmap_sites -s http://www.target.com,72.19.20.21
[www.target.com]||—–/DirectorioA(1)|—–/b|—–/Directorio(1)

|—–/b

|—–/b

Finalmente, con la opción -a es posible adicionar un nuevo sitio objetivo:

msf exploit(handler) > wmap_sites -a http://www.google.es,209.85.227.104
[*] Site created.

wmap_targets

Con este comando es posible definir y visualizar los objetivos que serán incluidos en el ataque con wmap, su uso, como el comando anterior, es muy sencillo, contando con las siguientes instrucciones:

msf > wmap_targets
[*] Usage: wmap_targets[options]-h Display this help text-t [urls] Define target sites (vhost1,url[space]vhost2,url)

-c Clean target sites list

-l List all target sites

Definiendo un objetivo:

msf > wmap_targets -t www.google.es,209.85.227.104
Listando los objetivos:msf > wmap_targets -lDefined targets

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

Id Vhost Host Port SSL Path

— —– —- —- — —-

0 http://www.google.es 209.85.227.104 80 false

Eliminando los objetivos definidos:

msf > wmap_targets -c

wmap_run

Con este comando, se ejecutan todos los módulos auxiliares definidos en el plugin, partiendo de la lista de objetivos cargados anteriormente con el comando wmap_targets

msf > wmap_run
[*] Usage: wmap_run[options]-h Display this help text-t Show all enabled modules-m [regex] Launch only modules that name match provided regex.

-e [/path/to/profile] Launch profile modules against all matched targets.

No file runs all enabled modules.

Para enseñar todos los módulos habilitados

msf > wmap_run -t

[*] Testing target:

[*] Site: http://www.google.es (209.85.227.104)

[*] Port: 80 SSL: false

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

[*] Testing started. Wed Apr 13 23:36:19 +0200 2011

=[ SSL testing ]=

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

[*] Target is not SSL. SSL modules disabled.

=[ Web Server testing ]=

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

[*] Loaded auxiliary/scanner/http/webdav_scanner …

[*] Loaded auxiliary/scanner/http/vhost_scanner …

[*] Loaded auxiliary/scanner/http/options …

[*] Loaded auxiliary/scanner/http/webdav_website_content …

[*] Loaded auxiliary/admin/http/contentkeeper_fileaccess …

[*] Loaded auxiliary/scanner/http/svn_scanner …

[*] Loaded auxiliary/scanner/http/frontpage_login …

[*] Loaded auxiliary/scanner/http/webdav_internal_ip …

[*] Loaded auxiliary/scanner/http/web_vulndb …

[*] Loaded auxiliary/scanner/http/open_proxy …

[*] Loaded auxiliary/admin/http/tomcat_administration …

[*] Loaded auxiliary/admin/http/tomcat_utf8_traversal …

[*] Loaded auxiliary/scanner/http/verb_auth_bypass …

[*] Loaded auxiliary/scanner/http/robots_txt …

[*] Loaded auxiliary/scanner/http/http_version …

=[ File/Dir testing ]=

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

[*] Loaded auxiliary/scanner/http/replace_ext …

[*] Loaded auxiliary/scanner/http/prev_dir_same_name_file …

[*] Loaded auxiliary/scanner/http/dir_listing …

[*] Loaded auxiliary/scanner/http/trace_axd …

[*] Loaded auxiliary/scanner/http/files_dir …

[*] Loaded auxiliary/scanner/http/writable …

[*] Loaded auxiliary/scanner/http/file_same_name_dir …

[*] Loaded auxiliary/scanner/http/ms09_020_webdav_unicode_bypass …

[*] Loaded auxiliary/scanner/http/brute_dirs …

[*] Loaded auxiliary/scanner/http/backup_file …

[*] Loaded auxiliary/scanner/http/dir_webdav_unicode_bypass …

[*] Loaded auxiliary/scanner/http/copy_of_file …

[*] Loaded auxiliary/scanner/http/dir_scanner …

=[ Unique Query testing ]=

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

[*] Loaded auxiliary/scanner/http/blind_sql_query …

[*] Loaded auxiliary/scanner/http/error_sql_injection …

=[ Query testing ]=

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

=[ General testing ]=

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

[*] Analysis completed in 11.3777809143066 seconds.

[*] Done.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Para ejecutar solamente determinados módulos y no todo el listado disponible:

msf exploit(handler) > wmap_run -m webdav
[*] Using module webdav.[*] Testing target:[*] Site: http://www.google.es (209.85.227.104)[*] Port: 80 SSL: false

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

[*] Testing started. Wed Apr 13 23:39:37 +0200 2011

=[ SSL testing ]=

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

[*] Target is not SSL. SSL modules disabled.

=[ Web Server testing ]=

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

Module auxiliary/scanner/http/webdav_scanner

Module auxiliary/scanner/http/webdav_website_content

Module auxiliary/scanner/http/webdav_internal_ip

Finalmente, la opción -e ejecuta el ataque contra los objetivos establecidos, opcionalmente se puede especificar un perfil de ejecución donde se indican los módulos a ejecutar, para ver un ejemplo de la estructura de dicho perfil, puede verse en:

<INSTALL_DIR_MSF>/data/wmap/wmap_sample_profile.txt

Adicionalmente en este directorio, se encuentran algunos perfiles de ejemplo para la ejecución de determinados módulos para un objetivo particular, el contenido del fichero anterior es:

## WMAP 1.0 Sample Profile
# wmap_run -e /path/to/profile

## Just add the name of the module. Use # for comments

#

frontpage

frontpage_login

options

version

backup_file

#blind_sql_query

#brute_dirs

copy_of_file

dir_listing

dir_scanner

file_same_name_dir

Como puede apreciarse, se trata simplemente de un listado de módulos auxiliares disponibles en metasploit, esta opción es similar a la opción -m, sin embargo aquí se pueden definir varios módulos.

En el directorio anteriormente definido, se encuentran ficheros que son empleados por WMAP para la ejecución de determinados módulos, allí se definen ficheros para: Directorios/Ficheros por defecto en la instalación del servidor web, Ficheros de claves de usuarios, Mensajes de Error estándar por páginas no encontradas, etc.

Estos ficheros pueden ser manipulados para extender determinadas opciones en el momento de la ejecución de los módulos auxiliares.

Opciones adicionales de los Módulos de ejecución

Algunos de los módulos ejecutados por WMAP necesitan tener definidas ciertas opciones, por esta razón, en algunos casos es importante definirlas antes de ejecutar, algunas de estas opciones son:

msf > setg DOMAIN target.com
DOMAIN => target.com
msf > setg EXT .asp

EXT => .asp
msf > setg WMAP_EXCLUDE_FILE expresion _ficheros:excluir

msf > setg VHOST http://www.target.com

Estas son solo algunas de las opciones que posiblemente necesitarán algunos de los módulos ejecutados contra un servidor web, sin embargo, es conveniente listar los módulos que se van a ejecutar y posteriormente ver las opciones obligatorias que estos necesitan tener definidas.

Resultados de la ejecución con WMAP

Para obtener los resultados de la ejecución con WMAP, se utilizan los mismos comandos que se han utilizado para consultar los resultados de escaneos con nmap o nessus, dado que los resultados de la ejecución de este tipo de herramientas se almacenan en base de datos, por este motivo se cuenta con los comandos como db_notes o db_vulns, evidentemente también se cuenta con la posibilidad de consultar las tablas de la base de datos directamente.

msf exploit(handler) > db_notes
[*] Time: Thu Mar 24 23:03:41 UTC 2011 Note: host=192.168.1.34 type=meterpreter.getsystem data={:technique=>1}[*] Time: Wed Apr 13 20:25:30 UTC 2011 Note: host=72.21.207.225 service=http type=HTTP_OPTIONS data=»POST, GET»[*] Time: Wed Apr 13 20:25:37 UTC 2011 Note: host=72.21.207.225 service=http type=ROBOTS_TXT data=»/gp/your-store/»[*] Time: Wed Apr 13 20:25:37 UTC 2011 Note: host=72.21.207.225 service=http type=ROBOTS_TXT data=»/gp/myaccount/»……

msf > db_vulns
[*] Time: Fri dd/mm/yyyy Vuln: host=XXX.XXX.XXX.XXX port=443 proto=tcp name=HTTP-TRACE-ENABLED refs=BAhbByIIQ1ZFIg4yMDA1LTMzOTg=
BAhbByIIQ1ZFIg4yMDA1LTM0OTg=
,BAhbByIKT1NWREIiCDg3Nw==
BAhbByIIQklEIgoxMTYwNA==
,BAhbByIIQklEIgk5NTA2
,BAhbByIIQklEIgk5NTYx

En este caso se han registrado una serie de vulnerabilidades que se encuentran codificadas en base 64, para conocer el contenido de esta cadena:

root@adastra-VPCEB3C5E:/opt/metasploit3/msf3/data/wmap# echo «BAhbByIIQ1ZFIg4yMDA1LTMzOTg=» | openssl base64 -d[CVE»2005-3398

Este código de vulnerabilidad puede consultarse en la base de datos nacional de vulnerabilidades en:

http://nvd.nist.gov/