31 agosto 2012

Crónica de la EHConference 2012 Bolivia #ehconference


Como ya anticipamos en Security By Default, tuve el inconmensurable placer de ser invitado al evento más importante de seguridad informática realizado en Bolivia para participar con un par de charlas y un taller.

El evento, brillantemente organizado por Álvaro Andrade, CEO de la empresa Ethical Hacking Consultores, con el apoyo de la Universidad Autónoma Gabriel René Moreno, UAGRM, se ha desarrollado con una espectacular aceptación por parte del público asistente en la ciudad de Santa Cruz de la Sierra en Bolivia. Tanto por el apoyo de los diferentes sponsors del evento, como por la implicación, difusión y repercusión en medios de comunicación, se ha considerado el evento de seguridad más importante de Bolivia.

El evento ha contado con charlas y talleres a lo largo de una semana de duración. Contrario a lo que suele ser normal en este tipo de eventos, en los que el orden suele ser inverso, los tres primeros días se han dedicado a las charlas y los dos siguientes a los cursos. 

Como los talleres se llevarán a cabo hoy y mañana, y como quiero adelantarme para que la crónica del evento salga antes en Security By Default que en la Comunidad Dragonjar (internal joke! ;D) paso a haceros un resumen de las diferentes charlas del evento. 

Día 1

Lamentablemente, la mañana de la primera jornada no os la puedo contar puesto que aterricé cuando ésta ya había finalizado. Igualmente, estoy seguro que el contenido de las charlas no pudo ser más interesante. 

Después del acto de inauguración, abrió el melón del evento Jaime de la Comunidad DragonJar con una charla que versó sobre "Análisis Forense de Dispositivos IOS" que sin duda, debe haber hecho brillar los ojos de más de algún desconfiado de su pareja poseedora de un dispositivo de la marca de la manzana.

Continuó el argentino Leonardo Pigñer con su charla "La amenaza de los Drones". Tuve el placer de asistir a esta charla en el ACK Security Conference en Colombia y se te ponían los pelos de punta con la cantidad de información disponible en Internet sobre el funcionamiento de partes tan críticas como la mira láser o el protocolo de comunicaciones utilizado por diferentes tipos de drones.

El siguiente ponente fue Matías Katz, que explicó cómo crear un packer indetectable para los antivirus en 4 minutos. Espero disponer en estos días de charlas y talleres, de 4 minutos con Matías para que me haga un overview de esta charla que debió ser muy interesante.

Después del descanso para comer (y en mi caso para llegar al hotel, ducharme y cambiarme) llegamos de vuelta al auditorio para asistir a las conferencias de la tarde.

El genial orador peruano, afincado en Estados Unidos, Kirk Sánchez, nos explicó, en una amena presentación, como atacar ordenadores que carecen de resistencias y condensadores, el cerebro humano, en   "Penetration Testing to the Human Brain". El ingeniero social expuso brillantemente las vulnerabilidades comunes y generales a todas las personas, y nos dejó ver cuán animales somos reaccionando de forma instintiva ante dos estímulos principales: Dolor y placer.

La siguiente conferencia vino de la mano de uno de los abogados especializados en derecho informático que trabajan en Ethical Hacking Consultores, Juan Carlos Vargas. Fundamentalmente, la exposición se basó en las líneas básicas a tener en cuenta en un análisis forense para que las evidencias puedan tener validez legal para un proceso judicial. Refrescó conceptos como la conservación de la cadena de custodia, preservación de evidencias, trabajar sobre una copia de los datos, etc,…




El encargado de cerrar el día fue el colombiano Jhon Cesar Arango, editor del blog "The Hacking Day", demostró diferentes ataques posibles a infraestructuras inalámbricas, en los que quedó patente cómo con un buen equipamiento es posible reventar muchas de las implementaciones comunmente utilizadas para el cifrado de las redes wireless.


Día 2

La segunda jornada del EHConference arrancó con una genial exposición del argentino Matías Katz. Nos presentó la herramienta que ha desarrollado, junto a su compatriota Maxi Soler, HTExploit, que permite bypassear los mecanismos de autenticación implementados por algunos ficheros .htaccess mal configurados en Apache. Curiosamente, la herramienta implementa una vulnerabilidad existente en el motor PHP de Apache desde 1997, que permite hacer peticiones web con métodos no definidos por la RFC 2616, bypasseando la autenticación especificada por directivas LIMIT en la configuración de los ficheros .htaccess. Increíble, pero cierto! Esta herramienta, presentada por Matías en la BlackHat Las Vegas 2012, ha sido incluida en el set herramientas de ataque web en la Release 3 de la distribución Linux especializada en seguridad Backtrack 5. Si además queréis leer un genial análisis de esta herramienta, podéis hacerlo en este post de la Comunidad Dragonjar 


Continuó el colombiano Jhon César Arango mostrándonos las potencia de las posibilidades que ofrecen buscadores como Google, Bing y por supuesto Shodan, para traer a la mesa búsquedas precisas pescadas del gran océano que es la información indexada por los mismos. Muchas de estas técnicas las podéis encontrar en el libro "Hacking con buscadores" de la editorial de Informática64

La siguiente conferencia, "Buenas prácticas de seguridad en Entornos Corporativos", corrió a cuenta del más sexy de todos los ponentes: YO mismo, lawwait. Intenté explicar al público, las prácticas comunes de hacer las cosas en las empresas y organizaciones de todos los tamaños, dando unas pequeñas guías de cómo se deben hacer las cosas para tener una  consistencia mínima de seguridad. Por los comentarios de los asistentes, la charla resultó divertida además de académica, por lo que por mi parte cumplí con gran satisfacción el objetivo que me propongo en mis conferencias, que sea amena y que genere una nueva tarea en background en las mentes de los asistentes según el objetivo, en este caso, sobre la seguridad aplicada sobre los datos de los usuarios en las organizaciones.



Por la tarde, comenzó el evento Rafael Revert, un compatriota español afincado en Perú, que nos habló de Gestión Unificada de Advanced Persistent Threat. De esta presentación, me llamó mucho la atención las herramientas de seguridad que utilizaba e integraba Rafa con PFSense para crear un SOC de alto valor añadido.


Siguió el turno de la encantadora panameña Katiuska Hull, abogada especializada en derecho aplicado a comercio electrónico. Expuso un tema sumamente interesante. Dada la lentitud de ejecución de la justicia (esto parece que es igual en todos los países), existen medios alternos de solución de controversias online para poder someter a arbitraje o mediación una disputa. Nos contó las diferencias entre las opciones existentes, su funcionamiento, así como los problemas de seguridad que existen para enviar las pruebas expuestas por ambas partes, preservando las evidencias.



