Keylogger per android, (solo un'idea)

« Older   Newer »
  Share  
Rain-
view post Posted on 25/3/2013, 23:07




Premetto di avere ben poca esperienza come programmatore, in quanto ho studiato e (come un coglione) abbandonato il C.
Oggi però mi pongo un quesito: "Ma se di guide su internet per creare un keylogger in 5 minuti per pc o mac ce ne sono un fottio, perchè, al contrario, per android non si trova quasi nulla ?"
Senza stare a fare grandi ricerche con conseguenti grandi risposte filosofiche attribuirei solo una risposta a questa domanda: è un po' più difficile (neh, davvero ?!).
La risposta di poco più macchinosa alla scontata domanda "Ma perchè più difficile ?" potrebbe essere che android usa meccanismi diversi nell'apertura dei programmi; mi spiego meglio.
Quando noi andiamo ad aprire un'applicazione qualsiasi, l'applicazione va a richiamare le sue componenti, ovvero:
- activities
Interfacce grafiche
- services
porzioni di programma (servizi appunto) che girano in background per fornire supporto all'applicazione
- intents e intentfilters
gli intents sono strumenti atti a far comunicare le activity tra loro; intentfilters sono invece dei filtri che ogni activity posside: se un intent supera tali filtri allora l'activity è visualizzabile
- content providers
offrono supporto alla condivisione di dati da parte di un'applicazione; ad esempio possono dare accesso al database di quell'applicazione ad un'altra app, di modo che quella possa utilizzare quegli stessi dati a sua volta
- broadcast receiver
permette di gestire notifiche inviate a tutto il sistema come, ad esempio, la connessione usb del terminale
Ok, e questo potrebbe bastare se decidessi di rispondere alla domanda sulla difficoltà; ma questa non è che la punta dell'iceberg, in quanto noi vogliamo proprio un keylogger, e non si può fare altro se non scavare più a fondo nella struttura delle app.
- activities: il componente activity ha la peculiarità di possedere un'interfaccia grafica. Un'app può possedere diverse interfacce tramite un ordine gerarchico impartito dal programmatore; ad esempio, "visualizzami subito questa schermata", oppure "se l'utente pigia opzioni mostrami quest'altra", e via così.
Queste interfacce possono avere tre stati facilmente intuibili: in pausa, stoppata e in esecuzione (non credo ci sia bisogno di argomentare).
- intents: sono dei messaggi con determinate caratteristiche (parametri) che verranno letti ed eseguiti al fine di modificare un'activity. Pensandoci un attimo ci si può tranquillamente arrivare a logica quali parametri conterrà questo messaggio: anzitutto un nome identificativo del messaggio; poi l'azione da compiere.
L'intentfilter funge da filtro al sistema informandolo di quali intent gestisce l'app.
- services: i servizi non hanno un'interfaccia grafica. Un servizio si rende necessario quando un'app deve fare qualcosa in background; ad esempio un'applicazione che scarica in background dei dati utilizza un servizio che in seguito notificherà all'utente il download dei dati.
- content providers
i content providers gestiscono la condivisione di dati tra applicazioni.
I dati si presentano sotto forma di database contenenti righe e colonne dei dati raccolti dall'applicazione.
Se lo sviluppatore non vuole che i dati vengano condivisi, semplicemente non userà dei content providers.
Bene, ora possiamo iniziare a ragionare lucidamente sulla questione keylogger: partiamo dal presupposto che un keylogger altro non è che un programma con l'unico scopo di raccogliere tutto ciò che viene dato in input e salvarlo in output da qualche parte.
Solo ieri sera ho addocchiato un ottimo lavoro basato sulla modifica di una nota tastiera (swiftkey) la quale prendeva in input tutto il testo digitato dall'utente, lo catalogava, e lo inviava ad un server che a sua volta raccoglieva il tutto linkando l'indirizzo IP dell'utente.
L'idea è davvero ottima per essere, in quanto si può impostare la tastiera come predefinita e tutto sembra normale; purtroppo: 1- la catalogazione non è un granchè, in quanto vengono aggiunti caratteri non digitati 2- la connessione dati deve essere sempre attiva per raccogliere il testo.
Ho addocchiato anche altri servizi come kidlogger o hellospy, ma entrambi peccano per la stessa cosa: connessione dati sempre attiva.
Personalmente trovo inutile la parte online di un keylogger in quanto, per quanto mi riguarda almeno, basterebbe solo un .txt in qualche sotto cartella per fare un ottimo lavoro di logging; oppure si implementa la parte online accoppiandola a quella offline dicendo al programma "Non appena hai raccolto tot dati inviameli per e-mail" ad esempio.
Ma come fare allora un keylogger ? Ripeto che NON sono un programmatore (per questo non vedrete linee di codice), ma in teoria si potrebbe, per i messaggi ad esempio, scaricare una tastiera alternativa dal market, reversarla (ne parlerò in un altro thread(https://whatisthat.forumcommunity.net/?t=54054955)), modificare il codice sorgente, creare un content provider personalizzato in grado di salvare tutto quello che arriva in input e creare un'app che acceda alle informazioni del content provider per poi esportarle su un file .txt in una data cartella.
Questa è, come specificato nel titolo, solo un'idea.

Edited by Rain- - 29/3/2013, 21:37
 
Top
Ikeymonitor
TOPIC_ICON1  view post Posted on 2/2/2016, 17:20




Puoi provare iKeyMonitor se ti interessano le app spia per android...
 
Top
1 replies since 25/3/2013, 23:07   910 views
  Share