SSH
Def :
SSH c'est un protocol de connection sécurisé qui permet de se connecter à un pc à traver un réseau non sécurisé.
Fonctionnement :
SSH utilise du chiffrement avec des clés publiques, puis un utilisateur de se connecte avec un mot de passe. Il est aussi possible d'utiliser une clé publique générée manuellement pour permettre de se connecter sans mots de passe.
ATTENTION: lors de la connection avec un autre PC, on possède uniquement sa clé publique, il faut donc faire très attention à ne pas se connecter à un hacker.
SSH utilise les chiffrements :
- Diffie-Hellman
- RSA et DSA
- etc...
Ports :
22 en TCP
Exploitation :
Une exploitation de SSH est dure à effectuer car le protocol est robuste, il existe cependant quelques exploits possible (comme un MITM).
Dans un simple lab avec deux VM
IP privée | mask | |
---|---|---|
V1 kali | 192.168.250.47 | 255.255.240.0 |
V2 debian | 192.168.252.49 | 255.255.240.0 |
V3 debian | 192.168.253.94 | 255.255.240.0 |
Premières informations
Pour grab la banner SSH et obtenir quelques informations :
nc -vn <IP> 22
on obtient par exemple :
(UNKNOWN) [192.168.252.49] 22 (ssh) open
SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u2
Il est aussi possible d'utiliser NMAP pour scanner le port et obtenir plus d'informations :
nmap -p 22 <IP> -sX -T3 -v -oG result.txt
IL est aussi possible d'aller plus loin avec nmap :
nmap -p22 <ip> -sC # Send default nmap scripts for SSH
nmap -p22 <ip> -sV # Retrieve version
nmap -p22 <ip> --script ssh2-enum-algos # Retrieve supported algorythms
nmap -p22 <ip> --script ssh-hostkey --script-args ssh_hostkey=full # Retrieve weak keys
nmap -p22 <ip> --script ssh-auth-methods --script-args="ssh.user=root" # Check authentication methods
La première commande -sC
permet d'obtenir les clés SSH qui sont exploitables si l'algorithme est faible.
Automated ssh-audit
https://github.com/jtesta/ssh-audit
Cet outil permet de faire un audit du ssh de manière automatisé et plutôt fiable.
Fonctionnement basique :
python ssh-audit.py <IP>
MITM SSH :
Prérequis : Être sur le même réseau que les victimes, ou bien compromettre une machine qui l'est.
Le processus n'est pas aussi simple qu'un MITM classique puisque la session est normalement chiffrée end-to-end entre le client et le serveur.
Potentiellement cet outil peut être utilisé :
https://docs.ssh-mitm.at/
Brute-Force :
Commande simple de SSH pour faire une attaque brute force sur une cible :
nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst \
--script-args ssh-brute.timeout=4s <target>
(C'est pas mal du tout)