La siguiente charla, sumamente esperada, expuesta por parte de Gabriel Wiese y Álvaro Andrade, versó sobre "Hacking de cajeros automáticos NCR". Por petición expresa de los expositores no daré absolutamente ningún detalle sobre la misma en este resumen.

Día 3

El tercer y último día comenzó con una charla de Leonardo Pigñer, quien nos metió el miedo en el cuerpo con varias demostraciones de ataques en el Client-side. Fundamentalmente, en los tiempos actuales, en los que las empresas intentan cuidar más la seguridad de sus infraestructuras a nivel de dispositivos perimetrales, las nuevas formas de ataque involucran técnicas en los que las víctimas son los propios usuarios, mezclando ingeniería social con "regalitos" hechos con Metasploit que permitan conseguir una shell inversa o incluso una reproducción vía VNC de la pantalla del usuario.


A segunda hora, como a mí me gusta, fue mi turno de exponer mi charla "Welcome to your secure /home, $user", en la que conté una vez más cómo implementé un sistema de seguridad basado en reconocimiento facial con una webcam casera, así como la integración de diferentes elementos que puede haber en un hogar, como una roomba, un sistema de alarma gestionable via TCP/IP, control de aire acondicionado, datos volcados por una estación meteorológica y una centralita Asterisk entre otros. Además finalmente mostré el funcionamiento de una aplicación hecha en perl para controlar un robot Rovio desde línea de comandos. 



Después del break para los asistentes pudieran intentar olvidar la canción de "El Internet" de "Los Alguiens", fue el turno del profesor universitario boliviano Freddy Ossio, que nos ofreció su visión sobre la interacción entre "Las nuevas tecnologías  de la información y la Protección de datos personales". Introdujo los grandes problemas de privacidad de los datos personales de los clientes de las organizaciones, tanto privadas como públicas, introducidos por los sistemas tecnológicos que manejan dicha información. Asimismo recalcó la necesidad de crear leyes en Bolivia similares a la LOPD española o la Ley de Protección de Datos de México.    

La primera charla de la tarde vino dictada por el abogado argentino Miguel Sumer Elías. El título de la misma era "El hacker y la delgada línea entre la ética y el delito". Miguel, ingenioso y simpático ponente, logró mantener la atención de los asistentes venciendo al sopor propio de la hora, con una charla que distaba mucho de lo que se pensaría de un abogado, reforzándonos ciertos conceptos legales con mucho humor.


El siguiente turno era de nuestro buen amigo mexicano Roberto Martínez, al que lamentablemente, por causas de fuerza mayor le fue imposible asistir al evento. Así que aprovechando que Matías Katz apenas se había subido al escenario en todo el evento, le volvimos a ver en acción con una charla que ví en el ACK Security en Colombia: Hackeando con Facebook. Es impresionante ver cómo después de tantos meses en los que Matías y su equipo reportaron a facebook hasta 10 vulnerabilidades y que aún sigan siendo explotables sin problemas. La respuesta de Facebook fue la cada vez más común: "It's a feature, not a bug".


El siguiente ponente fue el abogado boliviano Ariel Agramont, que nos explicó los detalles de la "Regulación Jurídica del comercio electrónico y la firma digital en Bolivia" resaltando las necesidades existentes en el país andino de regular más exigentemente esta materia.

El encargado del cierre del evento fue el colombiano Jaime Andrés Restrepo, de la Comunidad Dragonjar, con una charla en la que nos mostró un montón de gadgets, destinados mediante la combinación con técnicas de Ingeniería social, al espionaje desde dentro de las propias empresas. Muchos de estos equipos que se pueden comprar en "La tienda del espía" o a través de Ebay o Dealextreame, hicieron que se nos cayera la baba a unos cuantos amantes de la técnica y los dispositivos.  Asimismo, demostró con videos, cómo los usuarios actúan de una forma completamente negligente al conectarse a cualquier red inalámbrica, con tal de que ésta sea gratuita.


Para finalizar, os dejo aquí la típica "foto de familia" que nos hicimos los ponentes al final del evento, en el cual me lo estoy pasando genial una vez más, pero cuya experiencia relataré en otro post.


Leer más...

30 agosto 2012

Apache + mod_geoip = WIN

Personalmente, soy muy fan de la geolocalización como medida de seguridad a la hora de implementar servicios en Internet, de hecho, hace un tiempo presenté un boceto de 'GEO Ips' como herramienta para filtrar conexiones basadas en su procedencia geográfica.

Hoy voy a hablar de un módulo para Apache que, entre otras cosas, permite establecer controles de acceso basados en la procedencia de la conexión.

El objetivo es 'banear' unos cuantos países para que no puedan acceder al contenido de un servidor web.

Para ello, vamos a usar mod_geoips, creado por MaxMind, empresa muy famosa por liberar bases de datos de IPs y su procedencia geográfica.

Los ejemplos de este post se han llevado a cabo en una distribución Linux CentOS 6 pero son fácilmente adaptables a cualquier otra distribución.

Paso 1: Instalar las librerías GeoIP

# wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
# tar -xvzf GeoIP.tar.gz
# cd  GeoIP-1.4.8
# ./configure
# ./make
# ./make install

Con esto, habremos instalado las librerías sobre las que se apoya mod_geoips

Paso 2: Descargar la base de datos de IPs

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gzip -d GeoLiteCity.dat.gz
# cp GeoLiteCity.dat /opt/

Es conveniente descargar con cierta frecuencia esta base de datos ya que se va actualizando, se puede crear un trabajo en Cron para que lo haga cada mes, por ejemplo.

Paso 3: Instalar mod_geoips

# wget http://www.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.7.tar.gz
# tar -xvzf mod_geoip2_1.2.7.tar.gz
# cd  mod_geoip2_1.2.7
# apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c

NOTA: Para poder ejecutar el último comando es necesario tener instalado el paquete httpd-devel que provee el comando 'apxs'

Ahora, configuramos httpd.conf añadiendo lo siguiente:

<IfModule mod_geoip.c>
  GeoIPEnable On
  GeoIPDBFile /opt/GeoLiteCity.dat

</IfModule>

Paso 4: Configurar los bloqueos

Supongamos que no tenemos excesivo interés en recibir visitas desde China o Rusia en nuestro servidor web, para establecer un bloqueo a esos países, creamos un fichero .htaccess en la raíz del árbol html de nuestro servidor web de la siguiente forma:

SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry

Deny from env=BlockCountry

