Risolto Funzionamento keylogger mail

Stato
Discussione chiusa ad ulteriori risposte.
Ultima modifica:
è un keylogger per Windows d'altri tempi, quelli che usavano le mail per esfiltrare (SMTP) andavano forte circa 20 anni fa. Considera che quel codice dovrebbe compilare bene per .NET 2.0 che era già disponibile su Windows 98, anche se la parte opzionale di EnableLUA e le chiavi di registro usate fanno capire che è pensato per Windows 7 e superiori. Il codice rilevante si trova tutto nel file Stub.cs , quello che fa dipende dalle opzioni che metti, di base monitora i tasti premuti in un loop, li scrive su file "log.txt" e un altra copia in "Documenti\backup.txt", appena raggiunge 300 caratteri registrati chiede a ipify.org quale sia l'indirizzo ip pubblico del pc, lo mette nell'oggetto della mail, e nel corpo i tasti premuti e resetta il contatore e il file (ma backup.txt rimarrà sempre per qualche motivo, con tutto lo storico). Se hai selezionato la roba delle password metterà in allegato il db che le contiene, però da solo è totalmente inutile visto che da anni Chrome cifra le password e i cookie con una chiave utente. Se lo apri da una working directory che non è quella che lo contiene la persistenza fallirà. Se non ha i permessi di scrittura sulla working directory ci sarà un crash quando prova a scrivere il log. Se lo apri due volte andrà in race condition, scriveranno entrambi sul file, tenendo due contatori diversi finché uno dei due non si becca un IOException che lo fa crashare. Visto che è single thread e usa GetAsyncKeyState può perdersi parecchi tasti, specie se premuti in rapida successione o nel durante che sta interrogando ipify e fabbricando la mail per i 300 tasti precedenti. Per il resto direi che è abbastanza inutile ormai e mi sorprenderei se un antivirus aggiornato non lo rilevasse all'istante ancor prima di dare il tempo all'utente di farci click sopra.
 
è un keylogger per Windows d'altri tempi, quelli che usavano le mail per esfiltrare (SMTP) andavano forte circa 20 anni fa. Considera che quel codice dovrebbe compilare bene per .NET 2.0 che era già disponibile su Windows 98, anche se la parte opzionale di EnableLUA e le chiavi di registro usate fanno capire che è pensato per Windows 7 e superiori. Il codice rilevante si trova tutto nel file Stub.cs , quello che fa dipende dalle opzioni che metti, di base monitora i tasti premuti in un loop, li scrive su file "log.txt" e un altra copia in "Documenti\backup.txt", appena raggiunge 300 caratteri registrati chiede a ipify.org quale sia l'indirizzo ip pubblico del pc, lo mette nell'oggetto della mail, e nel corpo i tasti premuti e resetta il contatore e il file (ma backup.txt rimarrà sempre per qualche motivo, con tutto lo storico). Se hai selezionato la roba delle password metterà in allegato il db che le contiene, però da solo è totalmente inutile visto che da anni Chrome cifra le password e i cookie con una chiave utente. Se lo apri da una working directory che non è quella che lo contiene la persistenza fallirà. Se non ha i permessi di scrittura sulla working directory ci sarà un crash quando prova a scrivere il log. Se lo apri due volte andrà in race condition, scriveranno entrambi sul file, tenendo due contatori diversi finché uno dei due non si becca un IOException che lo fa crashare. Visto che è single thread e usa GetAsyncKeyState può perdersi parecchi tasti, specie se premuti in rapida successione o nel durante che sta interrogando ipify e fabbricando la mail per i 300 tasti precedenti. Per il resto direi che è abbastanza inutile ormai e mi sorprenderei se un antivirus aggiornato non lo rilevasse all'istante ancor prima di dare il tempo all'utente di farci click sopra.
Grazie per le informazioni. Come sono i keylogger oggi? Cosa usano per esfiltrare?
P.S. Se volessi eseguire il keylogger all'avvio di Windows, che metodo mi consiglieresti? per evitare di essere scoperti.
Già ho messo il keylogger tra le esclusioni di Defender e questo non mi piace.
 
