miércoles, 18 de septiembre de 2013

Desarrollo de módulos en BeEF 0.4.4.x - Parte II

Así que, comencemos con el tema como tal..

Para obtener una copia de BeEF la forma mas fácil sería clonar el proyecto directamente desde el repositorio oficial del proyecto https://github.com/beefproject/beef. si ya cuentas con acceso a github entonces en la parte derecha de la página deberás ver la leyenda HTTPS clone URL  de forma que si ya posees un cliente de git en tu maquina bastará con ir a tu consola y teclear el comando 

~$ git clone https://github.com/beefproject/beef.git my_beef_copy

con lo anterior deberás obtener una copia (de solo lectura para el repositorio oficial) para uso personal, ahora, si tu finalidad es contribuir con el proyecto entonces primero deberás hacer un fork del proyecto a tu repositorio personal de github. esto se logra clickeando en el botón fork del repositorio oficial logeado con tu cuenta de github y despues clonando el proyecto desde tu repositorio personal. de esta forma podras llevar un historial de commits y guardando tus cambios en tu cuenta personal para que estén disponibles en cualquier maquina que tenga un cliente git.

Bien. Hasta este punto ya deberiamos poseer una copia local para hacer pruebas presumiblemente con el nombre my_beef_copy en nuestra carpeta personal. de forma que podemos comenzar a jugar con BeEF.

lo primero que haremos será ejecutar beef desde la consola y ver que es lo que pasa.
~$ cd my_beef_copy; ls -ls
total 25080
    8 -rw-r--r--   1 softwareallies  staff        83 Sep  7 18:19 BeEFLive.sh
    8 -rw-r--r--   1 softwareallies  staff      1208 Sep  7 18:19 Gemfile
    8 -rw-r--r--   1 softwareallies  staff      1651 Sep  7 18:22 Gemfile.lock
    8 -rw-r--r--   1 softwareallies  staff      2191 Sep  7 18:19 INSTALL.txt
    8 -rw-r--r--   1 softwareallies  staff      2208 Sep  7 18:19 README
    8 -rw-r--r--   1 softwareallies  staff      2206 Sep  7 18:19 README.mkd
   16 -rw-r--r--   1 softwareallies  staff      4781 Sep  7 18:19 Rakefile
    8 -rw-r--r--   1 softwareallies  staff       195 Sep  7 18:19 VERSION
   16 -rwxr-xr-x   1 softwareallies  staff      5408 Sep  7 18:19 beef
24936 -rw-r--r--   1 softwareallies  staff  12767232 Sep 15 14:09 beef.db
    8 -rw-r--r--   1 softwareallies  staff      1119 Sep  7 18:19 beef_cert.pem
    8 -rw-r--r--   1 softwareallies  staff       916 Sep  7 18:19 beef_key.pem
   16 -rw-r--r--   1 softwareallies  staff      4453 Sep  7 18:19 config.yaml
    0 drwxr-xr-x  18 softwareallies  staff       612 Sep  7 18:19 core
    0 drwxr-xr-x   4 softwareallies  staff       136 Sep  7 18:19 docs
    0 drwxr-xr-x  17 softwareallies  staff       578 Sep  7 18:19 extensions
    8 -rwxr-xr-x   1 softwareallies  staff       732 Sep  7 18:19 install
    8 -rw-r--r--   1 softwareallies  staff      3953 Sep  7 18:19 install-beef
    0 drwxr-xr-x   5 softwareallies  staff       170 Sep  7 18:19 liveCD
    0 drwxr-xr-x  15 softwareallies  staff       510 Sep  8 12:13 modules
    0 drwxr-xr-x   7 softwareallies  staff       238 Sep  7 18:19 test
    8 -rwxr-xr-x   1 softwareallies  staff       218 Sep  7 18:19 update-beef 