Y et voilà ! ya tenemos configurado nuestro servidor Apache para rechazar conexiones que provengan de China (CN) y Rusia (RU), como se puede ver, resulta muy fácil añadir mas países a la lista de 'castigados'.
Leer más...

28 agosto 2012

Se ha descubierto una grave vulnerabilidad en Java Runtime Environment (JRE) versión 1.7 y posterior que permite a un atacante la ejecución de código remota en sistemas cliente que visiten una página web especialmente formada.

Si bien es algo a lo que estamos acostumbrados, tanto en aplicacipnes de Adobe, como también en este producto de Oracle, esta vez la gravedad recae en que se conocen demasiados detalles de la vulnerabilidad, se está utilizando de manera masiva, y parece ser que Oracle tardará unos días (ya demasiado tarde) en publicar un parche que corrija la vulnerabilidad.

Esta vez, la rama de JRE afectada corresponde con la 1.7, por lo que los usuarios de la versión 1.6 y anteriores no se encuentran afectados. Si bien en un primer momento se pensaba que únicamente eran vulnerables los sistemas Windows, desde Rapid7 han desarrollado ya un módulo para Metasploit (disponible en la última actualización del framework) cuyos payloads generados han funcionado en Mozilla Firefox sobre Ubuntu y Safari sobre OS X 10.7.4. Para conocer todos los detalles, si bien ya hay multitud de posts que realizan análisis, uno recomendado es el de DeepEnd Research, escrito por Andre' M. DiMino y Mila Parkour.

De momento, la única recomendación posible (y tajante como ella sola) es deshabilitar por completo Java de nuestros navegadores hasta nueva orden (hasta que Oracle nos deleite con un parche).

Vamos a dar un repaso por los navegadores más utilizados para saber cómo deshabilitar Java y poder así, navegar tranquilos sin permitir que millones de personas jueguen con nuestros PCs:

- Cómo deshabilitar Java de Internet Explorer
1) Menú de Herramientas (Tools) -> Opciones de Internet (Internet Options)
2) Pestaña Programas (Programs) -> Gestionar complementos (Manage Add-ons)
3) Seleccionar Java Plug-in y deshabilitar (disable)
4) Hacer clic en Aceptar (Ok), y de nuevo Aceptar (Ok)

- Cómo deshabilitar Java de Mozilla Firefox
1) Menú de Herramientas (Tools) -> Complementes (Add-ons)
2) Seleccionar el panel Plugins
3) Hacer clic en elementos cuyo nombre sea Java Plug-in o Java Applet Plug-in. Según el entorno, sistema operativo y versión, el complemento puede venir con un nombre u otro.
4) Hacer clic en el botón "Deshabilitar" (Disable)

- Cómo deshabilitar Java de Google Chrome
1) Accedemos al menú de plugins escribiendo "chrome://plugins/" en la barra de direcciones.
2) Buscar el complemento Java y hacer clic en "Deshabilitar"

- Cómo deshabilitar Java de Safari
1) Acceder a Preferencias -> Pestaña "Seguridad" (Security)
2) Desmarcar la opción "Habilitar Java"

Ahora, ya nos podemos sentir un poco más seguros, por lo menos hasta que se publique una actualización para esta vulnerabilidad.

[+] Users urged to disable Java as new exploit emerges (The Register)

ACTUALIZACIÓN [30-Agosto-2012 20:00]
Oracle ha publicado la actualización Java™ SE Development Kit 7, Update 7 (JDK 7u7) en la que se solucionan las vulnerabilidades del CVE-2012-4681.
Leer más...

27 agosto 2012

ASEF - Android Security Evaluation Framework

El análisis de aplicaciones móviles se ha convertido en un requisito indispensable. Los smartphone forman ya parte de nuestras vidas. Y es por eso que los criminales centran su esfuerzo en este tipo de plataforma.

En este caso nos centraremos en los smartphone con sistema operativo Android.
Los troyanos bancarios por ejemplo ya incluyen el apartado para el móvil además de infectar la máquina de la víctima.

En el POST de hoy usaremos un framework para el análisis de apk maliciosas.

El framework es ASEF - Android Security Evaluation Framework, es open source y lo puedes encontrar en Code Google.

Recomiendo leer antes el PDF que hay en el proyecto. Explica el funcionamiento del framework y como trabaja para realizar el análisis dinámico de los apk. El PDF lo puedes encontrar directamente aquí.

El funcionamiento de ASEF es el siguiente, usando los AVD que puedes crear con el SDK de Android, instalará los apk que le pasemos como parámetro, capturará el tráfico con tcpdump y nos mostrará por pantalla los resultados.

El esquema de funcionamiento de ASEF es este:



Con ASEF realizaremos la parte de análisis dinámico. Para usar ASEF deberemos de cumplir con ciertos requisitos: El primero de todos es el SDK de Android y el segundo, la API de Google Safe Browsing

Necesitaremos también tres módulos de perl, en concreto:

  • Getopt::Std;
  • URI::Find;
  • URI::Encode
Por último necesitaremos tener instalado tcpdump y un dispositivo con Android o bien un AVD donde hacer las pruebas.

Con estos requisitos ya podemos trabajar con ASEF, una vez descargado lo colocamos en la carpeta de android-sdk.

Revisamos el fichero configuración de ASEF y rellenamos los datos:

#Configurator file will allow you to configure all the parameters required by apkeval.pl (core part of A S E F) so user doesn't need to re-enter every time test is run 
#Please follow each of the sample format and provide the parameters

#Name of the virtual device created by user on which all the tests will be run
#Default AVD = avd_test 
Default AVD = 

#Google Safe Browsing API Key
#Google Safe Browsing API = ABQIAAAAo85Inuxqqg6th2Wo1234yxR6oJp44IDGFsHRDnasTNl3gDmneG
Google Safe Browsing API =  

#IP address of the local machine on which A S E F is running, given by an interface on which packets will be captured
#Host IP = 10.0.0.4 
Host IP =  

#Interface on which packets will be captured
#interface = en1
interface = 

#If user choose to bypass virtual device and run all tests on physical device, please provide device ID on which all tests will run
#AD = 3441F11B71E600EC 
AD =  

#Marination time Tm in seconds for tuning the test cycle
#Tm = 10
Tm = 

#No of gestures to be sent to an app during activity mode inside a test cycle
#RGC = 75 
RGC =  

Rellenamos los datos como la API de Google Safe Browsing, la IP donde correremos ASEF, la interfaz de red, además de el nombre del AVD en el caso de que lo usemos o el ID del device con Android que usemos para las pruebas. Además le indicamos el tiempo que dedicará a cada análisis e incluso gestos random que se ejecutarán en el dispositivo.