Ci sono molte tecniche valide e in realtà anche GetAsyncKeyState è ancora valida ad oggi, solo che in quel progetto è stata usata in modo scorretto. Un altro metodo popolare è tramite SetWindowsHookEx e fare hook della tastiera. Quello che lo rende d'altri tempi è più l'esfiltrazione via mail: i malware di oggi usano un server chiamato di "Command And Control" (spesso abbreviato in CnC o C&C) che può essere ad hoc e di proprietà dell'attaccante o un servizio terzo che viene sfruttato per il transito dei dati (es. Telegram, Discord...). Di solito usa protocolli di rete molto diffusi, cifrati e che danno meno nell'occhio (es. HTTPS). I malware che usano protocolli custom TCP/UDP possono dare più nell'occhio ma non è detto (comunque sicuramente meno di SMTP), il vantaggio è che hanno la velocità massima. Come scegliere il metodo di esfiltrazione? Pensa prima a quanti dati devi mandare "a casa": è un information stealer che manda testo (password/tasti)? La velocità conta poco qui, puoi anche usare DNS o un hidden service; è un RAT che fa video/screenshot/download di file grandi? Ti serve un protocollo veloce o lo stream sarà pessimo.

Ci sono tanti motivi per cui l'approccio via mail è stato gradualmente abbandonato, uno da come si è intuito è la necessità di essere più "stealth", ma ci sono molti altri fattori dalla stabilità, dai filtri invisibili imposti dal provider della mail al concreto rischio che qualcuno trovi il sample, faccia reverse engineering, estragga la password della mail e legga tutti i dati ricevuti finora per poi cambiarla rompendo tutti gli eseguibili che inviano dati a quella mail. Ci sono altri vantaggi come la velocità di trasmissione, la quantità di dati che è possibile inviare, il fatto che il server già conosce il tuo IP e che quindi non serve chiederlo a ipify eccetera.

Benissimo... però fare tutto questo non basta, è il minimo indispensabile per sperare di passare inosservati ad antivirus moderni che usano machine learning. Partendo da una buona struttura di base diventa possibile fare evasion e lì sta alla tua creatività di hacker trovare il modo per farlo piacere a defender, online puoi trovare molti spunti e consigli ma nessuno può darti il bypass pronto al posto tuo.
 
  • Mi piace
Reazioni: nicovon
Ultima modifica:
Ci sono molte tecniche valide e in realtà anche GetAsyncKeyState è ancora valida ad oggi, solo che in quel progetto è stata usata in modo scorretto. Un altro metodo popolare è tramite SetWindowsHookEx e fare hook della tastiera.
Ho notato che non riconosce i caratteri ottenuti con combinazione tasti. Per esempio la @ la registra come ò
naturalmente non riconosce neanche le maiuscole.
Comunque grazie per le informazioni preziose che mi sta dando.
Posso chiederle se c'è ha un codice base ma moderno da cui posso partire?
 
Ho notato che non riconosce i caratteri ottenuti con combinazione tasti. Per esempio la @ la registra come ò
naturalmente non riconosce neanche le maiuscole.
Comunque grazie per le informazioni preziose che mi sta dando.
Posso chiederle se c'è ha un codice base ma moderno da cui posso partire?

Ci sono centinaia di RAT opensource, se vuoi implementare il tuo keylogger che mappa bene i caratteri con il layout attuale (indispensabile con caratteri di alfabeto non-latino tipo russo e cinese) ti consiglio di usare il metodo con hook della tastiera, una buona implementazione è presente sul repo github di AsyncRAT. Va estrapolata la parte che ti interessa perché in quel file c'è anche roba della clipboard e dell'infrastruttura interna di quel programma. Per la parte di esfiltrazione dati puoi seguire sempre AsyncRAT ma essendo la parte di comunicazione spezzettata su molti file forse ti è più comodo farla da zero, consulta pure la mia reverse shell su inforge, anche se non ha un keylogger è super minimale in un paio di file quindi puoi vedere al volo i pezzi del puzzle che ti servono per fare richieste https.
 
  • Mi piace
Reazioni: nicovon
Siamo oltre l'off-topic, se vuoi sapere cos'è cerca sul forum o su google riguardo armitage, cobalt strike... E se non trovi risposta alla tua domanda apri un nuovo thread. Questo lo segno come risolto, chiudo.
 
Stato
Discussione chiusa ad ulteriori risposte.