
La TrustedSec Attack Platform è un metodo affidabile per i dropper su un'infrastruttura, al fine di garantire connessioni stabilite verso un'organizzazione.
TAP - Costruttore di piattaforme di penetration testing remoto.
Scritto da: David Kennedy @HackingDave
Azienda: TrustedSec (https://www.trustedsec.com)
Pagina del progetto: https://github.com/trustedsec/tap
Un progetto TrustedSec - Copyright 2020
Sistemi operativi supportati: Linux (preferibilmente Ubuntu Linux)
TAP è un costruttore di piattaforme di penetration testing remoto. Per chi lavora nel settore della sicurezza, viaggiare spesso diventa un peso e aggiunge un sacco di costi al cliente. TAP è stato progettato per rendere la distribuzione di questi box estremamente semplice e creare una piattaforma auto-riparante e stabile per distribuire piattaforme di penetration testing remoto. In sostanza il concetto è semplice: preconfiguri un nuovo box ed esegui il file di setup di TAP. Questo installerà un servizio su Linux che verrà configurato come desideri. Quello che farà è stabilire un tunnel SSH inverso verso una macchina esposta su Internet. Da lì puoi accedere al box localmente dal server a cui si collega. TAP rileva automaticamente quando una connessione SSH è diventata obsoleta e la ricostruisce automaticamente per te.
Dispone anche di una serie di altre opzioni, ad esempio, nel caso in cui perdi la connessione SSH, si collegherà a un file di testo ed eseguirà comandi per te. Inoltre si aggiorna continuamente e garantisce che tu stia eseguendo gli ultimi pacchetti per Ubuntu Linux (se questo è il tuo sistema operativo).
python setup.py - This will install TAP.
Per disinstallare TAP:
python setup.py - This will uninstall TAP.
Durante la configurazione di TAP, le domande che potresti avere riguardano il server SSH REMOTO, ovvero un box esterno con SSH esposto. Questo sarebbe il tuo box a cui vuoi che la macchina TAP si ricolleghi, la macchina che hai su Internet in attesa di connessioni. Non è consigliato usare root poiché si tratta di una svista di sicurezza. Usa un utente normale per stabilire il tunnel SSH. Al momento è solo tramite password, anche se in seguito aggiungeremo il supporto per le chiavi SSH. La password è memorizzata usando AES, tuttavia la memorizzazione della chiave di cifratura è insicura al momento. Qualcuno con accesso mantenuto al box potrebbe recuperare la chiave di cifratura e decifrare la password nella configurazione con abbastanza tempo e persistenza. Risolveremo questo in una versione successiva.
Il secondo è la porta LOCALE che sarà sul box REMOTO. Quando TAP si riconnette tramite SSH inverso, si connette al box REMOTO e stabilisce una porta locale sulla macchina. Quando fai SSH al box remoto su Internet, vorrai fare ssh user@localhost -p . Questa sarà la porta a cui TAP si lega sul sistema REMOTO così puoi accedervi.
Una volta configurato questo, TAP ha un percorso predefinito da cui scarica gli aggiornamenti; puoi cambiarlo con il tuo percorso di aggiornamento. Ho volutamente tenuto questo fuori da GitHub così puoi specificare ciò che vuoi per gli aggiornamenti approvati.
Successivamente, puoi inviare comandi a TAP: controlla ogni due minuti la presenza di nuove istruzioni. Devi specificare un percorso, ad esempio:
TAP controllerà quel percorso ogni due minuti alla ricerca di nuovi comandi; nota che questa parte è IMPORTANTE. La prima riga del file di testo DEVE contenere "EXECUTE COMMAND" (senza le virgolette). Una volta che TAP lo identifica, controllerà se il comando è già stato eseguito in precedenza e, in caso contrario, eseguirà i comandi riga per riga. Questo è utile quando perdi la connessione con TAP e devi richiamare comandi per risolverla.
Una volta eseguito il setup, installerà i file in /usr/share/tap. Si avvierà automaticamente se lo specifichi e controllerà automaticamente gli aggiornamenti come gli aggiornamenti Debian, gli aggiornamenti TAP, ecc.
Dovresti anche inserire nella whitelist i server di aggiornamento se stai usando Debian, così come il tuo box REMOTO a cui ti riconnetti.
Tutto qui!
Nel caso in cui decidi di non usare le chiavi SSH e di usare le password, la configurazione la memorizza in formato AES (richiede python-pycrypto). Se devi aggiornare la password, vai nella directory degli script che contiene uno script update-password per aggiornare la password cifrata e creare una nuova chiave di cifratura dinamica.
Anche un trucco interessante una volta che sei lì è un piccolo strumento che abbiamo scritto per creare essenzialmente una VPN via SSH. Funziona benissimo se non stai facendo volumi di traffico elevati come scan delle porte, scan delle vulnerabilità, ecc. Quello che segue è un semplice strumento che avvolge sshuttle per creare la VPN. Basta salvare il file seguente in un file Python ed eseguirlo usando i comandi. Ti collega in VPN alla rete remota dove è distribuito TAP. Puoi fare qualsiasi cosa purché non sia un traffico di volume estremamente elevato (abbastanza stabile).
Ci sono due modi per gestire una VPN: il primo è attraverso il metodo seguente con SSHuttle. Puoi anche usare una VPN trasparente creata da Geoff Walton di TrustedSec che si trova nella cartella scripts. Questa creerà un'interfaccia TAP e ti collegherà in VPN al sistema tramite SSH. Con SSHuttle, cose come le scan delle porte non funzionano correttamente; consiglio vivamente lo script ssh-tunnel.
SSHUTTLE è uno strumento che ti permette di usare SSH come metodo per una VPN proxy trasparente. Puoi usare questo script per comunicare con il dispositivo TAP remoto e instradare il tuo sistema attraverso il proxy per una VPN completa. Questo ti consente di fare test tramite il tuo dispositivo, senza sfruttare il dispositivo TAP stesso.
import subprocess
import time
if not os.path.isfile("/usr/sbin/sshuttle"):
print "[!] SSHUTTLE does not appear to be installed, installing now"
subprocess.Popen("apt-get install sshuttle -f", shell=True).wait()
print("Welcome to the sshuttle wrapper for TAP.")
print("Enter the address for the SSH server, i.e. box.sshserver.com")
reverse1 = input("Enter SSH server (REMOTE server): ")
reverse2 = input("Enter the remote SSH port for %s:: " % (reverse1))
reverse3 = input("Enter the port to tunnel for the local TAP machine (i.e. TAP box localhost port): ")
reverse4 = input("Enter the username to connect to REMOTE system: ")
print)"Triggering tunnel now...")
time.sleep(2)
subprocess.Popen("ssh -f %s@%s -L %s:localhost:%s -N" % (reverse4, reverse1, reverse3, reverse2), shell=True).wait()
subprocess.Popen("sshuttle --dns -vr %s@localhost:%s 0/0" % (reverse4,reverse3), shell=True).wait()
TAP usa proxychains4 (proxychains-ng) per instradare tutto il traffico http/https attraverso SSH al tuo box remoto. Questo aiuta con il filtraggio dei contenuti/egress così puoi essere sicuro di avere sempre tutto aggiornato. Per usare proxychains, basta digitare proxychains4 <command_you_want_to_use> - gli aggiornamenti di TAP lo usano automaticamente.
Durante il processo di configurazione, TAP ti chiederà se vuoi registrare tutti i comandi eseguiti sul sistema. Se lo fai, tutti i comandi inseriti nel sistema verranno registrati così da poterli fornire al cliente o tenere traccia di cosa è successo sui dispositivi. Tutti i log vengono salvati in /var/log/messages.
Ubuntu 18.04 LTS (dovrebbe funzionare bene su Debian e altre versioni di Ubuntu)