Una vez que ejecutamos la herramienta nos aparecen ciertos datos interesantes:

ASEF ==> Running a configurator for ASEF ............. 

 Using default AVD = android2.2   

 Using Google Safe Browsing API key = MI API SAFE BROWSING 

 Using packet capturing tool 'tcpdump' on 192.168.1.129  at interface en1 

 Tm is set to be 10  seconds 

 Will send 75  number of gestures to each app inside the activity mode of a test cycle 

 Location of the Directory :- apk 

1) be_social_plugin.apk
2) com.mediawoz.gotq.apk
3) de.mehrmannd.sdbooster-GAMEX.apk
4) il.co.egv-3.apk
5) seguridad.apk
6) Update.apk
7) zitmo.apk

 Total number of apk files found = 7

Nos indica que está ASEF corriendo, y además nos da información sobre los APK que ha encontrado para analizar.

ASEF también nos proporciona información sobre los APK en si,

application name :- seguridad.apk
 packagename :- 'com.android.security'
 launcher activity :- 'com.android.security.MainActivity'
 version code :- '1'
 version name :- '4.3'
 app lable :- 'Android Security Suite Premium'

 application name :- de.mehrmannd.sdbooster-GAMEX.apk
 packagename :- 'de.mehrmannd.sdbooster'
 launcher activity :- 'de.mehrmannd.sdbooster.SDboost'
 version code :- '714152'
 version name :- '1.5.2'
 app lable :- 'SD-Booster'

Como resultado del test también nos creará una carpeta con los APK que ha analizado:

 ---- Creating the master TEST RESULT DIRECTORY :- TEST_08_20_12-10:10:13 ----

1) TEST_08_20_12-10:10:13/"be_social_plugin.apk"
2) TEST_08_20_12-10:10:13/"com.mediawoz.gotq.apk"
3) TEST_08_20_12-10:10:13/"de.mehrmannd.sdbooster-GAMEX.apk"
4) TEST_08_20_12-10:10:13/"il.co.egv-3.apk"
5) TEST_08_20_12-10:10:13/"seguridad.apk"
6) TEST_08_20_12-10:10:13/"Update.apk"
7) TEST_08_20_12-10:10:13/"zitmo.apk"
 Done creating the Test result hierarchy ....... 

ASEF irá analizando cada uno de los apk, pongo un ejemplo de lo que se mostraría en el terminal cuando analiza uno de los apk.

Starting to capture all network traffic for the application be_social_plugin.apk at location :- /usr/local/Cellar/android-sdk/r20.0.1/ASEF_OSP/TEST_08_20_12-10:10:13/"be_social_plugin.apk"/network_traffic.txt 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en1, link-type EN10MB (Ethernet), capture size 65535 bytes

 Getting ready to install Application be_social_plugin.apk from the location ..........apk/"be_social_plugin.apk"

 Installing be_social_plugin.apk now :- 
469 KB/s (16098 bytes in 0.033s)
pkg: /sdcard/tmp/be_social_plugin.apk
Success

Una de las partes mas importantes es poder capturar el tráfico que puedan llegar a generar los apk, un ejemplo de lo que capturaría ASEF:

! be_social_plugin.apk accessed --> " 111.221.74.34 " and it is - <!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 400 (Bad Request)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}
  </style>
  <a href=//www.google.com/><img src=//www.google.com/images/errors/logo_sm.gif alt=Google></a>
  <p><b>400.</b> <ins>That’s an error.</ins>
  <p>Your client has issued a malformed or illegal request.  <ins>That’s all we know.</ins>

En este caso nos ha dado un error 400!

Para la parte de análisis dinámico nos sirve perfectamente, además si desarrollan mas features para el framework será una herramienta que deberemos tener para los análisis de apk.

---------------------------------------------------------------
Artículo cortesía de Marc Rivero López

Leer más...

26 agosto 2012

Enlaces de la SECmana - 137

Leer más...

24 agosto 2012

EKOParty 2012: Welcome to your secure /home, $user! @ekoparty


Es para mí un absoluto y completo honor y placer, compartir con vosotros, lectores, que mi charla "Welcome to your secure /home, $user!" ha sido aceptada en la edición 2012 de Ekoparty, "la Conferencia de Seguridad Informática más importante de Latinoamérica", a mediados de septiembre en Buenos Aires.

Electronic Knock Out Party, es uno de los eventos de seguridad de referencia a nivel mundial en el que, anualmente, se reunen los más grandes profesionales del sector, generalmente de habla hispana, aunque no exclusivamente (inclusive cuenta con traducción simultánea) durante una semana, entre geniales talleres e increibles conferencias de seguridad. 

Este año además contará con mi charla "Welcome to your secure /home, $user!". Aquellos que creáis que habéis visto todo lo que tengo montado en la RootedCON o en el ACK Security Conference,… no sabéis cuánto os equivocáis! :D Las locuras que se me pasan por la cabeza a diario, han ido evolucionando, Skynet ha ido creciendo y algún día me dará algún susto haciéndose fuerte en mi casa. Incluiré varias sorpresas que espero que encante a un público tan creativo y técnicamente preparado como los asistentes al evento argentino.  

En este último año, aparte de la RootedCon en España, he participado en varios eventos en Latinoamérica: Colombia, Ecuador, la semana que viene Bolivia. Mi experiencia en estos eventos, es siempre un cóctel de sensaciones y sentimientos.

Aparte de la gran emoción y honor que es para mí contar mis locuras, investigaciones y creaciones en un escenario a reventar de gente, me produce una profusa alegría tener la oportunidad una vez más de compartir la experiencia con buenos amigos como Matías Katz, Roberto Martínez, Leo Pigner, Gustavo Presman, Sebas Bortnik, el incombustible Álvaro Andrade y muchos otros grandes seres humanos que seguro olvido y me recordarán entre cervezas y el mítico asado de la Eko, del que tan bien habla siempre Chema Alonso, que no los nombré...

Igualmente estaré encantado de desvirtualizar a grandes profesionales de seguridad del otro lado del charco como Mariano del Río (además frecuente colaborador de SbD) o el chileno Fernando Lagos, así como de todos aquellos lectores de Security By Default de la gran comunidad de lectores latinoamericanos que nos siguen diariamente.

Quiero agradecer, en mi nombre y en el de Security By Default, a la organización de EkoParty el haber contado con nuestra presencia allí. Sin duda será para ambas partes una experiencia inolvidable.

Tendré que ir practicando el acento... "¿Ché, viste, tenés tarros de dulce de leche para llevar de vuelta en mi valija?"