~$./beef
[18:32:52][*] Bind socket [imapeudora1] listening on [0.0.0.0:2000].
[18:32:52][*] Browser Exploitation Framework (BeEF) 0.4.4.8-alpha
[18:32:52]    |   Twit: @beefproject
[18:32:52]    |   Site: http://beefproject.com
[18:32:52]    |   Blog: http://blog.beefproject.com
[18:32:52]    |_  Wiki: https://github.com/beefproject/beef/wiki
[18:32:52][*] Project Creator: Wade Alcorn (@WadeAlcorn)
[18:32:52][*] BeEF is loading. Wait a few seconds...
[18:32:53][*] 10 extensions enabled.
[18:32:53][*] 184 modules enabled.
[18:32:53][*] 3 network interfaces were detected.
[18:32:53][+] running on network interface: 127.0.0.1
[18:32:53]    |   Hook URL: http://127.0.0.1:3000/hook.js
[18:32:53]    |_  UI URL:   http://127.0.0.1:3000/ui/panel
[18:32:53][+] running on network interface: 127.94.0.1
[18:32:53]    |   Hook URL: http://127.94.0.1:3000/hook.js
[18:32:53]    |_  UI URL:   http://127.94.0.1:3000/ui/panel
[18:32:53][+] running on network interface: 192.168.1.73
[18:32:53]    |   Hook URL: http://192.168.1.73:3000/hook.js
[18:32:53]    |_  UI URL:   http://192.168.1.73:3000/ui/panel
[18:32:53][*] RESTful API key: 590b4960510e7682e248ea570f954ef6f5422132
[18:32:53][*] HTTP Proxy: http://127.0.0.1:6789
[18:32:53][*] BeEF server started (press control+c to stop)

Lo anterior nos indica que ya tenemos la interface web (para atacantes) corriendo por defecto en el puerto 3000 de modo que podemos ir cómodamente a nuestro navegador y visitar el portal  http://http://localhost:3000/ui/panel para acceder. Si hasta el momento no hemos modificado ninguna configuración, deberíamos ser capaces de acceder con la cuenta beef:beef y ver algo como:


Una de las primeras cosas que resalta a la vista seguramente será la elegante interface que caracteriza a beef en su versión 0.4.4.x. Esta interface es soportada por una poderosa API dedicada al diseño ágil de interfaces FrontEnd llamada ExtJS desarrollada por la empresa Sencha ( http://www.sencha.com/ ). A estas alturas seguramente se estarán preguntando
porque nos interesa que BeEF utilize ExtJS como herramienta para el manejo de la interface UI? 
Pues bien, la respuesta a esa pregunta es simple..
Existen dos tipos de componentes de software que están disponibles para su desarrollo en el proyecto. el primero comúnmente llamado modulo, el segundo llamado extensión (citando el wiki del proyecto beef).

Que diferencia existe entre un modulo y una extensión?

Nuevamente la respuesta es simple si nos planteamos la siguiente situación.
Si tu desarrollador quieres implementar un componente que modifique el comportamiento general de beef, entonces estamos hablando de una extension (ejemplo: XssRays, el cual es utilizado para detectar si las URI's path, formularios y ligas son vulnerables a xss). por otro lado, si lo que se desea es desarrollar un componente que amplíe el uso de beef estamos muy ciertamente hablando de un módulo (ejemplo: detector de versiones de chrome).

Ahora que sabemos las diferentes opciones que BeEF ofrece para desarrollo ha llegado la hora de realizar nuestra primera intrusión..

con la interface de beef abierta visitaremos la siguiente dirección http://localhost:3000/demos/butcher/index.html regresaremos a la Web UI y veremos que dentro del folder online browsers -> localhost hay una nueva máquina detectada correspondiente a nuestro navegador y sistema operativo.


en la siguiente entrada hablaremos de como está constituida la estructura de BeEF, los archivos por defecto de un módulo y el uso de cada uno de ellos.

saludos!

No hay comentarios:

Publicar un comentario