Guida Malware Come Creare Un Crypter

Anna-Senpai

Utente Bronze
10 Luglio 2014
23
2
26
47
Ultima modifica:
INTRODUZIONE
Greetz everybody,
Mi presento, sono un ragazzo di 16 anni, non sono totalmente italiano ma lo parlo abbastanza bene. Sono un appassionato di informatica, Sono stato sempre nel vuoto, in poche parole tutti mi mettevano da parte, migliori amici, e semplici amici.

Nonostante ciò oggi, sono qui per rilasciare una sorprendente guida per te/voi. Con questa guida appunto da come si legge dal titolo vi aiuterò a creare il vostro crypter personale.

I am your senpai, and i will treat you real nice, my inforge-chan

UNA PICCOLA INTRODUZIONE SUI CRYPTER
- Cosa sono i Crypter?
I Crypter sono dei programmi creati per "Obfuscare" (nascondere) Il codice sorgente da un file. Possono cryptare il codice binario di un file con un algoritmo di crittografia come DES, AES... Di questi algoritmi potete leggerne moltissimi altri su Wikipedia.

- Quali tipi di crypter esistono?
Ci sono due grandi differenze trai crypter: Quello standard, crypter che appunto cryptano la source di un file e un obfuscatore, il crypter che impareremo a fare, che crypta il file e aggiunge alcuni codici per decryptire il file appena si apre. Esistono due tipi di categorie di crypter:

Lo Scantime Crypter:
Questo crypter crypta il file e aggiunge una parte per decifrarla sull'hard disk quando viene aperto. Viene chiamato "SCANTIME" perchè ha la capacità di bypassare gli AV quando sono attivati e fanno una scansione.

Il Runtime Crypter: Il Runtime crypter è come lo Scantime crypter ma può anche bypassare gli AV quando il programma è in funzione. Decodifica il programma in memoria (RAM) e lo crypta di nuovo quando è chiuso.

-Alcuni esempi:
Questi sono alcuni esempi di diversi crypter:
M4oVDA2uSXKjiWcjT1qa3Q.png

CarrotCrypter
OPVOJJM-SwGaWmZDW7RNVg.png

RazorCrypt
Penso di non averti insegnato molto con tutto quel che ti ho detto, ma adesso impareremo molte altre cose su questi crypter, sopratutto: la teoria per crearne uno tuo!

COME FUNZIONA UN CRYPTER
Ogni crypter funziona in un modo diverso, noi andremo a vedere come funziona un crypter basilare:
Prima di tutto abbiamo bisogno di un vocabolario:

Crypter GUI: Questa è la interfaccia del crypter, con tutte le opzioni etc...

Stub: Questa è la parte generata dal crypter e cioè per decryptare il payload in esecuzione.

Firma del virus/virus signature: Una parte del codice binario di un file che è rilevato da un av.
Quindi, ora possiamo vedere la base di un crypter con questi disegni fatti da me:

qDiCOKN.png


Riassumendo il tutto: il payload viene cryptato dal crypter e compilato insieme allo stub, che decrypta la sorgente cryptata e lo esegue (runtime) o lo conserva (scantime).

Ok, adesso che conosci la teoria su come funziona un crypter ora puoi iniziare a gestire il tuo spazio di lavoro. È il nuovo capitolo di questa guida.

CREA IL TUO CRYPTER
Per creare il tuo crypter devi conoscere alcune cose: la prima funzionalità dei Crypter è quella di cryptare i file per bypassare gli AV quindi se il tuo stub viene rilevata dagli AV come una minaccia, il tuo crypter non sarà più un "crypter" perchè verrà rilevato. Per evitare ciò, devi sapere quanto segue:

- Dovrai provare il tuo crypter spesso sulle pagine di scansione MultiAV per vedere se non è rilevabile, il problema è che alcune di queste scansioni i siti web distribuiscono il tuo file alle società degli AV. Quindi non provare i tuoi file cryptati su VirusTotal o qualsiasi cosa che trovi su google dopo una semplice ricerca, utilizzate:
- http://Pscan.xyz (probabilmente tutt'ora chiuso/inesistente)
- http://NoDistribute.com

-Il tuo AV può distribuire copie dei tuoi stub, perchè è sul tuo computer, se non sai che sarebbe inutile creare un crypter. Devi disattivare questa funzione sul tuo AV, (questo è per Avira)
Edd_1E_ZT8qmCNiSzN3KZQ.png


Nei giorni d'oggi, lo scantime è inutile, perchè ogni AV può fermare il tuo payload quando è in esecuzione, quindi ti insegnerò a creare il tuo runtime crypter.

La funzione principale di un runtime stub è la funzione RunPE. Questa funzione sarà necessaria per ogni crypter di runtime create a meno che qualcuno (o te stesso) non abbia trovato un altro modo per bypassare gli AV in RAM.

RunPE è una funzione che crea un processo in memoria per il tuo programma o semplicemente injecta il tuo programma in un processo esistente. Nel nostro esempio sopra, la funzione RunPE è la funzione "Esegui", che legge il binario e lo esegue nella RAM.

Con queste informazioni potrai creare il tuo primo crypter, ti consiglio alcuni linguaggi di programmazione per creare il tuo crypter:
-AutoIT: È molto facile da imparare ed è abbastanza buono per creare un crypter perchè hai molti tutorial a disposizione, fonti e alcune ottime funzioni esistenti.

-vb.net: tutti i crypter esistenti sono scritti in vb.net (Non "tutti" ma la maggiorparte), è molto semplice da imparare.

-ASM: Se sai ASM puoi fare qualunque cosa :)

-C++/C/C#: Buono anche per la disponibilità

Non ti darò alcune fonti, basta cercare da solo se vuoi veramente, ma penso che dovresti pensare un po' per imparare. E sai, la sensazione migliore di tutto il mondo è terminare il tuo primo crypter funzionante, anche se è totalmente rilevabile dagli AV, perchè una volta che hai questa base, puoi aggiungere quello che vuoi per rendere il tuo crypter FUD, che approfondiremo adesso:

RENDERE IL TUO CRYPTER FUD
FUD: Sta per "Fully undetectable" tradotto "completamente irrilevabile" ciò significa che Nessun AV (0) può detectare/rilevare il tuo file e stub cryptato.

Una volta terminato il tuo primo crypter base, sarà UD: non rilevabile, ma non FUD.

In ordine per rendere il tuo crypter FUD hai alcune opzioni da aggiungere al tuo crypter:
-Junk code
-Information and Icon changer
-File Bumper
-Random stub
-Private stub
-etc...
(li ho scritti direttamente in inglese perchè in italiano fa veramente schifo)

1)Junk code

Il Junk code è come il nome sta dicendo "codice no-sense" da aggiungere al tuo stub. Spesso, dovrai creare uno script che crea stringhe casuali, funzioni, variabili, chiamate ecc... Questo codice non cambiarà il funzionamento del tuo programma, ma aggiungerà alcuni codici in più da far analizzare dall'AV (codice normale, che non viene rilevato dall'AV e sembra legit)
Alcuni esempi:
vYHU46UZShOudBVGsX7f7w.png

Come puoi vedere ci sono variabili (l.1), funzioni etc... con nomi random. Sono senza senso.

2)Information and Icon changer
eH14_D61TiamN9kA-OqYzg.png

Questo può aiutarti a bypassare alcuni AV e altro: puoi creare versioni di file random, copyrights, descrizioni etc.... "L'icon changer" è molto importante, perchè alcuni AV rilevano le icone sospette, devono essere alte di risoluzione.

3)File bumper:
Il File bumper diciamo "bumpa"(non so quale altro termine utilizzare) il tuo file su un numero di Kb. A volte aiuta a bypassare gli AV.

4)Random Stub
Spesso, il modulo RunPE viene abusato perchè gli sviluppatori dei crypter copiano/incollano le sorgenti. Questo rende al modulo di essere rilevato dagli AV.
Ciò consente di sciegliere tra due opzioni:
- Lo Crei da solo (senza fare copia ed incolla) il tuo RunPE (consigliato)
- Modifichi il modulo RunPE che hai

Una volta che hai fatto questo, è possibile che alcuni AV possono ancora rilevare il tuo RunPE. Per evitare questo è necessario randomizzarli: creando nomi di variabili casuali, nomi di funzioni ecc... Cambiare tutto ciò che puoi modificare con una funzione che randomizza il modulo RunPE.

Esempio => “_RunBinary()” to “_Rgd55YHjst5rfsqM()”

5)Private stub
Questa è la migliore alternativa: Mai creare gli stessi stubs due volte, Sta a te scoprire come (ci sono molte opzioni)

Ciò consente di evitare il rilevamento del scantime, ma la rilevazione di runtime è un'altra cosa. Il crypter non sarebbe in grado di garantire il rilevamento di runtime se il file è un rat/virus con tutte le impostazioni possibili.

Ok, adesso che hai il tuo crypter, forse FUD o no, dovresti aggiungere alcune funzionalità.

FUNZIONALITÀ DEL CRYPTER
Adesso parlerò di alcune funzionalità che dovresti costruire dentro il tuo crypter per renderlo FUD, o almeno per cryptare i file molto meglio:
USG: È la parte del crypter che genera stub random e privati.

Delay: Puoi aggiungere un delay dopo l'esecuzione del tuo script. Può aiutarti per bypassare il rilevamento del runtime dagli AV e da sandbox integrati

Anti memory scan: Un altro modo per bypassare i rilevamenti del runtime è appunto "l'anti memory scan", che nega l'accesso in cui il file è in esecuzione.

EOF: Per evitare il danneggiamento dei file, è necessario talvolta conservare la "End of file - Fine del file". Così aggiungilo!

Startup: Questa funzione aggiunge al tuo file tra i programmi di windows che si avvia non appena viene acceso il pc.

LeftToRight: Un semplice modo per creare un'altra estensione per il file .exe.

Binder: Funzione molo utile, ti permette di bindare (o legare) il tuo file cryptato con un'altro, come un jpg.

Custom msgBox: Ti lascio indovinare di cosa si tratta. È un semplice msgBox personalizzato all'esecuzione del file.

Antis: Anti sandboxie, wireshark etc...

Una volta che il tuo crypter è FUD hai vinto!

Se il tuo crypter non è più FUD, non ti preoccupare non ci vuole molto per reFUD il tuo crypter, basta cambiare alcune cose e provarle! Funzionerà.

Per evitare il rilevamento del crypter:
- Non scannarlo in scanner distribuiti.
- Non mettere i file su skype, mediafire, google drive, o dropbox.

Questa è la fine di questa fantastica guida! Spero che tu sia riuscito a capirci qualcosa e che sei riuscito a creare il tuo Crypter personale!
Se hai alcune domande o altre richieste, basta scrivermi su
inforge.net, Sono Anna-Senpai.

FINE
 
INTRODUZIONE
Greetz everybody,
Mi presento, sono un ragazzo di 16 anni, non sono totalmente italiano ma lo parlo abbastanza bene. Sono un appassionato di informatica, Sono stato sempre nel vuoto, in poche parole tutti mi mettevano da parte, migliori amici, e semplici amici.

Nonostante ciò oggi, sono qui per rilasciare una sorprendente guida per te/voi. Con questa guida appunto da come si legge dal titolo vi aiuterò a creare il vostro crypter personale.

I am your senpai, and i will treat you real nice, my inforge-chan

UNA PICCOLA INTRODUZIONE SUI CRYPTER
- Cosa sono i Crypter?
I Crypter sono dei programmi creati per "Obfuscare" (nascondere) Il codice sorgente da un file. Possono cryptare il codice binario di un file con un algoritmo di crittografia come DES, AES... Di questi algoritmi potete leggerne moltissimi altri su Wikipedia.

- Quali tipi di crypter esistono?
Ci sono due grandi differenze trai crypter: Quello standard, crypter che appunto cryptano la source di un file e un obfuscatore, il crypter che impareremo a fare, che crypta il file e aggiunge alcuni codici per decryptire il file appena si apre. Esistono due tipi di categorie di crypter:

Lo Scantime Crypter: Questo crypter crypta il file e aggiunge una parte per decifrarla sull'hard disk quando viene aperto. Viene chiamato "SCANTIME" perchè ha la capacità di bypassare gli AV quando sono attivati e fanno una scansione.

Il Runtime Crypter: Il Runtime crypter è come lo Scantime crypter ma può anche bypassare gli AV quando il programma è in funzione. Decodifica il programma in memoria (RAM) e lo crypta di nuovo quando è chiuso.

-Alcuni esempi:
Questi sono alcuni esempi di diversi crypter:
M4oVDA2uSXKjiWcjT1qa3Q.png

CarrotCrypter
OPVOJJM-SwGaWmZDW7RNVg.png

RazorCrypt
Penso di non averti insegnato molto con tutto quel che ti ho detto, ma adesso impareremo molte altre cose su questi crypter, sopratutto: la teoria per crearne uno tuo!

COME FUNZIONA UN CRYPTER
Ogni crypter funziona in un modo diverso, noi andremo a vedere come funziona un crypter basilare:
Prima di tutto abbiamo bisogno di un vocabolario:

Crypter GUI: Questa è la interfaccia del crypter, con tutte le opzioni etc...

Stub: Questa è la parte generata dal crypter e cioè per decryptare il payload in esecuzione.

Firma del virus/virus signature: Una parte del codice binario di un file che è rilevato da un av.
Quindi, ora possiamo vedere la base di un crypter con questi disegni fatti da me:

qDiCOKN.png


Riassumendo il tutto: il payload viene cryptato dal crypter e compilato insieme allo stub, che decrypta la sorgente cryptata e lo esegue (runtime) o lo conserva (scantime).

Ok, adesso che conosci la teoria su come funziona un crypter ora puoi iniziare a gestire il tuo spazio di lavoro. È il nuovo capitolo di questa guida.

CREA IL TUO CRYPTER
Per creare il tuo crypter devi conoscere alcune cose: la prima funzionalità dei Crypter è quella di cryptare i file per bypassare gli AV quindi se il tuo stub viene rilevata dagli AV come una minaccia, il tuo crypter non sarà più un "crypter" perchè verrà rilevato. Per evitare ciò, devi sapere quanto segue:

- Dovrai provare il tuo crypter spesso sulle pagine di scansione MultiAV per vedere se non è rilevabile, il problema è che alcune di queste scansioni i siti web distribuiscono il tuo file alle società degli AV. Quindi non provare i tuoi file cryptati su VirusTotal o qualsiasi cosa che trovi su google dopo una semplice ricerca, utilizzate:
- http://Pscan.xyz (probabilmente tutt'ora chiuso/inesistente)
- http://NoDistribute.com

-Il tuo AV può distribuire copie dei tuoi stub, perchè è sul tuo computer, se non sai che sarebbe inutile creare un crypter. Devi disattivare questa funzione sul tuo AV, (questo è per Avira)
Edd_1E_ZT8qmCNiSzN3KZQ.png