Nos vemos en Buenos Aires!!!!
Leer más...

23 agosto 2012

Pruebas técnicas en entrevistas de trabajo, ¿vale todo?

Está claro que, en los tiempos que corren, triunfar en una entrevista de trabajo es algo difícil, cada día hay mas 'competencia' en el mercado laboral y debido al aumento de oferta, el nivel exigido sube y sube.

Todos hemos visto la típica oferta de trabajo en la que piden toda clase de certificaciones -algunas veces hasta inventadas- que van acompañadas de unos sueldos bastante poco competitivos, pero de lo que hoy me gustaría hablar es de las cada vez mas habituales pruebas técnicas que acompañan las entrevistas.

Recientemente una persona me contaba que, en una entrevista para un puesto de auditor, le habían pasado una suerte de cuestionario en el que le preguntaban, entre otras cosas, lo siguiente:

- Cita el flag de Nmap para realizar un escaneo 'X-mas'

- Cita los flags de SQLMap para listar tablas y columnas de una aplicación vulnerable

Me contaba esta persona que el resto de preguntas eran del mismo estilo, mas de memoria que de conocimiento y según me las iba formulando, admito que en muchas ocasiones me quedé en blanco, conocía todas las herramientas pero nunca me había parado a memorizar los flags.

Siempre he pensado que en cualquier situación 'normal' tener Google de mi lado y los help de la herramienta eran mas que suficientes para recordarme como funcionaba.

Esa conversación me llevó a pensar en las entrevistas para programadores, de esas en las que sientan al candidato frente a un Eclipse, Vi o similar y le dicen 'haga usted tal aplicación'

Y caí en la cuenta de que incluso librerías como 'CAPICOM', que he usado intensivamente en estos últimos 5 o 6 años, en aplicaciones públicas como SSLCop, Brute12 o CertDump y otros varios proyectos laborales, en realidad no es que sepa al dedillo sus métodos, sino que tengo en mi HD un montón de ejemplos que voy reciclando cuando los necesito y lo que me falta, lo investigo ad-hoc para esa eventualidad.

Evidentemente, en una entrevista de trabajo con un Eclipse delante y un 'añada usted un certificado al store de Windows' (algo que he hecho cien veces) tendría que tomarme un largo tiempo para intentar recordar el código que ya había realizado.

Lo que me lleva a preguntarme si ese tipo de entrevistas de trabajo sirven para algo mas allá de intentar localizar personas que gocen de una memoria privilegiada por encima de un conocimiento técnico real.

Yo entiendo que para un puesto de auditor, una pregunta indispensable podría ser 'como haría vd un inventario de servicios en una red' y en ese punto, que el candidato se explaye con herramientas y metodologías, sin entrar a tan bajo nivel.

O incluso, como ya he visto en otras ocasiones, que se le de al candidato una URL / IP para que audite desde su casa y luego entregue un informe al respecto, lo que sin duda sería bastante más aproximado a una actividad laboral normal, y permitiría ver al candidato no solo su conocimiento técnico, sino también su creatividad y capacidad de adaptación

No soy experto en RRHH y probablemente alguien que si lo sea pueda darme un montón de argumentos convincentes de por que una entrevista de trabajo tipo examen sirve para elegir un buen candidato, pero yo, creo que existen mejores métodos.

Leer más...

22 agosto 2012

De contraseñas demasiado complejas

Es famosa la web PlainTextOffenders.com donde se publican capturas y evidencias de sitios webs que mandan la contraseña de alta del registro o del resultado de un proceso de "recuperación de contraseña", al correo electrónico en texto claro y mostrando la misma que se usó inicialmente. 

Esto demuestra que la web tiene acceso de alguna manera a la contraseña, ya sea por que la almacenan en texto claro o con un cifrado simétrico y por lo tanto reversible. En definitiva, que no se han leído la guía de OWASP y su Cheat Sheet sobre el almacenamiento de contraseñas.

Hay otros sitios (¡¡a patadas!!) que tampoco te dejan meter una contraseña libremente y te limitan el número de caracteres o te eliminan la posibilidad de meter caracteres especiales, como por ejemplo una coma o una admiración.

Tampoco hablo de limites de 16 caracteres, como el de Outlook.com -y que me parece aceptable-, pero de ahí, a que tenga que tener una longitud entre 6 y 8 o que no deje usar un guión... ¡va un mundo!

Creo que debemos inaugurar una nueva sección de contraseñas e ir metiendo capturas. Seguro que poco a poco y después de ser inmensamente pesados, algunos de ellos quitarán estas limitaciones y se buscarán otra manera mejor de hacer las cosas.



Leer más...

21 agosto 2012

Seguridad en Infraestructuras Críticas: Economía y La Bolsa

Cuando hablamos de seguridad en infraestructuras críticas la mayoría de los lectores enseguida lo asociamos a seguridad en sistemas de control industrial y SCADA, y hay bastante literatura, papers y charlas al respecto, muchos temas de smart grid, depuradoras de agua y demás, pero desde un punto de vista más formal las infraestructuras críticas son mucho más que eso, en su definición, según CNPIC, se incluyen los sistemas de transporte, energía y en general, siguiendo una analogía con SGSI, cualquier "activo" esencial para el "negocio" de un país, entendiendo como ese negocio, “el bienestar de sus ciudadanos”.

Siguiendo esas ideas, y viendo los titulares de cualquier telediario, enseguida todos entendemos la economía como un activo crítico para un país, y si algo hemos aprendido todos en España en estos años de crisis, es que la economía financiera es algo que afecta a nuestro bienestar, y que está "manejada" por algo que llaman "los mercados".

Entonces, si la economía financiera (manejada por "los mercados") es un activo crítico para un país, ¿en qué infraestructuras IT se soporta y como están protegidas?

A poco que busquemos en Google, enseguida vamos a toparnos con que en España "los mercados" están regulados por la Comisión Nacional del Mercado de Valores (CNMV) y gestionados por la empresa Bolsas y Mercados Españoles (BME), empresa cotizada a su vez en la propia bolsa (en el IBEX35 para ser exactos).

Esta empresa dispone de muchas filiales interesantes para todo lo que es la infraestructura IT que hace funcionar nuestras Bolsas, entre ellas: BME Consulting, MEFF y Sociedad de Bolsas S.A. Estas dos últimas son especialmente interesantes en cuanto al tema de mercados e infraestructura IT, pero centrándonos en Sociedad de Bolsas, es la empresa encargada del “Sistema de Interconexión Bursátil Español (SIBE)”, cuya definición viene a ser: plataforma técnica de contratación del mercado de valores español.

