skip to Main Content

Ovvero come un account con password debole può compromettere tutta la rete

Normalmente si tende a sottovalutare l’importanza dell’utilizzo di password strong per gli utenti non di sistema. Questo è profondamente sbagliato ed in questo articolo dimostriamo come un account con password semplice possa compromettere la sicurezza di tutta la rete.

Principi di base: ssh tunneling
ssh tunneling consente di collegarsi via ssh ad un host e di utilizzare la connessione così creata per veicolare il traffico. Può essere usato per raggiungere le porte di un host dietro un firewall in mancanza di portforward. Per esempio, se abbiamo accesso ssh ad un server, ma non c’è il portforward della 443 (https), possiamo raggiungere l’interfaccia web così:

$ ssh <UTENTE>@<SERVER_REMOTO> -p <PORTA_SSH> -L <PORTA_LOCALE>:localhost:443

SERVER_REMOTO è l’ip o l’hostname del server remoto
PORTA_SSH è la porta ssh del server remoto
PORTA_LOCALE è una porta arbitraria del nostro sistema che utilizzeremo per accedere al tunnel
per esempio

$ ssh root@123.45.67.89 -p22 -L 9876:localhost:443

Dopo aver fatto il login, potremo raggiungere l’interfaccia web del server in questione puntando il nostro browser all’indirizzo https://localhost:9876

Un’altra utile possibilità che il tunnel ssh ci offre, è quella di collegarci ad una porta a nostra scelta di un host raggiungibile dal server:
Supponiamo di voler raggiungere l’interfaccia web di un telefono voip collegato nella rete del server precedente

$ ssh <UTENTE>@<SERVER_REMOTO> -p <PORTA_SSH> -L <PORTA_LOCALE>:<IP_TELEFONO>:<PORTA_INTERFACCIA_WEB>

a questo punto potremo raggiungere l’interfaccia web puntando il nostro browser all’indirizzo http://localhost:<PORTA_LOCALE>
Notare che nel browser dovremo inserire sempre localhost (perché è da localhost che parte il tunnel)

Apertura di tunnel con utenti non privilegiati
Non è necessario che il tunnel ssh sia aperto dall’utente root, qualunque utente che possa accedere in ssh può essere utilizzato per aprire un tunnel

Apertura di tunnel con utenti con shell limitate
Normalmente gli utenti di Nethservice hanno /usr/bin/rssh come shell

[root@test81 ~]# grep pippo /etc/passwd
pippo:x:5001:5001:foo bar:/home/e-smith/files/users/pippo:/usr/bin/rssh

quindi possono solo utilizzare scp o sftp:

[stefano@pc-stefano ~]$ ssh pippo@test81
pippo@test81's password:
Last login: Fri Jun  8 16:09:16 2012 from pc-stefano.mycompany.local
Shared connection to test81 closed.

La connessione è stata chiusa.
Tuttavia ssh ha un opzione, -N, che consente di non inviare comandi al server remoto, ma solo di aprire il tunnel.
quindi

[stefano@pc-stefano ~]$ ssh pippo@test81 -N -L 9870:localhost:443
pippo@test81's password:
[stefano@pc-stefano ~]$

Sembra che non sia accaduto nulla, ma in realtà il tunnel è aperto e possiamo accedere alla 443 del server al solito indirizzo localhost:9870!
Aggiungendo -v alle opzioni di ssh vedremo

debug1: Local connections to LOCALHOST:9870 forwarded to remote address localhost:443

Bounce!
Come abbiamo detto in precedenza, è possibile aprire un tunnel non solo verso l’host sul quale apriamo la connessione, ma su qualunque host raggiungibile da questo. Così è possibile creare portforward arbitrari bypassando eventuali firewall, ma non solo: dirigendo il tunnel verso un altro host remoto, un attaccante può utilizzare questa tecnica per nascondere il proprio IP (anzi, mostrare il vostro al posto del suo).
Potete scoprire se siete stati sfruttati per un bounce cercando nei log di sshd delle connessioni accettate per utenti che non dovrebbero potersi connettere via ssh:

[root@test81 ~]# grep 'Accepted' /var/log/sshd/* | grep -v root

anche /var/log/secure ci da delle informazioni interessanti, in particolare quando le sessioni sono state aperte e quando chiuse.

È possibile che la polizia postale vi chieda di verificare se sono stati effettuate delle connessioni dal vostro IP in date specifiche, da questi log è possibile capirlo.

Password semplici ed ibay
In Nethservice, le ibay hanno degli account associati. Quindi, creando l’ibay “test” ritroveremo nel file passwd il suo account:

[root@test81 ~]# grep test /etc/passwd
test:x:5000:5000:foobar:/home/e-smith/files/ibays/test/files:/bin/false

Se questa ibay non ha password impostata, non sarà possiblie utilizzarla per fare un tunnel, ma se impostiamo la password possiamo sfruttarla come abbiamo fatto con l’utente precedente, anche se la sua shell è /bin/false.

Conclusioni
Una password semplice e facile da scoprire può mettere a rischio non solo l’account che protegge, ma tutta la LAN: un attaccante può sfruttarla per bypassare il firewall o per lanciare attacchi facendo risultare il nostro IP come sorgente.
Purtroppo siamo costretti a lasciare nelle mani degli utenti la scelta delle loro password, quello che possiamo fare è non disabilitare i vincoli di password strong e di scadenza.
Usare politiche corrette può fare la differenza tra una rete sicura ed una vulnerabile.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back To Top