Nei giorni d'oggi, lo scantime è inutile, perchè ogni AV può fermare il tuo payload quando è in esecuzione, quindi ti insegnerò a creare il tuo runtime crypter.

La funzione principale di un runtime stub è la funzione RunPE. Questa funzione sarà necessaria per ogni crypter di runtime create a meno che qualcuno (o te stesso) non abbia trovato un altro modo per bypassare gli AV in RAM.

RunPE è una funzione che crea un processo in memoria per il tuo programma o semplicemente injecta il tuo programma in un processo esistente. Nel nostro esempio sopra, la funzione RunPE è la funzione "Esegui", che legge il binario e lo esegue nella RAM.

Con queste informazioni potrai creare il tuo primo crypter, ti consiglio alcuni linguaggi di programmazione per creare il tuo crypter:
-AutoIT: È molto facile da imparare ed è abbastanza buono per creare un crypter perchè hai molti tutorial a disposizione, fonti e alcune ottime funzioni esistenti.

-vb.net: tutti i crypter esistenti sono scritti in vb.net (Non "tutti" ma la maggiorparte), è molto semplice da imparare.

-ASM: Se sai ASM puoi fare qualunque cosa :)

-C++/C/C#: Buono anche per la disponibilità

Non ti darò alcune fonti, basta cercare da solo se vuoi veramente, ma penso che dovresti pensare un po' per imparare. E sai, la sensazione migliore di tutto il mondo è terminare il tuo primo crypter funzionante, anche se è totalmente rilevabile dagli AV, perchè una volta che hai questa base, puoi aggiungere quello che vuoi per rendere il tuo crypter FUD, che approfondiremo adesso:

RENDERE IL TUO CRYPTER FUD
FUD: Sta per "Fully undetectable" tradotto "completamente irrilevabile" ciò significa che Nessun AV (0) può detectare/rilevare il tuo file e stub cryptato.

Una volta terminato il tuo primo crypter base, sarà UD: non rilevabile, ma non FUD.

In ordine per rendere il tuo crypter FUD hai alcune opzioni da aggiungere al tuo crypter:
-Junk code
-Information and Icon changer
-File Bumper
-Random stub
-Private stub
-etc...
(li ho scritti direttamente in inglese perchè in italiano fa veramente schifo)

1)Junk code

Il Junk code è come il nome sta dicendo "codice no-sense" da aggiungere al tuo stub. Spesso, dovrai creare uno script che crea stringhe casuali, funzioni, variabili, chiamate ecc... Questo codice non cambiarà il funzionamento del tuo programma, ma aggiungerà alcuni codici in più da far analizzare dall'AV (codice normale, che non viene rilevato dall'AV e sembra legit)
Alcuni esempi:
vYHU46UZShOudBVGsX7f7w.png

Come puoi vedere ci sono variabili (l.1), funzioni etc... con nomi random. Sono senza senso.

2)Information and Icon changer
eH14_D61TiamN9kA-OqYzg.png

Questo può aiutarti a bypassare alcuni AV e altro: puoi creare versioni di file random, copyrights, descrizioni etc.... "L'icon changer" è molto importante, perchè alcuni AV rilevano le icone sospette, devono essere alte di risoluzione.

3)File bumper:
Il File bumper diciamo "bumpa"(non so quale altro termine utilizzare) il tuo file su un numero di Kb. A volte aiuta a bypassare gli AV.

4)Random Stub
Spesso, il modulo RunPE viene abusato perchè gli sviluppatori dei crypter copiano/incollano le sorgenti. Questo rende al modulo di essere rilevato dagli AV.
Ciò consente di sciegliere tra due opzioni:
- Lo Crei da solo (senza fare copia ed incolla) il tuo RunPE (consigliato)
- Modifichi il modulo RunPE che hai

Una volta che hai fatto questo, è possibile che alcuni AV possono ancora rilevare il tuo RunPE. Per evitare questo è necessario randomizzarli: creando nomi di variabili casuali, nomi di funzioni ecc... Cambiare tutto ciò che puoi modificare con una funzione che randomizza il modulo RunPE.

Esempio => “_RunBinary()” to “_Rgd55YHjst5rfsqM()”

5)Private stub
Questa è la migliore alternativa: Mai creare gli stessi stubs due volte, Sta a te scoprire come (ci sono molte opzioni)

Ciò consente di evitare il rilevamento del scantime, ma la rilevazione di runtime è un'altra cosa. Il crypter non sarebbe in grado di garantire il rilevamento di runtime se il file è un rat/virus con tutte le impostazioni possibili.

Ok, adesso che hai il tuo crypter, forse FUD o no, dovresti aggiungere alcune funzionalità.

FUNZIONALITÀ DEL CRYPTER
Adesso parlerò di alcune funzionalità che dovresti costruire dentro il tuo crypter per renderlo FUD, o almeno per cryptare i file molto meglio:
USG: È la parte del crypter che genera stub random e privati.

Delay: Puoi aggiungere un delay dopo l'esecuzione del tuo script. Può aiutarti per bypassare il rilevamento del runtime dagli AV e da sandbox integrati

Anti memory scan: Un altro modo per bypassare i rilevamenti del runtime è appunto "l'anti memory scan", che nega l'accesso in cui il file è in esecuzione.

EOF: Per evitare il danneggiamento dei file, è necessario talvolta conservare la "End of file - Fine del file". Così aggiungilo!

Startup: Questa funzione aggiunge al tuo file tra i programmi di windows che si avvia non appena viene acceso il pc.

LeftToRight: Un semplice modo per creare un'altra estensione per il file .exe.

Binder: Funzione molo utile, ti permette di bindare (o legare) il tuo file cryptato con un'altro, come un jpg.

Custom msgBox: Ti lascio indovinare di cosa si tratta. È un semplice msgBox personalizzato all'esecuzione del file.

Antis: Anti sandboxie, wireshark etc...

Una volta che il tuo crypter è FUD hai vinto!

Se il tuo crypter non è più FUD, non ti preoccupare non ci vuole molto per reFUD il tuo crypter, basta cambiare alcune cose e provarle! Funzionerà.

Per evitare il rilevamento del crypter:
- Non scannarlo in scanner distribuiti.
- Non mettere i file su skype, mediafire, google drive, o dropbox.

Questa è la fine di questa fantastica guida! Spero che tu sia riuscito a capirci qualcosa e che sei riuscito a creare il tuo Crypter personale!
Se hai alcune domande o altre richieste, basta scrivermi su
inforge.net, Sono Anna-Senpai.

FINE
Non so come nessuno in tre anni abbia discusso sto thread ma ci sono cose sbagliatissime, sembra scritto da uno cui esperienza con il crypting siano 20 tab di google e un tutorial su youtube.
 
Non so come nessuno in tre anni abbia discusso sto thread ma ci sono cose sbagliatissime, sembra scritto da uno cui esperienza con il crypting siano 20 tab di google e un tutorial su youtube.

questa discussione è vecchia ma merita veramente tanto.
Come non detto ahah.
Però sarebbe interessante una discussione fatta da te se sai qualcosa in materia, anche perché su internet leggo veramente poco di teoria a riguardo.
 
Rispondero' tenendo in considerazione che e' una guida vecchia, per cui anche se prima te la cavavi con un runpe basilare, oggi non piu', almeno per la maggior parte degli AV.

Ci sono alcune imprecisioni nella terminologia che confonde anche il senso logico di cio' che accade. Per fare qualche esempio:

  • FUD non sta per "Fully Undetectable", "completamente irrilevabile" perche' non esiste niente del genere, sta invece per "Fully Undetected" ovvero che attualmente non viene rilevato da nessuno. Piu' realisticamente dovrete accontentarvi di UD ovvero "Undetected", che e' un modo per dire che solo una manciata di AV lo rileva (es. 4/40)
  • RunPE indica invece una modalita' di allocazione ed esecuzione dell'immagine del PE, che puo' essere l'originale o modificata, a valle del deoffuscamento / crittografia.

Questione linguaggi:
  • Con AutoIT ci puoi fare solo crypter di bassissima lega (come qualsiasi altra cosa scritta in quel "linguaggio").
  • Non e' vero che la maggior parte sono scritti in vb.net, almeno se consideriamo solo quelli che funzionano.
  • Con ASM ci fai ben piu' di qualcosa se lo sai usare bene.
  • C, C++ e C# non vanno insieme, specialmente l'ultimo e' piu' da accoppiare a vb.net. Con C o C++ si possono ottenere crypter eccellenti.
  • Aggiungo Delphi che e' in voga tutt'ora nel settore e produce stub nativi compilati.
  • Aggiungo anche Go che sta iniziando a prendere piede, non l'ho mai provato quindi non so se consigliarlo o meno.