Vamos, SIBE es el core a nivel IT de las bolsas en España y en la misma Web de Sociedad de Bolsas ya indican que “El acceso a dicha plataforma electrónica de contratación se realiza a través de los terminales de contratación que ofrece Sociedad de Bolsas ("Terminal SIBE Windows TSW") o a través de Aplicaciones Externas homologadas al efecto”. Y a partir de aquí las “malas ideas” surgen y el tema se pone interesante para los expertos en seguridad IT...

Estas aplicaciones externas homologadas (lista online!) son básicamente las plataformas IT utilizadas por los operadores bursátiles autorizados en sus sistemas (los que vemos en la tele histéricos al teléfono) ..No hace falta buscar demasiado para encontrar algún software descargable desde Internet, incluso más de uno, para uso y disfrute de reversers y researchers interesados. Y claro estas aplicaciones se comunican con SIBE a través de los “SIBE-GATE”.

Llegados a este punto, recordemos que la economía y su infraestructura IT, y esto incluye a las “aplicaciones externas homologadas”, son o deben ser, una infraestructura crítica, y como tal tratados y protegidos, y estoy convencido de que el sistema SIBE es tratado como tal, incluso los “Terminal SIBE Windows TSW” (un fantástico Windows 2000!??) y las redes de comunicación que utilizan, y por supuesto también, las aplicaciones externas pasan algún filtro de seguridad para estar “homologadas” (por ser optimista), pero..

Pero resulta que a su vez muchos operadores bursátiles autorizados extienden todavía más toda la maraña de operación bursátil, desde SIBE pasando por sus “aplicaciones externas homologadas”, hasta digamos los terminales de operación que desarrollan ellos mismos (la mayoría de las veces apps web) y que proporcionan a sus clientes (ósea tú o yo).

Este es el caso por ejemplo de Visual Trader, un proveedor para operadores bursátiles, donde en su web además de otras muchas cosas, te cuentan que disponen de una arquitectura para la operación [figura1], y también de una arquitectura para aplicaciones de terceros que se comuniquen con sus sistemas a través de Internet [figura2] (si es que los demás no lo hacían ya!, claro..) para que así los clientes del operador bursátil puedan operar cómodamente en bolsa.

Figura 1 - Arquitectura de Red para Operación.

Figura 2 - Arquitectura de Red para Clientes vía Internet.

Por supuesto este esquema no es exclusivo de Visual Trader, cualquier servicio online de operación bursátil funciona así, incluso desde tu móvil :)

Aquí hay que recordar al trader Josef Ajram en el programa Salvados de LaSexta, donde cuenta (a partir de 7’40’’) lo fácil y cómodo (=inseguro?) que es para cualquiera operar (=manipular?) desde su casa en los mercados.

No quiero poner en duda los niveles de seguridad de toda esta infraestructura IT en la que se apoyan los mercados financieros, pero sí tenemos claro que esto es una infraestructura crítica, con los niveles de seguridad que eso implica, y con la que se comunican infinidad de otras aplicaciones, ¿donde ponemos la frontera de la misma?, ¿donde deja de ser infraestructura crítica y pasa a ser software de la empresa X sin más restricciones? Y en toda esta maraña de aplicaciones y sistemas ¿Tienen todos unos niveles de cifrado y autenticación acorde a una infraestructura crítica? ¿Hay algún leak de users/passwords :)? ¿Las redes donde se utilizan están suficientemente protegidas? ¿Si le dejamos estas aplicaciones a algún reverser sacará muchos exploits? ¿Podría existir un “stuxnet” adaptado a esta infraestructura?
 
Esto evidentemente abre muchas posibilidades.. digamos que si buscamos (y podemos encontrar) en SHODAN un dispositivo SCADA bastante crítico, también podemos encontrar elementos de esta infraestructura en la que se apoyan los mercados (ejemplos chorras 1 y 2).

Y no pensemos que esto es exclusivamente “made in Spain”, se puede seguir rascando en Google/SHODAN sobre sistemas análogos a SIBE como … NYSE EURONEXT (utilizado no solo en la bolsa de Nueva York),  NASDAQ OMX (utilizado no solo en NASDAQ), el protocolo FIX utilizado en la mayoría de estos sistemas, etc… En sus webs te encuentras de todo, y también esto o esto :)

Y no solo eso!.. También existen aplicaciones de automatización de órdenes, y algunas realmente publican mucha información sobre cómo funcionan... Y más divertido aún!.. los dark pool... mercados “no regulados” (es decir sin una CNMV que marque las reglas) y algunos gestionados por ejemplo por.. siii Goldman Sachs (los que “gobiernan el mundo” según Alessio Rastani)…incluso en España existen.

Es evidente que todos estos sistemas tienen medidas de seguridad, pero... pero la cantidad de vectores de ataque tiende a infinito, y esto hace que los incidentes de seguridad sean como las meigas.. haberlas hailas..
Quizás manipular los mercados (si!, quiero decir hackear) para beneficio propio no sea algo de ciencia ficción.
 
PD: Durante la realización de este artículo no se maltrato a ningún gatito, ni tampoco se ejecutó ningún nmap.

 Artículo cortesía de Daniel Fírvida
Leer más...

20 agosto 2012

Forense de SQLite IV - Páginas B-Tree y Overflow


Continuo con la serie de SQLite resumiendo lo visto hasta ahora. Pero para no repetirme demasiado, lo hago esquemáticamente.
  • Las bases de datos SQLite se componen de páginas de un mismo tamaño.
  • Este tamaño se especifica en la cabecera del archivo en la posición 16. 
  • Las páginas son de distintos tipos según los datos que contengan. 
  • Las freelist son un tipo de páginas que han quedado libres tras borrarse la información que contenían.
    • En estas páginas puede haber información eliminada. 
    • Se localizan mediante una página especial llamada freelist troncal, que enumera todas las páginas libres en arrays de 4 bytes.
  • Una freelist troncal puede estar  encadenada a otras páginas troncales mediante los 4 primeros bytes.
    • Si los 4 primeros bytes son 00 00 00 00, significa que no hay más páginas troncales.
    • El segundo campo de 4 bytes de una página troncal indica el número de elementos de array que hay en esa página troncal, por lo tanto, el número de punteros a hojas libres (freelist leaf).
    • El número de la primera página troncal está en la cabecera del archivo en la posición 32.
    • Una página freelist troncal también puede tener espacio libre si los arrays con posiciones no la completan.
Páginas B-Tree
Las páginas B-Tree es donde se almacena la información de la tabla. Existen dos tipos de páginas B-tree las interiores y las hojas, que a su vez pueden ser de tablas o índices.

