Lorsque les r-commands utilisent un mot de passe, rexec toujours, rlogin quand la confiance d'hôte n'accorde pas l'accès, ce mot de passe est envoyé en clair : un attaquant bien positionné le capture donc directement dans le flux. rexec inclut le nom d'utilisateur et le mot de passe dans chaque requête d'exécution (chaque invocation est donc une occasion de capture), et l'invite de mot de passe de repli de rlogin est envoyée caractère par caractère puis reconstituée. Le résultat est un identifiant de compte réutilisable obtenu discrètement : pas de force brute, pas d'enregistrement d'échec de connexion, pas de verrouillage, et de tels identifiants sont généralement réutilisés dans tout l'environnement hérité.
# capture credentials from rexec (512) and rlogin (513)
tcpdump -i eth0 -A 'port 512 or port 513' -w creds.pcap
tshark -r creds.pcap -q -z follow,tcp,ascii,0 # username/password in the stream
Notes d'exploitation#
- rexec est la source la plus riche car il transmet l'identifiant avec chaque commande : un usage scripté/automatisé de rexec le divulgue donc de façon répétée ; rlogin ne le divulgue que lorsqu'il bascule sur un mot de passe (pas lorsque la confiance d'hôte s'applique).
- Reconstituez les octets client vers serveur (rlogin envoie caractère par caractère) pour récupérer le mot de passe saisi ;
tshark/Wireshark le font automatiquement. - Les identifiants capturés sont réutilisables sur l'hôte et sur les systèmes hérités ; testez largement, et préférez la capture à la devinette de type force brute partout où une position existe.
- Les sessions rsh en confiance d'hôte ne transportent généralement aucun mot de passe (rien à sniffer de ce côté) ; ciblez rexec/rlogin pour les identifiants et rsh pour le contenu/les commandes.