"Nomi random": un po' in tutta la guida si continua a dirlo pero' ha senso solo per i linguaggi non-compilati e che mantengono questo tipo di informazione (AutoIT, VB.NET, C#...), se in C cambi il nome a una funzione o una variabile non cambia nemmeno un bit nell'eseguibile compilato. Oltre questo a meno di non dare nomi eccezionalmente descrittivi (es. "SuperHiddenRunPE"), un antivirus non usera' mai come firma il nome di una funzione tipo "Exec" o "Decrypt".

Junk Code: dato il mio username mi sento di dover precisare che il junk code non e' semplice codice inutile, anche perche' ci sono vari sistemi con cui e' possibile riconoscere il codice "morto" e ottimizzarlo via. Ci sono diversi benefici che puo' portare il junk code, tra cui aggiungere nella IAT funzioni che confondono il meccanismo di behavior e capabilities (es. API per forms e grafica, per stampanti, per riprodurre audio, ecc), settare e rimuovere delle flag in modo da forzare il giusto control flow (se il junk viene semplicemente rimosso, il programma crasha, inoltre questo rende molto difficile identificarlo non essendo piu' "inutile") e altre cose simpatiche.

File bumper -> File pumper.

Anti memory scan: questa cosa non esiste. La cosa che ci va piu' vicino e' la tecnica anti-dump con le guard page ma gli antivirus possono sempre scansionare la memoria, specialmente se lo fanno lato kernel.

Per il resto puo' andare come guida, di fatto non vuole essere un paper tecnico che entra nel dettaglio. Fatte queste precisazioni puo' essere un ottimo punto di partenza per chi e' pratico di programmazione ma non ha mai scritto un crypter.
 
Rispondero' tenendo in considerazione che e' una guida vecchia, per cui anche se prima te la cavavi con un runpe basilare, oggi non piu', almeno per la maggior parte degli AV.

Ci sono alcune imprecisioni nella terminologia che confonde anche il senso logico di cio' che accade. Per fare qualche esempio:

  • FUD non sta per "Fully Undetectable", "completamente irrilevabile" perche' non esiste niente del genere, sta invece per "Fully Undetected" ovvero che attualmente non viene rilevato da nessuno. Piu' realisticamente dovrete accontentarvi di UD ovvero "Undetected", che e' un modo per dire che solo una manciata di AV lo rileva (es. 4/40)
  • RunPE indica invece una modalita' di allocazione ed esecuzione dell'immagine del PE, che puo' essere l'originale o modificata, a valle del deoffuscamento / crittografia.

Questione linguaggi:
  • Con AutoIT ci puoi fare solo crypter di bassissima lega (come qualsiasi altra cosa scritta in quel "linguaggio").
  • Non e' vero che la maggior parte sono scritti in vb.net, almeno se consideriamo solo quelli che funzionano.
  • Con ASM ci fai ben piu' di qualcosa se lo sai usare bene.
  • C, C++ e C# non vanno insieme, specialmente l'ultimo e' piu' da accoppiare a vb.net. Con C o C++ si possono ottenere crypter eccellenti.
  • Aggiungo Delphi che e' in voga tutt'ora nel settore e produce stub nativi compilati.
  • Aggiungo anche Go che sta iniziando a prendere piede, non l'ho mai provato quindi non so se consigliarlo o meno.
"Nomi random": un po' in tutta la guida si continua a dirlo pero' ha senso solo per i linguaggi non-compilati e che mantengono questo tipo di informazione (AutoIT, VB.NET, C#...), se in C cambi il nome a una funzione o una variabile non cambia nemmeno un bit nell'eseguibile compilato. Oltre questo a meno di non dare nomi eccezionalmente descrittivi (es. "SuperHiddenRunPE"), un antivirus non usera' mai come firma il nome di una funzione tipo "Exec" o "Decrypt".

Junk Code: dato il mio username mi sento di dover precisare che il junk code non e' semplice codice inutile, anche perche' ci sono vari sistemi con cui e' possibile riconoscere il codice "morto" e ottimizzarlo via. Ci sono diversi benefici che puo' portare il junk code, tra cui aggiungere nella IAT funzioni che confondono il meccanismo di behavior e capabilities (es. API per forms e grafica, per stampanti, per riprodurre audio, ecc), settare e rimuovere delle flag in modo da forzare il giusto control flow (se il junk viene semplicemente rimosso, il programma crasha, inoltre questo rende molto difficile identificarlo non essendo piu' "inutile") e altre cose simpatiche.

File bumper -> File pumper.

Anti memory scan: questa cosa non esiste. La cosa che ci va piu' vicino e' la tecnica anti-dump con le guard page ma gli antivirus possono sempre scansionare la memoria, specialmente se lo fanno lato kernel.

Per il resto puo' andare come guida, di fatto non vuole essere un paper tecnico che entra nel dettaglio. Fatte queste precisazioni puo' essere un ottimo punto di partenza per chi e' pratico di programmazione ma non ha mai scritto un crypter.
Approvo ogni singola cosa che hai detto, purtroppo a quell'epoca ho semplicemente scritto l'articolo di fretta senza entrare nei minimi dettagli e ovviamente, come hai già scritto, la maggiorparte delle informazioni oggi sono obsolete.
 
Ultima modifica:
con visual studio, mi chiedo se qualcuno ha creato un tutorial, come creare un crypter simplificato runtime dall'inizio alla fine, inserendo anche delle stringhe vecchie, sarei davvero felice che qualcuno farebbe un tutorial del genere...
 
INTRODUZIONE
Greetz everybody,
Mi presento, sono un ragazzo di 16 anni, non sono totalmente italiano ma lo parlo abbastanza bene. Sono un appassionato di informatica, Sono stato sempre nel vuoto, in poche parole tutti mi mettevano da parte, migliori amici, e semplici amici.

Nonostante ciò oggi, sono qui per rilasciare una sorprendente guida per te/voi. Con questa guida appunto da come si legge dal titolo vi aiuterò a creare il vostro crypter personale.

I am your senpai, and i will treat you real nice, my inforge-chan

UNA PICCOLA INTRODUZIONE SUI CRYPTER
- Cosa sono i Crypter?
I Crypter sono dei programmi creati per "Obfuscare" (nascondere) Il codice sorgente da un file. Possono cryptare il codice binario di un file con un algoritmo di crittografia come DES, AES... Di questi algoritmi potete leggerne moltissimi altri su Wikipedia.

- Quali tipi di crypter esistono?
Ci sono due grandi differenze trai crypter: Quello standard, crypter che appunto cryptano la source di un file e un obfuscatore, il crypter che impareremo a fare, che crypta il file e aggiunge alcuni codici per decryptire il file appena si apre. Esistono due tipi di categorie di crypter:

Lo Scantime Crypter: Questo crypter crypta il file e aggiunge una parte per decifrarla sull'hard disk quando viene aperto. Viene chiamato "SCANTIME" perchè ha la capacità di bypassare gli AV quando sono attivati e fanno una scansione.

Il Runtime Crypter: Il Runtime crypter è come lo Scantime crypter ma può anche bypassare gli AV quando il programma è in funzione. Decodifica il programma in memoria (RAM) e lo crypta di nuovo quando è chiuso.

-Alcuni esempi:
Questi sono alcuni esempi di diversi crypter:
M4oVDA2uSXKjiWcjT1qa3Q.png

CarrotCrypter
OPVOJJM-SwGaWmZDW7RNVg.png

RazorCrypt
Penso di non averti insegnato molto con tutto quel che ti ho detto, ma adesso impareremo molte altre cose su questi crypter, sopratutto: la teoria per crearne uno tuo!

COME FUNZIONA UN CRYPTER
Ogni crypter funziona in un modo diverso, noi andremo a vedere come funziona un crypter basilare:
Prima di tutto abbiamo bisogno di un vocabolario:

Crypter GUI: Questa è la interfaccia del crypter, con tutte le opzioni etc...

Stub: Questa è la parte generata dal crypter e cioè per decryptare il payload in esecuzione.

Firma del virus/virus signature: Una parte del codice binario di un file che è rilevato da un av.
Quindi, ora possiamo vedere la base di un crypter con questi disegni fatti da me:

qDiCOKN.png


Riassumendo il tutto: il payload viene cryptato dal crypter e compilato insieme allo stub, che decrypta la sorgente cryptata e lo esegue (runtime) o lo conserva (scantime).

Ok, adesso che conosci la teoria su come funziona un crypter ora puoi iniziare a gestire il tuo spazio di lavoro. È il nuovo capitolo di questa guida.

CREA IL TUO CRYPTER
Per creare il tuo crypter devi conoscere alcune cose: la prima funzionalità dei Crypter è quella di cryptare i file per bypassare gli AV quindi se il tuo stub viene rilevata dagli AV come una minaccia, il tuo crypter non sarà più un "crypter" perchè verrà rilevato. Per evitare ciò, devi sapere quanto segue:

- Dovrai provare il tuo crypter spesso sulle pagine di scansione MultiAV per vedere se non è rilevabile, il problema è che alcune di queste scansioni i siti web distribuiscono il tuo file alle società degli AV. Quindi non provare i tuoi file cryptati su VirusTotal o qualsiasi cosa che trovi su google dopo una semplice ricerca, utilizzate:
- http://Pscan.xyz (probabilmente tutt'ora chiuso/inesistente)
- http://NoDistribute.com

-Il tuo AV può distribuire copie dei tuoi stub, perchè è sul tuo computer, se non sai che sarebbe inutile creare un crypter. Devi disattivare questa funzione sul tuo AV, (questo è per Avira)
Edd_1E_ZT8qmCNiSzN3KZQ.png


Nei giorni d'oggi, lo scantime è inutile, perchè ogni AV può fermare il tuo payload quando è in esecuzione, quindi ti insegnerò a creare il tuo runtime crypter.

La funzione principale di un runtime stub è la funzione RunPE. Questa funzione sarà necessaria per ogni crypter di runtime create a meno che qualcuno (o te stesso) non abbia trovato un altro modo per bypassare gli AV in RAM.

RunPE è una funzione che crea un processo in memoria per il tuo programma o semplicemente injecta il tuo programma in un processo esistente. Nel nostro esempio sopra, la funzione RunPE è la funzione "Esegui", che legge il binario e lo esegue nella RAM.

Con queste informazioni potrai creare il tuo primo crypter, ti consiglio alcuni linguaggi di programmazione per creare il tuo crypter:
-AutoIT: È molto facile da imparare ed è abbastanza buono per creare un crypter perchè hai molti tutorial a disposizione, fonti e alcune ottime funzioni esistenti.

-vb.net: tutti i crypter esistenti sono scritti in vb.net (Non "tutti" ma la maggiorparte), è molto semplice da imparare.

-ASM: Se sai ASM puoi fare qualunque cosa :)

-C++/C/C#: Buono anche per la disponibilità

Non ti darò alcune fonti, basta cercare da solo se vuoi veramente, ma penso che dovresti pensare un po' per imparare. E sai, la sensazione migliore di tutto il mondo è terminare il tuo primo crypter funzionante, anche se è totalmente rilevabile dagli AV, perchè una volta che hai questa base, puoi aggiungere quello che vuoi per rendere il tuo crypter FUD, che approfondiremo adesso:

RENDERE IL TUO CRYPTER FUD
FUD: Sta per "Fully undetectable" tradotto "completamente irrilevabile" ciò significa che Nessun AV (0) può detectare/rilevare il tuo file e stub cryptato.

Una volta terminato il tuo primo crypter base, sarà UD: non rilevabile, ma non FUD.

In ordine per rendere il tuo crypter FUD hai alcune opzioni da aggiungere al tuo crypter:
-Junk code
-Information and Icon changer
-File Bumper
-Random stub
-Private stub
-etc...
(li ho scritti direttamente in inglese perchè in italiano fa veramente schifo)

1)Junk code

Il Junk code è come il nome sta dicendo "codice no-sense" da aggiungere al tuo stub. Spesso, dovrai creare uno script che crea stringhe casuali, funzioni, variabili, chiamate ecc... Questo codice non cambiarà il funzionamento del tuo programma, ma aggiungerà alcuni codici in più da far analizzare dall'AV (codice normale, che non viene rilevato dall'AV e sembra legit)
Alcuni esempi:
vYHU46UZShOudBVGsX7f7w.png

Come puoi vedere ci sono variabili (l.1), funzioni etc... con nomi random. Sono senza senso.

2)Information and Icon changer
eH14_D61TiamN9kA-OqYzg.png

Questo può aiutarti a bypassare alcuni AV e altro: puoi creare versioni di file random, copyrights, descrizioni etc.... "L'icon changer" è molto importante, perchè alcuni AV rilevano le icone sospette, devono essere alte di risoluzione.

3)File bumper:
Il File bumper diciamo "bumpa"(non so quale altro termine utilizzare) il tuo file su un numero di Kb. A volte aiuta a bypassare gli AV.

4)Random Stub
Spesso, il modulo RunPE viene abusato perchè gli sviluppatori dei crypter copiano/incollano le sorgenti. Questo rende al modulo di essere rilevato dagli AV.
Ciò consente di sciegliere tra due opzioni:
- Lo Crei da solo (senza fare copia ed incolla) il tuo RunPE (consigliato)
- Modifichi il modulo RunPE che hai

Una volta che hai fatto questo, è possibile che alcuni AV possono ancora rilevare il tuo RunPE. Per evitare questo è necessario randomizzarli: creando nomi di variabili casuali, nomi di funzioni ecc... Cambiare tutto ciò che puoi modificare con una funzione che randomizza il modulo RunPE.

Esempio => “_RunBinary()” to “_Rgd55YHjst5rfsqM()”

5)Private stub
Questa è la migliore alternativa: Mai creare gli stessi stubs due volte, Sta a te scoprire come (ci sono molte opzioni)