Al igual que ocurría con las páginas libres, las páginas b-tree interiores contienen punteros a otras páginas b-tree con los registros de cada tabla, denominados celdas. A la primera página B-tree que no tiene hijos, se la denomina página root.

Existe una página root por cada tabla o índice que tenga la base de datos y todos los registros de esa tabla colgarán de ella. Es decir, por cada CREATE TABLE, se creará una página b-tree root de tabla y por cada CREATE INDEX, una página b-tree root de índice.

Figura 1. Esquema B-tree de SQLite

Puede que parezca algo confuso, pero según avanzamos en la entrada quedará todo mucho más claro.

Tanto las páginas interiores como las hojas de página tienen la misma estructura. Se inician con una cabecera de página que varía entre 8 ó 12 bytes según el tipo de b-tree, un array de punteros a celdas de 2 bytes cada elemento y finalmente las celdas con datos, su tamaño depende  del contenido que tengan. Cada celda es un registro de la tabla.

Una celda es creada o modificada cada vez que se ejecuta un INSERT o un UPDATE y eliminada si la base de datos recibe un DELETE.

La página número 1 es una página btree excepcional, ya que comienza en la posición 100 e incluye la cabecera de la base de datos.

Figura 2. Esquema página 1 - B-tree 

La cabecera de una página Btree tiene una composición sencilla donde se indican todas sus características.

Tabla 1. Cabecera B-tree
Vamos a mostrar esto en un ejemplo de una hoja B-tree de tabla, viendo cada uno de los campos y explicándolos con mayor detalle.

Imagen 1. Cabecera B-tree de hoja de tabla

  • 0D: Indica que la página es una b-tree de hoja de tabla (13)
  • 02 E8: Indica que hay bloques libres. Estos bloques forman cadenas y el primer eslabón comienza en la posición 744. Los bloques libres se producen cuando hay celdas borradas
  • 00 05: Especifica que existen 5 celdas en la página, es decir, que la tabla tiene 5 registros.
  • 01 AE: La primera celda se encuentra en la posición 430 (relativa a la posición de la página).
  • 00: No hay bytes fragmentados. Estos bytes representan tamaños inferiores a 2 bytes sin usar dentro de la página.
  • 01 AE .. 03 E0: cada grupo de 2 bytes, son las posiciones de las celdas en la página: 430, 587, 854, 882 y 992.
  • 03 E0: Esta marcado por que aparentemente es una celda eliminada, ya que se indicó que solo había 5 (coloreadas en azul) y en la sexta posición aún hay datos, aunque su valor se ha sobre escrito con el de la posición de la celda número 5.
Para maximizar espacio  las celdas comienzan ubicándose al final de la página y subiendo hasta que llegan al array de posiciones de celda. Por lo que los registros más antiguos estarán en posiciones más altas.

Del ejemplo se observa que se indica la posición 744 como el principio de los bloques libres. Desde aquí comienza una cadena, donde los dos primeros bytes indican la posición del siguiente bloque libre ó 00 00, si no hay más, y los dos siguientes, el tamaño del bloque libre. Con esta información, somos capaces de encontrar todo el espacio que la base de datos tiene asignada como libre.

Vamos a verlo en la práctica. Saltando desde la posición del comienzo de la página al 744.

Imagen 2. Saltando a posición 744 relativa
Como estaba en la posición 1024 (la segunda página), aterrizo en la posición: 1768.

Imagen 3. Cadena de bloque libre.
  • 00 00: Indica que no hay más bloques libres que continuar.
  • 00 6E: Equivale a 110 bytes que componen el bloque.
  • 15 13 ... 00 08: compone el bloque libre, el equivalente al registro eliminado.
Con unas simples cuentas podemos comprobar que cuadran los números, ya que 1768+110=1878, lo que equivale a la posición relativa: 1878-1024=854, justo donde comienza la siguiente celda.

Las celdas tienen un formato complejo que incluye más cabeceras y que está pensado para optimizar el espacio en disco. Con este sistema, por ejemplo un campo VARCHAR(20), no reserva 20 bytes de página, si no que ocupa tan solo lo que haya realmente en ese campo. Todo esto se verá en la siguiente entrada y la composición de celdas (¡otro tostón más!)

En resumen, una página de tipo B-Tree tiene espacio en el que habrá datos eliminados en tres partes distintas:
  • Desde el final del array de punteros a celdas hasta que comienza la celda, denominado "unallocated space"
  • Las celdas que hayan sido eliminadas y que forman los bloques libres
  • Los bytes fragmentados que hayan quedado debido al cambio de tamaños de celdas. Por ejemplo, si una celda contenía "12345" y pasa a contener "1234" tras un comando SQL de UPDATE, estos siempre son iguales o menores a 3 bytes, por lo que en general no hay mucho donde rascar.
Páginas Overflow
Cuando un registro no cabe en una sola página, por ejemplo, imaginemos una tabla con un campo VARCHAR(1090), en una base de datos con una página de tamaño 1024, el contenido de la celda es desbordado a una nueva página denominada Overflow.

Las páginas overflow solo contienen 4 bytes al inicio que indican el número de otra página si la celda continua ó 00 00 00 00 si es la última y la celda termina en ella.

Figura 3. Esquema página overflow. 

En la figura 3 se marca en amarillo la posición de la siguiente página overflow y en verde el contenido de la celda.

En las páginas de overflow hay espacio disponible y por lo tanto susceptible a tener datos eliminados. Ocupa desde el final de la celda hasta el final de la página. En la figura 3 se representa con el cuadrado azul.

¿Qué ocurre si se borra una tabla entera? pues la root page y todas las páginas que de ellas cuelguen (tanto b-tree interiores como hojas de página), además de las overflow, serán marcadas como páginas libres para ser reutilizadas, tal y como vimos en el post anterior.

Todos las entradas de la serie:
Leer más...

19 agosto 2012

Enlaces de la SECmana - 136

Leer más...

18 agosto 2012

Hace unos días recibí una llamada de Movistar, con la que tengo contratado el ADSL, para comentarme que por motivos técnicos me iban a enviar un nuevo router ADSL ya que la instalación que les constaba que tenía se había quedado algo desactualizada.

A los pocos días llegué a casa y, ¡router nuevo!

Se trata de un router wifi ADSL2/2+ fabricado por Alpha Networks, y está etiquetado con el nombre Amper ASL 26555. Son los modelos más actuales de router casero que está distribuyendo actualmente Movistar a sus clientes. El zombie no viene incluido.

