
Script client/server progettati per testare le regole del firewall in uscita (egress).
Script lato client/server progettati per testare le regole firewall in uscita (egress).
Egresser è uno strumento per enumerare le regole firewall in uscita, progettato per i penetration tester al fine di valutare se il filtraggio in uscita sia adeguato all'interno di una rete aziendale. Eseguendo la scansione di ogni porta TCP a turno, il server Egresser risponderà con l'indirizzo IP e la porta di origine del client, consentendo al client di determinare se la porta in uscita è consentita (sia su IPv4 che su IPv6) e di valutare se è probabile che sia in atto un traversal NAT.
Come funziona
Lo script lato server funziona in combinazione con Iptables, reindirizzando tutto il traffico TCP alla porta 8080 dove risiede il server "reale". Lo script lato server è scritto in Perl ed è un server pre-forking che utilizza Net::Server::Prefork, in ascolto sia su IPv4 che su IPv6, se disponibili. Qualsiasi connessione TCP produce una semplice risposta contenente una stringa terminata da null composta dall'IP e dalla porta del client che si connette. Sentiti libero di usare Telnet per interagire con il servizio se ti trovi in un ambiente limitato senza accesso al client Egresser (il nostro server Egresser è disponibile all'indirizzo egresser.labs.cyberis.co.uk, che puoi usare liberamente per scopi legittimi).
Anche il client è scritto in Perl ed è multi-thread per la velocità. Di default esegue la scansione delle porte TCP 1-1024, sebbene questo sia configurabile all'interno dello script. È possibile forzare IPv4 con l'argomento da riga di comando '-4', oppure IPv6 con '-6'; di default sceglie il protocollo preferito dal tuo sistema operativo. Se vuoi elencare esplicitamente tutte le porte aperte/chiuse, specifica il flag verbose (-v), poiché l'output normale è un riepilogo conciso delle sole porte consentite.
Perché?
È consigliato che le regole firewall in uscita siano limitate negli ambienti aziendali per garantire che i controlli perimetrali non vengano facilmente aggirati. Ad esempio, un filtraggio in uscita inadeguato all'interno di un'organizzazione permetterebbe a un utente malintenzionato di bypassare banalmente un proxy web che fornisce filtraggio/antivirus/logging semplicemente modificando le impostazioni di connessione del browser. Esistono anche molti altri esempi: molti worm si diffondono tramite protocolli SMB, i malware possono utilizzare numerosi canali per esfiltrare dati, e software potenzialmente non autorizzati (ad es. condivisione di file torrent/P2P) possono operare liberamente, sprecando risorse aziendali e aumentando significativamente la probabilità che codice malevolo venga introdotto nell'ambiente.
In generale, si raccomanda di limitare tutti i protocolli in uscita, consentendo eccezioni da host specifici caso per caso. La navigazione web dovrebbe essere effettuata solo tramite proxy web dedicati, con qualsiasi tentativo di connessione diretta registrato dal firewall perimetrale e investigato se necessario. Egresser è uno strumento semplice da usare che consente a un penetration tester di enumerare rapidamente le porte consentite all'interno di un ambiente aziendale.
Sono richiesti iptables 1.4.17 o superiore e un kernel 3.7+ per il supporto NAT su ipv6.
I seguenti moduli Perl sono richiesti per il client:
Thread::Queue ;
IO::Socket::IP;
Getopt::Long;
I seguenti moduli Perl sono richiesti per il server:
Net::Server::PreFork
Si prega di segnalare tutti i problemi tramite https://github.com/cyberisltd/Egresser/issues