Esistono modi fattibili per bloccare l'utilità stunnel a livello di rete?

0

L'utility stunnel scritta da Michał Trojnara consente, se ho capito bene, di "avvolgere" i protocolli non SSL ( come ssh ) in una connessione SSL.

Ad esempio, immagina che tutte le porte di rete su una rete siano bloccate, tranne le porte 80 e 443 per il traffico HTTP e HTTPS rispettivamente. L'ispezione deep packet viene anche utilizzata per garantire che entrambe le porte vengano utilizzate solo per HTTP (S) e nient'altro, quindi non è possibile eseguire un server SSH sulla porta 443 e prevedere che sia in grado di connettersi attraverso questo firewall.

Ora, stunnel può essere utilizzato in questo caso eseguendo un listener stunnel sulla porta 443 del server (associato alla porta interna 22) e utilizzando il client stunnel per connettersi alla porta 443 del server, in effetti connettendosi al suo daemon SSH. Il firewall non ha idea che ciò avvenga perché

  1. La connessione è crittografata e verificata dall'integrità in base alla progettazione, quindi il firewall non sa quali dati vengono scambiati - HTTP o meno.
  2. Poiché si tratta di una connessione SSL ed è in esecuzione su 443, il server non può distinguere tra un server HTTPS e dire, ssh.

La mia domanda è - quale sarebbe un modo per rilevare effettivamente l'utilizzo di stunnel e bloccarlo? Supponiamo che i metodi di analisi come guardare i modelli di dati ( hmm, un sacco di scambio di dati è insolito su una connessione HTTPS, quindi questo tunnel SSL deve essere usato per qualcos'altro ) non sono disponibili. Inoltre non possiamo installare software o certificati sui dispositivi degli utenti.

C'è davvero un modo pratico per fermarlo, considerando che mantenere HTTPS in funzione è fondamentale?

    
posta Joseph A. 26.06.2018 - 17:27
fonte

3 risposte

4

Poiché si esclude l'intercettazione SSL (ad esempio non è possibile installare certificati) e si esclude anche qualsiasi tipo di analisi del modello di traffico, non rimane molto. Quello che potrebbe essere provato è analizzare l'handshake TLS stesso:

  • Gli stack TLS e anche le applicazioni che utilizzano TLS spesso lasciano un'impronta utilizzabile in ClientHello, ovvero quale versione del protocollo, quali codici sono offerti in quale ordine, quali estensioni sono utilizzate e quale ordine ecc. Niente di nuovo e molte informazioni possono essere trovate su questo . Ovviamente, un cliente potrebbe in teoria replicare perfettamente un altro Client Clientello per nascondersi.
  • Analisi passive simili potrebbero essere fatte per il lato server. Ma la varietà di configurazioni del server che si riflettono nello stack TLS è molto più grande che sul lato client, quindi probabilmente non è così efficace come analizzare ClientHello.

Per chiarire: questa è solo euristica. Può causare falsi positivi e non riesce a rilevare le istanze di stunnel. Ciò è particolarmente vero in reti complesse con una varietà di client diversi e solo poche volte per analizzare manualmente se una specifica impronta digitale comune dovrebbe essere consentita in generale, a un target specifico o dovrebbe essere bloccata.

    
risposta data 26.06.2018 - 17:44
fonte
1

Nessuna intercettazione, nessun modo.

Questo è un problema da risolvere con criterio , non tecnologia . Non puoi fermare gli utenti con tecnologia, infrastruttura o configurazione. L'unico modo sicuro è criterio . Se usi una regola complessa su webshells, stunnel e accesso remoto, e applicali davvero, i tuoi utenti saranno meno inclini a fare buchi sul muro.

Ma se vuoi il percorso più frustrante, ci sono alcune cattive notizie: non puoi farlo senza intercettazione. Indipendentemente dal tipo di ispezione passiva che utilizzi, gli utenti lo eviteranno.

Connessione al sito per vedere se c'è un sito Web non funzionerà. Utilizzando sslh è possibile utilizzare la stessa porta per HTTPS, SSH, OpenVPN, XMPP e HTTP semplice, tutti al stessa ora.

Un'altra opzione è cavatappi . Trasformerà in modo trasparente SSH sul proxy HTTPS. Se non intercetti la connessione e la controlli, il tuo firewall non rileverà nulla.

Anche se analizzi e blocchi altri protocolli, un utente pieno di risorse può utilizzare AjaxTerm o Shell in a Box , esfiltrando i dati anche se provi a bloccare SSH.

    
risposta data 27.06.2018 - 14:26
fonte
1

Potresti avere un software che stabilisce la propria connessione a ciascun host, porta e SNI, e forse altri parametri come la versione TLS e le cipherità se pensi che qualcuno possa intrufolarsi in quelle e vedere se risponde a un richiesta come un normale server HTTPS. Se non risponde con il formato HTTP tramite la connessione SSL / TLS, si può presumere che sia SSH stunnelato o qualcos'altro di dubbia come il torrente e la lista nera. Forse con scadenza dopo un periodo definito, nel caso si tratti di un IP dinamico e viene riassegnato.

Tuttavia, invece di SSH (TCP) -over-SSL / TLS (stunnel) qualcuno potrebbe usare un software che fa SSH (TCP) -over-HTTPS i.e. SSH (TCP) -over-HTTP-over-SSL / TLS. Ciò sarà essenzialmente impossibile da rilevare semplicemente provando una richiesta HTTPS arbitraria, poiché il tunnel HTTP potrebbe utilizzare qualsiasi tipo di autenticazione o di offuscamento che non si conosce a causa di SSL / TLS. In quel caso probabilmente la tua unica opzione è quella di investigare manualmente i server desiderati e autorizzare quelli che giudichi sicuri (e stabili); a meno che tu non lo limiti abbastanza rigorosamente - forse wikipedia, linkedin, alcune banche e ristoranti locali e Stack (ovviamente) - probabilmente avrai bisogno di diversi dipendenti a tempo pieno per ogni dipendente che vuoi monitorare - e poi tu Avremo bisogno di un modo per monitorare i monitor.

In alternativa, un'approssimazione a buon mercato è solo l'RST di qualsiasi connessione che dura più di 30 secondi (modifica) tra le trasmissioni di dati. Anche se i client HTTPS (in particolare i browser) tenderanno a mantenere aperte le connessioni inattive per risparmiare il costo della riconnessione, il protocollo HTTP (e quindi anche HTTPS) viene definito e (quasi universalmente) implementato per funzionare correttamente se deve rifare il connessione di trasporto frequentemente (modifica) per qualsiasi o qualsiasi richiesta. Al contrario la maggior parte delle cose fatte su SSH dipendono dal mantenere la stessa connessione - ma non tutte, quindi un cheater sufficientemente determinato potrebbe aggirare anche questo.

    
risposta data 27.06.2018 - 11:02
fonte

Leggi altre domande sui tag