Ciò consente di evitare il rilevamento del scantime, ma la rilevazione di runtime è un'altra cosa. Il crypter non sarebbe in grado di garantire il rilevamento di runtime se il file è un rat/virus con tutte le impostazioni possibili.

Ok, adesso che hai il tuo crypter, forse FUD o no, dovresti aggiungere alcune funzionalità.

FUNZIONALITÀ DEL CRYPTER
Adesso parlerò di alcune funzionalità che dovresti costruire dentro il tuo crypter per renderlo FUD, o almeno per cryptare i file molto meglio:
USG: È la parte del crypter che genera stub random e privati.

Delay: Puoi aggiungere un delay dopo l'esecuzione del tuo script. Può aiutarti per bypassare il rilevamento del runtime dagli AV e da sandbox integrati

Anti memory scan: Un altro modo per bypassare i rilevamenti del runtime è appunto "l'anti memory scan", che nega l'accesso in cui il file è in esecuzione.

EOF: Per evitare il danneggiamento dei file, è necessario talvolta conservare la "End of file - Fine del file". Così aggiungilo!

Startup: Questa funzione aggiunge al tuo file tra i programmi di windows che si avvia non appena viene acceso il pc.

LeftToRight: Un semplice modo per creare un'altra estensione per il file .exe.

Binder: Funzione molo utile, ti permette di bindare (o legare) il tuo file cryptato con un'altro, come un jpg.

Custom msgBox: Ti lascio indovinare di cosa si tratta. È un semplice msgBox personalizzato all'esecuzione del file.

Antis: Anti sandboxie, wireshark etc...

Una volta che il tuo crypter è FUD hai vinto!

Se il tuo crypter non è più FUD, non ti preoccupare non ci vuole molto per reFUD il tuo crypter, basta cambiare alcune cose e provarle! Funzionerà.

Per evitare il rilevamento del crypter:
- Non scannarlo in scanner distribuiti.
- Non mettere i file su skype, mediafire, google drive, o dropbox.

Questa è la fine di questa fantastica guida! Spero che tu sia riuscito a capirci qualcosa e che sei riuscito a creare il tuo Crypter personale!
Se hai alcune domande o altre richieste, basta scrivermi su
inforge.net, Sono Anna-Senpai.

FINE
la cosa importante in quel caso è che il dato in questione diventi illeggibile al utente, quindi questa guida è davvero ben fatta, complimenti