hacktricks/network-services-pentesting/pentesting-ssh.md

342 lines
28 KiB
Markdown
Raw Normal View History

2022-05-01 13:25:53 +00:00
# 22 - Pentesting SSH/SFTP
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
2023-06-03 13:10:46 +00:00
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
2022-05-24 00:07:19 +00:00
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
2022-05-24 00:07:19 +00:00
{% embed url="https://www.stmcyber.com/careers" %}
2023-06-03 13:10:46 +00:00
## Informations de base
**SSH ou Secure Shell ou Secure Socket Shell,** est un protocole réseau qui offre aux utilisateurs un **moyen sécurisé d'accéder à un ordinateur via un réseau non sécurisé.**
2023-06-03 13:10:46 +00:00
**Port par défaut :** 22
2022-04-27 08:21:36 +00:00
```
22/tcp open ssh syn-ack
```
2023-06-03 13:10:46 +00:00
**Serveurs SSH :**
* [openSSH](http://www.openssh.org) - OpenBSD SSH, inclus dans les distributions BSD, Linux et Windows depuis Windows 10
* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) - Implémentation SSH pour les environnements avec des ressources mémoire et processeur limitées, inclus dans OpenWrt
* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) - Implémentation SSH pour Windows, le client est couramment utilisé mais l'utilisation du serveur est plus rare
* [CopSSH](https://www.itefix.net/copssh) - Implémentation d'OpenSSH pour Windows
2020-12-14 16:53:57 +00:00
**Bibliothèques SSH (implémentation côté serveur) :**
2020-12-14 16:53:57 +00:00
* [libssh](https://www.libssh.org) - Bibliothèque C multiplateforme implémentant le protocole SSHv2 avec des liens en [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) et [R](https://github.com/ropensci/ssh) ; elle est utilisée par KDE pour sftp et par GitHub pour l'infrastructure SSH git
* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) - Bibliothèque serveur SSHv2 écrite en C ANSI et destinée aux environnements embarqués, temps réel et aux ressources limitées
* [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) - La bibliothèque Java Apache SSHD est basée sur Apache MINA
* [paramiko](https://github.com/paramiko/paramiko) - Bibliothèque Python pour le protocole SSHv2
2020-12-14 16:53:57 +00:00
2023-06-03 13:10:46 +00:00
## Énumération
### Capture de bannière
```bash
nc -vn <IP> 22
```
2023-06-03 13:10:46 +00:00
### Audit automatisé de ssh-audit
ssh-audit est un outil d'audit de configuration des serveurs et clients SSH.
2020-09-25 08:37:19 +00:00
[https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit) est un fork mis à jour de [https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/)
2020-09-25 08:37:19 +00:00
2023-06-03 13:10:46 +00:00
**Fonctionnalités:**
2023-06-03 13:10:46 +00:00
* Prise en charge des serveurs SSH1 et SSH2;
* Analyse de la configuration du client SSH;
* Récupération de la bannière, reconnaissance du périphérique ou du logiciel et du système d'exploitation, détection de la compression;
* Collecte des algorithmes d'échange de clés, de clés d'hôte, de chiffrement et de code d'authentification des messages;
* Affichage des informations sur les algorithmes (disponibles depuis, supprimés/désactivés, non sécurisés/faibles/obsolètes, etc.);
* Recommandations sur les algorithmes (ajout ou suppression en fonction de la version du logiciel reconnu);
* Affichage des informations de sécurité (problèmes connexes, liste des CVE attribués, etc.);
* Analyse de la compatibilité des versions SSH en fonction des informations sur les algorithmes;
* Informations historiques provenant d'OpenSSH, Dropbear SSH et libssh;
* Fonctionne sur Linux et Windows;
2023-06-03 13:10:46 +00:00
* Aucune dépendance.
```bash
usage: ssh-audit.py [-1246pbcnjvlt] <host>
-1, --ssh1 force ssh version 1 only
-2, --ssh2 force ssh version 2 only
-4, --ipv4 enable IPv4 (order of precedence)
-6, --ipv6 enable IPv6 (order of precedence)
-p, --port=<port> port to connect
-b, --batch batch output
-c, --client-audit starts a server on port 2222 to audit client
software config (use -p to change port;
use -t to change timeout)
-n, --no-colors disable colors
-j, --json JSON output
-v, --verbose verbose output
-l, --level=<level> minimum output level (info|warn|fail)
-t, --timeout=<secs> timeout (in seconds) for connection and reading
(default: 5)
$ python3 ssh-audit <IP>
```
### Clé SSH publique du serveur
```plaintext
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz
```bash
ssh-keyscan -t rsa <IP> -p <PORT>
```
2023-06-03 13:10:46 +00:00
### Algorithmes de chiffrement faibles
Cela est découvert par défaut par **nmap**. Mais vous pouvez également utiliser **sslscan** ou **sslyze**.
2021-07-06 18:15:59 +00:00
2023-06-03 13:10:46 +00:00
### Scripts Nmap
2021-07-06 18:15:59 +00:00
```bash
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
2021-07-06 18:15:59 +00:00
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
```
2022-05-01 13:25:53 +00:00
### Shodan
* `ssh`
2023-06-03 13:10:46 +00:00
## Brute force des noms d'utilisateur, des mots de passe et des clés privées
2023-06-03 13:10:46 +00:00
### Énumération des noms d'utilisateur
Dans certaines versions d'OpenSSH, vous pouvez effectuer une attaque temporelle pour énumérer les utilisateurs. Vous pouvez utiliser un module Metasploit pour exploiter cela :
2022-04-27 08:21:36 +00:00
```
msf> use scanner/ssh/ssh_enumusers
```
2022-05-01 13:25:53 +00:00
### [Brute force](../generic-methodologies-and-resources/brute-force.md#ssh)
Quelques identifiants ssh courants [ici](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt) et [ici](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt) et ci-dessous.
### Brute Force de Clé Privée
Si vous connaissez certaines clés privées ssh qui pourraient être utilisées... essayons. Vous pouvez utiliser le script nmap :
2022-04-27 08:21:36 +00:00
```
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
```
2023-06-03 13:10:46 +00:00
Ou le module auxiliaire MSF :
2022-04-27 08:21:36 +00:00
```
msf> use scanner/ssh/ssh_identify_pubkeys
```
Ou utilisez `ssh-keybrute.py` (python3 natif, léger et avec des algorithmes hérités activés) : [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute).
#### Les clés connues comme étant mauvaises peuvent être trouvées ici :
2022-04-27 08:21:36 +00:00
{% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %}
2023-06-03 13:10:46 +00:00
#### Clés SSH faibles / PRNG prévisible de Debian
Certains systèmes présentent des failles connues dans la graine aléatoire utilisée pour générer du matériel cryptographique. Cela peut entraîner une réduction drastique de l'espace des clés, qui peut être brute-forcé. Des ensembles de clés pré-générées générées sur des systèmes Debian affectés par un PRNG faible sont disponibles ici : [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
Vous devriez chercher ici pour rechercher des clés valides pour la machine cible.
2022-05-01 13:25:53 +00:00
### Kerberos
2020-09-20 21:47:09 +00:00
**crackmapexec** utilisant le protocole `ssh` peut utiliser l'option `--kerberos` pour **s'authentifier via Kerberos**.\
2023-06-03 13:10:46 +00:00
Pour plus d'informations, exécutez `crackmapexec ssh --help`.
## Identifiants par défaut
| **Fournisseur** | **Noms d'utilisateur** | **Mots de passe** |
| --------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| APC | apc, device | apc |
| Brocade | admin | admin123, password, brocade, fibranne |
2023-06-03 13:10:46 +00:00
| Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change\_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
| D-Link | admin, user | private, admin, user |
| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
| EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
| HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc\_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC\_op, !manage, !admin |
| Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
| IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer |
| Juniper | netscreen | netscreen |
| NetApp | admin | netapp123 |
| Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle |
| VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default |
2022-04-27 08:21:36 +00:00
2022-05-01 13:25:53 +00:00
## SSH-MitM
2022-04-27 08:21:36 +00:00
Si vous êtes sur le réseau local en tant que victime qui va se connecter au serveur SSH en utilisant un nom d'utilisateur et un mot de passe, vous pouvez essayer de **réaliser une attaque MitM pour voler ces informations d'identification** :
2022-04-27 08:21:36 +00:00
**Chemin de l'attaque :**
2022-04-27 08:21:36 +00:00
- le trafic de l'utilisateur est redirigé vers la machine attaquante
- l'attaquant surveille les tentatives de connexion au serveur SSH et les redirige vers son propre serveur SSH
- le serveur SSH de l'attaquant est configuré, premièrement, pour enregistrer toutes les données saisies, y compris le mot de passe de l'utilisateur, et deuxièmement, pour envoyer des commandes au serveur SSH légitime auquel l'utilisateur souhaite se connecter, pour les exécuter, puis renvoyer les résultats à l'utilisateur légitime
2022-04-27 08:21:36 +00:00
2023-06-03 13:10:46 +00:00
\*\*\*\*[**SSH MITM**](https://github.com/jtesta/ssh-mitm) \*\*\*\* fait exactement ce qui est décrit ci-dessus.
2022-04-27 08:21:36 +00:00
Pour capturer et effectuer le véritable MitM, vous pouvez utiliser des techniques telles que l'usurpation ARP, l'usurpation DNS ou d'autres décrites dans les [**attaques d'usurpation de réseau**](../generic-methodologies-and-resources/pentesting-network/#spoofing).
## Mauvaises configurations de la configuration
### Connexion en tant que root
2020-12-14 16:53:57 +00:00
Par défaut, la plupart des implémentations de serveur SSH autoriseront la connexion en tant que root. Il est conseillé de la désactiver car si les informations d'identification de ce compte sont divulguées, les attaquants obtiendront directement des privilèges administratifs et cela leur permettra également de mener des attaques de force brute sur ce compte.
**Comment désactiver la connexion en tant que root pour openSSH :**
2020-09-25 08:37:19 +00:00
2023-06-03 13:10:46 +00:00
1. Modifier la configuration du serveur SSH `sudoedit /etc/ssh/sshd_config`
2. Changer `#PermitRootLogin yes` en `PermitRootLogin no`
3. Prendre en compte les modifications de configuration : `sudo systemctl daemon-reload`
2023-06-03 13:10:46 +00:00
4. Redémarrer le serveur SSH `sudo systemctl restart sshd`
2020-09-25 08:37:19 +00:00
2023-06-03 13:10:46 +00:00
### Exécution de commandes SFTP
Une autre mauvaise configuration courante de SSH est souvent observée dans la configuration SFTP. La plupart du temps, lors de la création d'un serveur SFTP, l'administrateur souhaite que les utilisateurs aient un accès SFTP pour partager des fichiers, mais pas un accès shell distant sur la machine. Ils pensent donc qu'en créant un utilisateur, en lui attribuant un shell fictif (comme `/usr/bin/nologin` ou `/usr/bin/false`) et en le chrootant dans une prison, cela suffit pour éviter un accès shell ou une utilisation abusive sur l'ensemble du système de fichiers. Mais ils se trompent, **un utilisateur peut demander à exécuter une commande juste après l'authentification avant que sa commande ou son shell par défaut ne soit exécuté**. Ainsi, pour contourner le shell fictif qui refusera l'accès shell, il suffit de demander à exécuter une commande (par exemple `/bin/bash`) avant, simplement en faisant :
2022-04-27 08:21:36 +00:00
```
2020-12-14 16:53:57 +00:00
$ ssh -v noraj@192.168.1.94 id
...
Password:
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to 192.168.1.94 ([192.168.1.94]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Sending command: id
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
uid=1000(noraj) gid=100(users) groups=100(users)
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2412, received 2480 bytes, in 0.1 seconds
Bytes per second: sent 43133.4, received 44349.5
debug1: Exit status 0
$ ssh noraj@192.168.1.94 /bin/bash
```
Voici un exemple de configuration sécurisée SFTP (`/etc/ssh/sshd_config` - openSSH) pour l'utilisateur `noraj` :
```plaintext
# Configuration for SFTP
Subsystem sftp internal-sftp
2023-06-03 13:10:46 +00:00
Match User noraj
ChrootDirectory /home/noraj
2023-06-03 13:10:46 +00:00
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication yes
PermitTunnel no
PermitTTY no
PermitUserEnvironment no
AllowAgentForwarding no
AllowStreamLocalForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
UsePAM yes
2023-06-03 13:10:46 +00:00
```
Cette configuration restreint l'utilisateur `noraj` à son répertoire personnel (`/home/noraj`) et lui permet uniquement d'utiliser le protocole SFTP pour transférer des fichiers. Les options `AllowTcpForwarding`, `X11Forwarding`, `PermitTunnel`, `PermitTTY`, `PermitUserEnvironment`, `AllowAgentForwarding` et `AllowStreamLocalForwarding` sont désactivées pour renforcer la sécurité. De plus, l'authentification par mot de passe est activée (`PasswordAuthentication yes`) et le délai d'inactivité est fixé à 300 secondes (`ClientAliveInterval 300`).
2022-04-27 08:21:36 +00:00
```
2020-12-14 16:53:57 +00:00
Match User noraj
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
PermitTTY no
2020-12-14 16:53:57 +00:00
```
Cette configuration permettra uniquement le SFTP : en désactivant l'accès au shell en forçant la commande de démarrage et en désactivant l'accès TTY, mais également en désactivant toutes sortes de redirection de port ou de tunneling.
2023-06-03 13:10:46 +00:00
### Tunneling SFTP
Si vous avez accès à un serveur SFTP, vous pouvez également faire transiter votre trafic par celui-ci, par exemple en utilisant la redirection de port courante :
2022-04-27 08:21:36 +00:00
```
2020-09-25 08:37:19 +00:00
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
```
2022-05-01 13:25:53 +00:00
### SFTP Symlink
Le **sftp** dispose de la commande "**symlink**". Par conséquent, si vous avez des **droits d'écriture** dans un dossier, vous pouvez créer des **liens symboliques** vers d'autres dossiers/fichiers. Comme vous êtes probablement **piégé** à l'intérieur d'un chroot, cela ne sera pas particulièrement utile pour vous. Cependant, si vous pouvez **accéder** au **lien symbolique** créé à partir d'un **service sans chroot** (par exemple, si vous pouvez y accéder depuis le web), vous pourriez **ouvrir les fichiers liés par le biais du web**.
Par exemple, pour créer un **lien symbolique** à partir d'un nouveau fichier "**_**froot**_**" vers "**_**/**_**"**:
2022-04-27 08:21:36 +00:00
```
sftp> symlink / froot
```
2023-06-03 13:10:46 +00:00
Si vous pouvez accéder au fichier "_froot_" via le web, vous pourrez lister le dossier racine ("/") du système.
2023-06-03 13:10:46 +00:00
### Méthodes d'authentification
2020-12-14 16:53:57 +00:00
Dans les environnements à haute sécurité, il est courant d'activer uniquement l'authentification basée sur une clé ou à deux facteurs plutôt que l'authentification basée sur un mot de passe simple. Cependant, il arrive souvent que les méthodes d'authentification plus solides soient activées sans désactiver les plus faibles. Un cas fréquent est d'activer `publickey` dans la configuration openSSH et de le définir comme méthode par défaut, mais sans désactiver `password`. Ainsi, en utilisant le mode verbeux du client SSH, un attaquant peut voir qu'une méthode plus faible est activée :
2022-04-27 08:21:36 +00:00
```
2020-12-14 16:53:57 +00:00
$ ssh -v 192.168.1.94
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
```
Par exemple, si une limite d'échec d'authentification est définie et que vous n'avez jamais la possibilité d'atteindre la méthode de mot de passe, vous pouvez utiliser l'option `PreferredAuthentications` pour forcer l'utilisation de cette méthode.
2022-04-27 08:21:36 +00:00
```
2020-12-14 16:53:57 +00:00
$ ssh -v 192.168.1.94 -o PreferredAuthentications=password
...
debug1: Next authentication method: password
```
Il est nécessaire de vérifier la configuration du serveur SSH pour s'assurer que seules les méthodes attendues sont autorisées. L'utilisation du mode verbeux sur le client peut aider à voir l'efficacité de la configuration.
2020-12-14 16:53:57 +00:00
2023-06-03 13:10:46 +00:00
### Fichiers de configuration
2022-04-27 08:21:36 +00:00
```
2020-12-14 16:53:57 +00:00
ssh_config
sshd_config
authorized_keys
ssh_known_hosts
known_hosts
id_rsa
```
2022-05-01 13:25:53 +00:00
## Fuzzing
2020-12-14 16:53:57 +00:00
* [https://packetstormsecurity.com/files/download/71252/sshfuzz.txt](https://packetstormsecurity.com/files/download/71252/sshfuzz.txt)
2022-04-27 08:21:36 +00:00
* [https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh\_version\_2](https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh\_version\_2)
2020-12-14 16:53:57 +00:00
2023-06-03 13:10:46 +00:00
## Références
2020-12-14 16:53:57 +00:00
2023-06-03 13:10:46 +00:00
* Vous pouvez trouver des guides intéressants sur la façon de renforcer SSH dans [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)
2020-12-14 16:53:57 +00:00
* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
2022-05-24 00:07:19 +00:00
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
2022-05-24 00:07:19 +00:00
{% embed url="https://www.stmcyber.com/careers" %}
## Commandes automatiques HackTricks
2022-04-27 08:21:36 +00:00
```
2021-09-13 15:32:29 +00:00
Protocol_Name: SSH
Port_Number: 22
Protocol_Description: Secure Shell Hardening
Entry_1:
Name: Hydra Brute Force
Description: Need Username
Command: hydra -v -V -u -l {Username} -P {Big_Passwordlist} -t 1 {IP} ssh
Entry_2:
Name: consolesless mfs enumeration
Description: SSH enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use scanner/ssh/ssh_enumusers; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ssh/juniper_backdoor; set RHOSTS {IP}; set RPORT 22; run; exit'
2021-09-13 15:32:29 +00:00
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
2023-06-03 13:10:46 +00:00
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>