Para acceder a la configuración tenemos diferentes opciones.

El dispositivo cuenta con dos paneles web para su configuración, uno "dummy" de Movistar que corre en el puerto 80 y no vamos a tocar (por la complejidad del asunto), y el panel de configuración original de Alpha Networks que está en el puerto 8000.

Si accedemos mediante el navegador a la IP del dispositivo utilizando el puerto 8000 (http://192.168.1.1:8000/) e introducimos los credenciales de administración (1234 / 1234 por defecto), accedemos al panel.

Mediante este panel podemos configurar de forma avanzada el dispositivo.

Como curiosidad, podemos ver toda la configuración que tiene Movistar para acceder a nuestro router a través de sus redes de forma transparente al usuario. Podemos cambiarla para no permitirles acceso, pero si luego no os funciona Internet y el técnico no puede acceder de forma remota, ¡no os quejéis!

Otra posibilidad que nos da el router es acceder vía telnet.

Si nos conectamos por telnet, vemos que utiliza BusyBox 1.00 con un juego de comandos algo reducido.

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
login as: admin
password:

BusyBox v1.00 (2011.05.02-12:14+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

ASL-26555 #

El dispositivo cuenta con una CPU MIPS 24K, arquitectura MIPS Little Endian.

ASL-26555 # cat /proc/cpuinfo
system type             : Ralink SoC
processor               : 0
cpu model               : MIPS 24K V4.12
BogoMIPS                : 255.48
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes
ASEs implemented        : mips16 dsp
VCED exceptions         : not available
VCEI exceptions         : not available

El sistema de ficheros al que tenemos acceso no tiene permisos de escritura, a excepción de /tmp/, y con el BusyBox que viene instalado no podemos transferir datos a través de la red. Por suerte, el router tiene un puerto USB al que podemos conectar un dispositivo de almacenamiento. Si le conectamos un pendrive nos lo monta automáticamente en /var/tmp/storage_dev/usb1_1

Podemos descargar el binario de la última versión de BusyBox para MIPSEL, que incluye un juego de comandos mucho más amplio, y meterlo en el pendrive.

Ya que tenemos acceso a una consola con bastantes comandos, el siguiente paso es compilar nuestros propios programas.

Para hacerlo necesitamos realizar compilación cruzada para MIPS. Podemos hacerlo con Buildroot, que nos permite generar un juego de herramientas para compilar código para diferentes arquitecturas.

Una vez lo tengamos podemos probar a portar, por ejemplo, Unhide (herramienta de detección de rootkits y procesos ocultos).

Unhide realiza algunas llamadas a comandos del sistema que no están disponibles, pero sí están en el BusyBox que hemos metido. Por ello, modificamos el código fuente para que ejecute los comandos a través de nuestro BusyBox, de esta forma no sólo nos vale para nuestro router sino para cualquier otro sistema embebido acompañado de un BusyBox actualizado.

La modificación es trivial (unhide - unhide-tcp), ahora nos queda compilar el código. Con nuestras herramientas de compilación preparadas:

mipsel-linux-gcc -static -O3 unhide.c -o unhide
mipsel-linux-gcc -static -O3 unhide-tcp.c -o unhide-tcp

Limpiamos un poco los binarios ...

mipsel-linux-strip unhide
mipsel-linux-strip unhide-tcp

Y lo acompañamos del binario de BusyBox. Podéis descargar los tres binarios ya preparados aquí.

Lo pasamos al pendrive y ejecutamos en el router:

ASL-26555 # ls -l
-rwxrwxrwx    1 0        0           65488 unhide-tcp
-rwxrwxrwx    1 0        0           65752 unhide
-rwxrwxrwx    1 0        0         1563696 busybox
ASL-26555 # ./unhide sys
Unhide 20110113
http://www.unhide-forensics.info


[*]Searching for Hidden processes through getpriority() scanning

[*]Searching for Hidden processes through getpgid() scanning

[*]Searching for Hidden processes through getsid() scanning

ASL-26555 #

Algo que he echado en falta es obtener el firmware a través de la web del fabricante. No lo he encontrado por internet, no obstante, si echamos un vistazo al CD de configuración avanzada que proporciona Movistar con el router, además de otros programas hay un agente de configuración remoto. Si lo instalamos y buscamos en el directorio dónde se ha instalado, podremos encontrar el firmware que está instalado por defecto. Para ahorraros el proceso, lo tenéis disponible aquí.

Ya sabemos como configurar el router a fondo, meterle programas, compilar los nuestros propios y tenemos el firmware del dispositivo. Ahora falta la seguridad, ¡algo había que decir!

La vulnerabilidad de la que vamos a hablar nos permite control total sobre el dispositivo con permisos de administrador. Es curiosa por su forma de ser y porque haya pasado desapercibida.

Como hemos dicho antes, la forma de gestionar el router es a través de un panel web con autenticación que corre en el puerto 8000. La sorpresa es que en el mismo servidor web tenemos un directorio llamado /APIS/, que no requiere autenticación. Nos devuelve error 404 cuando lo visitamos, pero si sabemos los nombres de los ficheros que tiene podemos hacer llamadas a los mismos.

Nos permite hacer diferentes llamadas para leer prácticamente toda la información de la configuración. Hay una llamada especial, con el nombre returnJSON.htm, que nos devuelve los credenciales del administrador.


$ curl http://192.168.1.1:8000/APIS/returnJSON.htm
{
"RETURN":{
"success": true,
"errorDescription": "ERROR_GENERAL"
},
"USER":{
"USERNAME": "admin",
"PASSWORD": "adm1n_passw0rd_exposed"
}
}

Con ésto podemos autenticarnos en el panel web y gestionar el dispositivo.

Dado que dicha API no está documentada por ningún lado y no requiere autenticación, da la sensación de que el fallo es en realidad un backdoor que se dejó el fabricante original para poder acceder a información del dispositivo aunque no se conozcan los credenciales.

Hay que añadir que con la configuración que carga Movistar en los routers, nadie fuera de nuestra red interna o de las redes de Movistar puede utilizar esto, ya que el servicio no es accesible por red sin contar esas dos excepciones.

Publiqué la vulnerabilidad hace unos días, aquí está la descripción detallada, que incluye todas las llamadas que nos permite la API.

Como conclusión, para ser un router casero está bien técnicamente y nos permite un control relativamente amplio sobre él. Tiene algunos puntos útiles, por ejemplo poder compartir el acceso al dispositivo USB a través de SMB por red para acceder a contenidos multimedia desde diferentes puntos. Merece la pena investigarlo un poco.

Contribución por Alberto Ortega.
Leer más...