
Firecat è uno strumento di penetration testing che consente di aprire tunnel TCP inversi verso l'esterno da una rete compromessa.
Per maggiori informazioni, vedi:
http://www.bishopfox.com/resources/tools/other-free-tools/firecat/
Firecat è uno strumento di penetration testing che consente di aprire tunnel TCP inversi fuori da una rete compromessa. Dopo aver stabilito un tunnel, puoi connetterti da un host esterno a qualsiasi porta su qualsiasi sistema all'interno della rete compromessa, anche se la rete si trova dietro un gateway NAT e/o un firewall restrittivo. Questo può essere utile per diversi scopi, incluso ottenere accesso Remote Desktop all'indirizzo IP NAT della rete interna (es. 192.168.1.10) di un web server compromesso.
Firecat è scritto in C ed è stato testato su Linux, Solaris, iOS, Mac OS X e Windows XP/Vista/2k/2k3/2k8.
Per compilare su Windows usando MinGW:
gcc –o firecat.exe firecat.c –lwsock32
Per compilare su Unix:
gcc –o firecat firecat.c
Torna indietro di una decina d'anni e ricorderai che era comune trovare host non adeguatamente protetti da firewall (o per niente) rispetto a Internet. Potevi compromettere un host, associare shellcode a una porta e usare netcat o un altro strumento per ottenere il controllo interattivo da riga di comando del target.
Oggi le cose sono diverse. Capita spesso che i pacchetti TCP/IP destinati a un host siano strettamente filtrati dalle regole di firewall in ingresso. Spesso le cose si complicano ulteriormente per il fatto che l'host target si trova dietro un gateway NAT:
Regole firewall restrittive riducono la superficie d'attacco dell'ambiente target, ma attacchi come l'SQL injection rendono comunque possibile eseguire codice arbitrario anche sui server più strettamente protetti da firewall. Tuttavia, a meno che il consulente non riesca anche a prendere il controllo del firewall e modificare il ruleset, è impossibile connettersi direttamente ai servizi di rete interni diversi da quelli consentiti dal firewall.
È qui che entra in gioco Firecat. Supponendo che tu possa eseguire comandi su un host in una DMZ e supponendo inoltre che l'host possa avviare connessioni TCP/IP in uscita verso il computer del consulente, Firecat rende possibile al consulente connettersi a qualsiasi porta sull'host target, e spesso a qualsiasi porta su qualsiasi host all'interno della DMZ. Lo fa creando un tunnel TCP inverso attraverso il firewall e usando il tunnel per intermediare connessioni TCP arbitrarie tra il consulente e gli host nell'ambiente target. Oltre a creare tunnel TCP/IP arbitrari nelle reti DMZ, può anche essere usato per far aprire shell di connessione inversa da host DMZ compromessi, come web o SQL server.
Funziona perché è il sistema target quello che avvia la connessione TCP di ritorno al consulente, non il contrario. Firecat opera in modalità "target" sul bersaglio e in modalità "consulente" sul sistema del consulente, creando di fatto un tunnel tra i due endpoint. Una volta stabilito il tunnel, il consulente si connette al proprio demone Firecat locale, che istruisce il demone Firecat remoto ad avviare una connessione verso l'host/porta desiderati dietro il firewall. I due demone Firecat poi instradano i dati tra il consulente e il target creando un ponte trasparente e senza soluzione di continuità tra i due sistemi; aggirando così completamente le regole del firewall. Firecat funziona anche su host dietro firewall NAT.
Scomposto in passaggi logici e usando gli indirizzi IP nei diagrammi, il processo funziona come segue: