Domanda Malware Creare Ransomware in python

Stato
Discussione chiusa ad ulteriori risposte.

Gorate

Utente Emerald
13 Novembre 2016
1,384
42
478
529
Salve a tutti,
come da titolo vorrei programmare un ransomware in python;
Quali sono i punti fondamentali di un ransomware,come funziona nel dettaglio [sopratutto la parte del pagamento e del criptaggio], cosa sono iv,key[vabbe', la password] ecc...;?
se avete qualche source postatemi il link

Insomma, mi affido a voi piu' esperti per capire come funziona,quali librerie adottare e magari anche qualche consiglio
 
Salve a tutti,
come da titolo vorrei programmare un ransomware in python;
Quali sono i punti fondamentali di un ransomware,come funziona nel dettaglio [sopratutto la parte del pagamento e del criptaggio], cosa sono iv,key[vabbe', la password] ecc...;?
se avete qualche source postatemi il link

Insomma, mi affido a voi piu' esperti per capire come funziona,quali librerie adottare e magari anche qualche consiglio
Allora, un ransomware si basa sul fatto che la vittima deve pagare per riavere i suoi preziosissimi file. Infatti, quando questo viene avviato, comincia a cifrare tutti i dati in background, quindi senza un'interfaccia grafica. Fatto ciò appare la GUI, dove è riportato l'indirizzo del wallet bitcoin a cui pagare il riscatto (ransom) e (la maggiorparte dei ransomware lo fanno) un timer, entro il quale la vittima deve pagare la somma, altrimenti vengono cancellati i file, tutti o progressivamente ogni tot di tempo. L'IV è il vettore di inizializzazione della cifratura (in molti casi AES), è un blocco di bit utilizzato per inizializzare lo stato di un cifrario a flusso o di un cifrario a blocchi. In pratica a chiavi uguali il risultato è differente (con la chiave pubblica cifri, con la privata decifri). La chiave è appunto una sequenza di bit utilizzata insieme all'IV per cifrare lo stream di bit. Può variare di dimensioni, le più comuni sono 128, 256, 512, 1024, 2048, 4096 bit. Ce ne sono anche di più grandi ma non tutte le librerie le supportano, anzi a volte neanche la 4096 è supportata. Quando ritirerai i soldi dal wallet bitcoin ricordati di metterli su un bitcoin mixer tutto attraverso TOR, depositarli poi in un wallet su TOR e da lì trasferirli al vero wallet sul clearnet. Ci sono moltissime guide comunque su come rendere i bitcoin irrintracciabili. Ricorda anche di cancellare i metadati del ransomware ed eventuali commenti, dato che il linguaggio in considerazione è python. Compila lo script con py2exe, altrimenti non tutti i PC hanno python installato.

Spero di essere stato di aiuto ;D
 
Allora, un ransomware si basa sul fatto che la vittima deve pagare per riavere i suoi preziosissimi file. Infatti, quando questo viene avviato, comincia a cifrare tutti i dati in background, quindi senza un'interfaccia grafica. Fatto ciò appare la GUI, dove è riportato l'indirizzo del wallet bitcoin a cui pagare il riscatto (ransom) e (la maggiorparte dei ransomware lo fanno) un timer, entro il quale la vittima deve pagare la somma, altrimenti vengono cancellati i file, tutti o progressivamente ogni tot di tempo. L'IV è il vettore di inizializzazione della cifratura (in molti casi AES), è un blocco di bit utilizzato per inizializzare lo stato di un cifrario a flusso o di un cifrario a blocchi. In pratica a chiavi uguali il risultato è differente (con la chiave pubblica cifri, con la privata decifri). La chiave è appunto una sequenza di bit utilizzata insieme all'IV per cifrare lo stream di bit. Può variare di dimensioni, le più comuni sono 128, 256, 512, 1024, 2048, 4096 bit. Ce ne sono anche di più grandi ma non tutte le librerie le supportano, anzi a volte neanche la 4096 è supportata. Quando ritirerai i soldi dal wallet bitcoin ricordati di metterli su un bitcoin mixer tutto attraverso TOR, depositarli poi in un wallet su TOR e da lì trasferirli al vero wallet sul clearnet. Ci sono moltissime guide comunque su come rendere i bitcoin irrintracciabili. Ricorda anche di cancellare i metadati del ransomware ed eventuali commenti, dato che il linguaggio in considerazione è python. Compila lo script con py2exe, altrimenti non tutti i PC hanno python installato.

Spero di essere stato di aiuto ;D
Grazie mille per la risposta esauriente!
 
L'IV è il vettore di inizializzazione della cifratura (in molti casi AES), è un blocco di bit utilizzato per inizializzare lo stato di un cifrario a flusso o di un cifrario a blocchi. In pratica a chiavi uguali il risultato è differente (con la chiave pubblica cifri, con la privata decifri). La chiave è appunto una sequenza di bit utilizzata insieme all'IV per cifrare lo stream di bit. Può variare di dimensioni, le più comuni sono 128, 256, 512, 1024, 2048, 4096 bit.

Scusami un attimo, ma l'AES, in quanto metodo di crittografia simmetrica, utilizza una chiave ben definita, non quindi una chiave pubblica e una privata (crittografia asimmetrica).
 
Allora puoi utilizzare la cifratura file tramite AES (metodo simmetrico quindi chiave unica) o RSA (metodo asimmetrico quindi doppia chiave pubblica e privata) e questi sono i più comuni poi riguardo al pagamento sono d'accordo sul fatto del mixing e della creazione di vari bitcoin wallet. Assicurati che il tuo ransomware non sia "dipendente" da internet cioè fa in modo che anche se la persona che lo avvia sia offline esso possa tranquillamente essere eseguito. La cosa di cui ti dovrai preoccupare di più in assoluto credo sia l'FUD all'antivirus per questo ti consiglio di effettuare spreading tramite o macro di word o cose simili così da non regalare l'exe bello e pronto a chiunque (anche se lo troveranno comunque entro pochissimo tempo) inoltre, sempre a proposito di farlo FUD magari cryptarlo con un crypter qualsiasi non sarebbe un'idea bruttissima. RIguardo alla chiave nel caso in cui vorresti usare python non la metterei chiaramente nel codice poichè basta un facile reverse per trovare il codice sorgente quindi inventa un modo originale di nasconderla. Ti consiglio per il compiling ad exe di usare pyinstaller e non py2exe poichè quest'ultimo ha qualche problema con le recenti versioni di python. Infine ti consiglio di crearlo a scopo personale utilizzare un ransomware anzi, fare uno spreading di massa come credo voglia fare tu, se non fatto con precisione cinica può crearti grandi problemi a livello legale quindi credo che la perdita di libertà sia maggiore del guadagno di denaro... Ma questa è una tua decisione
 
Allora puoi utilizzare la cifratura file tramite AES (metodo simmetrico quindi chiave unica) o RSA (metodo asimmetrico quindi doppia chiave pubblica e privata) e questi sono i più comuni poi riguardo al pagamento sono d'accordo sul fatto del mixing e della creazione di vari bitcoin wallet. Assicurati che il tuo ransomware non sia "dipendente" da internet cioè fa in modo che anche se la persona che lo avvia sia offline esso possa tranquillamente essere eseguito. La cosa di cui ti dovrai preoccupare di più in assoluto credo sia l'FUD all'antivirus per questo ti consiglio di effettuare spreading tramite o macro di word o cose simili così da non regalare l'exe bello e pronto a chiunque (anche se lo troveranno comunque entro pochissimo tempo) inoltre, sempre a proposito di farlo FUD magari cryptarlo con un crypter qualsiasi non sarebbe un'idea bruttissima. RIguardo alla chiave nel caso in cui vorresti usare python non la metterei chiaramente nel codice poichè basta un facile reverse per trovare il codice sorgente quindi inventa un modo originale di nasconderla. Ti consiglio per il compiling ad exe di usare pyinstaller e non py2exe poichè quest'ultimo ha qualche problema con le recenti versioni di python. Infine ti consiglio di crearlo a scopo personale utilizzare un ransomware anzi, fare uno spreading di massa come credo voglia fare tu, se non fatto con precisione cinica può crearti grandi problemi a livello legale quindi credo che la perdita di libertà sia maggiore del guadagno di denaro... Ma questa è una tua decisione
Tranquillo, non ho intenzione di incorrere in problemi legali, so' bene che e' pericoloso ed inutile:
20/100 lo aprono e 2/20 pagano, tutti glia ltri protestano e ti denunciano, quindi.
Era solo per mia curiosita' voler creare un ransomware [magari ci guadagni di piu' a fare un semplice raas e lo posti sul deep] e fare qualche esperimento per vedere un po';
Scusate in ultimo la mia ignoranza:
ma per modificare l mbr e far apparire una schermata [tipo petya ransomware], si puo' usare python?
e 2, che librerie mi consigliate di usare?
 
Allora puoi utilizzare la cifratura file tramite AES (metodo simmetrico quindi chiave unica) o RSA (metodo asimmetrico quindi doppia chiave pubblica e privata)

Non voglio essere il solito guastafeste, ma davvero, non ha senso creare un ransomware con AES. Innanzitutto se qualcuno trova la chiave, questa può benissimo essere utilizzata da tutti gli altri infetti a meno che non imposti una politica di generazione delle chiavi ad ogni esecuzione del programma, ma questo vorrebbe dire essere connesso ad internet per riceverle, oppure impostare una gestione tale da sapere a quale id di ransomware corrisponde ogni chiave possibile.
Come se non bastasse si pone il problema del reverse engineering, ci mettono meno di 0 per sgamarti la password.
Fai una cosa saggia, utilizza RSA.
 
Non voglio essere il solito guastafeste, ma davvero, non ha senso creare un ransomware con AES. Innanzitutto se qualcuno trova la chiave, questa può benissimo essere utilizzata da tutti gli altri infetti a meno che non imposti una politica di generazione delle chiavi ad ogni esecuzione del programma, ma questo vorrebbe dire essere connesso ad internet per riceverle, oppure impostare una gestione tale da sapere a quale id di ransomware corrisponde ogni chiave possibile.
Come se non bastasse si pone il problema del reverse engineering, ci mettono meno di 0 per sgamarti la password.
Fai una cosa saggia, utilizza RSA.
Grazie del consiglio.
 
Non voglio essere il solito guastafeste, ma davvero, non ha senso creare un ransomware con AES. Innanzitutto se qualcuno trova la chiave, questa può benissimo essere utilizzata da tutti gli altri infetti a meno che non imposti una politica di generazione delle chiavi ad ogni esecuzione del programma, ma questo vorrebbe dire essere connesso ad internet per riceverle, oppure impostare una gestione tale da sapere a quale id di ransomware corrisponde ogni chiave possibile.
Come se non bastasse si pone il problema del reverse engineering, ci mettono meno di 0 per sgamarti la password.
Fai una cosa saggia, utilizza RSA.
Accetto la critica tuttavia alcune cose che hai detto non sono corrette: se generi la chiave randomicamente e non la inserisci nel source code con una semplice funzione di python os.urandom(numero bytes) non te la trovano reversando e non è uguale per nessun computer infetto; poi il problema dell'offline non c'è poichè al termine della generazione randomica imposti una funzione che in caso di presenza di connessione invia i dati (per esempio tramite email che con python è semplicissimo fare) e in assenza di essa metti un timing dopo il quale si ripete il tentativo di connessione.
 
  • Mi piace
Reazioni: Gorate
Accetto la critica tuttavia alcune cose che hai detto non sono corrette: se generi la chiave randomicamente e non la inserisci nel source code con una semplice funzione di python os.urandom(numero bytes) non te la trovano reversando e non è uguale per nessun computer infetto; poi il problema dell'offline non c'è poichè al termine della generazione randomica imposti una funzione che in caso di presenza di connessione invia i dati (per esempio tramite email che con python è semplicissimo fare) e in assenza di essa metti un timing dopo il quale si ripete il tentativo di connessione.
Grazie a tutti dei consigli;
Quindi mi consigliate un RSA perche' a doppia chiave e di farlo attraverso la fuzione random per poter generare sempre nuove chiavi;
Ora ho visto anche che esiste pycrypto, mi consigliate questa libreria o altre?
e poi, come e' possibile far interagire il ransomware con il sito per poter immagazinare le chiavi? GET e POST oppure mi consigliate altro?

Grazie ancora a tutti
 
Grazie a tutti dei consigli;
Quindi mi consigliate un RSA perche' a doppia chiave e di farlo attraverso la fuzione random per poter generare sempre nuove chiavi;
Ora ho visto anche che esiste pycrypto, mi consigliate questa libreria o altre?
e poi, come e' possibile far interagire il ransomware con il sito per poter immagazinare le chiavi? GET e POST oppure mi consigliate altro?

Grazie ancora a tutti
io ti consiglio AES con chiave generata randomicamente. Sì, ti consiglio pycrypto e per poter interagire get e post non è una cattiva idea
 
ditemi voi che ne pensate, perche' AES se ha una chiave sola contro RSA che ne ha 2?
piu' sicuro, perche'?
e poi get e post possono essere adottati solo con php o anche con python/java? perche' se si possono adottare solo con php [che non conosco molto bene] potrei adottare un socket in ascolto che riceve le chiavi e le memorizza?
ditemi voi quae e' meglio, comunque mi iteressa molto quale e' meglio e perche' lo e': AES vs RSA
 
Ultima modifica:
ditemi voi che ne pensate, perche' AES se ha una chiave sola contro RSA che ne ha 2?
piu' sicuro, perche'?
e poi get e post possono essere adottati solo con php o anche con python/java? perche' se si possono adottare solo con php [che non conosco molto bene] potrei adottare un socket in ascolto che riceve le chiavi e le memorizza?
ditemi voi quae e' meglio, comunque mi iteressa molto quale e' meglio e perche' lo e': AES vs RSA
aspetta allora rsa ne ha 1 pubblica e una privata non crypta i file con 2 chiavi, in pratica è come se una chiave servisse per criptare e l'altra per decryptare (spiegazione non completamente corretta) io ti consiglio AES perchè è molto più semplice da implementare in python piuttosto che RSA e non ha il rischio (anche se con una chiave da 4096 bit RSA è piccolissimo) della cosiddetta "rottura delle chiavi" che nonostante occorre anni e risorse per essere attuato non è un fattore da escludere. Per Get e post anche con python si può fare una cosa del genere ma magari imposti nel server dei file php che ricevono le richieste e le richieste le fai mandare dal ransomware in python
 
Ma Seigma aveva dettoche e' piu' semplice da reversare, e' cosi' oppure con il random diventa piu' difficle e finisce tutto li'?
Non voglio essere il solito guastafeste, ma davvero, non ha senso creare un ransomware con AES. Innanzitutto se qualcuno trova la chiave, questa può benissimo essere utilizzata da tutti gli altri infetti a meno che non imposti una politica di generazione delle chiavi ad ogni esecuzione del programma, ma questo vorrebbe dire essere connesso ad internet per riceverle, oppure impostare una gestione tale da sapere a quale id di ransomware corrisponde ogni chiave possibile.
Come se non bastasse si pone il problema del reverse engineering, ci mettono meno di 0 per sgamarti la password.
Fai una cosa saggia, utilizza RSA.
 
Ma Seigma aveva dettoche e' piu' semplice da reversare, e' cosi' oppure con il random diventa piu' difficle e finisce tutto li'?
è più facile da reversare nel senso che AES avendo una sola chiave, questa chiave deve essere inserita nel codice sorgente del virus che, appena reversato, mostrerà la chiave in chiaro ma creando la chiave randomicamente ogni volta essa non viene scritta nel codice sorgente e quindi il problema non c'è
 
è più facile da reversare nel senso che AES avendo una sola chiave, questa chiave deve essere inserita nel codice sorgente del virus che, appena reversato, mostrerà la chiave in chiaro ma creando la chiave randomicamente ogni volta essa non viene scritta nel codice sorgente e quindi il problema non c'è
Ok, grazie mille
 
Ultima domanda, vi prego di scusare ancora la mia ignoranza:
da giorni sto' analizzando ransomware e ransomware builder, ma la cosa che mi e' saltata piu' all' occhio e' che adottano quasi tutti c# come linguaggio di programmazione e e lo stesso i builder [su quest ultimi penso perhe' piu' semplice per fare i form per interagire], ma vorrei chiedervi, perche'?
Poi come encryption adottano quasi tutti rsa [ad eccezione di alcuni], e come detto c# [estensione .cs] come linguaggio: why?
 
Ultima domanda, vi prego di scusare ancora la mia ignoranza:
da giorni sto' analizzando ransomware e ransomware builder, ma la cosa che mi e' saltata piu' all' occhio e' che adottano quasi tutti c# come linguaggio di programmazione e e lo stesso i builder [su quest ultimi penso perhe' piu' semplice per fare i form per interagire], ma vorrei chiedervi, perche'?
Poi come encryption adottano quasi tutti rsa [ad eccezione di alcuni], e come detto c# [estensione .cs] come linguaggio: why?
Evidentemente utilizzano tutti lo stesso tool per creare ransomware (della darknet ne trovi a bizzeffe, peccato o per fortuna che quelli seri sono a pagamento).

Consiglio a tutti di studiare un po' di crittografia e di crittanalisi moderna, in quanto ho letto più obbrobri qui che in un corso di crittografia per le scuole elementari. :asdangel:

Infine, è tranquillamente possibile creare un ransomware usando AES (ma anche il triplo DES potrebbe essere utile), bisogna stare attenti però ad eliminare definitivamente la chiave dal computer vittima in quanto, a differenza di RSA et similia, essa può essere utilizzata anche per decrittare oltre che a criptare. Il vantaggio dell'AES rispetto ad RSA è la velocità e su alcuni processori sono disponibili istruzioni hardware per l'AES. La crittografia tramite curve ellittiche sembra interessante, ma non conosco tuttora librerie affidabili.

E, cosa più importante, non fate lo stesso errore del creatore di "WannaCry", che però solleva una domanda legittima: come bisognerebbe implementare un sistema di bloccaggio della replicazione del malware che non sia sfruttabile dai reverser?
 
Evidentemente utilizzano tutti lo stesso tool per creare ransomware (della darknet ne trovi a bizzeffe, peccato o per fortuna che quelli seri sono a pagamento).

Consiglio a tutti di studiare un po' di crittografia e di crittanalisi moderna, in quanto ho letto più obbrobri qui che in un corso di crittografia per le scuole elementari. :asdangel:

Infine, è tranquillamente possibile creare un ransomware usando AES (ma anche il triplo DES potrebbe essere utile), bisogna stare attenti però ad eliminare definitivamente la chiave dal computer vittima in quanto, a differenza di RSA et similia, essa può essere utilizzata anche per decrittare oltre che a criptare. Il vantaggio dell'AES rispetto ad RSA è la velocità e su alcuni processori sono disponibili istruzioni hardware per l'AES. La crittografia tramite curve ellittiche sembra interessante, ma non conosco tuttora librerie affidabili.

E, cosa più importante, non fate lo stesso errore del creatore di "WannaCry", che però solleva una domanda legittima: come bisognerebbe implementare un sistema di bloccaggio della replicazione del malware che non sia sfruttabile dai reverser?
Grazie mille per tutte le informazioni,
ti vorrei solo chiedere se mi puoi indicare qualche pdf/sito o altro da cui cominciare come hai detto ad informarmi sulla crittografia moderna, te ne sarei grato; Bella anche l ultima domanda: sarebbe bello, ma come sempre detto, tutto cio' che e' sfruttabile in bene lo e' anche in male e tutto cio' che puo' essere usato da attacker puo' essere un arma a doppio taglio sfruttabile dai reverser.
Grazie ancora
E, cosa più importante, non fate lo stesso errore del creatore di "WannaCry", che però solleva una domanda legittima: come bisognerebbe implementare un sistema di bloccaggio della replicazione del malware che non sia sfruttabile dai reverser?
 
Grazie mille per tutte le informazioni,
ti vorrei solo chiedere se mi puoi indicare qualche pdf/sito o altro da cui cominciare come hai detto ad informarmi sulla crittografia moderna, te ne sarei grato; Bella anche l ultima domanda: sarebbe bello, ma come sempre detto, tutto cio' che e' sfruttabile in bene lo e' anche in male e tutto cio' che puo' essere usato da attacker puo' essere un arma a doppio taglio sfruttabile dai reverser.
Grazie ancora
"Darknet"... Basta cercare su internet 888 Ransomware builder e uno (non serio) lo hai già trovato
 
Stato
Discussione chiusa ad ulteriori risposte.